diff options
| -rw-r--r-- | src/mainwindow.cpp | 83 | ||||
| -rw-r--r-- | src/mediafile.cpp | 66 | ||||
| -rw-r--r-- | src/mediafile.h | 6 |
3 files changed, 98 insertions, 57 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index c3cf0cb30..2d13f7000 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -44,6 +44,7 @@ #include "aboutdialog.h" #include <addurldialog.h> #include "filedialog.h" +#include "listwidget.h" #define KEY_OFFSET 10 @@ -216,7 +217,7 @@ void MainWindow::replay() void MainWindow::seek(int pos) { - if(!seeking) + if (!seeking) m_core->seek(pos); } @@ -312,31 +313,31 @@ void MainWindow::showOutputState(const OutputState &st) m_playlist->setInfo(st, m_core->length(), m_playListModel->totalLength()); switch ((int) st.type()) { - case OutputState::Playing: - { - m_tray->setIcon ( QIcon(":/play.png") ); - if (m_showMessage && m_playListModel->currentItem()) - m_tray->showMessage ( tr("Now Playing"), - m_playListModel->currentItem()->title(), - QSystemTrayIcon::Information, m_messageDelay ); - if (m_showToolTip && m_playListModel->currentItem()) - m_tray->setToolTip (m_playListModel->currentItem()->title()); - break; - } - case OutputState::Paused: - { - m_tray->setIcon ( QIcon(":/pause.png") ); - break; - } - case OutputState::Stopped: - { - m_tray->setIcon ( QIcon(":/stop.png") ); - break; - } - case OutputState::Info: - { - m_elapsed = st.elapsedSeconds(); - } + case OutputState::Playing: + { + m_tray->setIcon ( QIcon(":/play.png") ); + if (m_showMessage && m_playListModel->currentItem()) + m_tray->showMessage ( tr("Now Playing"), + m_playListModel->currentItem()->title(), + QSystemTrayIcon::Information, m_messageDelay ); + if (m_showToolTip && m_playListModel->currentItem()) + m_tray->setToolTip (m_playListModel->currentItem()->title()); + break; + } + case OutputState::Paused: + { + m_tray->setIcon ( QIcon(":/pause.png") ); + break; + } + case OutputState::Stopped: + { + m_tray->setIcon ( QIcon(":/stop.png") ); + break; + } + case OutputState::Info: + { + m_elapsed = st.elapsedSeconds(); + } } } @@ -349,6 +350,22 @@ void MainWindow::showDecoderState(const DecoderState &st) next(); break; } + case DecoderState::Info: + { + qDebug("file info:"); + qDebug("ARTIST = %s", qPrintable(st.tag()->artist())); + qDebug("TITLE = %s", qPrintable(st.tag()->title())); + qDebug("ALBUM = %s", qPrintable(st.tag()->album())); + qDebug("COMMENT = %s", qPrintable(st.tag()->comment())); + qDebug("GENRE = %s", qPrintable(st.tag()->genre())); + qDebug("YEAR = %d", st.tag()->year()); + qDebug("TRACK = %d", st.tag()->track()); + qDebug("LENGTH = %d", st.tag()->length()); + + m_playlist->currentItem()->updateTags(st.tag()); + m_playlist->listWidget()->updateList(); + break; + } } } @@ -373,8 +390,8 @@ void MainWindow::addDir() return; m_playListModel->addDirectory(s); m_lastDir = s+"../"; -*/ - if(FileDialog::isModal()) + */ + if (FileDialog::isModal()) { qWarning("void MainWindow::addDir()"); QString s = FileDialog::getExistingDirectory(this,tr("Choose a directory"),m_lastDir); @@ -404,10 +421,10 @@ void MainWindow::addFile() m_playListModel->addFiles(files); m_lastDir = files.at(0); -*/ + */ - if(FileDialog::isModal()) + if (FileDialog::isModal()) { QStringList files = FileDialog::getOpenFileNames( this, @@ -636,7 +653,7 @@ void MainWindow::loadPlaylist() l << fmt->getExtensions(); QString mask = tr("Playlist Files")+" (" + l.join(" *.").prepend("*.") + ")"; - if(FileDialog::isModal()) + if (FileDialog::isModal()) { //qWarning("Modal"); QString f_name = FileDialog::getOpenFileName(this,tr("Open Playlist"),m_lastDir,mask); @@ -678,7 +695,7 @@ void MainWindow::savePlaylist() l << fmt->getExtensions(); QString mask = tr("Playlist Files")+" (" + l.join(" *.").prepend("*.") + ")"; - if(FileDialog::isModal()) + if (FileDialog::isModal()) { QString f_name = FileDialog::getSaveFileName(this, tr("Save Playlist"),m_lastDir + "/" + m_playlistName + "." + l[0],mask); @@ -694,7 +711,7 @@ void MainWindow::savePlaylist() // For now we'll use default dialog { QString f_name = FileDialog::getSaveFileName(this, tr("Save Playlist"),m_lastDir + "/" + - m_playlistName + "." + l[0],mask,0,true); + m_playlistName + "." + l[0],mask,0,true); if (!f_name.isEmpty()) { diff --git a/src/mediafile.cpp b/src/mediafile.cpp index 31065bc8b..a0e308e0e 100644 --- a/src/mediafile.cpp +++ b/src/mediafile.cpp @@ -29,30 +29,19 @@ MediaFile::MediaFile(QString path) m_selected = FALSE; m_current = FALSE; m_path = path; - m_tag = Decoder::createTag(path); - //format + m_tag = 0; + QSettings settings ( QDir::homePath() +"/.qmmp/qmmprc", QSettings::IniFormat ); - QString format = settings.value("PlayList/title_format", "%p - %t").toString(); - bool use_meta = settings.value ("PlayList/load_metadata", TRUE).toBool(); - if (use_meta && m_tag && !m_tag->isEmpty() && !path.startsWith("http://")) + m_use_meta = settings.value ("PlayList/load_metadata", TRUE).toBool(); + //format + m_format = settings.value("PlayList/title_format", "%p - %t").toString(); + if (m_use_meta && !path.startsWith("http://")) { - m_year = m_tag->year(); - //m_title = m_tag->artist()+" - "+m_tag->title(); - m_title = format; - m_title.replace("%p",m_tag->artist()); - m_title.replace("%a",m_tag->album()); - m_title.replace("%t",m_tag->title()); - m_title.replace("%n",QString("%1").arg(m_tag->track())); - m_title.replace("%g",m_tag->genre ()); - m_title.replace("%f",m_path.section('/',-1)); - m_title.replace("%F",m_path); - //m_title.replace("%d",); - m_title.replace("%y",QString("%1").arg(m_tag->year ())); - //m_title.replace("%c",); + m_tag = Decoder::createTag(path); + readMetadata(); } else m_title = path.startsWith("http://") ? m_path: m_path.section('/',-1); - } @@ -71,12 +60,12 @@ const QString MediaFile::fileName() const return m_path.section('/',-1); } -const QString MediaFile::title()const +const QString MediaFile::title() const { return m_title; } -int MediaFile::length()const +int MediaFile::length() const { if (m_tag) return m_tag->length(); @@ -89,12 +78,12 @@ void MediaFile::setSelected(bool yes) m_selected = yes; } -bool MediaFile::isSelected()const +bool MediaFile::isSelected() const { return m_selected; } -uint MediaFile::year()const +uint MediaFile::year() const { return m_year; } @@ -108,3 +97,34 @@ void MediaFile::setCurrent(bool cur) { m_current = cur; } + +void MediaFile::updateTags(const FileTag *tag) +{ + if (m_tag) + { + delete m_tag; + m_tag = 0; + } + if (!tag->isEmpty()) + m_tag = new FileTag(*tag); + readMetadata(); +} + +void MediaFile::readMetadata() +{ + if (m_use_meta && m_tag && !m_tag->isEmpty()) + { + m_year = m_tag->year(); + m_title = m_format; + m_title.replace("%p",m_tag->artist()); + m_title.replace("%a",m_tag->album()); + m_title.replace("%t",m_tag->title()); + m_title.replace("%n",QString("%1").arg(m_tag->track())); + m_title.replace("%g",m_tag->genre ()); + m_title.replace("%f",m_path.section('/',-1)); + m_title.replace("%F",m_path); + //m_title.replace("%d",); + m_title.replace("%y",QString("%1").arg(m_tag->year ())); + //m_title.replace("%c",); + } +} diff --git a/src/mediafile.h b/src/mediafile.h index d7e566145..3e6fb9f43 100644 --- a/src/mediafile.h +++ b/src/mediafile.h @@ -36,7 +36,7 @@ public: MediaFile(QString); ~MediaFile(); - MediaFile &operator=(const MediaFile &other); + //MediaFile &operator=(const MediaFile &other); const QString path()const; const QString title()const; @@ -47,15 +47,19 @@ public: bool isSelected()const; bool isCurrent(); void setCurrent(bool); + void updateTags(const FileTag*); private: + void readMetadata(); QString m_path; QString m_title; uint m_year; FileTag *m_tag; bool m_selected; bool m_current; + bool m_use_meta; + QString m_format; }; |
