diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/qmmpui/detailsdialog.cpp | 8 | ||||
| -rw-r--r-- | src/qmmpui/detailsdialog.h | 4 | ||||
| -rw-r--r-- | src/qmmpui/playlistmodel.cpp | 24 | ||||
| -rw-r--r-- | src/qmmpui/tagupdater.cpp | 30 | ||||
| -rw-r--r-- | src/qmmpui/tagupdater_p.h | 6 |
5 files changed, 43 insertions, 29 deletions
diff --git a/src/qmmpui/detailsdialog.cpp b/src/qmmpui/detailsdialog.cpp index 0ade03e9e..1c967e6e2 100644 --- a/src/qmmpui/detailsdialog.cpp +++ b/src/qmmpui/detailsdialog.cpp @@ -32,21 +32,21 @@ #include "tageditor_p.h" #include "detailsdialog.h" -DetailsDialog::DetailsDialog(PlayListTrack *item, QWidget *parent) +DetailsDialog::DetailsDialog(QList<PlayListTrack *> tracks, QWidget *parent) : QDialog(parent) { m_ui = new Ui::DetailsDialog; setAttribute(Qt::WA_QuitOnClose, false); setAttribute(Qt::WA_DeleteOnClose, false); m_metaDataModel = 0; - m_item = item; + m_item = tracks.at(0); m_ui->setupUi(this); setAttribute(Qt::WA_DeleteOnClose); - m_path = item->url(); + m_path = m_item->url(); setWindowTitle (m_path.section('/',-1)); m_ui->pathEdit->setText(m_path); m_ui->directoryButton->setIcon(QApplication::style()->standardIcon(QStyle::SP_DirOpenIcon)); - m_metaDataModel = MetaDataManager::instance()->createMetaDataModel(item->url(), this); + m_metaDataModel = MetaDataManager::instance()->createMetaDataModel(m_item->url(), this); if(m_metaDataModel) { diff --git a/src/qmmpui/detailsdialog.h b/src/qmmpui/detailsdialog.h index 570235a71..9d439fe49 100644 --- a/src/qmmpui/detailsdialog.h +++ b/src/qmmpui/detailsdialog.h @@ -43,10 +43,10 @@ class DetailsDialog : public QDialog public: /*! * Constructor. - * @param item Playlist item which should be used. + * @param tracks a list of tracks which should be used. * @param parent Parent widget. */ - DetailsDialog(PlayListTrack *item, QWidget *parent = 0); + DetailsDialog(QList<PlayListTrack *> tracks, QWidget *parent = 0); /*! * Destructor. */ diff --git a/src/qmmpui/playlistmodel.cpp b/src/qmmpui/playlistmodel.cpp index 66955f6b9..d08282910 100644 --- a/src/qmmpui/playlistmodel.cpp +++ b/src/qmmpui/playlistmodel.cpp @@ -430,16 +430,24 @@ void PlayListModel::selectAll() void PlayListModel::showDetails(QWidget *parent) { + QList<PlayListTrack *> selected_tracks; + for (int i = 0; i < m_container->count(); ++i) { - if (m_container->isSelected(i) && m_container->track(i)) - { - QDialog *d = new DetailsDialog(m_container->track(i), parent); - TagUpdater *updater = new TagUpdater(d, m_container->track(i)); - connect(updater, SIGNAL(destroyed(QObject *)),SIGNAL(listChanged())); - d->show(); - return; - } + if(!m_container->isSelected(i)) + continue; + PlayListTrack *track = m_container->track(i); + if(track && track->flag() != PlayListTrack::FREE) + continue; + selected_tracks.append(track); + } + + if(!selected_tracks.isEmpty()) + { + QDialog *d = new DetailsDialog(selected_tracks, parent); + TagUpdater *updater = new TagUpdater(d, selected_tracks); + connect(updater, SIGNAL(destroyed(QObject *)),SIGNAL(listChanged())); + d->show(); } } diff --git a/src/qmmpui/tagupdater.cpp b/src/qmmpui/tagupdater.cpp index 0b50e83cc..02f0c4590 100644 --- a/src/qmmpui/tagupdater.cpp +++ b/src/qmmpui/tagupdater.cpp @@ -20,23 +20,29 @@ #include "tagupdater_p.h" -TagUpdater::TagUpdater(QObject* o, PlayListTrack* track) : m_observable(o), m_item(track) +TagUpdater::TagUpdater(QObject* o, QList<PlayListTrack *> tracks) : m_observable(o) { - m_item->setFlag(PlayListTrack::EDITING); - connect(m_observable, SIGNAL(destroyed(QObject *)),SLOT(updateTag())); + m_tracks = tracks; + foreach(PlayListTrack *t, m_tracks) + t->setFlag(PlayListTrack::EDITING); + connect(m_observable, SIGNAL(destroyed(QObject *)),SLOT(updateTags())); connect(m_observable, SIGNAL(destroyed(QObject *)),SLOT(deleteLater())); } -void TagUpdater::updateTag() +void TagUpdater::updateTags() { - if (m_item->flag() == PlayListTrack::SCHEDULED_FOR_DELETION) + foreach (PlayListTrack *t, m_tracks) { - delete m_item; - m_item = NULL; - } - else - { - m_item->updateMetaData(); - m_item->setFlag(PlayListTrack::FREE); + if (t->flag() == PlayListTrack::SCHEDULED_FOR_DELETION) + { + delete t; + t = 0; + } + else + { + t->updateMetaData(); + t->setFlag(PlayListTrack::FREE); + } } + m_tracks.clear(); } diff --git a/src/qmmpui/tagupdater_p.h b/src/qmmpui/tagupdater_p.h index e5fa66582..c27213c8c 100644 --- a/src/qmmpui/tagupdater_p.h +++ b/src/qmmpui/tagupdater_p.h @@ -34,12 +34,12 @@ class TagUpdater : public QObject Q_OBJECT public: - TagUpdater(QObject* o, PlayListTrack* track); + TagUpdater(QObject* o, QList<PlayListTrack*> tracks); QObject* m_observable; - PlayListTrack* m_item; + QList<PlayListTrack*> m_tracks; public slots: - void updateTag(); + void updateTags(); }; |
