summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2002-04-20 23:36:33 (UTC)
committer llornkcor <llornkcor>2002-04-20 23:36:33 (UTC)
commit0e028a1857c7648bc329cbbf5cb35435be909ea6 (patch) (unidiff)
treeff44b5649f0e08369fe57f540c5c32ce075a6937
parentd616ece749006d720305632700228a41bcdd5c53 (diff)
downloadopie-0e028a1857c7648bc329cbbf5cb35435be909ea6.zip
opie-0e028a1857c7648bc329cbbf5cb35435be909ea6.tar.gz
opie-0e028a1857c7648bc329cbbf5cb35435be909ea6.tar.bz2
blah
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/multimedia/opieplayer/mediaplayer.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/core/multimedia/opieplayer/mediaplayer.cpp b/core/multimedia/opieplayer/mediaplayer.cpp
index c971a3c..7ef3e6a 100644
--- a/core/multimedia/opieplayer/mediaplayer.cpp
+++ b/core/multimedia/opieplayer/mediaplayer.cpp
@@ -1,178 +1,179 @@
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 if ( !QFile::exists( currentFile->file() ) ) { 100
101 if ( ((currentFile->file()).left(4) != "http") && !QFile::exists( currentFile->file() ) ) {
101 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>" );
102 mediaPlayerState->setPlaying( FALSE ); 103 mediaPlayerState->setPlaying( FALSE );
103 return; 104 return;
104 } 105 }
105 106
106 if ( !mediaPlayerState->newDecoder( currentFile->file() ) ) { 107 if ( !mediaPlayerState->newDecoder( currentFile->file() ) ) {
107 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>" );
108 mediaPlayerState->setPlaying( FALSE ); 109 mediaPlayerState->setPlaying( FALSE );
109 return; 110 return;
110 } 111 }
111 112
112 if ( !loopControl->init( currentFile->file() ) ) { 113 if ( !loopControl->init( currentFile->file() ) ) {
113 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>" );
114 mediaPlayerState->setPlaying( FALSE ); 115 mediaPlayerState->setPlaying( FALSE );
115 return; 116 return;
116 } 117 }
117 long seconds = loopControl->totalPlaytime(); 118 long seconds = loopControl->totalPlaytime();
118 QString time; time.sprintf("%li:%02i", seconds/60, (int)seconds%60 ); 119 QString time; time.sprintf("%li:%02i", seconds/60, (int)seconds%60 );
119 QString tickerText = tr( " File: " ) + currentFile->name() + tr(", Length: ") + time; 120 QString tickerText = tr( " File: " ) + currentFile->name() + tr(", Length: ") + time;
120 QString fileInfo = mediaPlayerState->curDecoder()->fileInfo(); 121 QString fileInfo = mediaPlayerState->curDecoder()->fileInfo();
121 if ( !fileInfo.isEmpty() ) 122 if ( !fileInfo.isEmpty() )
122 tickerText += ", " + fileInfo; 123 tickerText += ", " + fileInfo;
123 audioUI->setTickerText( tickerText + "." ); 124 audioUI->setTickerText( tickerText + "." );
124 125
125 loopControl->play(); 126 loopControl->play();
126 127
127 mediaPlayerState->setView( loopControl->hasVideo() ? 'v' : 'a' ); 128 mediaPlayerState->setView( loopControl->hasVideo() ? 'v' : 'a' );
128} 129}
129 130
130 131
131void MediaPlayer::prev() { 132void MediaPlayer::prev() {
132 if ( playList->prev() ) 133 if ( playList->prev() )
133 play(); 134 play();
134 else if ( mediaPlayerState->looping() ) { 135 else if ( mediaPlayerState->looping() ) {
135 if ( playList->last() ) 136 if ( playList->last() )
136 play(); 137 play();
137 } else 138 } else
138 mediaPlayerState->setList(); 139 mediaPlayerState->setList();
139} 140}
140 141
141 142
142void MediaPlayer::next() { 143void MediaPlayer::next() {
143 if ( playList->next() ) 144 if ( playList->next() )
144 play(); 145 play();
145 else if ( mediaPlayerState->looping() ) { 146 else if ( mediaPlayerState->looping() ) {
146 if ( playList->first() ) 147 if ( playList->first() )
147 play(); 148 play();
148 } else 149 } else
149 mediaPlayerState->setList(); 150 mediaPlayerState->setList();
150} 151}
151 152
152 153
153void MediaPlayer::startDecreasingVolume() { 154void MediaPlayer::startDecreasingVolume() {
154 volumeDirection = -1; 155 volumeDirection = -1;
155 startTimer( 100 ); 156 startTimer( 100 );
156 AudioDevice::decreaseVolume(); 157 AudioDevice::decreaseVolume();
157} 158}
158 159
159 160
160void MediaPlayer::startIncreasingVolume() { 161void MediaPlayer::startIncreasingVolume() {
161 volumeDirection = +1; 162 volumeDirection = +1;
162 startTimer( 100 ); 163 startTimer( 100 );
163 AudioDevice::increaseVolume(); 164 AudioDevice::increaseVolume();
164} 165}
165 166
166 167
167void MediaPlayer::stopChangingVolume() { 168void MediaPlayer::stopChangingVolume() {
168 killTimers(); 169 killTimers();
169} 170}
170 171
171 172
172void MediaPlayer::timerEvent( QTimerEvent * ) { 173void MediaPlayer::timerEvent( QTimerEvent * ) {
173 if ( volumeDirection == +1 ) 174 if ( volumeDirection == +1 )
174 AudioDevice::increaseVolume(); 175 AudioDevice::increaseVolume();
175 else if ( volumeDirection == -1 ) 176 else if ( volumeDirection == -1 )
176 AudioDevice::decreaseVolume(); 177 AudioDevice::decreaseVolume();
177} 178}
178 179