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 }