Add copy and move menu items to the playlist
This commit is contained in:
parent
e1e8866424
commit
69924cd76a
@ -683,6 +683,11 @@ TagLib::String QStringToTaglibString(const QString& s) {
|
||||
return TagLib::String(s.toUtf8().constData(), TagLib::String::UTF8);
|
||||
}
|
||||
|
||||
bool Song::IsEditable() const {
|
||||
return d->valid_ && !d->filename_.isNull() &&
|
||||
d->filetype_ != Type_Stream && d->filetype_ != Type_Unknown;
|
||||
}
|
||||
|
||||
bool Song::Save() const {
|
||||
if (d->filename_.isNull())
|
||||
return false;
|
||||
|
@ -170,7 +170,7 @@ class Song {
|
||||
QString PrettyLength() const;
|
||||
|
||||
// Setters
|
||||
bool IsEditable() const { return d->valid_ && !d->filename_.isNull(); }
|
||||
bool IsEditable() const;
|
||||
bool Save() const;
|
||||
|
||||
void set_id(int id) { d->id_ = id; }
|
||||
|
@ -440,6 +440,9 @@ msgstr ""
|
||||
msgid "Delay between visualizations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -441,6 +441,9 @@ msgstr "Snížit hlasitost"
|
||||
msgid "Delay between visualizations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -441,6 +441,9 @@ msgstr ""
|
||||
msgid "Delay between visualizations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -442,6 +442,9 @@ msgstr "Lautstärke verringern"
|
||||
msgid "Delay between visualizations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -444,6 +444,9 @@ msgstr "Μείωση έντασης"
|
||||
msgid "Delay between visualizations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -442,6 +442,9 @@ msgstr "Decrease volume"
|
||||
msgid "Delay between visualizations"
|
||||
msgstr "Delay between visualisations"
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -440,6 +440,9 @@ msgstr ""
|
||||
msgid "Delay between visualizations"
|
||||
msgstr "Delay between visualisations"
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -444,6 +444,9 @@ msgstr "Disminuir volumen"
|
||||
msgid "Delay between visualizations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -440,6 +440,9 @@ msgstr ""
|
||||
msgid "Delay between visualizations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -441,6 +441,9 @@ msgstr "Diminuer le volume"
|
||||
msgid "Delay between visualizations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -440,6 +440,9 @@ msgstr ""
|
||||
msgid "Delay between visualizations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -443,6 +443,9 @@ msgstr "Riduci il volume"
|
||||
msgid "Delay between visualizations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -440,6 +440,9 @@ msgstr ""
|
||||
msgid "Delay between visualizations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -440,6 +440,9 @@ msgstr ""
|
||||
msgid "Delay between visualizations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -440,6 +440,9 @@ msgstr "Reduire lo volum"
|
||||
msgid "Delay between visualizations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -441,6 +441,9 @@ msgstr ""
|
||||
msgid "Delay between visualizations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -442,6 +442,9 @@ msgstr "Diminuir volume"
|
||||
msgid "Delay between visualizations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -442,6 +442,9 @@ msgstr "Diminuir volume"
|
||||
msgid "Delay between visualizations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -440,6 +440,9 @@ msgstr ""
|
||||
msgid "Delay between visualizations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -441,6 +441,9 @@ msgstr "Уменьшить громкость"
|
||||
msgid "Delay between visualizations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -443,6 +443,9 @@ msgstr "Znížiť hlasitosť"
|
||||
msgid "Delay between visualizations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -442,6 +442,9 @@ msgstr "Sänk volymen"
|
||||
msgid "Delay between visualizations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -440,6 +440,9 @@ msgstr "Sesi azalt"
|
||||
msgid "Delay between visualizations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -431,6 +431,9 @@ msgstr ""
|
||||
msgid "Delay between visualizations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -442,6 +442,9 @@ msgstr "Зменшити гучність"
|
||||
msgid "Delay between visualizations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -440,6 +440,9 @@ msgstr "降低音量"
|
||||
msgid "Delay between visualizations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -440,6 +440,9 @@ msgstr ""
|
||||
msgid "Delay between visualizations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete files..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete from disk..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -365,9 +365,16 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
|
||||
playlist_menu_->addAction(ui_->action_renumber_tracks);
|
||||
playlist_menu_->addAction(ui_->action_selection_set_value);
|
||||
playlist_menu_->addSeparator();
|
||||
playlist_copy_to_library_ = playlist_menu_->addAction(IconLoader::Load("edit-copy"), tr("Copy to library..."), this, SLOT(PlaylistCopyToLibrary()));
|
||||
playlist_move_to_library_ = playlist_menu_->addAction(IconLoader::Load("go-jump"), tr("Move to library..."), this, SLOT(PlaylistMoveToLibrary()));
|
||||
playlist_organise_ = playlist_menu_->addAction(IconLoader::Load("edit-copy"), tr("Organise files..."), this, SLOT(PlaylistMoveToLibrary()));
|
||||
playlist_delete_ = playlist_menu_->addAction(IconLoader::Load("edit-delete"), tr("Delete files..."), this, SLOT(PlaylistDelete()));
|
||||
playlist_menu_->addSeparator();
|
||||
playlist_menu_->addAction(ui_->action_clear_playlist);
|
||||
playlist_menu_->addAction(ui_->action_shuffle);
|
||||
|
||||
playlist_delete_->setVisible(false); // TODO
|
||||
|
||||
connect(ui_->playlist, SIGNAL(UndoRedoActionsChanged(QAction*,QAction*)),
|
||||
SLOT(PlaylistUndoRedoChanged(QAction*,QAction*)));
|
||||
|
||||
@ -871,7 +878,10 @@ void MainWindow::InsertRadioItems(const PlaylistItemList& items) {
|
||||
void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex& index) {
|
||||
playlist_menu_index_ = index;
|
||||
|
||||
if (playlists_->current()->current_index() == index.row() && player_->GetState() == Engine::Playing) {
|
||||
QModelIndex source_index = playlists_->current()->proxy()->mapToSource(index);
|
||||
|
||||
// Is this song currently playing?
|
||||
if (playlists_->current()->current_index() == source_index.row() && player_->GetState() == Engine::Playing) {
|
||||
playlist_play_pause_->setText(tr("Pause"));
|
||||
playlist_play_pause_->setIcon(IconLoader::Load("media-playback-pause"));
|
||||
} else {
|
||||
@ -879,10 +889,11 @@ void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex&
|
||||
playlist_play_pause_->setIcon(IconLoader::Load("media-playback-start"));
|
||||
}
|
||||
|
||||
// Are we allowed to pause?
|
||||
if (index.isValid()) {
|
||||
playlist_play_pause_->setEnabled(
|
||||
playlists_->current()->current_index() != index.row() ||
|
||||
! (playlists_->current()->item_at(index.row())->options() & PlaylistItem::PauseDisabled));
|
||||
playlists_->current()->current_index() != source_index.row() ||
|
||||
! (playlists_->current()->item_at(source_index.row())->options() & PlaylistItem::PauseDisabled));
|
||||
} else {
|
||||
playlist_play_pause_->setEnabled(false);
|
||||
}
|
||||
@ -907,26 +918,39 @@ void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex&
|
||||
ui_->action_edit_value->setVisible(editable);
|
||||
ui_->action_remove_from_playlist->setEnabled(!selection.isEmpty());
|
||||
|
||||
playlist_copy_to_library_->setVisible(false);
|
||||
playlist_move_to_library_->setVisible(false);
|
||||
playlist_organise_->setVisible(false);
|
||||
playlist_delete_->setVisible(false);
|
||||
|
||||
if (!index.isValid()) {
|
||||
ui_->action_selection_set_value->setVisible(false);
|
||||
ui_->action_edit_value->setVisible(false);
|
||||
} else {
|
||||
Playlist::Column column = (Playlist::Column)index.column();
|
||||
bool editable = Playlist::column_is_editable(column);
|
||||
bool column_is_editable = Playlist::column_is_editable(column);
|
||||
|
||||
ui_->action_selection_set_value->setVisible(
|
||||
ui_->action_selection_set_value->isVisible() && editable);
|
||||
ui_->action_selection_set_value->isVisible() && column_is_editable);
|
||||
ui_->action_edit_value->setVisible(
|
||||
ui_->action_edit_value->isVisible() && editable);
|
||||
ui_->action_edit_value->isVisible() && column_is_editable);
|
||||
|
||||
QString column_name = Playlist::column_name(column);
|
||||
QString column_value = playlists_->current()->data(index).toString();
|
||||
QString column_value = playlists_->current()->data(source_index).toString();
|
||||
if (column_value.length() > 25)
|
||||
column_value = column_value.left(25) + "...";
|
||||
|
||||
ui_->action_selection_set_value->setText(tr("Set %1 to \"%2\"...")
|
||||
.arg(column_name.toLower()).arg(column_value));
|
||||
ui_->action_edit_value->setText(tr("Edit tag \"%1\"...").arg(column_name));
|
||||
|
||||
// Is it a library item?
|
||||
if (playlists_->current()->item_at(source_index.row())->type() == "Library") {
|
||||
playlist_organise_->setVisible(editable);
|
||||
} else {
|
||||
playlist_copy_to_library_->setVisible(editable);
|
||||
playlist_move_to_library_->setVisible(editable);
|
||||
}
|
||||
}
|
||||
|
||||
playlist_menu_->popup(global_pos);
|
||||
@ -1220,3 +1244,34 @@ void MainWindow::MoveFilesToLibrary(const QList<QUrl> &urls) {
|
||||
organise_dialog_->SetCopy(false);
|
||||
organise_dialog_->show();
|
||||
}
|
||||
|
||||
void MainWindow::PlaylistCopyToLibrary() {
|
||||
PlaylistOrganiseSelected(true);
|
||||
}
|
||||
|
||||
void MainWindow::PlaylistMoveToLibrary() {
|
||||
PlaylistOrganiseSelected(false);
|
||||
}
|
||||
|
||||
void MainWindow::PlaylistOrganiseSelected(bool copy) {
|
||||
QModelIndexList indexes = playlists_->current()->proxy()->mapSelectionToSource(
|
||||
ui_->playlist->view()->selectionModel()->selection()).indexes();
|
||||
QList<QUrl> urls;
|
||||
|
||||
int last_row = -1;
|
||||
foreach (const QModelIndex& index, indexes) {
|
||||
if (last_row == index.row())
|
||||
continue;
|
||||
last_row = index.row();
|
||||
|
||||
urls << playlists_->current()->item_at(index.row())->Url();
|
||||
}
|
||||
|
||||
organise_dialog_->SetUrls(urls);
|
||||
organise_dialog_->SetCopy(copy);
|
||||
organise_dialog_->show();
|
||||
}
|
||||
|
||||
void MainWindow::PlaylistDelete() {
|
||||
|
||||
}
|
||||
|
@ -108,6 +108,11 @@ class MainWindow : public QMainWindow, public PlatformInterface {
|
||||
void EditValue();
|
||||
void PlaylistUndoRedoChanged(QAction* undo, QAction* redo);
|
||||
|
||||
void PlaylistCopyToLibrary();
|
||||
void PlaylistMoveToLibrary();
|
||||
void PlaylistOrganiseSelected(bool copy);
|
||||
void PlaylistDelete();
|
||||
|
||||
void PlayIndex(const QModelIndex& index);
|
||||
void StopAfterCurrent();
|
||||
|
||||
@ -195,6 +200,10 @@ class MainWindow : public QMainWindow, public PlatformInterface {
|
||||
QAction* playlist_play_pause_;
|
||||
QAction* playlist_stop_after_;
|
||||
QAction* playlist_undoredo_;
|
||||
QAction* playlist_organise_;
|
||||
QAction* playlist_copy_to_library_;
|
||||
QAction* playlist_move_to_library_;
|
||||
QAction* playlist_delete_;
|
||||
QModelIndex playlist_menu_index_;
|
||||
|
||||
QSortFilterProxyModel* library_sort_model_;
|
||||
|
Loading…
x
Reference in New Issue
Block a user