Diffstat (limited to 'noncore/multimedia/opieplayer3/mwindow.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/multimedia/opieplayer3/mwindow.cpp | 180 |
1 files changed, 146 insertions, 34 deletions
diff --git a/noncore/multimedia/opieplayer3/mwindow.cpp b/noncore/multimedia/opieplayer3/mwindow.cpp index dab910a..57418f0 100644 --- a/noncore/multimedia/opieplayer3/mwindow.cpp +++ b/noncore/multimedia/opieplayer3/mwindow.cpp | |||
@@ -50,6 +50,8 @@ | |||
50 | #include <qpopupmenu.h> | 50 | #include <qpopupmenu.h> |
51 | #include <qmenubar.h> | 51 | #include <qmenubar.h> |
52 | #include <qtimer.h> | 52 | #include <qtimer.h> |
53 | #include <qslider.h> | ||
54 | #include <qlayout.h> | ||
53 | 55 | ||
54 | OPIE_EXPORT_APP( Opie::Core::OApplicationFactory<PMainWindow>) | 56 | OPIE_EXPORT_APP( Opie::Core::OApplicationFactory<PMainWindow>) |
55 | 57 | ||
@@ -59,16 +61,21 @@ PMainWindow::PMainWindow(QWidget*w, const char*name, WFlags f) | |||
59 | : QMainWindow(w,name,f) | 61 | : QMainWindow(w,name,f) |
60 | { | 62 | { |
61 | setCaption( QObject::tr("Opie Mediaplayer 3" ) ); | 63 | setCaption( QObject::tr("Opie Mediaplayer 3" ) ); |
62 | setupActions(); | ||
63 | setupToolBar(); | ||
64 | setupMenu(); | ||
65 | 64 | ||
66 | m_stack = new OWidgetStack(this); | 65 | m_MainBox = new QWidget(this); |
66 | |||
67 | QVBoxLayout*m_l = new QVBoxLayout(m_MainBox); | ||
68 | |||
69 | m_stack = new OWidgetStack(m_MainBox); | ||
67 | m_stack->forceMode(Opie::Ui::OWidgetStack::SmallScreen); | 70 | m_stack->forceMode(Opie::Ui::OWidgetStack::SmallScreen); |
68 | setCentralWidget(m_stack ); | 71 | m_l->addWidget(m_stack); |
72 | m_scrollBar = new QSlider(QSlider::Horizontal,m_MainBox); | ||
73 | m_l->addWidget(m_scrollBar); | ||
74 | m_scrollBar->setEnabled(false); | ||
75 | |||
69 | m_playList = new PlaylistView(m_stack,"playlist"); | 76 | m_playList = new PlaylistView(m_stack,"playlist"); |
70 | m_stack->addWidget(m_playList,stack_list); | 77 | m_stack->addWidget(m_playList,stack_list); |
71 | 78 | connect(m_playList,SIGNAL(contentChanged(int)),this,SLOT(slotListChanged(int))); | |
72 | m_sfl = new OFileSelector("video/*;audio/*",m_stack); | 79 | m_sfl = new OFileSelector("video/*;audio/*",m_stack); |
73 | m_stack->addWidget(m_sfl,stack_file); | 80 | m_stack->addWidget(m_sfl,stack_file); |
74 | connect(m_sfl, SIGNAL(fileSelected(const DocLnk &)), m_playList, SLOT(slotAddFile(const DocLnk &))); | 81 | connect(m_sfl, SIGNAL(fileSelected(const DocLnk &)), m_playList, SLOT(slotAddFile(const DocLnk &))); |
@@ -83,6 +90,28 @@ PMainWindow::PMainWindow(QWidget*w, const char*name, WFlags f) | |||
83 | m_stack->raiseWidget(stack_list); | 90 | m_stack->raiseWidget(stack_list); |
84 | m_PlayLib = 0; | 91 | m_PlayLib = 0; |
85 | m_LastItem = 0; | 92 | m_LastItem = 0; |
93 | setupActions(); | ||
94 | setupToolBar(); | ||
95 | setupMenu(); | ||
96 | |||
97 | setCentralWidget(m_MainBox ); | ||
98 | } | ||
99 | |||
100 | void PMainWindow::slotListChanged(int count) | ||
101 | { | ||
102 | if (!m_playList->isVisible()) { | ||
103 | return; | ||
104 | } | ||
105 | a_removeFiles->setEnabled(count>0); | ||
106 | } | ||
107 | |||
108 | void PMainWindow::mediaWindowraised() | ||
109 | { | ||
110 | playlistOnly->setEnabled(false); | ||
111 | a_appendFiles->setEnabled(true); | ||
112 | a_loadPlaylist->setEnabled(true); | ||
113 | a_showPlaylist->setEnabled(true); | ||
114 | a_ShowMedia->setEnabled(false); | ||
86 | } | 115 | } |
87 | 116 | ||
88 | void PMainWindow::checkLib() | 117 | void PMainWindow::checkLib() |
@@ -109,14 +138,34 @@ void PMainWindow::fileSelected(const DocLnk&) | |||
109 | void PMainWindow::slotAppendFiles() | 138 | void PMainWindow::slotAppendFiles() |
110 | { | 139 | { |
111 | m_stack->raiseWidget(m_sfl); | 140 | m_stack->raiseWidget(m_sfl); |
141 | playlistOnly->setEnabled(false); | ||
142 | |||
143 | a_showPlaylist->setEnabled(true); | ||
144 | if (m_PlayLib && m_playing) { | ||
145 | a_ShowMedia->setEnabled(true); | ||
146 | } else { | ||
147 | a_ShowMedia->setEnabled(false); | ||
148 | } | ||
112 | } | 149 | } |
113 | 150 | ||
114 | void PMainWindow::slotShowList() | 151 | void PMainWindow::slotShowList() |
115 | { | 152 | { |
116 | m_stack->raiseWidget(m_playList); | 153 | m_stack->raiseWidget(m_playList); |
154 | playlistOnly->setEnabled(true); | ||
155 | a_showPlaylist->setEnabled(false); | ||
156 | if (m_playList->childCount()) { | ||
157 | a_removeFiles->setEnabled(true); | ||
158 | } else { | ||
159 | a_removeFiles->setEnabled(false); | ||
160 | } | ||
161 | if (m_PlayLib && m_playing) { | ||
162 | a_ShowMedia->setEnabled(true); | ||
163 | } else { | ||
164 | a_ShowMedia->setEnabled(false); | ||
165 | } | ||
117 | } | 166 | } |
118 | 167 | ||
119 | void PMainWindow::slotPlayList() | 168 | void PMainWindow::slotShowMediaWindow() |
120 | { | 169 | { |
121 | if (m_playing && m_LastItem && m_PlayLib) { | 170 | if (m_playing && m_LastItem && m_PlayLib) { |
122 | if (!m_LastItem->isVideo()) { | 171 | if (!m_LastItem->isVideo()) { |
@@ -124,6 +173,15 @@ void PMainWindow::slotPlayList() | |||
124 | } else { | 173 | } else { |
125 | m_stack->raiseWidget(stack_video); | 174 | m_stack->raiseWidget(stack_video); |
126 | } | 175 | } |
176 | mediaWindowraised(); | ||
177 | return; | ||
178 | } | ||
179 | } | ||
180 | |||
181 | void PMainWindow::slotPlayList() | ||
182 | { | ||
183 | if (m_playing && m_LastItem && m_PlayLib) { | ||
184 | slotShowMediaWindow(); | ||
127 | return; | 185 | return; |
128 | } | 186 | } |
129 | 187 | ||
@@ -136,10 +194,35 @@ void PMainWindow::slotPlayList() | |||
136 | slotPlayCurrent(); | 194 | slotPlayCurrent(); |
137 | } | 195 | } |
138 | 196 | ||
197 | void PMainWindow::slotUserStop() | ||
198 | { | ||
199 | if (!m_playing || !m_PlayLib) return; | ||
200 | m_playing = false; | ||
201 | m_PlayLib->stop(); | ||
202 | m_scrollBar->setEnabled(false); | ||
203 | hideVideo(); | ||
204 | slotShowList(); | ||
205 | } | ||
206 | |||
207 | void PMainWindow::slotTogglePlay(bool how) | ||
208 | { | ||
209 | if (how == m_playing) { | ||
210 | if (how) { | ||
211 | slotShowMediaWindow(); | ||
212 | } | ||
213 | return; | ||
214 | } | ||
215 | if (how) { | ||
216 | slotPlayList(); | ||
217 | } else { | ||
218 | slotUserStop(); | ||
219 | } | ||
220 | } | ||
221 | |||
139 | void PMainWindow::hideVideo() | 222 | void PMainWindow::hideVideo() |
140 | { | 223 | { |
141 | if (m_VideoPlayer->isVisible() && a_ShowFull->isOn()) { | 224 | if (m_VideoPlayer->isVisible() && a_ShowFull->isOn()) { |
142 | m_VideoPlayer->showNormal(); | 225 | //m_VideoPlayer->showNormal(); |
143 | m_VideoPlayer->hide(); | 226 | m_VideoPlayer->hide(); |
144 | } | 227 | } |
145 | } | 228 | } |
@@ -148,26 +231,37 @@ void PMainWindow::slotPlayCurrent() | |||
148 | { | 231 | { |
149 | if (!m_LastItem) { | 232 | if (!m_LastItem) { |
150 | if (m_PlayLib) m_PlayLib->stop(); | 233 | if (m_PlayLib) m_PlayLib->stop(); |
234 | m_scrollBar->setEnabled(false); | ||
235 | a_playAction->setOn(false); | ||
151 | hideVideo(); | 236 | hideVideo(); |
152 | m_stack->raiseWidget(stack_list); | 237 | slotShowList(); |
153 | return; | 238 | return; |
154 | } | 239 | } |
155 | checkLib(); | 240 | checkLib(); |
156 | m_CurrentPos = 0; | 241 | m_CurrentPos = 0; |
157 | m_playList->setCurrentItem(m_LastItem); | 242 | m_playList->setCurrentItem(m_LastItem); |
158 | odebug << "Pos: " << m_PlayLib->currentTime() << oendl; | 243 | odebug << "Pos: " << m_PlayLib->currentTime() << oendl; |
244 | int result = 0; | ||
159 | if (!m_LastItem->isVideo()) { | 245 | if (!m_LastItem->isVideo()) { |
160 | hideVideo(); | 246 | hideVideo(); |
161 | m_playing = true; | 247 | m_playing = true; |
162 | QTimer::singleShot( 500, this, SLOT( slotCheckPos() ) ); | ||
163 | m_stack->raiseWidget(stack_audio); | 248 | m_stack->raiseWidget(stack_audio); |
164 | m_AudioPlayer->playFile(m_LastItem->Lnk(),m_PlayLib); | 249 | result = m_AudioPlayer->playFile(m_LastItem->Lnk(),m_PlayLib); |
165 | } else { | 250 | } else { |
166 | m_playing = true; | 251 | m_playing = true; |
167 | QTimer::singleShot( 500, this, SLOT( slotCheckPos() ) ); | ||
168 | setupVideo(a_ShowFull->isOn()); | 252 | setupVideo(a_ShowFull->isOn()); |
169 | m_VideoPlayer->playFile(m_LastItem->Lnk(),m_PlayLib); | 253 | result = m_VideoPlayer->playFile(m_LastItem->Lnk(),m_PlayLib); |
254 | } | ||
255 | if (result<0) { | ||
256 | // fehler | ||
257 | return; | ||
170 | } | 258 | } |
259 | mediaWindowraised(); | ||
260 | odebug << "Range: " << result << oendl; | ||
261 | m_scrollBar->setRange(0,result); | ||
262 | m_scrollBar->setValue(0); | ||
263 | m_scrollBar->setEnabled(true); | ||
264 | QTimer::singleShot( 500, this, SLOT( slotCheckPos() ) ); | ||
171 | } | 265 | } |
172 | 266 | ||
173 | void PMainWindow::slotPlayNext() | 267 | void PMainWindow::slotPlayNext() |
@@ -192,15 +286,6 @@ void PMainWindow::slotPlayPrevious() | |||
192 | slotPlayCurrent(); | 286 | slotPlayCurrent(); |
193 | } | 287 | } |
194 | 288 | ||
195 | void PMainWindow::slotUserStop() | ||
196 | { | ||
197 | if (!m_playing || !m_PlayLib) return; | ||
198 | m_playing = false; | ||
199 | m_PlayLib->stop(); | ||
200 | hideVideo(); | ||
201 | m_stack->raiseWidget(stack_list); | ||
202 | } | ||
203 | |||
204 | void PMainWindow::slotStopped() | 289 | void PMainWindow::slotStopped() |
205 | { | 290 | { |
206 | if (!m_playing) return; | 291 | if (!m_playing) return; |
@@ -211,45 +296,65 @@ void PMainWindow::slotStopped() | |||
211 | void PMainWindow::slotCheckPos() | 296 | void PMainWindow::slotCheckPos() |
212 | { | 297 | { |
213 | if (!m_playing) return; | 298 | if (!m_playing) return; |
214 | emit sigPos(m_PlayLib->currentTime()); | 299 | //emit sigPos(m_PlayLib->currentTime()); |
300 | m_scrollBar->setValue(m_PlayLib->currentTime()); | ||
215 | QTimer::singleShot( 1000, this, SLOT( slotCheckPos() ) ); | 301 | QTimer::singleShot( 1000, this, SLOT( slotCheckPos() ) ); |
216 | } | 302 | } |
217 | 303 | ||
218 | void PMainWindow::slotRemoveFiles() | 304 | void PMainWindow::slotRemoveFiles() |
219 | { | 305 | { |
220 | slotUserStop(); | 306 | if (m_playing||!m_playList->isVisible()) return; |
221 | PlaylistItem* Item = m_playList->currentItem(); | 307 | PlaylistItem* Item = m_playList->currentItem(); |
222 | m_stack->raiseWidget(stack_list); | 308 | slotShowList(); |
223 | m_playList->removeFromList(Item); | 309 | m_playList->removeFromList(Item); |
224 | } | 310 | } |
225 | 311 | ||
226 | void PMainWindow::setupActions() | 312 | void PMainWindow::setupActions() |
227 | { | 313 | { |
228 | a_appendFiles = new QAction(tr("Open file(s)"),Resource::loadIconSet( "opieplayer2/add_to_playlist" ), 0, 0, this, 0, false ); | 314 | a_appendFiles = new QAction(tr("Append file(s)"),Resource::loadIconSet( "opieplayer2/add_to_playlist" ), 0, 0, this, 0, false ); |
229 | connect(a_appendFiles,SIGNAL(activated()),this,SLOT(slotAppendFiles())); | 315 | connect(a_appendFiles,SIGNAL(activated()),this,SLOT(slotAppendFiles())); |
316 | a_addDir = new QAction(tr("Add directory"),Resource::loadIconSet("folder_open"),0,0,this,0,false); | ||
317 | connect(a_addDir,SIGNAL(activated()),m_playList,SLOT(slotAppendDir())); | ||
318 | a_loadPlaylist = new QAction(tr("Append .m3u playlist"),Resource::loadIconSet("opieplayer2/add_to_playlist"),0,0,this,0,false); | ||
319 | connect(a_loadPlaylist,SIGNAL(activated()),m_playList,SLOT(slotOpenM3u())); | ||
320 | a_savePlaylist = new QAction(tr("Save .m3u playlist"),Resource::loadIconSet("save"),0,0,this,0,false); | ||
321 | connect(a_savePlaylist,SIGNAL(activated()),m_playList,SLOT(slotSaveAsM3u())); | ||
322 | |||
323 | playlistOnly = new QActionGroup(this,"playlistgroup",false); | ||
324 | playlistOnly->insert(a_appendFiles); | ||
325 | playlistOnly->insert(a_addDir); | ||
326 | playlistOnly->insert(a_loadPlaylist); | ||
327 | playlistOnly->insert(a_savePlaylist); | ||
328 | |||
230 | a_showPlaylist = new QAction(tr("Show playlist"),Resource::loadIconSet( "txt" ), 0, 0, this, 0, false ); | 329 | a_showPlaylist = new QAction(tr("Show playlist"),Resource::loadIconSet( "txt" ), 0, 0, this, 0, false ); |
231 | connect(a_showPlaylist,SIGNAL(activated()),this,SLOT(slotShowList())); | 330 | connect(a_showPlaylist,SIGNAL(activated()),this,SLOT(slotShowList())); |
331 | a_ShowMedia = new QAction(tr("Show media window"),Resource::loadIconSet("opieplayer2/musicfile"), 0, 0, this, 0, false ); | ||
332 | connect(a_ShowMedia,SIGNAL(activated()),this,SLOT(slotShowMediaWindow())); | ||
333 | |||
232 | a_removeFiles = new QAction(tr("Remove file"),Resource::loadIconSet( "opieplayer2/remove_from_playlist" ), 0, 0, this, 0, false ); | 334 | a_removeFiles = new QAction(tr("Remove file"),Resource::loadIconSet( "opieplayer2/remove_from_playlist" ), 0, 0, this, 0, false ); |
233 | connect(a_removeFiles,SIGNAL(activated()),this,SLOT(slotRemoveFiles())); | 335 | connect(a_removeFiles,SIGNAL(activated()),this,SLOT(slotRemoveFiles())); |
234 | 336 | ||
235 | playersGroup = new QActionGroup(this,"playgroup",false); | 337 | playersGroup = new QActionGroup(this,"playgroup",false); |
236 | 338 | ||
237 | a_playAction = new QAction(tr("Play list"),Resource::loadIconSet( "opieplayer2/play" ), 0, 0, this, 0, false ); | 339 | a_playAction = new QAction(tr("Play list"),Resource::loadIconSet( "opieplayer2/play" ), 0, 0, this, 0, true); |
238 | connect(a_playAction,SIGNAL(activated()),this,SLOT(slotPlayList())); | 340 | a_playAction->setOn(false); |
341 | connect(a_playAction,SIGNAL(toggled(bool)),this,SLOT(slotTogglePlay(bool))); | ||
342 | |||
239 | a_playNext = new QAction(tr("Play next in list"),Resource::loadIconSet( "fastforward" ), 0, 0, this, 0, false ); | 343 | a_playNext = new QAction(tr("Play next in list"),Resource::loadIconSet( "fastforward" ), 0, 0, this, 0, false ); |
240 | connect(a_playNext,SIGNAL(activated()),this,SLOT(slotPlayNext())); | 344 | connect(a_playNext,SIGNAL(activated()),this,SLOT(slotPlayNext())); |
241 | a_playPrevious = new QAction(tr("Play previous in list"),Resource::loadIconSet( "fastback" ), 0, 0, this, 0, false ); | 345 | a_playPrevious = new QAction(tr("Play previous in list"),Resource::loadIconSet( "fastback" ), 0, 0, this, 0, false ); |
242 | connect(a_playPrevious,SIGNAL(activated()),this,SLOT(slotPlayPrevious())); | 346 | connect(a_playPrevious,SIGNAL(activated()),this,SLOT(slotPlayPrevious())); |
243 | a_ShowFull = new QAction(tr("Show videos fullscreen"),Resource::loadIconSet( "fullscreen" ), 0, 0, this, 0, true ); | 347 | a_ShowFull = new QAction(tr("Show videos fullscreen"),Resource::loadIconSet( "fullscreen" ), 0, 0, this, 0, true ); |
244 | connect(a_ShowFull,SIGNAL(toggled(bool)),this,SLOT(slotToggleFull(bool))); | 348 | connect(a_ShowFull,SIGNAL(toggled(bool)),this,SLOT(slotToggleFull(bool))); |
245 | a_stopPlay = new QAction(tr("Show videos fullscreen"),Resource::loadIconSet( "stop" ), 0, 0, this, 0, false ); | ||
246 | connect(a_stopPlay,SIGNAL(activated()),this,SLOT(slotUserStop())); | ||
247 | 349 | ||
248 | playersGroup->insert(a_playPrevious); | 350 | playersGroup->insert(a_playPrevious); |
249 | playersGroup->insert(a_playAction); | 351 | playersGroup->insert(a_playAction); |
250 | playersGroup->insert(a_stopPlay); | ||
251 | playersGroup->insert(a_playNext); | 352 | playersGroup->insert(a_playNext); |
252 | //playersGroup->insert(a_ShowFull); | 353 | |
354 | /* initial states of actions */ | ||
355 | a_showPlaylist->setEnabled(false); | ||
356 | a_removeFiles->setEnabled(false); | ||
357 | a_ShowMedia->setEnabled(false); | ||
253 | } | 358 | } |
254 | 359 | ||
255 | void PMainWindow::setupToolBar() | 360 | void PMainWindow::setupToolBar() |
@@ -263,6 +368,7 @@ void PMainWindow::setupToolBar() | |||
263 | a_appendFiles->addTo(m_toolBar); | 368 | a_appendFiles->addTo(m_toolBar); |
264 | a_removeFiles->addTo(m_toolBar); | 369 | a_removeFiles->addTo(m_toolBar); |
265 | a_showPlaylist->addTo(m_toolBar); | 370 | a_showPlaylist->addTo(m_toolBar); |
371 | a_ShowMedia->addTo(m_toolBar); | ||
266 | a_ShowFull->addTo(m_toolBar); | 372 | a_ShowFull->addTo(m_toolBar); |
267 | playersGroup->addTo(m_toolBar); | 373 | playersGroup->addTo(m_toolBar); |
268 | } | 374 | } |
@@ -274,14 +380,15 @@ void PMainWindow::setupVideo(bool full) | |||
274 | m_VideoPlayer->reparent(0, WStyle_Customize | WStyle_NoBorderEx, QPoint(0,0)); | 380 | m_VideoPlayer->reparent(0, WStyle_Customize | WStyle_NoBorderEx, QPoint(0,0)); |
275 | m_VideoPlayer->setGeometry(0,0,qApp->desktop()->size().width(),qApp->desktop()->size().height()); | 381 | m_VideoPlayer->setGeometry(0,0,qApp->desktop()->size().width(),qApp->desktop()->size().height()); |
276 | m_VideoPlayer->showFullScreen(); | 382 | m_VideoPlayer->showFullScreen(); |
383 | connect(m_VideoPlayer,SIGNAL(videoclicked()),this,SLOT(slotVideoclicked())); | ||
277 | } else { | 384 | } else { |
278 | m_VideoPlayer->hide(); | 385 | m_VideoPlayer->hide(); |
386 | m_VideoPlayer->disconnect(this); | ||
279 | m_stack->addWidget(m_VideoPlayer,stack_video); | 387 | m_stack->addWidget(m_VideoPlayer,stack_video); |
280 | m_stack->raiseWidget(stack_video); | 388 | m_stack->raiseWidget(stack_video); |
281 | } | 389 | } |
390 | mediaWindowraised(); | ||
282 | m_VideoPlayer->fullScreen(full); | 391 | m_VideoPlayer->fullScreen(full); |
283 | m_VideoPlayer->disconnect(this); | ||
284 | connect(m_VideoPlayer,SIGNAL(videoclicked()),this,SLOT(slotVideoclicked())); | ||
285 | } | 392 | } |
286 | 393 | ||
287 | void PMainWindow::slotVideoclicked() | 394 | void PMainWindow::slotVideoclicked() |
@@ -308,10 +415,15 @@ void PMainWindow::setupMenu() | |||
308 | m_menuBar->insertItem( tr( "Playlist" ), fileMenu ); | 415 | m_menuBar->insertItem( tr( "Playlist" ), fileMenu ); |
309 | a_appendFiles->addTo(fileMenu); | 416 | a_appendFiles->addTo(fileMenu); |
310 | a_removeFiles->addTo(fileMenu); | 417 | a_removeFiles->addTo(fileMenu); |
418 | a_addDir->addTo(fileMenu); | ||
419 | fileMenu->insertSeparator(); | ||
420 | a_loadPlaylist->addTo(fileMenu); | ||
421 | a_savePlaylist->addTo(fileMenu); | ||
311 | 422 | ||
312 | dispMenu = new QPopupMenu( m_menuBar ); | 423 | dispMenu = new QPopupMenu( m_menuBar ); |
313 | m_menuBar->insertItem( tr( "Show" ), dispMenu ); | 424 | m_menuBar->insertItem( tr( "Show" ), dispMenu ); |
314 | a_showPlaylist->addTo(dispMenu); | 425 | a_showPlaylist->addTo(dispMenu); |
426 | a_ShowMedia->addTo(dispMenu); | ||
315 | a_ShowFull->addTo(dispMenu); | 427 | a_ShowFull->addTo(dispMenu); |
316 | playMenu = new QPopupMenu(m_menuBar); | 428 | playMenu = new QPopupMenu(m_menuBar); |
317 | m_menuBar->insertItem(tr("Playing"),playMenu); | 429 | m_menuBar->insertItem(tr("Playing"),playMenu); |