summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2002-04-21 16:17:55 (UTC)
committer llornkcor <llornkcor>2002-04-21 16:17:55 (UTC)
commit746afd0d27f33eed5451b54819773cf055858964 (patch) (unidiff)
treef33bf3e485393e41e7a36ffc6710798e7f3e47c3
parent392eb0350465565e2a849ada60e6734be025787b (diff)
downloadopie-746afd0d27f33eed5451b54819773cf055858964.zip
opie-746afd0d27f33eed5451b54819773cf055858964.tar.gz
opie-746afd0d27f33eed5451b54819773cf055858964.tar.bz2
fixed length display for streams
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/multimedia/opieplayer/mediaplayer.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/core/multimedia/opieplayer/mediaplayer.cpp b/core/multimedia/opieplayer/mediaplayer.cpp
index 7ef3e6a..e0c4dba 100644
--- a/core/multimedia/opieplayer/mediaplayer.cpp
+++ b/core/multimedia/opieplayer/mediaplayer.cpp
@@ -1,179 +1,184 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#include <qpe/qpeapplication.h> 21#include <qpe/qpeapplication.h>
22#include <qpe/qlibrary.h> 22#include <qpe/qlibrary.h>
23#include <qpe/resource.h> 23#include <qpe/resource.h>
24#include <qpe/config.h> 24#include <qpe/config.h>
25 25
26#include <qmainwindow.h> 26#include <qmainwindow.h>
27#include <qmessagebox.h> 27#include <qmessagebox.h>
28#include <qwidgetstack.h> 28#include <qwidgetstack.h>
29#include <qfile.h> 29#include <qfile.h>
30 30
31#include "mediaplayer.h" 31#include "mediaplayer.h"
32#include "playlistwidget.h" 32#include "playlistwidget.h"
33#include "audiowidget.h" 33#include "audiowidget.h"
34#include "loopcontrol.h" 34#include "loopcontrol.h"
35#include "audiodevice.h" 35#include "audiodevice.h"
36 36
37#include "mediaplayerstate.h" 37#include "mediaplayerstate.h"
38 38
39 39
40extern AudioWidget *audioUI; 40extern AudioWidget *audioUI;
41extern PlayListWidget *playList; 41extern PlayListWidget *playList;
42extern LoopControl *loopControl; 42extern LoopControl *loopControl;
43extern MediaPlayerState *mediaPlayerState; 43extern MediaPlayerState *mediaPlayerState;
44 44
45 45
46MediaPlayer::MediaPlayer( QObject *parent, const char *name ) 46MediaPlayer::MediaPlayer( QObject *parent, const char *name )
47 : QObject( parent, name ), volumeDirection( 0 ), currentFile( NULL ) { 47 : QObject( parent, name ), volumeDirection( 0 ), currentFile( NULL ) {
48 48
49 connect( mediaPlayerState, SIGNAL( playingToggled( bool ) ), this, SLOT( setPlaying( bool ) ) ); 49 connect( mediaPlayerState, SIGNAL( playingToggled( bool ) ), this, SLOT( setPlaying( bool ) ) );
50 connect( mediaPlayerState, SIGNAL( pausedToggled( bool ) ), this, SLOT( pauseCheck( bool ) ) ); 50 connect( mediaPlayerState, SIGNAL( pausedToggled( bool ) ), this, SLOT( pauseCheck( bool ) ) );
51 connect( mediaPlayerState, SIGNAL( next() ), this, SLOT( next() ) ); 51 connect( mediaPlayerState, SIGNAL( next() ), this, SLOT( next() ) );
52 connect( mediaPlayerState, SIGNAL( prev() ), this, SLOT( prev() ) ); 52 connect( mediaPlayerState, SIGNAL( prev() ), this, SLOT( prev() ) );
53 53
54 connect( audioUI, SIGNAL( moreClicked() ), this, SLOT( startIncreasingVolume() ) ); 54 connect( audioUI, SIGNAL( moreClicked() ), this, SLOT( startIncreasingVolume() ) );
55 connect( audioUI, SIGNAL( lessClicked() ), this, SLOT( startDecreasingVolume() ) ); 55 connect( audioUI, SIGNAL( lessClicked() ), this, SLOT( startDecreasingVolume() ) );
56 connect( audioUI, SIGNAL( moreReleased() ), this, SLOT( stopChangingVolume() ) ); 56 connect( audioUI, SIGNAL( moreReleased() ), this, SLOT( stopChangingVolume() ) );
57 connect( audioUI, SIGNAL( lessReleased() ), this, SLOT( stopChangingVolume() ) ); 57 connect( audioUI, SIGNAL( lessReleased() ), this, SLOT( stopChangingVolume() ) );
58} 58}
59 59
60 60
61MediaPlayer::~MediaPlayer() { 61MediaPlayer::~MediaPlayer() {
62} 62}
63 63
64 64
65void MediaPlayer::pauseCheck( bool b ) { 65void MediaPlayer::pauseCheck( bool b ) {
66 // Only pause if playing 66 // Only pause if playing
67 if ( b && !mediaPlayerState->playing() ) 67 if ( b && !mediaPlayerState->playing() )
68 mediaPlayerState->setPaused( FALSE ); 68 mediaPlayerState->setPaused( FALSE );
69} 69}
70 70
71 71
72void MediaPlayer::play() { 72void MediaPlayer::play() {
73 mediaPlayerState->setPlaying( FALSE ); 73 mediaPlayerState->setPlaying( FALSE );
74 mediaPlayerState->setPlaying( TRUE ); 74 mediaPlayerState->setPlaying( TRUE );
75} 75}
76 76
77 77
78void MediaPlayer::setPlaying( bool play ) { 78void MediaPlayer::setPlaying( bool play ) {
79 if ( !play ) { 79 if ( !play ) {
80 mediaPlayerState->setPaused( FALSE ); 80 mediaPlayerState->setPaused( FALSE );
81 loopControl->stop( FALSE ); 81 loopControl->stop( FALSE );
82 return; 82 return;
83 } 83 }
84 84
85 if ( mediaPlayerState->paused() ) { 85 if ( mediaPlayerState->paused() ) {
86 mediaPlayerState->setPaused( FALSE ); 86 mediaPlayerState->setPaused( FALSE );
87 return; 87 return;
88 } 88 }
89 89
90 const DocLnk *playListCurrent = playList->current(); 90 const DocLnk *playListCurrent = playList->current();
91 if ( playListCurrent != NULL ) { 91 if ( playListCurrent != NULL ) {
92 loopControl->stop( TRUE ); 92 loopControl->stop( TRUE );
93 currentFile = playListCurrent; 93 currentFile = playListCurrent;
94 } 94 }
95 if ( currentFile == NULL ) { 95 if ( currentFile == NULL ) {
96 QMessageBox::critical( 0, tr( "No file"), tr( "Error: There is no file selected" ) ); 96 QMessageBox::critical( 0, tr( "No file"), tr( "Error: There is no file selected" ) );
97 mediaPlayerState->setPlaying( FALSE ); 97 mediaPlayerState->setPlaying( FALSE );
98 return; 98 return;
99 } 99 }
100 100
101 if ( ((currentFile->file()).left(4) != "http") && !QFile::exists( currentFile->file() ) ) { 101 if ( ((currentFile->file()).left(4) != "http") && !QFile::exists( currentFile->file() ) ) {
102 QMessageBox::critical( 0, tr( "File not found"), tr( "The following file was not found: <i>" ) + currentFile->file() + "</i>" ); 102 QMessageBox::critical( 0, tr( "File not found"), tr( "The following file was not found: <i>" ) + currentFile->file() + "</i>" );
103 mediaPlayerState->setPlaying( FALSE ); 103 mediaPlayerState->setPlaying( FALSE );
104 return; 104 return;
105 } 105 }
106 106
107 if ( !mediaPlayerState->newDecoder( currentFile->file() ) ) { 107 if ( !mediaPlayerState->newDecoder( currentFile->file() ) ) {
108 QMessageBox::critical( 0, tr( "No decoder found"), tr( "Sorry, no appropriate decoders found for this file: <i>" ) + currentFile->file() + "</i>" ); 108 QMessageBox::critical( 0, tr( "No decoder found"), tr( "Sorry, no appropriate decoders found for this file: <i>" ) + currentFile->file() + "</i>" );
109 mediaPlayerState->setPlaying( FALSE ); 109 mediaPlayerState->setPlaying( FALSE );
110 return; 110 return;
111 } 111 }
112 112
113 if ( !loopControl->init( currentFile->file() ) ) { 113 if ( !loopControl->init( currentFile->file() ) ) {
114 QMessageBox::critical( 0, tr( "Error opening file"), tr( "Sorry, an error occured trying to play the file: <i>" ) + currentFile->file() + "</i>" ); 114 QMessageBox::critical( 0, tr( "Error opening file"), tr( "Sorry, an error occured trying to play the file: <i>" ) + currentFile->file() + "</i>" );
115 mediaPlayerState->setPlaying( FALSE ); 115 mediaPlayerState->setPlaying( FALSE );
116 return; 116 return;
117 } 117 }
118 long seconds = loopControl->totalPlaytime(); 118 long seconds = loopControl->totalPlaytime();
119 QString time; time.sprintf("%li:%02i", seconds/60, (int)seconds%60 ); 119 QString time; time.sprintf("%li:%02i", seconds/60, (int)seconds%60 );
120 QString tickerText = tr( " File: " ) + currentFile->name() + tr(", Length: ") + time; 120 QString tickerText;
121 if( currentFile->file().left(4) == "http" )
122 tickerText= tr( " File: " ) + currentFile->name();
123 else
124 tickerText = tr( " File: " ) + currentFile->name() + tr(", Length: ") + time;
125
121 QString fileInfo = mediaPlayerState->curDecoder()->fileInfo(); 126 QString fileInfo = mediaPlayerState->curDecoder()->fileInfo();
122 if ( !fileInfo.isEmpty() ) 127 if ( !fileInfo.isEmpty() )
123 tickerText += ", " + fileInfo; 128 tickerText += ", " + fileInfo;
124 audioUI->setTickerText( tickerText + "." ); 129 audioUI->setTickerText( tickerText + "." );
125 130
126 loopControl->play(); 131 loopControl->play();
127 132
128 mediaPlayerState->setView( loopControl->hasVideo() ? 'v' : 'a' ); 133 mediaPlayerState->setView( loopControl->hasVideo() ? 'v' : 'a' );
129} 134}
130 135
131 136
132void MediaPlayer::prev() { 137void MediaPlayer::prev() {
133 if ( playList->prev() ) 138 if ( playList->prev() )
134 play(); 139 play();
135 else if ( mediaPlayerState->looping() ) { 140 else if ( mediaPlayerState->looping() ) {
136 if ( playList->last() ) 141 if ( playList->last() )
137 play(); 142 play();
138 } else 143 } else
139 mediaPlayerState->setList(); 144 mediaPlayerState->setList();
140} 145}
141 146
142 147
143void MediaPlayer::next() { 148void MediaPlayer::next() {
144 if ( playList->next() ) 149 if ( playList->next() )
145 play(); 150 play();
146 else if ( mediaPlayerState->looping() ) { 151 else if ( mediaPlayerState->looping() ) {
147 if ( playList->first() ) 152 if ( playList->first() )
148 play(); 153 play();
149 } else 154 } else
150 mediaPlayerState->setList(); 155 mediaPlayerState->setList();
151} 156}
152 157
153 158
154void MediaPlayer::startDecreasingVolume() { 159void MediaPlayer::startDecreasingVolume() {
155 volumeDirection = -1; 160 volumeDirection = -1;
156 startTimer( 100 ); 161 startTimer( 100 );
157 AudioDevice::decreaseVolume(); 162 AudioDevice::decreaseVolume();
158} 163}
159 164
160 165
161void MediaPlayer::startIncreasingVolume() { 166void MediaPlayer::startIncreasingVolume() {
162 volumeDirection = +1; 167 volumeDirection = +1;
163 startTimer( 100 ); 168 startTimer( 100 );
164 AudioDevice::increaseVolume(); 169 AudioDevice::increaseVolume();
165} 170}
166 171
167 172
168void MediaPlayer::stopChangingVolume() { 173void MediaPlayer::stopChangingVolume() {
169 killTimers(); 174 killTimers();
170} 175}
171 176
172 177
173void MediaPlayer::timerEvent( QTimerEvent * ) { 178void MediaPlayer::timerEvent( QTimerEvent * ) {
174 if ( volumeDirection == +1 ) 179 if ( volumeDirection == +1 )
175 AudioDevice::increaseVolume(); 180 AudioDevice::increaseVolume();
176 else if ( volumeDirection == -1 ) 181 else if ( volumeDirection == -1 )
177 AudioDevice::decreaseVolume(); 182 AudioDevice::decreaseVolume();
178} 183}
179 184