examples/QtQuick/qmlaudioplayer/qml/qmlaudioplayer/Player.qml

00001 /****************************************************************************
00002 **
00003 ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
00004 ** All rights reserved.
00005 ** Contact: Nokia Corporation
00006 **
00007 **
00008 ** $QT_BEGIN_LICENSE:BSD$
00009 ** You may use this file under the terms of the BSD license as follows:
00010 **
00011 ** "Redistribution and use in source and binary forms, with or without
00012 ** modification, are permitted provided that the following conditions are
00013 ** met:
00014 **   * Redistributions of source code must retain the above copyright
00015 **     notice, this list of conditions and the following disclaimer.
00016 **   * Redistributions in binary form must reproduce the above copyright
00017 **     notice, this list of conditions and the following disclaimer in
00018 **     the documentation and/or other materials provided with the
00019 **     distribution.
00020 **   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
00021 **     the names of its contributors may be used to endorse or promote
00022 **     products derived from this software without specific prior written
00023 **     permission.
00024 **
00025 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00026 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00027 ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
00028 ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
00029 ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
00030 ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
00031 ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
00032 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
00033 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00034 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00035 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
00036 ** $QT_END_LICENSE$
00037 **
00038 ****************************************************************************/
00039 
00040 import QtQuick 1.0
00041 import QtMultimediaKit 1.1
00042 
00043 Item {
00044     id: player
00045 
00046     property bool playing: false
00047     property alias source: audio.source
00048     property string title: audio.metaData.title != undefined && audio.source != "" ? audio.metaData.title : audio.source.toString()
00049     property int duration: audio.source != "" ? audio.duration : 0
00050     property string durationTime: audio.source != "" ? getTimeFromMSec(audio.duration) : ""
00051     property string artist: audio.metaData.albumArtist != undefined && audio.source != "" ? audio.metaData.albumArtist : ""
00052     property bool seekable: audio.seekable
00053     property alias position: audio.position
00054     property string positionTime: getTimeFromMSec(position)
00055     property alias volume: audio.volume
00056     property string error: audio.errorString
00057 
00058     // Plays an audio file.
00059     function play() {
00060         audio.play()
00061         playing = true
00062     }
00063 
00064     // Pauses an audio file.
00065     function pause() {
00066         audio.pause()
00067         playing = false
00068     }
00069 
00070     // Stops the playing audio file.
00071     function stop() {
00072         audio.stop()
00073         playing = false
00074     }
00075 
00076 
00077     // Convert the time from milli seconds to hour:minute:second format.
00078     function getTimeFromMSec(msec) {
00079         if (msec <= 0 || msec == undefined) {
00080             return ""
00081 
00082         } else {
00083             var sec = "" + Math.floor(msec / 1000) % 60
00084             if (sec.length == 1)
00085                 sec = "0" + sec
00086 
00087             var hour = Math.floor(msec / 3600000)
00088             if (hour < 1) {
00089                 return Math.floor(msec / 60000) + ":" + sec
00090             } else {
00091                 var min = "" + Math.floor(msec / 60000) % 60
00092                 if (min.length == 1)
00093                     min = "0" + min
00094 
00095                 return hour + ":" + min + ":" + sec
00096             }
00097         }
00098     }
00099 
00100 
00101     // Audio element, volume is set to 50%.
00102     Audio {
00103         id: audio
00104 
00105         volume: 0.5
00106     }
00107 }

Generated by  doxygen 1.6.2