From ffd16e540107e47c2548ce3f7d5ab19a266605d4 Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Sun, 6 Jan 2019 16:48:23 +0100 Subject: [PATCH] Enable organise without gstreamer --- src/CMakeLists.txt | 23 ++++++++------ src/collection/collectionview.cpp | 15 +-------- src/collection/collectionview.h | 8 ----- src/context/contextalbumsview.cpp | 16 +--------- src/context/contextalbumsview.h | 10 ------ src/core/mainwindow.cpp | 51 ++++++++++++------------------- src/core/mainwindow.h | 10 ------ src/device/deviceview.cpp | 8 ----- src/device/deviceview.h | 6 ---- src/organise/organise.cpp | 28 ++++++++++++++++- src/organise/organise.h | 20 ++++++++++-- 11 files changed, 80 insertions(+), 115 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1db2463af..5ea6b86aa 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -273,6 +273,11 @@ set(SOURCES scrobbler/librefmscrobbler.cpp scrobbler/listenbrainzscrobbler.cpp + organise/organise.cpp + organise/organiseformat.cpp + organise/organisedialog.cpp + organise/organiseerrordialog.cpp + ) set(HEADERS @@ -439,6 +444,10 @@ set(HEADERS scrobbler/librefmscrobbler.h scrobbler/listenbrainzscrobbler.h + organise/organise.h + organise/organisedialog.h + organise/organiseerrordialog.h + ) set(UI @@ -492,6 +501,9 @@ set(UI internet/internetsearchview.ui + organise/organisedialog.ui + organise/organiseerrordialog.ui + ) set(RESOURCES ../data/data.qrc ../data/icons.qrc) @@ -765,13 +777,9 @@ optional_source(HAVE_LIBPULSE engine/pulsedevicefinder.cpp ) -# MusicBrainz, Organise and transcode require GStreamer +# MusicBrainz and transcoder require GStreamer optional_source(HAVE_GSTREAMER SOURCES - organise/organise.cpp - organise/organiseformat.cpp - organise/organisedialog.cpp - organise/organiseerrordialog.cpp transcoder/transcoder.cpp transcoder/transcodedialog.cpp transcoder/transcoderoptionsdialog.cpp @@ -785,17 +793,12 @@ SOURCES transcoder/transcoderoptionsmp3.cpp settings/transcodersettingspage.cpp HEADERS - organise/organise.h - organise/organisedialog.h - organise/organiseerrordialog.h transcoder/transcoder.h transcoder/transcodedialog.h transcoder/transcoderoptionsdialog.h transcoder/transcoderoptionsmp3.h settings/transcodersettingspage.h UI - organise/organisedialog.ui - organise/organiseerrordialog.ui transcoder/transcodedialog.ui transcoder/transcodelogdialog.ui transcoder/transcoderoptionsaac.ui diff --git a/src/collection/collectionview.cpp b/src/collection/collectionview.cpp index 4a34d1806..8fb492d1c 100644 --- a/src/collection/collectionview.cpp +++ b/src/collection/collectionview.cpp @@ -73,9 +73,7 @@ # include "device/devicestatefiltermodel.h" #endif #include "dialogs/edittagdialog.h" -#ifdef HAVE_GSTREAMER #include "organise/organisedialog.h" -#endif #include "settings/collectionsettingspage.h" CollectionItemDelegate::CollectionItemDelegate(QObject *parent) : QStyledItemDelegate(parent) {} @@ -460,14 +458,12 @@ void CollectionView::contextMenuEvent(QContextMenuEvent *e) { add_to_playlist_enqueue_ = context_menu_->addAction(IconLoader::Load("go-next"), tr("Queue track"), this, SLOT(AddToPlaylistEnqueue())); add_to_playlist_enqueue_next_ = context_menu_->addAction(IconLoader::Load("go-next"), tr("Queue to play next"), this, SLOT(AddToPlaylistEnqueueNext())); -#ifdef HAVE_GSTREAMER context_menu_->addSeparator(); organise_ = context_menu_->addAction(IconLoader::Load("edit-copy"), tr("Organise files..."), this, SLOT(Organise())); #ifndef Q_OS_WIN copy_to_device_ = context_menu_->addAction(IconLoader::Load("device"), tr("Copy to device..."), this, SLOT(CopyToDevice())); #endif //delete_ = context_menu_->addAction(IconLoader::Load("edit-delete"), tr("Delete from disk..."), this, SLOT(Delete())); -#endif context_menu_->addSeparator(); edit_track_ = context_menu_->addAction(IconLoader::Load("edit-rename"), tr("Edit track information..."), this, SLOT(EditTracks())); @@ -482,7 +478,7 @@ void CollectionView::contextMenuEvent(QContextMenuEvent *e) { context_menu_->addMenu(filter_->menu()); -#if defined(HAVE_GSTREAMER) && !defined(Q_OS_WIN) +#ifndef Q_OS_WIN copy_to_device_->setDisabled(app_->device_manager()->connected_devices_model()->rowCount() == 0); connect(app_->device_manager()->connected_devices_model(), SIGNAL(IsEmptyChanged(bool)), copy_to_device_, SLOT(setDisabled(bool))); #endif @@ -520,25 +516,20 @@ void CollectionView::contextMenuEvent(QContextMenuEvent *e) { edit_track_->setVisible(regular_editable <= 1); edit_track_->setEnabled(regular_editable == 1); - // only when no smart playlists selected -#ifdef HAVE_GSTREAMER organise_->setVisible(regular_elements_only); #ifndef Q_OS_WIN copy_to_device_->setVisible(regular_elements_only); #endif //delete_->setVisible(regular_elements_only); -#endif show_in_various_->setVisible(regular_elements_only); no_show_in_various_->setVisible(regular_elements_only); // only when all selected items are editable -#ifdef HAVE_GSTREAMER organise_->setEnabled(regular_elements == regular_editable); #ifndef Q_OS_WIN copy_to_device_->setEnabled(regular_elements == regular_editable); #endif //delete_->setEnabled(regular_elements == regular_editable); -#endif context_menu_->popup(e->globalPos()); @@ -661,7 +652,6 @@ SongList CollectionView::GetSelectedSongs() const { } -#ifdef HAVE_GSTREAMER void CollectionView::Organise() { if (!organise_dialog_) @@ -675,7 +665,6 @@ void CollectionView::Organise() { QMessageBox::warning(this, tr("Error"), tr("None of the selected songs were suitable for copying to a device")); } } -#endif void CollectionView::EditTracks() { @@ -687,7 +676,6 @@ void CollectionView::EditTracks() { } -#ifdef HAVE_GSTREAMER void CollectionView::CopyToDevice() { #ifndef Q_OS_WIN if (!organise_dialog_) @@ -699,7 +687,6 @@ void CollectionView::CopyToDevice() { organise_dialog_->show(); #endif } -#endif void CollectionView::FilterReturnPressed() { diff --git a/src/collection/collectionview.h b/src/collection/collectionview.h index f843e3c89..e71907296 100644 --- a/src/collection/collectionview.h +++ b/src/collection/collectionview.h @@ -52,9 +52,7 @@ class QPaintEvent; class Application; class CollectionFilterWidget; class EditTagDialog; -#ifdef HAVE_GSTREAMER class OrganiseDialog; -#endif class CollectionItemDelegate : public QStyledItemDelegate { Q_OBJECT @@ -119,10 +117,8 @@ signals: void AddToPlaylistEnqueue(); void AddToPlaylistEnqueueNext(); void OpenInNewPlaylist(); -#ifdef HAVE_GSTREAMER void Organise(); void CopyToDevice(); -#endif void EditTracks(); void ShowInBrowser(); void ShowInVarious(); @@ -151,11 +147,9 @@ signals: QAction *add_to_playlist_enqueue_; QAction *add_to_playlist_enqueue_next_; QAction *open_in_new_playlist_; -#ifdef HAVE_GSTREAMER QAction *organise_; #ifndef Q_OS_WIN QAction *copy_to_device_; -#endif #endif QAction *delete_; QAction *edit_track_; @@ -164,9 +158,7 @@ signals: QAction *show_in_various_; QAction *no_show_in_various_; -#ifdef HAVE_GSTREAMER std::unique_ptr organise_dialog_; -#endif std::unique_ptr edit_tag_dialog_; bool is_in_keyboard_search_; diff --git a/src/context/contextalbumsview.cpp b/src/context/contextalbumsview.cpp index f805f3db8..c0a72cd4b 100644 --- a/src/context/contextalbumsview.cpp +++ b/src/context/contextalbumsview.cpp @@ -73,9 +73,7 @@ # include "device/devicestatefiltermodel.h" #endif #include "dialogs/edittagdialog.h" -#ifdef HAVE_GSTREAMER #include "organise/organisedialog.h" -#endif #include "settings/collectionsettingspage.h" #include "contextview.h" @@ -367,12 +365,10 @@ void ContextAlbumsView::contextMenuEvent(QContextMenuEvent *e) { context_menu_->addSeparator(); add_to_playlist_enqueue_ = context_menu_->addAction(IconLoader::Load("go-next"), tr("Queue track"), this, SLOT(AddToPlaylistEnqueue())); -#ifdef HAVE_GSTREAMER context_menu_->addSeparator(); organise_ = context_menu_->addAction(IconLoader::Load("edit-copy"), tr("Organise files..."), this, SLOT(Organise())); #ifndef Q_OS_WIN copy_to_device_ = context_menu_->addAction(IconLoader::Load("device"), tr("Copy to device..."), this, SLOT(CopyToDevice())); -#endif #endif context_menu_->addSeparator(); @@ -382,7 +378,7 @@ void ContextAlbumsView::contextMenuEvent(QContextMenuEvent *e) { context_menu_->addSeparator(); -#if defined(HAVE_GSTREAMER) && !defined(Q_OS_WIN) +#ifndef Q_OS_WIN copy_to_device_->setDisabled(app_->device_manager()->connected_devices_model()->rowCount() == 0); connect(app_->device_manager()->connected_devices_model(), SIGNAL(IsEmptyChanged(bool)), copy_to_device_, SLOT(setDisabled(bool))); #endif @@ -405,9 +401,7 @@ void ContextAlbumsView::contextMenuEvent(QContextMenuEvent *e) { // TODO: check if custom plugin actions should be enabled / visible const int songs_selected = regular_elements; -#ifdef HAVE_GSTREAMER const bool regular_elements_only = songs_selected == regular_elements && regular_elements > 0; -#endif // in all modes load_->setEnabled(songs_selected); @@ -419,19 +413,15 @@ void ContextAlbumsView::contextMenuEvent(QContextMenuEvent *e) { edit_track_->setVisible(regular_editable <= 1); edit_track_->setEnabled(regular_editable == 1); -#ifdef HAVE_GSTREAMER organise_->setVisible(regular_elements_only); #ifndef Q_OS_WIN copy_to_device_->setVisible(regular_elements_only); -#endif #endif // only when all selected items are editable -#ifdef HAVE_GSTREAMER organise_->setEnabled(regular_elements == regular_editable); #ifndef Q_OS_WIN copy_to_device_->setEnabled(regular_elements == regular_editable); -#endif #endif context_menu_->popup(e->globalPos()); @@ -488,7 +478,6 @@ SongList ContextAlbumsView::GetSelectedSongs() const { return model_->GetChildSongs(selected_indexes); } -#ifdef HAVE_GSTREAMER void ContextAlbumsView::Organise() { if (!organise_dialog_) @@ -502,7 +491,6 @@ void ContextAlbumsView::Organise() { QMessageBox::warning(this, tr("Error"), tr("None of the selected songs were suitable for copying to a device")); } } -#endif void ContextAlbumsView::EditTracks() { @@ -514,7 +502,6 @@ void ContextAlbumsView::EditTracks() { } -#ifdef HAVE_GSTREAMER void ContextAlbumsView::CopyToDevice() { #ifndef Q_OS_WIN if (!organise_dialog_) @@ -526,7 +513,6 @@ void ContextAlbumsView::CopyToDevice() { organise_dialog_->show(); #endif } -#endif void ContextAlbumsView::ShowInBrowser() { diff --git a/src/context/contextalbumsview.h b/src/context/contextalbumsview.h index 6127e8efe..fd6e94491 100644 --- a/src/context/contextalbumsview.h +++ b/src/context/contextalbumsview.h @@ -47,9 +47,7 @@ class Application; class EditTagDialog; -#ifdef HAVE_GSTREAMER class OrganiseDialog; -#endif class ContextAlbumsModel; class ContextItemDelegate : public QStyledItemDelegate { @@ -101,12 +99,8 @@ signals: void AddToPlaylist(); void AddToPlaylistEnqueue(); void OpenInNewPlaylist(); -#ifdef HAVE_GSTREAMER void Organise(); -//#ifndef Q_OS_WIN void CopyToDevice(); -//#endif -#endif void EditTracks(); void ShowInBrowser(); @@ -124,20 +118,16 @@ signals: QAction *add_to_playlist_; QAction *add_to_playlist_enqueue_; QAction *open_in_new_playlist_; -#ifdef HAVE_GSTREAMER QAction *organise_; #ifndef Q_OS_WIN QAction *copy_to_device_; -#endif #endif QAction *delete_; QAction *edit_track_; QAction *edit_tracks_; QAction *show_in_browser_; -#ifdef HAVE_GSTREAMER std::unique_ptr organise_dialog_; -#endif std::unique_ptr edit_tag_dialog_; bool is_in_keyboard_search_; diff --git a/src/core/mainwindow.cpp b/src/core/mainwindow.cpp index 5c2fd019a..c75f642a7 100644 --- a/src/core/mainwindow.cpp +++ b/src/core/mainwindow.cpp @@ -84,9 +84,7 @@ #include "dialogs/console.h" #include "dialogs/trackselectiondialog.h" #include "dialogs/edittagdialog.h" -#ifdef HAVE_GSTREAMER -# include "organise/organisedialog.h" -#endif +#include "organise/organisedialog.h" #include "widgets/fancytabwidget.h" #include "widgets/playingwidget.h" #include "widgets/sliderwidget.h" @@ -201,13 +199,11 @@ MainWindow::MainWindow(Application *app, SystemTrayIcon *tray_icon, OSD *osd, co //organise_dialog_(new OrganiseDialog(app_->task_manager())), equalizer_(new Equalizer), -#ifdef HAVE_GSTREAMER organise_dialog_([=]() { OrganiseDialog *dialog = new OrganiseDialog(app->task_manager()); dialog->SetDestinationModel(app->collection()->model()->directory_model()); return dialog; }), -#endif #ifdef HAVE_STREAM_TIDAL tidal_search_view_(new InternetSearchView(app_, app_->tidal_search(), TidalSettingsPage::kSettingsGroup, SettingsDialog::Page_Tidal, this)), #endif @@ -315,9 +311,7 @@ MainWindow::MainWindow(Application *app, SystemTrayIcon *tray_icon, OSD *osd, co #endif playlist_list_->SetApplication(app_); -#ifdef HAVE_GSTREAMER organise_dialog_->SetDestinationModel(app_->collection()->model()->directory_model()); -#endif // Icons qLog(Debug) << "Creating UI"; @@ -364,7 +358,7 @@ MainWindow::MainWindow(Application *app, SystemTrayIcon *tray_icon, OSD *osd, co ui_->action_update_collection->setIcon(IconLoader::Load("view-refresh")); ui_->action_full_collection_scan->setIcon(IconLoader::Load("view-refresh")); ui_->action_settings->setIcon(IconLoader::Load("configure")); - + // Scrobble ui_->action_toggle_scrobbling->setIcon(IconLoader::Load("scrobble-disabled", 22)); @@ -412,11 +406,19 @@ MainWindow::MainWindow(Application *app, SystemTrayIcon *tray_icon, OSD *osd, co connect(ui_->action_add_folder, SIGNAL(triggered()), SLOT(AddFolder())); connect(ui_->action_cover_manager, SIGNAL(triggered()), SLOT(ShowCoverManager())); connect(ui_->action_equalizer, SIGNAL(triggered()), equalizer_.get(), SLOT(show())); +#if defined(HAVE_GSTREAMER) connect(ui_->action_transcoder, SIGNAL(triggered()), SLOT(ShowTranscodeDialog())); +#else + ui_->action_transcoder->setDisabled(true); +#endif connect(ui_->action_jump, SIGNAL(triggered()), ui_->playlist->view(), SLOT(JumpToCurrentlyPlayingTrack())); connect(ui_->action_update_collection, SIGNAL(triggered()), app_->collection(), SLOT(IncrementalScan())); connect(ui_->action_full_collection_scan, SIGNAL(triggered()), app_->collection(), SLOT(FullScan())); +#if defined(HAVE_GSTREAMER) connect(ui_->action_add_files_to_transcoder, SIGNAL(triggered()), SLOT(AddFilesToTranscoder())); +#else + ui_->action_add_files_to_transcoder->setDisabled(true); +#endif connect(ui_->action_toggle_scrobbling, SIGNAL(triggered()), app_->scrobbler(), SLOT(ToggleScrobbling())); connect(app_->scrobbler(), SIGNAL(ErrorMessage(QString)), SLOT(ShowErrorDialog(QString))); @@ -571,16 +573,16 @@ MainWindow::MainWindow(Application *app, SystemTrayIcon *tray_icon, OSD *osd, co playlist_menu_->addAction(ui_->action_renumber_tracks); playlist_menu_->addAction(ui_->action_selection_set_value); playlist_menu_->addAction(ui_->action_auto_complete_tags); - playlist_menu_->addAction(ui_->action_add_files_to_transcoder); - playlist_menu_->addSeparator(); #ifdef HAVE_GSTREAMER + playlist_menu_->addAction(ui_->action_add_files_to_transcoder); +#endif + playlist_menu_->addSeparator(); +#if defined(HAVE_GSTREAMER) && !defined(Q_OS_WIN) + playlist_copy_to_device_ = playlist_menu_->addAction(IconLoader::Load("device"), tr("Copy to device..."), this, SLOT(PlaylistCopyToDevice())); +#endif playlist_copy_to_collection_ = playlist_menu_->addAction(IconLoader::Load("edit-copy"), tr("Copy to collection..."), this, SLOT(PlaylistCopyToCollection())); playlist_move_to_collection_ = playlist_menu_->addAction(IconLoader::Load("go-jump"), tr("Move to collection..."), this, SLOT(PlaylistMoveToCollection())); playlist_organise_ = playlist_menu_->addAction(IconLoader::Load("edit-copy"), tr("Organise files..."), this, SLOT(PlaylistMoveToCollection())); -#ifndef Q_OS_WIN - playlist_copy_to_device_ = playlist_menu_->addAction(IconLoader::Load("device"), tr("Copy to device..."), this, SLOT(PlaylistCopyToDevice())); -#endif -#endif playlist_open_in_browser_ = playlist_menu_->addAction(IconLoader::Load("document-open-folder"), tr("Show in file browser..."), this, SLOT(PlaylistOpenInBrowser())); playlist_open_in_browser_->setVisible(false); playlist_show_in_collection_ = playlist_menu_->addAction(IconLoader::Load("edit-find"), tr("Show in collection..."), this, SLOT(ShowInCollection())); @@ -1428,14 +1430,12 @@ void MainWindow::PlaylistRightClick(const QPoint &global_pos, const QModelIndex ui_->action_remove_from_playlist->setEnabled(!selection.isEmpty()); playlist_show_in_collection_->setVisible(false); -#ifdef HAVE_GSTREAMER playlist_copy_to_collection_->setVisible(false); playlist_move_to_collection_->setVisible(false); - playlist_organise_->setVisible(false); -#ifndef Q_OS_WIN +#if defined(HAVE_GSTREAMER) && !defined(Q_OS_WIN) playlist_copy_to_device_->setVisible(false); #endif -#endif + playlist_organise_->setVisible(false); playlist_open_in_browser_->setVisible(false); if (selected < 1) { @@ -1495,18 +1495,14 @@ void MainWindow::PlaylistRightClick(const QPoint &global_pos, const QModelIndex // Is it a collection item? PlaylistItemPtr item = app_->playlist_manager()->current()->item_at(source_index.row()); if (item->IsLocalCollectionItem() && item->Metadata().id() != -1) { -#ifdef HAVE_GSTREAMER playlist_organise_->setVisible(editable); -#endif playlist_show_in_collection_->setVisible(editable); playlist_open_in_browser_->setVisible(true); } -#ifdef HAVE_GSTREAMER else { playlist_copy_to_collection_->setVisible(editable); playlist_move_to_collection_->setVisible(editable); } -#endif #if defined(HAVE_GSTREAMER) && !defined(Q_OS_WIN) playlist_copy_to_device_->setVisible(editable); @@ -1941,7 +1937,6 @@ void MainWindow::PlayingWidgetPositionChanged(bool above_status_bar) { ui_->status_bar->show(); } -#ifdef HAVE_GSTREAMER void MainWindow::CopyFilesToCollection(const QList &urls) { organise_dialog_->SetDestinationModel(app_->collection_model()->directory_model()); organise_dialog_->SetUrls(urls); @@ -1957,7 +1952,7 @@ void MainWindow::MoveFilesToCollection(const QList &urls) { } void MainWindow::CopyFilesToDevice(const QList &urls) { -#ifndef Q_OS_WIN +#if defined(HAVE_GSTREAMER) && !defined(Q_OS_WIN) organise_dialog_->SetDestinationModel(app_->device_manager()->connected_devices_model(), true); organise_dialog_->SetCopy(true); if (organise_dialog_->SetUrls(urls)) @@ -1967,10 +1962,8 @@ void MainWindow::CopyFilesToDevice(const QList &urls) { } #endif } -#endif void MainWindow::EditFileTags(const QList &urls) { - //EnsureEditTagDialogCreated(); SongList songs; for (const QUrl &url : urls) { @@ -1985,7 +1978,6 @@ void MainWindow::EditFileTags(const QList &urls) { edit_tag_dialog_->show(); } -#ifdef HAVE_GSTREAMER void MainWindow::PlaylistCopyToCollection() { PlaylistOrganiseSelected(true); } @@ -2009,7 +2001,6 @@ void MainWindow::PlaylistOrganiseSelected(bool copy) { organise_dialog_->SetCopy(copy); organise_dialog_->show(); } -#endif void MainWindow::PlaylistOpenInBrowser() { @@ -2055,9 +2046,8 @@ void MainWindow::PlaylistSkip() { } -#if defined(HAVE_GSTREAMER) void MainWindow::PlaylistCopyToDevice() { -#if !defined(Q_OS_WIN) +#ifndef Q_OS_WIN QModelIndexList proxy_indexes = ui_->playlist->view()->selectionModel()->selectedRows(); SongList songs; @@ -2075,7 +2065,6 @@ void MainWindow::PlaylistCopyToDevice() { } #endif } -#endif void MainWindow::ChangeCollectionQueryMode(QAction *action) { if (action == collection_show_duplicates_) { diff --git a/src/core/mainwindow.h b/src/core/mainwindow.h index a593e8e8a..a5417c272 100644 --- a/src/core/mainwindow.h +++ b/src/core/mainwindow.h @@ -186,14 +186,10 @@ signals: void AddFilesToTranscoder(); #endif -#ifdef HAVE_GSTREAMER void PlaylistCopyToCollection(); void PlaylistMoveToCollection(); -#ifndef Q_OS_WIN_ void PlaylistCopyToDevice(); -#endif void PlaylistOrganiseSelected(bool copy); -#endif void PlaylistOpenInBrowser(); void ShowInCollection(); @@ -206,11 +202,9 @@ signals: void SongChanged(const Song& song); void VolumeChanged(int volume); -#ifdef HAVE_GSTREAMER void CopyFilesToCollection(const QList& urls); void MoveFilesToCollection(const QList& urls); void CopyFilesToDevice(const QList& urls); -#endif void EditFileTags(const QList& urls); void AddToPlaylist(QMimeData *data); @@ -327,9 +321,7 @@ signals: Lazy transcode_dialog_; #endif Lazy error_dialog_; -#ifdef HAVE_GSTREAMER Lazy organise_dialog_; -#endif #if defined(HAVE_GSTREAMER) && defined(HAVE_CHROMAPRINT) std::unique_ptr tag_fetcher_; @@ -352,12 +344,10 @@ signals: QAction *playlist_undoredo_; QAction *playlist_organise_; QAction *playlist_show_in_collection_; -#ifdef HAVE_GSTREAMER QAction *playlist_copy_to_collection_; QAction *playlist_move_to_collection_; #ifndef Q_OS_WIN QAction *playlist_copy_to_device_; -#endif #endif QAction *playlist_open_in_browser_; QAction *playlist_queue_; diff --git a/src/device/deviceview.cpp b/src/device/deviceview.cpp index 0032ed493..178570e7d 100644 --- a/src/device/deviceview.cpp +++ b/src/device/deviceview.cpp @@ -210,10 +210,8 @@ void DeviceView::SetApplication(Application *app) { properties_dialog_->SetDeviceManager(app_->device_manager()); -#ifdef HAVE_GSTREAMER organise_dialog_.reset(new OrganiseDialog(app_->task_manager())); organise_dialog_->SetDestinationModel(app_->collection_model()->directory_model()); -#endif } @@ -235,9 +233,7 @@ void DeviceView::contextMenuEvent(QContextMenuEvent *e) { open_in_new_playlist_ = collection_menu_->addAction(IconLoader::Load("document-new"), tr("Open in new playlist"), this, SLOT(OpenInNewPlaylist())); collection_menu_->addSeparator(); -#ifdef HAVE_GSTREAMER organise_action_ = collection_menu_->addAction(IconLoader::Load("edit-copy"), tr("Copy to collection..."), this, SLOT(Organise())); -#endif delete_action_ = collection_menu_->addAction(IconLoader::Load("edit-delete"), tr("Delete from device..."), this, SLOT(Delete())); } @@ -409,7 +405,6 @@ void DeviceView::OpenInNewPlaylist() { emit AddToPlaylistSignal(data); } -#ifdef HAVE_GSTREAMER void DeviceView::Delete() { if (selectedIndexes().isEmpty()) return; @@ -444,14 +439,12 @@ void DeviceView::Organise() { organise_dialog_->show(); } -#endif void DeviceView::Unmount() { QModelIndex device_idx = MapToDevice(menu_index_); app_->device_manager()->Unmount(device_idx.row()); } -#ifdef HAVE_GSTREAMER void DeviceView::DeleteFinished(const SongList &songs_with_errors) { if (songs_with_errors.isEmpty()) return; @@ -461,7 +454,6 @@ void DeviceView::DeleteFinished(const SongList &songs_with_errors) { // It deletes itself when the user closes it } -#endif bool DeviceView::CanRecursivelyExpand(const QModelIndex &index) const { // Never expand devices diff --git a/src/device/deviceview.h b/src/device/deviceview.h index d7fc397df..35750f58d 100644 --- a/src/device/deviceview.h +++ b/src/device/deviceview.h @@ -85,17 +85,13 @@ class DeviceView : public AutoExpandingTreeView { void Load(); void AddToPlaylist(); void OpenInNewPlaylist(); -#ifdef HAVE_GSTREAMER void Organise(); void Delete(); -#endif void DeviceConnected(int row); void DeviceDisconnected(int row); -#ifdef HAVE_GSTREAMER void DeleteFinished(const SongList &songs_with_errors); -#endif // AutoExpandingTreeView bool CanRecursivelyExpand(const QModelIndex &index) const; @@ -112,9 +108,7 @@ class DeviceView : public AutoExpandingTreeView { QSortFilterProxyModel *sort_model_; std::unique_ptr properties_dialog_; -#ifdef HAVE_GSTREAMER std::unique_ptr organise_dialog_; -#endif QMenu *device_menu_; QAction *eject_action_; diff --git a/src/organise/organise.cpp b/src/organise/organise.cpp index 30631656a..9b24bce2a 100644 --- a/src/organise/organise.cpp +++ b/src/organise/organise.cpp @@ -35,19 +35,25 @@ #include "core/taskmanager.h" #include "core/musicstorage.h" #include "organise.h" -#include "transcoder/transcoder.h" +#ifdef HAVE_GSTREAMER +# include "transcoder/transcoder.h" +#endif class OrganiseFormat; using std::placeholders::_1; const int Organise::kBatchSize = 10; +#ifdef HAVE_GSTREAMER const int Organise::kTranscodeProgressInterval = 500; +#endif Organise::Organise(TaskManager *task_manager, std::shared_ptr destination, const OrganiseFormat &format, bool copy, bool overwrite, bool mark_as_listened, const NewSongInfoList &songs_info, bool eject_after) : thread_(nullptr), task_manager_(task_manager), +#ifdef HAVE_GSTREAMER transcoder_(new Transcoder(this)), +#endif destination_(destination), format_(format), copy_(copy), @@ -55,7 +61,9 @@ Organise::Organise(TaskManager *task_manager, std::shared_ptr dest mark_as_listened_(mark_as_listened), eject_after_(eject_after), task_count_(songs_info.count()), +#ifdef HAVE_GSTREAMER transcode_suffix_(1), +#endif tasks_complete_(0), started_(false), task_id_(0), @@ -78,7 +86,9 @@ void Organise::Start() { thread_ = new QThread; connect(thread_, SIGNAL(started()), SLOT(ProcessSomeFiles())); +#ifdef HAVE_GSTREAMER connect(transcoder_, SIGNAL(JobComplete(QString, QString, bool)), SLOT(FileTranscoded(QString, QString, bool))); +#endif moveToThread(thread_); thread_->start(); @@ -87,7 +97,9 @@ void Organise::Start() { void Organise::ProcessSomeFiles() { if (!started_) { +#ifdef HAVE_GSTREAMER transcode_temp_name_.open(); +#endif if (!destination_->StartCopy(&supported_filetypes_)) { // Failed to start - mark everything as failed :( @@ -99,12 +111,14 @@ void Organise::ProcessSomeFiles() { // None left? if (tasks_pending_.isEmpty()) { +#ifdef HAVE_GSTREAMER if (!tasks_transcoding_.isEmpty()) { // Just wait - FileTranscoded will start us off again in a little while qLog(Debug) << "Waiting for transcoding jobs"; transcode_progress_timer_.start(kTranscodeProgressInterval, this); return; } +#endif UpdateProgress(); @@ -137,6 +151,7 @@ void Organise::ProcessSomeFiles() { Song song = task.song_info_.song_; if (!song.is_valid()) continue; +#ifdef HAVE_GSTREAMER // Maybe this file is one that's been transcoded already? if (!task.transcoded_filename_.isEmpty()) { qLog(Debug) << "This file has already been transcoded"; @@ -174,6 +189,7 @@ void Organise::ProcessSomeFiles() { continue; } } +#endif MusicStorage::CopyJob job; job.source_ = task.transcoded_filename_.isEmpty() ? task.song_info_.song_.url().toLocalFile() : task.transcoded_filename_; @@ -204,6 +220,7 @@ void Organise::ProcessSomeFiles() { } +#ifdef HAVE_GSTREAMER Song::FileType Organise::CheckTranscode(Song::FileType original_type) const { if (original_type == Song::FileType_Stream) return Song::FileType_Unknown; @@ -230,6 +247,7 @@ Song::FileType Organise::CheckTranscode(Song::FileType original_type) const { return Song::FileType_Unknown; } +#endif void Organise::SetSongProgress(float progress, bool transcoded) { @@ -243,12 +261,14 @@ void Organise::UpdateProgress() { const int total = task_count_ * 100; +#ifdef HAVE_GSTREAMER // Update transcoding progress QMap transcode_progress = transcoder_->GetProgress(); for (const QString &filename : transcode_progress.keys()) { if (!tasks_transcoding_.contains(filename)) continue; tasks_transcoding_[filename].transcode_progress_ = transcode_progress[filename]; } +#endif // Count the progress of all tasks that are in the queue. // Files that need transcoding total 50 for the transcode and 50 for the copy, files that only need to be copied total 100. @@ -257,9 +277,11 @@ void Organise::UpdateProgress() { for (const Task &task : tasks_pending_) { progress += qBound(0, static_cast(task.transcode_progress_ * 50), 50); } +#ifdef HAVE_GSTREAMER for (const Task &task : tasks_transcoding_.values()) { progress += qBound(0, static_cast(task.transcode_progress_ * 50), 50); } +#endif // Add the progress of the track that's currently copying progress += current_copy_progress_; @@ -268,6 +290,7 @@ void Organise::UpdateProgress() { } +#ifdef HAVE_GSTREAMER void Organise::FileTranscoded(const QString &input, const QString &output, bool success) { qLog(Info) << "File finished" << input << success; @@ -283,14 +306,17 @@ void Organise::FileTranscoded(const QString &input, const QString &output, bool QTimer::singleShot(0, this, SLOT(ProcessSomeFiles())); } +#endif void Organise::timerEvent(QTimerEvent *e) { QObject::timerEvent(e); +#ifdef HAVE_GSTREAMER if (e->timerId() == transcode_progress_timer_.timerId()) { UpdateProgress(); } +#endif } diff --git a/src/organise/organise.h b/src/organise/organise.h index 110941acf..b1155b423 100644 --- a/src/organise/organise.h +++ b/src/organise/organise.h @@ -44,7 +44,9 @@ class QTimerEvent; class MusicStorage; class TaskManager; +#ifdef HAVE_GSTREAMER class Transcoder; +#endif class Organise : public QObject { Q_OBJECT @@ -60,7 +62,9 @@ class Organise : public QObject { Organise(TaskManager *task_manager, std::shared_ptr destination, const OrganiseFormat &format, bool copy, bool overwrite, bool mark_as_listened, const NewSongInfoList &songs, bool eject_after); static const int kBatchSize; +#ifdef HAVE_GSTREAMER static const int kTranscodeProgressInterval; +#endif void Start(); @@ -73,19 +77,25 @@ signals: private slots: void ProcessSomeFiles(); +#ifdef HAVE_GSTREAMER void FileTranscoded(const QString &input, const QString &output, bool success); +#endif private: void SetSongProgress(float progress, bool transcoded = false); void UpdateProgress(); +#ifdef HAVE_GSTREAMER Song::FileType CheckTranscode(Song::FileType original_type) const; +#endif private: struct Task { - explicit Task(const NewSongInfo &song_info = NewSongInfo()) : song_info_(song_info), transcode_progress_(0.0) {} + explicit Task(const NewSongInfo &song_info = NewSongInfo()) : + song_info_(song_info), + transcode_progress_(0.0) + {} NewSongInfo song_info_; - float transcode_progress_; QString transcoded_filename_; QString new_extension_; @@ -95,7 +105,9 @@ signals: QThread *thread_; QThread *original_thread_; TaskManager *task_manager_; +#ifdef HAVE_GSTREAMER Transcoder *transcoder_; +#endif std::shared_ptr destination_; QList supported_filetypes_; @@ -106,12 +118,16 @@ signals: const bool eject_after_; int task_count_; +#ifdef HAVE_GSTREAMER QBasicTimer transcode_progress_timer_; QTemporaryFile transcode_temp_name_; int transcode_suffix_; +#endif QList tasks_pending_; +#ifdef HAVE_GSTREAMER QMap tasks_transcoding_; +#endif int tasks_complete_; bool started_;