Implement the options to hide/show the global search box, and to hide/show all other search boxes.

This commit is contained in:
David Sansome 2011-11-05 19:09:02 +00:00
parent a9e1fe0075
commit b37f679c36
17 changed files with 85 additions and 28 deletions

View File

@ -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);

View File

@ -53,6 +53,8 @@ public:
QList<SearchProvider*> providers() const;
bool is_provider_enabled(const SearchProvider* provider) const;
static bool HideOtherSearchBoxes();
public slots:
void ReloadSettings();

View File

@ -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(

View File

@ -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)));

View File

@ -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_;

View File

@ -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() {

View File

@ -20,6 +20,7 @@
#include "internetservice.h"
#include "ui_internetviewcontainer.h"
#include "core/mergedproxymodel.h"
#include "globalsearch/globalsearch.h"
#include <QMetaMethod>
#include <QTimeLine>
@ -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;

View File

@ -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());
}
}

View File

@ -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) {

View File

@ -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();

View File

@ -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; }

View File

@ -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)));

View File

@ -27,6 +27,7 @@
#include <boost/scoped_ptr.hpp>
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_;

View File

@ -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();
}

View File

@ -34,6 +34,8 @@ public:
LibraryFilterWidget* filter() const;
LibraryView* view() const;
void ReloadSettings();
private:
Ui_LibraryViewContainer* ui_;
};

View File

@ -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 ""

View File

@ -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();