diff --git a/src/globalsearch/globalsearch.cpp b/src/globalsearch/globalsearch.cpp index 6d1571fe5..5c501f0e8 100644 --- a/src/globalsearch/globalsearch.cpp +++ b/src/globalsearch/globalsearch.cpp @@ -303,6 +303,14 @@ void GlobalSearch::ReloadSettings() { } } +bool GlobalSearch::HideOtherSearchBoxes() { + QSettings s; + s.beginGroup(kSettingsGroup); + + return s.value("show_globalsearch", true).toBool() && + s.value("hide_others", false).toBool(); +} + void GlobalSearch::SaveProvidersSettings() { QSettings s; s.beginGroup(kSettingsGroup); diff --git a/src/globalsearch/globalsearch.h b/src/globalsearch/globalsearch.h index 28281e44c..38751c2c2 100644 --- a/src/globalsearch/globalsearch.h +++ b/src/globalsearch/globalsearch.h @@ -53,6 +53,8 @@ public: QList providers() const; bool is_provider_enabled(const SearchProvider* provider) const; + static bool HideOtherSearchBoxes(); + public slots: void ReloadSettings(); diff --git a/src/globalsearch/globalsearchwidget.cpp b/src/globalsearch/globalsearchwidget.cpp index 688804749..d4ae28624 100644 --- a/src/globalsearch/globalsearchwidget.cpp +++ b/src/globalsearch/globalsearchwidget.cpp @@ -180,7 +180,8 @@ void GlobalSearchWidget::paintEvent(QPaintEvent* e) { Utils::StyleHelper::verticalGradient(&p, total_rect, total_rect); QRect background_rect = background_scaled_.rect(); - background_rect.moveLeft(total_rect.right() - background_rect.width()); + background_rect.moveLeft(ui_->settings->mapTo(this, ui_->settings->rect().center()).x() - + background_rect.width()); background_rect.moveTop(total_rect.top()); p.setOpacity(0.5); @@ -570,10 +571,12 @@ void GlobalSearchWidget::ReloadSettings() { show_tooltip_ = s.value("tooltip", true).toBool(); combine_identical_results_ = s.value("combine_identical_results", true).toBool(); provider_order_ = s.value("provider_order", QStringList() << "library").toStringList(); + setVisible(s.value("show_globalsearch", true).toBool()); if (tooltip_) { tooltip_->ReloadSettings(); } + } GlobalSearchWidget::CombineAction GlobalSearchWidget::CanCombineResults( diff --git a/src/internet/icecastfilterwidget.cpp b/src/internet/icecastfilterwidget.cpp index c7d9e9ce6..50d293e8a 100644 --- a/src/internet/icecastfilterwidget.cpp +++ b/src/internet/icecastfilterwidget.cpp @@ -30,6 +30,7 @@ const char* IcecastFilterWidget::kSettingsGroup = "Icecast"; IcecastFilterWidget::IcecastFilterWidget(QWidget *parent) : QWidget(parent), ui_(new Ui_IcecastFilterWidget), + menu_(new QMenu(tr("Display options"), this)), sort_mode_mapper_(new QSignalMapper(this)) { ui_->setupUi(this); @@ -44,9 +45,9 @@ IcecastFilterWidget::IcecastFilterWidget(QWidget *parent) AddAction(group, ui_->action_sort_station, IcecastModel::SortMode_StationAlphabetical); // Options menu - QMenu* options_menu = new QMenu(this); - options_menu->addActions(group->actions()); - ui_->options->setMenu(options_menu); + menu_->setIcon(ui_->options->icon()); + menu_->addActions(group->actions()); + ui_->options->setMenu(menu_); connect(sort_mode_mapper_, SIGNAL(mapped(int)), SLOT(SortModeChanged(int))); diff --git a/src/internet/icecastfilterwidget.h b/src/internet/icecastfilterwidget.h index f3f5bc4ed..254d4470a 100644 --- a/src/internet/icecastfilterwidget.h +++ b/src/internet/icecastfilterwidget.h @@ -26,6 +26,7 @@ class LineEditInterface; class Ui_IcecastFilterWidget; class QActionGroup; +class QMenu; class QSignalMapper; class IcecastFilterWidget : public QWidget { @@ -39,6 +40,8 @@ public: void SetIcecastModel(IcecastModel* model); + QMenu* menu() const { return menu_; } + public slots: void FocusOnFilter(QKeyEvent* e); @@ -51,6 +54,7 @@ private: private: Ui_IcecastFilterWidget* ui_; IcecastModel* model_; + QMenu* menu_; QSignalMapper* sort_mode_mapper_; diff --git a/src/internet/icecastservice.cpp b/src/internet/icecastservice.cpp index f1a551397..ac7c3f845 100644 --- a/src/internet/icecastservice.cpp +++ b/src/internet/icecastservice.cpp @@ -294,6 +294,9 @@ void IcecastService::EnsureMenuCreated() { context_menu_->addActions(GetPlaylistActions()); context_menu_->addAction(IconLoader::Load("download"), tr("Open dir.xiph.org in browser"), this, SLOT(Homepage())); context_menu_->addAction(IconLoader::Load("view-refresh"), tr("Refresh station list"), this, SLOT(LoadDirectory())); + + context_menu_->addSeparator(); + context_menu_->addMenu(filter_->menu()); } void IcecastService::Homepage() { diff --git a/src/internet/internetviewcontainer.cpp b/src/internet/internetviewcontainer.cpp index 2b8db3b51..4b0016f6c 100644 --- a/src/internet/internetviewcontainer.cpp +++ b/src/internet/internetviewcontainer.cpp @@ -20,6 +20,7 @@ #include "internetservice.h" #include "ui_internetviewcontainer.h" #include "core/mergedproxymodel.h" +#include "globalsearch/globalsearch.h" #include #include @@ -106,6 +107,9 @@ void InternetViewContainer::SetHeaderVisible(QWidget* header, bool visible) { if (!header) return; + if (visible && GlobalSearch::HideOtherSearchBoxes()) + return; + HeaderData& d = headers_[header]; if (d.visible_ == visible) return; diff --git a/src/internet/jamendoservice.cpp b/src/internet/jamendoservice.cpp index c05f1b602..a86dc056b 100644 --- a/src/internet/jamendoservice.cpp +++ b/src/internet/jamendoservice.cpp @@ -411,6 +411,9 @@ void JamendoService::EnsureMenuCreated() { library_filter_->SetLibraryModel(library_model_); library_filter_->SetFilterHint(tr("Search Jamendo")); library_filter_->SetAgeFilterEnabled(false); + + context_menu_->addSeparator(); + context_menu_->addMenu(library_filter_->menu()); } } diff --git a/src/internet/magnatuneservice.cpp b/src/internet/magnatuneservice.cpp index 8a60931a2..309715ee0 100644 --- a/src/internet/magnatuneservice.cpp +++ b/src/internet/magnatuneservice.cpp @@ -270,6 +270,9 @@ void MagnatuneService::EnsureMenuCreated() { library_filter_->SetFilterHint(tr("Search Magnatune")); library_filter_->SetAgeFilterEnabled(false); library_filter_->AddMenuAction(config_action); + + context_menu_->addSeparator(); + context_menu_->addMenu(library_filter_->menu()); } void MagnatuneService::ShowContextMenu(const QModelIndex& index, const QPoint& global_pos) { diff --git a/src/library/libraryfilterwidget.cpp b/src/library/libraryfilterwidget.cpp index c10d649c3..3a9c9fb0f 100644 --- a/src/library/libraryfilterwidget.cpp +++ b/src/library/libraryfilterwidget.cpp @@ -106,7 +106,8 @@ LibraryFilterWidget::LibraryFilterWidget(QWidget *parent) connect(group_by_group_, SIGNAL(triggered(QAction*)), SLOT(GroupByClicked(QAction*))); // Library config menu - library_menu_ = new QMenu(this); + library_menu_ = new QMenu(tr("Display options"), this); + library_menu_->setIcon(ui_->options->icon()); library_menu_->addMenu(filter_age_menu_); library_menu_->addMenu(group_by_menu_); library_menu_->addSeparator(); diff --git a/src/library/libraryfilterwidget.h b/src/library/libraryfilterwidget.h index 8e2356bac..a004d6e92 100644 --- a/src/library/libraryfilterwidget.h +++ b/src/library/libraryfilterwidget.h @@ -56,6 +56,7 @@ class LibraryFilterWidget : public QWidget { void SetAgeFilterEnabled(bool enabled); void SetGroupByEnabled(bool enabled); + QMenu* menu() const { return library_menu_; } void AddMenuAction(QAction* action); void SetSettingsGroup(const QString& group) { settings_group_ = group; } diff --git a/src/library/libraryview.cpp b/src/library/libraryview.cpp index b0f3e3b9f..104e2c7a3 100644 --- a/src/library/libraryview.cpp +++ b/src/library/libraryview.cpp @@ -16,6 +16,7 @@ */ #include "librarydirectorymodel.h" +#include "libraryfilterwidget.h" #include "librarymodel.h" #include "libraryview.h" #include "libraryitem.h" @@ -131,6 +132,9 @@ LibraryView::LibraryView(QWidget* parent) : AutoExpandingTreeView(parent), cover_providers_(NULL), library_(NULL), + devices_(NULL), + task_manager_(NULL), + filter_(NULL), total_song_count_(-1), nomusic_(":nomusic.png"), context_menu_(NULL), @@ -144,7 +148,6 @@ LibraryView::LibraryView(QWidget* parent) setDragDropMode(QAbstractItemView::DragOnly); setSelectionMode(QAbstractItemView::ExtendedSelection); - ReloadSettings(); setStyleSheet("QTreeView::item{padding-top:1px;}"); } @@ -179,6 +182,10 @@ void LibraryView::SetDeviceManager(DeviceManager* device_manager) { devices_ = device_manager; } +void LibraryView::SetFilter(LibraryFilterWidget* filter) { + filter_ = filter; +} + void LibraryView::TotalSongCountUpdated(int count) { bool old = total_song_count_; total_song_count_ = count; @@ -275,6 +282,8 @@ void LibraryView::contextMenuEvent(QContextMenuEvent *e) { context_menu_->addSeparator(); + context_menu_->addMenu(filter_->menu()); + copy_to_device_->setDisabled(devices_->connected_devices_model()->rowCount() == 0); connect(devices_->connected_devices_model(), SIGNAL(IsEmptyChanged(bool)), copy_to_device_, SLOT(setDisabled(bool))); diff --git a/src/library/libraryview.h b/src/library/libraryview.h index d5adbee54..66a0ae32f 100644 --- a/src/library/libraryview.h +++ b/src/library/libraryview.h @@ -27,6 +27,7 @@ #include class DeviceManager; +class LibraryFilterWidget; class LibraryModel; class OrganiseDialog; class TaskManager; @@ -65,6 +66,7 @@ class LibraryView : public AutoExpandingTreeView { void SetTaskManager(TaskManager* task_manager); void SetLibrary(LibraryModel* library); void SetDeviceManager(DeviceManager* device_manager); + void SetFilter(LibraryFilterWidget* filter); // QTreeView void keyboardSearch(const QString &search); @@ -116,6 +118,7 @@ class LibraryView : public AutoExpandingTreeView { LibraryModel* library_; DeviceManager* devices_; TaskManager* task_manager_; + LibraryFilterWidget* filter_; int total_song_count_; diff --git a/src/library/libraryviewcontainer.cpp b/src/library/libraryviewcontainer.cpp index bd2392efe..ba6f594db 100644 --- a/src/library/libraryviewcontainer.cpp +++ b/src/library/libraryviewcontainer.cpp @@ -17,17 +17,21 @@ #include "libraryviewcontainer.h" #include "ui_libraryviewcontainer.h" +#include "globalsearch/globalsearch.h" LibraryViewContainer::LibraryViewContainer(QWidget* parent) : QWidget(parent), ui_(new Ui_LibraryViewContainer) { ui_->setupUi(this); + view()->SetFilter(filter()); connect(filter(), SIGNAL(UpPressed()), view(), SLOT(UpAndFocus())); connect(filter(), SIGNAL(DownPressed()), view(), SLOT(DownAndFocus())); connect(filter(), SIGNAL(ReturnPressed()), view(), SLOT(FilterReturnPressed())); connect(view(), SIGNAL(FocusOnFilterSignal(QKeyEvent*)), filter(), SLOT(FocusOnFilter(QKeyEvent*))); + + ReloadSettings(); } LibraryViewContainer::~LibraryViewContainer() { @@ -41,3 +45,8 @@ LibraryView* LibraryViewContainer::view() const { LibraryFilterWidget* LibraryViewContainer::filter() const { return ui_->filter; } + +void LibraryViewContainer::ReloadSettings() { + filter()->setVisible(!GlobalSearch::HideOtherSearchBoxes()); + view()->ReloadSettings(); +} diff --git a/src/library/libraryviewcontainer.h b/src/library/libraryviewcontainer.h index f278ac4b0..24cf18a5b 100644 --- a/src/library/libraryviewcontainer.h +++ b/src/library/libraryviewcontainer.h @@ -34,6 +34,8 @@ public: LibraryFilterWidget* filter() const; LibraryView* view() const; + void ReloadSettings(); + private: Ui_LibraryViewContainer* ui_; }; diff --git a/src/translations/translations.pot b/src/translations/translations.pot index 8c8574b6c..410a3791f 100644 --- a/src/translations/translations.pot +++ b/src/translations/translations.pot @@ -607,7 +607,7 @@ msgid "Append files/URLs to the playlist" msgstr "" #: devices/deviceview.cpp:216 internet/internetservice.cpp:53 -#: library/libraryview.cpp:236 widgets/fileviewlist.cpp:31 +#: library/libraryview.cpp:243 widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "" @@ -924,7 +924,7 @@ msgstr "" msgid "Clementine was unable to find results for this file" msgstr "" -#: library/libraryview.cpp:218 +#: library/libraryview.cpp:225 msgid "Click here to add some music" msgstr "" @@ -1036,7 +1036,7 @@ msgstr "" msgid "Convert any music that the device can't play" msgstr "" -#: library/libraryview.cpp:258 ui/mainwindow.cpp:538 +#: library/libraryview.cpp:265 ui/mainwindow.cpp:538 #: widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "" @@ -1256,7 +1256,7 @@ msgstr "" msgid "Delete Grooveshark playlist" msgstr "" -#: devices/deviceview.cpp:393 library/libraryview.cpp:450 +#: devices/deviceview.cpp:393 library/libraryview.cpp:459 #: ui/mainwindow.cpp:1839 widgets/fileview.cpp:185 msgid "Delete files" msgstr "" @@ -1265,7 +1265,7 @@ msgstr "" msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:260 ui/mainwindow.cpp:539 +#: library/libraryview.cpp:267 ui/mainwindow.cpp:539 #: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "" @@ -1274,7 +1274,7 @@ msgstr "" msgid "Delete preset" msgstr "" -#: library/libraryview.cpp:252 +#: library/libraryview.cpp:259 msgid "Delete smart playlist" msgstr "" @@ -1368,6 +1368,7 @@ msgstr "" msgid "Discontinuous transmission" msgstr "" +#: internet/icecastfilterwidget.cpp:33 library/libraryfilterwidget.cpp:109 #: ../bin/src/ui_librarysettingspage.h:169 msgid "Display options" msgstr "" @@ -1392,7 +1393,7 @@ msgstr "" msgid "Don't repeat" msgstr "" -#: library/libraryview.cpp:274 +#: library/libraryview.cpp:281 msgid "Don't show in various artists" msgstr "" @@ -1468,7 +1469,7 @@ msgstr "" msgid "Dynamic random mix" msgstr "" -#: library/libraryview.cpp:250 +#: library/libraryview.cpp:257 msgid "Edit smart playlist..." msgstr "" @@ -1489,11 +1490,11 @@ msgstr "" msgid "Edit track information" msgstr "" -#: library/libraryview.cpp:264 ../bin/src/ui_mainwindow.h:650 +#: library/libraryview.cpp:271 ../bin/src/ui_mainwindow.h:650 msgid "Edit track information..." msgstr "" -#: library/libraryview.cpp:266 +#: library/libraryview.cpp:273 msgid "Edit tracks information..." msgstr "" @@ -1578,7 +1579,7 @@ msgstr "" msgid "Equivalent to --log-levels *:3" msgstr "" -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:444 +#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:453 #: ui/edittagdialog.cpp:719 ui/mainwindow.cpp:1807 ui/mainwindow.cpp:1912 #: ui/mainwindow.cpp:2130 msgid "Error" @@ -2625,7 +2626,7 @@ msgstr "" msgid "New playlist" msgstr "" -#: library/libraryview.cpp:248 +#: library/libraryview.cpp:255 msgid "New smart playlist..." msgstr "" @@ -2672,7 +2673,7 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:445 ui/mainwindow.cpp:1808 ui/mainwindow.cpp:1913 +#: library/libraryview.cpp:454 ui/mainwindow.cpp:1808 ui/mainwindow.cpp:1913 msgid "None of the selected songs were suitable for copying to a device" msgstr "" @@ -2771,7 +2772,7 @@ msgid "Open file..." msgstr "" #: devices/deviceview.cpp:220 internet/internetservice.cpp:73 -#: library/libraryview.cpp:240 widgets/fileviewlist.cpp:35 +#: library/libraryview.cpp:247 widgets/fileviewlist.cpp:35 #: ../bin/src/ui_behavioursettingspage.h:203 msgid "Open in new playlist" msgstr "" @@ -2813,7 +2814,7 @@ msgstr "" msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:256 ui/mainwindow.cpp:537 +#: library/libraryview.cpp:263 ui/mainwindow.cpp:537 msgid "Organise files..." msgstr "" @@ -3094,7 +3095,7 @@ msgstr "" msgid "Queue selected tracks" msgstr "" -#: globalsearch/globalsearchwidget.cpp:98 library/libraryview.cpp:244 +#: globalsearch/globalsearchwidget.cpp:98 library/libraryview.cpp:251 #: ui/mainwindow.cpp:1352 msgid "Queue track" msgstr "" @@ -3238,7 +3239,7 @@ msgid "Replace and play now" msgstr "" #: devices/deviceview.cpp:218 globalsearch/globalsearchwidget.cpp:99 -#: internet/internetservice.cpp:63 library/libraryview.cpp:238 +#: internet/internetservice.cpp:63 library/libraryview.cpp:245 #: widgets/fileviewlist.cpp:33 msgid "Replace current playlist" msgstr "" @@ -3544,11 +3545,11 @@ msgstr "" msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:268 ui/mainwindow.cpp:540 +#: library/libraryview.cpp:275 ui/mainwindow.cpp:540 msgid "Show in file browser..." msgstr "" -#: library/libraryview.cpp:272 +#: library/libraryview.cpp:279 msgid "Show in various artists" msgstr "" @@ -3896,7 +3897,7 @@ msgid "" "deleted:" msgstr "" -#: library/libraryview.cpp:451 ui/mainwindow.cpp:1840 widgets/fileview.cpp:186 +#: library/libraryview.cpp:460 ui/mainwindow.cpp:1840 widgets/fileview.cpp:186 msgid "" "These files will be deleted from disk, are you sure you want to continue?" msgstr "" @@ -4450,7 +4451,7 @@ msgid "" "package." msgstr "" -#: library/libraryview.cpp:212 +#: library/libraryview.cpp:219 msgid "Your library is empty!" msgstr "" diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index e7f3399e8..629dd1f48 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -830,7 +830,7 @@ void MainWindow::ReloadAllSettings() { library_->ReloadSettings(); player_->ReloadSettings(); osd_->ReloadSettings(); - library_view_->view()->ReloadSettings(); + library_view_->ReloadSettings(); song_info_view_->ReloadSettings(); player_->engine()->ReloadSettings(); ui_->playlist->view()->ReloadSettings();