Added track auto-numbering, thanks christoph.gysin.

Fixes issue #25
This commit is contained in:
David Sansome 2010-03-22 22:46:53 +00:00
parent 66115951f4
commit a82e4c5b9a
3 changed files with 40 additions and 0 deletions

View File

@ -114,6 +114,7 @@ MainWindow::MainWindow(QNetworkAccessManager* network, QWidget *parent)
connect(ui_.action_love, SIGNAL(triggered()), SLOT(Love()));
connect(ui_.action_clear_playlist, SIGNAL(triggered()), playlist_, SLOT(Clear()));
connect(ui_.action_edit_track, SIGNAL(triggered()), SLOT(EditTracks()));
connect(ui_.action_renumber_tracks, SIGNAL(triggered()), SLOT(RenumberTracks()));
connect(ui_.action_configure, SIGNAL(triggered()), settings_dialog_, SLOT(show()));
connect(ui_.action_about, SIGNAL(triggered()), about_dialog_, SLOT(show()));
connect(ui_.action_shuffle, SIGNAL(triggered()), playlist_, SLOT(Shuffle()));
@ -220,6 +221,7 @@ MainWindow::MainWindow(QNetworkAccessManager* network, QWidget *parent)
playlist_menu_->addAction(ui_.action_stop);
playlist_stop_after_ = playlist_menu_->addAction(QIcon(":media-playback-stop.png"), tr("Stop after this track"), this, SLOT(PlaylistStopAfter()));
playlist_menu_->addAction(ui_.action_edit_track);
playlist_menu_->addAction(ui_.action_renumber_tracks);
playlist_menu_->addSeparator();
playlist_menu_->addAction(ui_.action_clear_playlist);
playlist_menu_->addAction(ui_.action_shuffle);
@ -561,6 +563,7 @@ void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex&
}
}
ui_.action_edit_track->setEnabled(editable);
ui_.action_renumber_tracks->setEnabled(editable);
playlist_menu_->popup(global_pos);
}
@ -600,6 +603,33 @@ void MainWindow::EditTracks() {
playlist_->ReloadItems(rows);
}
void MainWindow::RenumberTracks() {
QModelIndexList indexes=ui_.playlist->selectionModel()->selection().indexes();
int track=1;
// if first selected song has a track number set, start from that offset
if (indexes.size()) {
Song first_song=playlist_->item_at(indexes[0].row())->Metadata();
if (int first_track = first_song.track())
track = first_track;
}
foreach (const QModelIndex& index, indexes) {
if (index.column() != 0)
continue;
int row = index.row();
Song song = playlist_->item_at(row)->Metadata();
if (song.IsEditable()) {
song.set_track(track);
song.Save();
playlist_->item_at(row)->Reload();
}
track++;
}
}
void MainWindow::LibraryScanStarted() {
multi_loading_indicator_->TaskStarted(MultiLoadingIndicator::UpdatingLibrary);
}

View File

@ -56,6 +56,7 @@ class MainWindow : public QMainWindow {
void PlaylistPlay();
void PlaylistStopAfter();
void EditTracks();
void RenumberTracks();
void PlayIndex(const QModelIndex& index);
void StopAfterCurrent();

View File

@ -655,6 +655,15 @@
<string>Edit track information...</string>
</property>
</action>
<action name="action_renumber_tracks">
<property name="icon">
<iconset resource="../data/data.qrc">
<normaloff>:/edit-track.png</normaloff>:/edit-track.png</iconset>
</property>
<property name="text">
<string>Renumber tracks in this order...</string>
</property>
</action>
<action name="action_configure">
<property name="icon">
<iconset resource="../data/data.qrc">