aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mainwindow.cpp83
-rw-r--r--src/mediafile.cpp66
-rw-r--r--src/mediafile.h6
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;
};