author | alwin <alwin> | 2005-04-12 16:35:06 (UTC) |
---|---|---|
committer | alwin <alwin> | 2005-04-12 16:35:06 (UTC) |
commit | 4fd936e4096ba9c732bde17a48489bfbb94b19ba (patch) (side-by-side diff) | |
tree | fa96015a24e24298c227bfa19314603debb1586d | |
parent | 6df2eb36803e072ea9db62153b762250742610f0 (diff) | |
download | opie-4fd936e4096ba9c732bde17a48489bfbb94b19ba.zip opie-4fd936e4096ba9c732bde17a48489bfbb94b19ba.tar.gz opie-4fd936e4096ba9c732bde17a48489bfbb94b19ba.tar.bz2 |
some gui stuff
may switch if videos will scaled up even if display size is larger than
video size
-rw-r--r-- | noncore/multimedia/opieplayer3/audiowidget.cpp | 110 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer3/audiowidget.h | 10 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer3/mwindow.cpp | 81 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer3/mwindow.h | 16 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer3/playlist.cpp | 40 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer3/playlist.h | 2 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer3/videowidget.cpp | 77 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer3/videowidget.h | 11 |
8 files changed, 152 insertions, 195 deletions
diff --git a/noncore/multimedia/opieplayer3/audiowidget.cpp b/noncore/multimedia/opieplayer3/audiowidget.cpp index b435c1b..aeebf45 100644 --- a/noncore/multimedia/opieplayer3/audiowidget.cpp +++ b/noncore/multimedia/opieplayer3/audiowidget.cpp @@ -12,135 +12,85 @@ AudioWidget::AudioWidget( QWidget * parent, const char * name, WFlags f)
:QWidget(parent,name,f)
{
m_xineLib = 0;
m_MainLayout = new QVBoxLayout(this);
m_MainLayout->setAutoAdd(true);
m_InfoBox = new QTextView(this);
-#if 0
- m_PosSlider = new QSlider(QSlider::Horizontal,this);
- m_PosSlider->setTickInterval(60);
- connect(m_PosSlider,SIGNAL(valueChanged(int)),this,SLOT(slotNewPos(int)));
- connect(m_PosSlider,SIGNAL(sliderMoved(int)),this,SLOT(slotNewPos(int)));
- connect(m_PosSlider,SIGNAL(sliderPressed()),this,SLOT(sliderPressed()));
- connect(m_PosSlider,SIGNAL(sliderReleased()),this,SLOT(sliderReleased()));
- m_pressed = false;
- m_uppos=0;
-#endif
}
AudioWidget::~AudioWidget()
{
}
-void AudioWidget::slotNewPos(int /* pos*/)
-{
- if (!m_xineLib) return;
-#if 0
- if (m_uppos==pos) return;
- m_xineLib->seekTo(pos);
-#endif
-}
-
-void AudioWidget::sliderPressed()
-{
-#if 0
- m_pressed = true;
-#endif
-}
-
-void AudioWidget::sliderReleased()
-{
-#if 0
- m_pressed = false;
-#endif
-}
-
-void AudioWidget::closeEvent(QCloseEvent*e)
-{
- odebug << "AudioWidget::closeEvent(QCloseEvent*e)" << oendl;
- if (m_xineLib) {
- m_xineLib->stop();
- }
- QWidget::closeEvent(e);
-}
-
int AudioWidget::playFile(const DocLnk&aLnk,XINE::Lib*aLib)
{
m_current = aLnk;
if (m_xineLib != aLib) {
if (m_xineLib) disconnect(m_xineLib);
m_xineLib = aLib;
}
if (!m_xineLib) {
return -1;
}
-#if 0
- m_uppos=0;
- m_PosSlider->setValue(0);
-#endif
- m_xineLib->setShowVideo(false);
- int res = m_xineLib->play(m_current.file());
+ int res = m_xineLib->play(m_current.file(),0,0);
if (res != 1) {
return -2;
}
+ if (!m_xineLib->hasVideo()) {
+ m_xineLib->setShowVideo( false );
+ }
+
// title
QString title = m_xineLib->metaInfo(0);
// artist
QString artist = m_xineLib->metaInfo(2);
// album
QString album = m_xineLib->metaInfo(4);
int l = m_xineLib->length();
- int tmp = l;
-#if 0
- m_PosSlider->setRange(0,l);
-#endif
- QString laenge="";
- int h = l/3600;
- l-=h*3600;
- int m = l/60;
- l-=m*60;
- if (h>0) {
- laenge+=QString("%1 h").arg(h);
- }
- if (m>0) {
- if (!laenge.isEmpty()) laenge+=" ";
- laenge+=QString("%1 m").arg(m);
- }
- if (l>0) {
- if (!laenge.isEmpty()) laenge+=" ";
- laenge+=QString("%1 s").arg(l);
- }
- QString text = "<qt>";
+ QString laenge = secToString(l);
+ QString text = "<qt><center><table border=\"0\">";
if (artist.length()) {
- text+="<H2><center>"+artist+"</center></h2>";
+ text+="<tr><td>"+tr("Artist: ")+"</td><td><b>"+artist+"</b></td></tr>";
}
if (title.length()) {
- text+="<H2><center>"+title+"</center></h2>";
+ text+="<tr><td>"+tr("Title: ")+"</td><td><font size=\"+2\">"+title+"</font></td></tr>";
} else {
- text+="<H2><center>"+m_current.name()+"</center></h2>";
+ text+="<tr><td>"+tr("Filename: ")+"</td><td><b>"+m_current.name()+"</b></td></tr>";
}
if (album.length()) {
- text+="<H2><center>"+album+"</center></h2>";
+ text+="<tr><td>"+tr("Album: ")+"</td><td><b>"+album+"</b></td></tr>";
}
- text+="<h3><center>"+laenge+"</center></h3>";
+ text+="<tr><td>"+tr("Length: ")+"</td><td><b>"+laenge+"</b></td></tr>";
+ text+="</table></center></qt>";
m_InfoBox->setText(text);
- return tmp;
+ return l;
+}
+
+QString AudioWidget::secToString(int sec)
+{
+ int l = sec;
+ int h = l/3600;
+ l-=h*3600;
+ int m = l/60;
+ l-=m*60;
+ QString s = "";
+ if (h>0) {
+ s.sprintf("%2i:%2i:%2i",h,m,l);
+ } else {
+ s.sprintf("%02i:%02i",m,l);
+ }
+ return s;
}
void AudioWidget::stopPlaying()
{
if (m_xineLib) {
m_xineLib->stop();
}
}
void AudioWidget::updatePos(int /* val */)
{
-#if 0
- if (m_pressed) return;
- m_uppos = val;
- m_PosSlider->setValue(val);
-#endif
}
diff --git a/noncore/multimedia/opieplayer3/audiowidget.h b/noncore/multimedia/opieplayer3/audiowidget.h index 5e5dc09..abdd781 100644 --- a/noncore/multimedia/opieplayer3/audiowidget.h +++ b/noncore/multimedia/opieplayer3/audiowidget.h @@ -27,22 +27,14 @@ public slots: virtual void stopPlaying();
virtual void updatePos(int);
protected:
XINE::Lib*m_xineLib;
DocLnk m_current;
QVBoxLayout*m_MainLayout;
QTextView*m_InfoBox;
-#if 0
- QSlider*m_PosSlider;
- bool m_pressed;
- int m_uppos;
-#endif
+ static QString secToString(int sec);
protected slots:
- virtual void closeEvent(QCloseEvent*e);
- virtual void slotNewPos(int pos);
- virtual void sliderPressed();
- virtual void sliderReleased();
};
#endif
diff --git a/noncore/multimedia/opieplayer3/mwindow.cpp b/noncore/multimedia/opieplayer3/mwindow.cpp index 57418f0..75d1490 100644 --- a/noncore/multimedia/opieplayer3/mwindow.cpp +++ b/noncore/multimedia/opieplayer3/mwindow.cpp @@ -55,55 +55,63 @@ OPIE_EXPORT_APP( Opie::Core::OApplicationFactory<PMainWindow>)
using namespace Opie::Ui;
PMainWindow::PMainWindow(QWidget*w, const char*name, WFlags f)
: QMainWindow(w,name,f)
{
+ checkLib();
setCaption( QObject::tr("Opie Mediaplayer 3" ) );
m_MainBox = new QWidget(this);
QVBoxLayout*m_l = new QVBoxLayout(m_MainBox);
m_stack = new OWidgetStack(m_MainBox);
m_stack->forceMode(Opie::Ui::OWidgetStack::SmallScreen);
m_l->addWidget(m_stack);
- m_scrollBar = new QSlider(QSlider::Horizontal,m_MainBox);
- m_l->addWidget(m_scrollBar);
- m_scrollBar->setEnabled(false);
+ m_PosSlider = new QSlider(QSlider::Horizontal,m_MainBox);
+ m_l->addWidget(m_PosSlider);
+ m_PosSlider->setEnabled(false);
m_playList = new PlaylistView(m_stack,"playlist");
m_stack->addWidget(m_playList,stack_list);
connect(m_playList,SIGNAL(contentChanged(int)),this,SLOT(slotListChanged(int)));
m_sfl = new OFileSelector("video/*;audio/*",m_stack);
m_stack->addWidget(m_sfl,stack_file);
connect(m_sfl, SIGNAL(fileSelected(const DocLnk &)), m_playList, SLOT(slotAddFile(const DocLnk &)));
m_AudioPlayer = new AudioWidget(m_stack);
m_stack->addWidget(m_AudioPlayer,stack_audio);
connect(this,SIGNAL(sigPos(int)),m_AudioPlayer,SLOT(updatePos(int)));
m_VideoPlayer = new VideoWidget(m_stack);
m_stack->addWidget(m_VideoPlayer,stack_video);
connect(this,SIGNAL(sigPos(int)),m_VideoPlayer,SLOT(updatePos(int)));
connect(m_VideoPlayer,SIGNAL(videoclicked()),this,SLOT(slotVideoclicked()));
+ connect(m_PosSlider,SIGNAL(valueChanged(int)),this,SLOT(slotNewPos(int)));
+ connect(m_PosSlider,SIGNAL(sliderMoved(int)),this,SLOT(slotNewPos(int)));
+ connect(m_PosSlider,SIGNAL(sliderPressed()),this,SLOT(sliderPressed()));
+ connect(m_PosSlider,SIGNAL(sliderReleased()),this,SLOT(sliderReleased()));
+ m_pressed = false;
+ m_uppos=0;
+
m_stack->raiseWidget(stack_list);
- m_PlayLib = 0;
m_LastItem = 0;
setupActions();
setupToolBar();
setupMenu();
setCentralWidget(m_MainBox );
}
void PMainWindow::slotListChanged(int count)
{
+ playersGroup->setEnabled(count>0);
if (!m_playList->isVisible()) {
return;
}
a_removeFiles->setEnabled(count>0);
}
void PMainWindow::mediaWindowraised()
{
@@ -112,18 +120,19 @@ void PMainWindow::mediaWindowraised() a_loadPlaylist->setEnabled(true);
a_showPlaylist->setEnabled(true);
a_ShowMedia->setEnabled(false);
}
void PMainWindow::checkLib()
{
if (m_PlayLib == 0) {
- m_PlayLib = new XINE::Lib(XINE::Lib::InitializeImmediately);
- m_PlayLib->ensureInitialized();
+ m_PlayLib = new XINE::Lib(XINE::Lib::InitializeInThread);
+ qApp->processEvents();
+// m_PlayLib->ensureInitialized();
connect(m_PlayLib,SIGNAL(stopped()),this,SLOT(slotStopped()));
}
}
PMainWindow::~PMainWindow()
{
if (m_PlayLib) {
m_PlayLib->stop();
@@ -194,17 +203,17 @@ void PMainWindow::slotPlayList() slotPlayCurrent();
}
void PMainWindow::slotUserStop()
{
if (!m_playing || !m_PlayLib) return;
m_playing = false;
m_PlayLib->stop();
- m_scrollBar->setEnabled(false);
+ m_PosSlider->setEnabled(false);
hideVideo();
slotShowList();
}
void PMainWindow::slotTogglePlay(bool how)
{
if (how == m_playing) {
if (how) {
@@ -226,26 +235,26 @@ void PMainWindow::hideVideo() m_VideoPlayer->hide();
}
}
void PMainWindow::slotPlayCurrent()
{
if (!m_LastItem) {
if (m_PlayLib) m_PlayLib->stop();
- m_scrollBar->setEnabled(false);
+ m_PosSlider->setEnabled(false);
a_playAction->setOn(false);
hideVideo();
slotShowList();
return;
}
- checkLib();
m_CurrentPos = 0;
m_playList->setCurrentItem(m_LastItem);
- odebug << "Pos: " << m_PlayLib->currentTime() << oendl;
+ m_uppos = 0;
+ m_PosSlider->setValue(0);
int result = 0;
if (!m_LastItem->isVideo()) {
hideVideo();
m_playing = true;
m_stack->raiseWidget(stack_audio);
result = m_AudioPlayer->playFile(m_LastItem->Lnk(),m_PlayLib);
} else {
m_playing = true;
@@ -253,19 +262,19 @@ void PMainWindow::slotPlayCurrent() result = m_VideoPlayer->playFile(m_LastItem->Lnk(),m_PlayLib);
}
if (result<0) {
// fehler
return;
}
mediaWindowraised();
odebug << "Range: " << result << oendl;
- m_scrollBar->setRange(0,result);
- m_scrollBar->setValue(0);
- m_scrollBar->setEnabled(true);
+ m_PosSlider->setEnabled(true);
+ m_PosSlider->setRange(0,m_PlayLib->length());
+ m_PosSlider->setValue(m_PlayLib->currentTime());
QTimer::singleShot( 500, this, SLOT( slotCheckPos() ) );
}
void PMainWindow::slotPlayNext()
{
PlaylistItem*item = m_playList->nextItem(m_LastItem);
if (!item) return;
m_LastItem = item;
@@ -284,25 +293,29 @@ void PMainWindow::slotPlayPrevious() if (!item) return;
m_LastItem = item;
slotPlayCurrent();
}
void PMainWindow::slotStopped()
{
if (!m_playing) return;
+ odebug << "Slot stopped" << oendl;
m_playing = false;
slotGoNext();
}
void PMainWindow::slotCheckPos()
{
if (!m_playing) return;
- //emit sigPos(m_PlayLib->currentTime());
- m_scrollBar->setValue(m_PlayLib->currentTime());
+ if (!m_pressed) {
+ m_uppos = m_PlayLib->currentTime();
+ emit sigPos(m_uppos);
+ m_PosSlider->setValue(m_PlayLib->currentTime());
+ }
QTimer::singleShot( 1000, this, SLOT( slotCheckPos() ) );
}
void PMainWindow::slotRemoveFiles()
{
if (m_playing||!m_playList->isVisible()) return;
PlaylistItem* Item = m_playList->currentItem();
slotShowList();
@@ -310,19 +323,19 @@ void PMainWindow::slotRemoveFiles() }
void PMainWindow::setupActions()
{
a_appendFiles = new QAction(tr("Append file(s)"),Resource::loadIconSet( "opieplayer2/add_to_playlist" ), 0, 0, this, 0, false );
connect(a_appendFiles,SIGNAL(activated()),this,SLOT(slotAppendFiles()));
a_addDir = new QAction(tr("Add directory"),Resource::loadIconSet("folder_open"),0,0,this,0,false);
connect(a_addDir,SIGNAL(activated()),m_playList,SLOT(slotAppendDir()));
- a_loadPlaylist = new QAction(tr("Append .m3u playlist"),Resource::loadIconSet("opieplayer2/add_to_playlist"),0,0,this,0,false);
+ a_loadPlaylist = new QAction(tr("Append playlist"),Resource::loadIconSet("opieplayer2/add_to_playlist"),0,0,this,0,false);
connect(a_loadPlaylist,SIGNAL(activated()),m_playList,SLOT(slotOpenM3u()));
- a_savePlaylist = new QAction(tr("Save .m3u playlist"),Resource::loadIconSet("save"),0,0,this,0,false);
+ a_savePlaylist = new QAction(tr("Save playlist"),Resource::loadIconSet("save"),0,0,this,0,false);
connect(a_savePlaylist,SIGNAL(activated()),m_playList,SLOT(slotSaveAsM3u()));
playlistOnly = new QActionGroup(this,"playlistgroup",false);
playlistOnly->insert(a_appendFiles);
playlistOnly->insert(a_addDir);
playlistOnly->insert(a_loadPlaylist);
playlistOnly->insert(a_savePlaylist);
@@ -346,20 +359,28 @@ void PMainWindow::setupActions() connect(a_playPrevious,SIGNAL(activated()),this,SLOT(slotPlayPrevious()));
a_ShowFull = new QAction(tr("Show videos fullscreen"),Resource::loadIconSet( "fullscreen" ), 0, 0, this, 0, true );
connect(a_ShowFull,SIGNAL(toggled(bool)),this,SLOT(slotToggleFull(bool)));
playersGroup->insert(a_playPrevious);
playersGroup->insert(a_playAction);
playersGroup->insert(a_playNext);
+
/* initial states of actions */
a_showPlaylist->setEnabled(false);
a_removeFiles->setEnabled(false);
a_ShowMedia->setEnabled(false);
+ playersGroup->setEnabled(false);
+
+ settingsGroup = new QActionGroup(this,"configgroup",false);
+
+ a_Scaleup = new QAction(tr("Scale videos larger"),Resource::loadIconSet( "fullscreen" ), 0, 0, this, 0, true );
+ connect(a_Scaleup,SIGNAL(toggled(bool)),this,SLOT(slot_scaleupToggled(bool)));
+ settingsGroup->insert(a_Scaleup);
}
void PMainWindow::setupToolBar()
{
setToolBarsMovable( false );
m_toolBar = new QToolBar( this );
//m_menuBar = new QMenuBar(m_toolBar);
m_menuBar=menuBar();
@@ -422,11 +443,35 @@ void PMainWindow::setupMenu() dispMenu = new QPopupMenu( m_menuBar );
m_menuBar->insertItem( tr( "Show" ), dispMenu );
a_showPlaylist->addTo(dispMenu);
a_ShowMedia->addTo(dispMenu);
a_ShowFull->addTo(dispMenu);
playMenu = new QPopupMenu(m_menuBar);
m_menuBar->insertItem(tr("Playing"),playMenu);
-
playersGroup->addTo(playMenu);
+ configMenu = new QPopupMenu(m_menuBar);
+ m_menuBar->insertItem(tr("Config"),configMenu);
+ settingsGroup->addTo(configMenu);
+}
+
+void PMainWindow::slotNewPos(int pos)
+{
+ if (!m_PlayLib) return;
+ if (m_uppos==pos) return;
+ m_PlayLib->seekTo(pos);
+}
+
+void PMainWindow::sliderPressed()
+{
+ m_pressed = true;
+}
+
+void PMainWindow::sliderReleased()
+{
+ m_pressed = false;
+}
+
+void PMainWindow::slot_scaleupToggled(bool how)
+{
+ m_VideoPlayer->scaleUp(how);
}
diff --git a/noncore/multimedia/opieplayer3/mwindow.h b/noncore/multimedia/opieplayer3/mwindow.h index 10c7a29..5d011d5 100644 --- a/noncore/multimedia/opieplayer3/mwindow.h +++ b/noncore/multimedia/opieplayer3/mwindow.h @@ -77,35 +77,38 @@ protected: static const int stack_audio = 2;
static const int stack_video = 3;
Opie::Ui::OWidgetStack *m_stack;
Opie::Ui::OFileSelector*m_sfl;
PlaylistView*m_playList;
AudioWidget*m_AudioPlayer;
VideoWidget*m_VideoPlayer;
QWidget*m_MainBox;
- QSlider*m_scrollBar;
+ QSlider*m_PosSlider;
QAction*a_appendFiles,*a_removeFiles,*a_showPlaylist,*a_playAction,*a_stopAction;
QAction*a_playNext,*a_playPrevious,*a_ShowFull,*a_stopPlay,*a_ShowMedia;
QAction*a_addDir,*a_loadPlaylist,*a_savePlaylist;
- QActionGroup*playersGroup,*playlistOnly;
+ QAction*a_Scaleup;
+ QActionGroup*playersGroup,*playlistOnly,*settingsGroup;
QToolBar*m_toolBar;
- QPopupMenu *fileMenu,*dispMenu,*playMenu;
+ QPopupMenu *fileMenu,*dispMenu,*playMenu,*configMenu;
QMenuBar*m_menuBar;
XINE::Lib*m_PlayLib;
void setupActions();
void setupToolBar();
void setupMenu();
void checkLib();
void setupVideo(bool full);
void hideVideo();
-
bool m_playing:1;
+ bool m_pressed:1;
+ int m_uppos;
+
int m_CurrentPos;
PlaylistItem*m_LastItem;
void mediaWindowraised();
protected slots:
virtual void fileSelected(const DocLnk&);
virtual void slotAppendFiles();
virtual void slotRemoveFiles();
@@ -117,14 +120,19 @@ protected slots: virtual void slotStopped();
virtual void slotCheckPos();
virtual void slotToggleFull(bool);
virtual void slotUserStop();
virtual void slotGoNext();
virtual void slotTogglePlay(bool);
virtual void slotShowMediaWindow();
virtual void slotListChanged(int);
+ virtual void slotNewPos(int pos);
+ virtual void sliderPressed();
+ virtual void sliderReleased();
+ virtual void slot_scaleupToggled(bool);
+
signals:
void sigPos(int);
};
#endif
diff --git a/noncore/multimedia/opieplayer3/playlist.cpp b/noncore/multimedia/opieplayer3/playlist.cpp index babe8ce..2eb40e3 100644 --- a/noncore/multimedia/opieplayer3/playlist.cpp +++ b/noncore/multimedia/opieplayer3/playlist.cpp @@ -99,38 +99,49 @@ PlaylistView::~PlaylistView() {
if (m_Infolib) delete m_Infolib;
}
void PlaylistView::checkLib()
{
if (!m_Infolib) {
m_Infolib = new XINE::Lib(XINE::Lib::InitializeImmediately);
+ connect(m_Infolib,SIGNAL(stopped()),this,SLOT(slotDummyStop()));
m_Infolib->ensureInitialized();
}
}
+void PlaylistView::slotDummyStop()
+{
+ odebug << "void PlaylistView::slotDummyStop()" << oendl;
+}
+
void PlaylistView::slotAddFile(const DocLnk&aLink)
{
- addFile(aLink.file(),aLink.name());
+ QFileInfo f(aLink.file());
+ if (f.extension(FALSE).lower()=="m3u"||f.extension(FALSE).lower()=="pls") {
+ readPlayList(aLink.file());
+ } else {
+ addFile(aLink.file(),aLink.name());
+ }
emit contentChanged(childCount());
}
void PlaylistView::addFile(const QString&aFile,const QString&aName)
{
QFileInfo fileInfo(aFile);
if (!fileInfo.exists()) return;
checkLib();
- m_Infolib->stop();
-
QString name = aName;
if (name.isEmpty()) {
name = fileInfo.fileName();
}
int i = m_Infolib->setfile(aFile.utf8().data());
+ /* realy! otherwise we get an "stopped" signal when playing! - I don't know why */
+ m_Infolib->stop();
odebug << "File set: " << i << " ("<<aFile.utf8().data()<<")"<<oendl;
if (i<1) {
i = m_Infolib->error();
odebug << "Errorcode: " << i << oendl;
QString msg;
msg = QString(tr("Error open file %1: ")).arg(name);
switch (i) {
case 1:
@@ -175,25 +186,19 @@ void PlaylistView::addFile(const QString&aFile,const QString&aName) m_lastItem->setText(COL_ALBUM,m_Infolib->metaInfo(4));
int l = m_Infolib->length();
int h = l/3600;
l-=h*3600;
int m = l/60;
l-=m*60;
codec = "";
if (h>0) {
- codec+=QString("%1 h").arg(h);
- }
- if (m>0) {
- if (!codec.isEmpty()) codec+=" ";
- codec+=QString("%1 m").arg(m);
- }
- if (l>0) {
- if (!codec.isEmpty()) codec+=" ";
- codec+=QString("%1 s").arg(l);
+ codec.sprintf("%2i:%2i:%2i h",h,m,l);
+ } else {
+ codec.sprintf("%02i:%02i m",m,l);
}
// time
m_lastItem->setText(COL_TIME,codec);
m_lastItem->Video(m_Infolib->hasVideo());
m_items.append(m_lastItem);
setSelected(m_lastItem,true);
}
@@ -211,45 +216,50 @@ void PlaylistView::slotAppendDir() }
void PlaylistView::slotOpenM3u()
{
QStringList types;
QMap<QString, QStringList> mimeTypes;
types << "audio/x-mpegurl";
mimeTypes.insert("Playlists",types);
- mimeTypes.insert("All",types);
+// mimeTypes.insert("All",types);
QString fileName= Opie::Ui::OFileDialog::getOpenFileName(Opie::Ui::OFileSelector::EXTENDED,
m_lastDir,"playlist.m3u", mimeTypes);
if (fileName.isEmpty()) {
return;
}
+ readPlayList(fileName);
+ emit contentChanged(childCount());
+}
+
+void PlaylistView::readPlayList(const QString&fileName)
+{
QFileInfo f(fileName);
Om3u _om3u(fileName, IO_ReadOnly);
if (f.extension(FALSE).lower()=="m3u") {
_om3u.readM3u();
} else if (f.extension(FALSE).lower()=="pls") {
_om3u.readPls();
}
for (unsigned int j=0; j<_om3u.count();++j) {
addFile(_om3u[j]);
}
- emit contentChanged(childCount());
}
void PlaylistView::slotSaveAsM3u()
{
QStringList types;
QMap<QString, QStringList> mimeTypes;
types << "audio/x-mpegurl";
mimeTypes.insert("Playlists",types);
- mimeTypes.insert("All",types);
QString fileName= Opie::Ui::OFileDialog::getSaveFileName(Opie::Ui::OFileSelector::EXTENDED,
m_lastDir,"playlist.m3u", mimeTypes);
+ odebug << "Save as " << fileName << oendl;
if (fileName.isEmpty()) {
return;
}
Om3u _om3u(fileName, IO_ReadWrite | IO_Truncate);
for (unsigned j=0; j<m_items.count();++j) {
_om3u.add(m_items[j]->Lnk().file());
}
_om3u.write();
diff --git a/noncore/multimedia/opieplayer3/playlist.h b/noncore/multimedia/opieplayer3/playlist.h index 4a9268c..3c9a68d 100644 --- a/noncore/multimedia/opieplayer3/playlist.h +++ b/noncore/multimedia/opieplayer3/playlist.h @@ -90,19 +90,21 @@ public: signals:
void contentChanged(int);
public slots:
virtual void slotAddFile(const DocLnk&);
virtual void slotAppendDir();
virtual void slotOpenM3u();
virtual void slotSaveAsM3u();
+ virtual void slotDummyStop();
protected:
void checkLib();
+ void readPlayList(const QString&);
QStringList columnLabels;
XINE::Lib*m_Infolib;
PlaylistItem*m_lastItem;
t_itemlist m_items;
QString m_lastDir;
};
#endif
diff --git a/noncore/multimedia/opieplayer3/videowidget.cpp b/noncore/multimedia/opieplayer3/videowidget.cpp index a28d47d..833ecb4 100644 --- a/noncore/multimedia/opieplayer3/videowidget.cpp +++ b/noncore/multimedia/opieplayer3/videowidget.cpp @@ -10,136 +10,91 @@ #include <qlayout.h>
#include <qslider.h>
#include <qlabel.h>
VideoWidget::VideoWidget( QWidget * parent, const char * name, WFlags f)
:QWidget(parent,name,f)
{
m_xineLib = 0;
-
+ m_scaleUp = false;
m_MainLayout = new QVBoxLayout(this);
m_MainLayout->setAutoAdd(true);
m_Videodisplay = new XineVideoWidget(this,"videodisp");
-#if 0
- m_PosSlider = new QSlider(QSlider::Horizontal,this);
- m_PosSlider->setTickInterval(60);
- connect(m_PosSlider,SIGNAL(valueChanged(int)),this,SLOT(slotNewPos(int)));
- connect(m_PosSlider,SIGNAL(sliderMoved(int)),this,SLOT(slotNewPos(int)));
- connect(m_PosSlider,SIGNAL(sliderPressed()),this,SLOT(sliderPressed()));
- connect(m_PosSlider,SIGNAL(sliderReleased()),this,SLOT(sliderReleased()));
-#endif
connect(m_Videodisplay,SIGNAL(videoResized ( const QSize & )),this,SLOT(slot_Videoresized(const QSize&)));
connect(m_Videodisplay,SIGNAL(clicked()),this,SLOT(slotClicked()));
-#if 0
- m_pressed = false;
- m_uppos=0;
-#endif
}
VideoWidget::~VideoWidget()
{
}
void VideoWidget::slotClicked()
{
- odebug << "clicked " << oendl;
emit videoclicked();
}
void VideoWidget::closeEvent(QCloseEvent*e)
{
}
-void VideoWidget::slotNewPos(int /*pos*/)
-{
-#if 0
- if (!m_xineLib) return;
- if (m_uppos==pos) return;
- m_xineLib->seekTo(pos);
-#endif
-}
-
-void VideoWidget::sliderPressed()
-{
-#if 0
- m_pressed = true;
-#endif
-}
-
-void VideoWidget::sliderReleased()
-{
-#if 0
- m_pressed = false;
-#endif
-}
-
void VideoWidget::fullScreen(bool /* how */)
{
-#if 0
- if (how) {
- m_PosSlider->hide();
- } else {
- m_PosSlider->show();
- }
-#endif
}
int VideoWidget::playFile(const DocLnk&aLnk,XINE::Lib*aLib)
{
m_current = aLnk;
bool recon;
if (m_xineLib != aLib) {
if (m_xineLib) disconnect(m_xineLib);
m_xineLib = aLib;
if (aLib) m_xineLib->setWidget(m_Videodisplay);
}
if (!m_xineLib) {
return -1;
}
connect(m_xineLib,SIGNAL(stopped()),this,SLOT(slotStopped()));
-#if 0
- m_uppos=0;
- m_PosSlider->setValue(0);
-#endif
m_xineLib->setWidget(m_Videodisplay);
m_xineLib->setShowVideo(true);
- m_xineLib->resize(m_Videodisplay->size());
int res = m_xineLib->play(m_current.file());
+ vSize = m_xineLib->videoSize();
+ slot_Videoresized(m_Videodisplay->size());
odebug << "Xine play: " << res << oendl;
if (res != 1) {
return -2;
}
return m_xineLib->length();
-#if 0
- m_PosSlider->setRange(0,l);
- m_PosSlider->setPageStep(l/10);
-#endif
}
void VideoWidget::stopPlaying()
{
if (m_xineLib) {
m_xineLib->stop();
}
}
void VideoWidget::slotStopped()
{
-// check fullscreen here!
}
void VideoWidget::slot_Videoresized(const QSize&s)
{
- odebug << "Videoresized: " << s << oendl;
if (m_xineLib) {
- m_xineLib->resize(s);
+ if (vSize.width()<s.width()&&vSize.height()<s.height()&&!m_scaleUp) {
+ m_xineLib->resize(vSize);
+ } else {
+ m_xineLib->resize(s);
+ }
}
}
+void VideoWidget::scaleUp(bool how)
+{
+ if (how == m_scaleUp) return;
+ m_scaleUp = how;
+ slot_Videoresized(m_Videodisplay->size());
+ m_Videodisplay->repaint();
+}
+
void VideoWidget::updatePos(int /*val*/)
{
-#if 0
- if (m_pressed) return;
- m_uppos = val;
- m_PosSlider->setValue(val);
-#endif
}
diff --git a/noncore/multimedia/opieplayer3/videowidget.h b/noncore/multimedia/opieplayer3/videowidget.h index 935a648..e082407 100644 --- a/noncore/multimedia/opieplayer3/videowidget.h +++ b/noncore/multimedia/opieplayer3/videowidget.h @@ -17,39 +17,34 @@ class VideoWidget:public QWidget {
Q_OBJECT
public:
VideoWidget( QWidget * parent=0, const char * name=0, WFlags f=0 );
virtual ~VideoWidget();
int playFile(const DocLnk&,XINE::Lib*);
void fullScreen(bool how);
+ void scaleUp(bool how);
signals:
void videoclicked();
public slots:
virtual void stopPlaying();
virtual void updatePos(int);
protected:
XINE::Lib*m_xineLib;
DocLnk m_current;
QVBoxLayout*m_MainLayout;
XineVideoWidget*m_Videodisplay;
QWidget * m_holder;
-#if 0
- QSlider*m_PosSlider;
- bool m_pressed:1;
- int m_uppos;
-#endif
+ QSize vSize;
+ bool m_scaleUp:1;
protected slots:
virtual void closeEvent(QCloseEvent*e);
- virtual void slotNewPos(int pos);
- virtual void sliderPressed();
- virtual void sliderReleased();
virtual void slot_Videoresized(const QSize&);
virtual void slotStopped();
virtual void slotClicked();
};
#endif
|