Show a "Configure Magnatune" button on the magnatune header

This commit is contained in:
David Sansome 2010-06-09 15:38:00 +00:00
parent 782166db41
commit 5f92d652a9
35 changed files with 181 additions and 151 deletions

View File

@ -95,13 +95,11 @@ LibraryFilterWidget::LibraryFilterWidget(QWidget *parent)
connect(group_by_group_, SIGNAL(triggered(QAction*)), SLOT(GroupByClicked(QAction*)));
// Library config menu
QMenu* library_menu = new QMenu(this);
library_menu->addMenu(filter_age_menu_);
library_menu->addMenu(group_by_menu_);
library_menu->addSeparator();
config_action_ = library_menu->addAction(
tr("Configure library..."), this, SLOT(ShowConfigDialog()));
ui_->options->setMenu(library_menu);
library_menu_ = new QMenu(this);
library_menu_->addMenu(filter_age_menu_);
library_menu_->addMenu(group_by_menu_);
library_menu_->addSeparator();
ui_->options->setMenu(library_menu_);
}
LibraryFilterWidget::~LibraryFilterWidget() {
@ -178,10 +176,6 @@ void LibraryFilterWidget::ClearFilter() {
ui_->filter->setFocus();
}
void LibraryFilterWidget::ShowConfigDialog() {
settings_dialog_->OpenAtPage(SettingsDialog::Page_Library);
}
void LibraryFilterWidget::SetFilterHint(const QString& hint) {
ui_->filter->SetHint(hint);
}
@ -194,6 +188,6 @@ void LibraryFilterWidget::SetGroupByEnabled(bool enabled) {
group_by_menu_->setEnabled(enabled);
}
void LibraryFilterWidget::SetConfigDialogEnabled(bool enabled) {
config_action_->setEnabled(enabled);
void LibraryFilterWidget::AddMenuAction(QAction* action) {
library_menu_->addAction(action);
}

View File

@ -41,17 +41,10 @@ class LibraryFilterWidget : public QWidget {
void SetFilterHint(const QString& hint);
void SetAgeFilterEnabled(bool enabled);
void SetGroupByEnabled(bool enabled);
void SetConfigDialogEnabled(bool enabled);
void AddMenuAction(QAction* action);
void SetSettingsGroup(const QString& group) { settings_group_ = group; }
void SetLibraryModel(LibraryModel* model);
void SetSettingsDialog(SettingsDialog* dialog) { settings_dialog_ = dialog; }
signals:
void LibraryConfigChanged();
public slots:
void ShowConfigDialog();
private slots:
void GroupingChanged(const LibraryModel::Grouping& g);
@ -67,7 +60,7 @@ class LibraryFilterWidget : public QWidget {
QMenu* filter_age_menu_;
QMenu* group_by_menu_;
QAction* config_action_;
QMenu* library_menu_;
QActionGroup* group_by_group_;
QSignalMapper* filter_age_mapper_;

View File

@ -60,6 +60,7 @@ MagnatuneService::MagnatuneService(RadioModel* parent)
context_menu_(new QMenu),
library_backend_(NULL),
library_model_(NULL),
library_filter_(NULL),
library_sort_model_(new QSortFilterProxyModel(this)),
membership_(Membership_None),
format_(Format_Ogg),
@ -89,13 +90,21 @@ MagnatuneService::MagnatuneService(RadioModel* parent)
context_menu_->addSeparator();
context_menu_->addAction(IconLoader::Load("download"), tr("Open magnatune.com in browser"), this, SLOT(Homepage()));
context_menu_->addAction(IconLoader::Load("view-refresh"), tr("Refresh catalogue"), this, SLOT(ReloadDatabase()));
context_menu_->addAction(IconLoader::Load("configure"), tr("Configure Magnatune..."), this, SLOT(ShowConfig()));
QAction* config_action = context_menu_->addAction(IconLoader::Load("configure"), tr("Configure Magnatune..."), this, SLOT(ShowConfig()));
library_filter_ = new LibraryFilterWidget(0);
library_filter_->SetSettingsGroup(kSettingsGroup);
library_filter_->SetLibraryModel(library_model_);
library_filter_->SetFilterHint(tr("Search Magnatune"));
library_filter_->SetAgeFilterEnabled(false);
library_filter_->AddMenuAction(config_action);
library_model_->Init();
}
MagnatuneService::~MagnatuneService() {
delete context_menu_;
delete library_filter_;
}
void MagnatuneService::ReloadSettings() {
@ -274,16 +283,6 @@ void MagnatuneService::Homepage() {
QDesktopServices::openUrl(QUrl(kHomepage));
}
bool MagnatuneService::SetupLibraryFilter(LibraryFilterWidget* w) const {
w->SetSettingsGroup(kSettingsGroup);
w->SetLibraryModel(library_model_);
w->SetFilterHint(tr("Search Magnatune"));
w->SetAgeFilterEnabled(false);
w->SetConfigDialogEnabled(false);
return true;
}
QUrl MagnatuneService::ModifyUrl(const QUrl& url) const {
QUrl ret(url);
@ -324,3 +323,7 @@ void MagnatuneService::Download() {
dialog->setAttribute(Qt::WA_DeleteOnClose);
dialog->Show(songs);
}
QWidget* MagnatuneService::HeaderWidget() const {
return library_filter_;
}

View File

@ -71,7 +71,7 @@ class MagnatuneService : public RadioService {
void ShowContextMenu(RadioItem* item, const QModelIndex& index,
const QPoint& global_pos);
bool SetupLibraryFilter(LibraryFilterWidget *) const;
QWidget* HeaderWidget() const;
void ReloadSettings();
@ -106,6 +106,7 @@ class MagnatuneService : public RadioService {
LibraryBackend* library_backend_;
LibraryModel* library_model_;
LibraryFilterWidget* library_filter_;
QSortFilterProxyModel* library_sort_model_;
MembershipType membership_;

View File

@ -55,7 +55,7 @@ class RadioService : public QObject {
virtual PlaylistItem::Options playlistitem_options() const { return PlaylistItem::Default; }
virtual bool SetupLibraryFilter(LibraryFilterWidget*) const { return false; }
virtual QWidget* HeaderWidget() const { return NULL; }
virtual void ReloadSettings() {}

View File

@ -23,23 +23,19 @@
#include <QtDebug>
#include <QTimeLine>
const int RadioViewContainer::kAnimationDuration = 500;
RadioViewContainer::RadioViewContainer(QWidget *parent)
: QWidget(parent),
ui_(new Ui_RadioViewContainer),
model_(NULL),
current_service_(NULL),
filter_visible_(false),
filter_animation_(new QTimeLine(500, this))
current_header_(NULL)
{
ui_->setupUi(this);
connect(ui_->tree, SIGNAL(collapsed(QModelIndex)), SLOT(Collapsed(QModelIndex)));
connect(ui_->tree, SIGNAL(expanded(QModelIndex)), SLOT(Expanded(QModelIndex)));
filter_animation_->setFrameRange(0, ui_->filter->sizeHint().height());
connect(filter_animation_, SIGNAL(frameChanged(int)), SLOT(SetFilterHeight(int)));
ui_->filter->setMaximumHeight(0);
}
RadioViewContainer::~RadioViewContainer() {
@ -60,22 +56,36 @@ void RadioViewContainer::SetModel(RadioModel* model) {
SLOT(CurrentIndexChanged(QModelIndex)));
}
void RadioViewContainer::ServiceChanged(const QModelIndex& index, bool changed_away) {
void RadioViewContainer::ServiceChanged(const QModelIndex& index) {
RadioItem* item = model_->IndexToItem(
model_->merged_model()->FindSourceParent(index));
if (!item)
return;
if (changed_away) {
SetFilterVisible(false);
} else {
RadioService* service = item->service;
if (!service || service == current_service_)
return;
current_service_ = service;
RadioService* service = item->service;
if (!service || service == current_service_)
return;
current_service_ = service;
SetFilterVisible(service->SetupLibraryFilter(ui_->filter));
QWidget* header = service->HeaderWidget();
if (header && !headers_.contains(header)) {
header->setParent(ui_->header_container);
header->setMaximumHeight(0);
ui_->header_container->layout()->addWidget(header);
header->show();
HeaderData d;
d.visible_ = false;
d.animation_ = new QTimeLine(kAnimationDuration, this);
d.animation_->setFrameRange(0, header->sizeHint().height());
connect(d.animation_, SIGNAL(frameChanged(int)), SLOT(SetHeaderHeight(int)));
headers_.insert(header, d);
}
SetHeaderVisible(current_header_, false);
current_header_ = header;
SetHeaderVisible(current_header_, true);
}
void RadioViewContainer::CurrentIndexChanged(const QModelIndex& index) {
@ -84,8 +94,9 @@ void RadioViewContainer::CurrentIndexChanged(const QModelIndex& index) {
void RadioViewContainer::Collapsed(const QModelIndex& index) {
if (model_->merged_model()->mapToSource(index).model() == model_) {
SetFilterVisible(false);
SetHeaderVisible(current_header_, false);
current_service_ = NULL;
current_header_ = NULL;
}
}
@ -93,15 +104,29 @@ void RadioViewContainer::Expanded(const QModelIndex& index) {
ServiceChanged(index);
}
void RadioViewContainer::SetFilterVisible(bool visible) {
if (filter_visible_ == visible)
void RadioViewContainer::SetHeaderVisible(QWidget* header, bool visible) {
if (!header)
return;
filter_visible_ = visible;
filter_animation_->setDirection(visible ? QTimeLine::Forward : QTimeLine::Backward);
filter_animation_->start();
HeaderData& d = headers_[header];
if (d.visible_ == visible)
return;
d.visible_ = visible;
d.animation_->setDirection(visible ? QTimeLine::Forward : QTimeLine::Backward);
d.animation_->start();
}
void RadioViewContainer::SetFilterHeight(int height) {
ui_->filter->setMaximumHeight(height);
void RadioViewContainer::SetHeaderHeight(int height) {
QTimeLine* animation = qobject_cast<QTimeLine*>(sender());
QWidget* header = NULL;
foreach (QWidget* h, headers_.keys()) {
if (headers_[h].animation_ == animation) {
header = h;
break;
}
}
if (header)
header->setMaximumHeight(height);
}

View File

@ -18,7 +18,9 @@
#define RADIOVIEWCONTAINER_H
#include <QWidget>
#include <QMap>
class LibraryFilterWidget;
class RadioModel;
class RadioService;
class RadioView;
@ -34,6 +36,8 @@ class RadioViewContainer : public QWidget {
RadioViewContainer(QWidget* parent = 0);
~RadioViewContainer();
static const int kAnimationDuration;
void SetModel(RadioModel* model);
RadioView* tree() const;
@ -42,19 +46,24 @@ class RadioViewContainer : public QWidget {
void Collapsed(const QModelIndex& index);
void Expanded(const QModelIndex& index);
void CurrentIndexChanged(const QModelIndex& index);
void SetFilterHeight(int height);
void SetHeaderHeight(int height);
private:
void ServiceChanged(const QModelIndex& index, bool changed_away = false);
void SetFilterVisible(bool visible);
void ServiceChanged(const QModelIndex& index);
void SetHeaderVisible(QWidget* header, bool visible);
private:
Ui_RadioViewContainer* ui_;
RadioModel* model_;
RadioService* current_service_;
bool filter_visible_;
QTimeLine* filter_animation_;
QWidget* current_header_;
struct HeaderData {
bool visible_;
QTimeLine* animation_;
};
QMap<QWidget*, HeaderData> headers_;
};
#endif // RADIOVIEWCONTAINER_H

View File

@ -21,7 +21,13 @@
<number>0</number>
</property>
<item>
<widget class="LibraryFilterWidget" name="filter" native="true"/>
<widget class="QWidget" name="header_container" native="true">
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="margin">
<number>0</number>
</property>
</layout>
</widget>
</item>
<item>
<widget class="RadioView" name="tree">
@ -56,12 +62,6 @@
<extends>QTreeView</extends>
<header>radio/radioview.h</header>
</customwidget>
<customwidget>
<class>LibraryFilterWidget</class>
<extends>QWidget</extends>
<header>library/libraryfilterwidget.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<connections/>

View File

@ -150,9 +150,6 @@ msgstr "عرض"
msgid "Group by"
msgstr ""
msgid "Configure library..."
msgstr ""
msgid "Various Artists"
msgstr "فنانون مختلفون"
@ -706,6 +703,9 @@ msgstr ""
msgid "All Files (*)"
msgstr ""
msgid "Configure library..."
msgstr ""
msgid "Stop after this track"
msgstr ""

View File

@ -151,9 +151,6 @@ msgstr "Zobrazit"
msgid "Group by"
msgstr "Seskupit podle"
msgid "Configure library..."
msgstr "Nastavit knihovnu..."
msgid "Various Artists"
msgstr "Různí umělci"
@ -708,6 +705,9 @@ msgstr ""
msgid "All Files (*)"
msgstr "Všechny soubory (*)"
msgid "Configure library..."
msgstr "Nastavit knihovnu..."
msgid "Stop after this track"
msgstr "Zastavit po této skladbě"

View File

@ -153,9 +153,6 @@ msgstr ""
msgid "Group by"
msgstr ""
msgid "Configure library..."
msgstr "Indstil bibliotek..."
msgid "Various Artists"
msgstr "Diverse kunstnere"
@ -711,6 +708,9 @@ msgstr ""
msgid "All Files (*)"
msgstr ""
msgid "Configure library..."
msgstr "Indstil bibliotek..."
msgid "Stop after this track"
msgstr "Stop efter dette spor"

View File

@ -150,9 +150,6 @@ msgstr "Anzeigen"
msgid "Group by"
msgstr "Gruppieren nach"
msgid "Configure library..."
msgstr "Musiksammlung einrichten..."
msgid "Various Artists"
msgstr "Verschiedene Interpreten"
@ -710,6 +707,9 @@ msgstr "Wiedergabelisten (*.m3u *.xspf *.xml)"
msgid "All Files (*)"
msgstr "Alle Dateien (*)"
msgid "Configure library..."
msgstr "Musiksammlung einrichten..."
msgid "Stop after this track"
msgstr "Wiedergabe nach diesem Stück beenden"

View File

@ -152,9 +152,6 @@ msgstr "Εμφάνιση"
msgid "Group by"
msgstr "Ομαδοποίηση κατά"
msgid "Configure library..."
msgstr "Παραμετροποίηση της βιβλιοθήκης"
msgid "Various Artists"
msgstr "Διάφοροι καλλιτέχνες"
@ -713,6 +710,9 @@ msgstr "Λίστα αναπαραγωγής (*.m3u *.xspf *.xml)"
msgid "All Files (*)"
msgstr "Όλα τα αρχεία (*)"
msgid "Configure library..."
msgstr "Παραμετροποίηση της βιβλιοθήκης"
msgid "Stop after this track"
msgstr "Σταμάτημα μετά από αυτό το κομμάτι"

View File

@ -150,9 +150,6 @@ msgstr "Show"
msgid "Group by"
msgstr "Group by"
msgid "Configure library..."
msgstr "Configure library..."
msgid "Various Artists"
msgstr "Various Artists"
@ -710,6 +707,9 @@ msgstr "Playlists (*.m3u *.xspf *.xml)"
msgid "All Files (*)"
msgstr "All Files (*)"
msgid "Configure library..."
msgstr "Configure library..."
msgid "Stop after this track"
msgstr "Stop after this track"

View File

@ -150,9 +150,6 @@ msgstr ""
msgid "Group by"
msgstr ""
msgid "Configure library..."
msgstr "Configure library..."
msgid "Various Artists"
msgstr "Various Artists"
@ -707,6 +704,9 @@ msgstr ""
msgid "All Files (*)"
msgstr ""
msgid "Configure library..."
msgstr "Configure library..."
msgid "Stop after this track"
msgstr "Stop after this track"

View File

@ -151,9 +151,6 @@ msgstr "Mostrar"
msgid "Group by"
msgstr "Agrupar por"
msgid "Configure library..."
msgstr "Configurar colección..."
msgid "Various Artists"
msgstr "Varios Artistas"
@ -713,6 +710,9 @@ msgstr "Listas de reproducción (*.m3u *.xspf *.xml)"
msgid "All Files (*)"
msgstr "Todos los Archivos"
msgid "Configure library..."
msgstr "Configurar colección..."
msgid "Stop after this track"
msgstr "Detener reproducción al finalizar la pista"

View File

@ -150,9 +150,6 @@ msgstr ""
msgid "Group by"
msgstr ""
msgid "Configure library..."
msgstr "Kirjaston asetukset"
msgid "Various Artists"
msgstr "Useita artisteja"
@ -706,6 +703,9 @@ msgstr ""
msgid "All Files (*)"
msgstr ""
msgid "Configure library..."
msgstr "Kirjaston asetukset"
msgid "Stop after this track"
msgstr "Pysäytä toistettavan kappaleen jälkeen"

View File

@ -151,9 +151,6 @@ msgstr "Afficher"
msgid "Group by"
msgstr "Grouper par"
msgid "Configure library..."
msgstr "Configurer votre bibliothèque..."
msgid "Various Artists"
msgstr "Compilations d'artistes"
@ -710,6 +707,9 @@ msgstr ""
msgid "All Files (*)"
msgstr "Tous les fichiers (*)"
msgid "Configure library..."
msgstr "Configurer votre bibliothèque..."
msgid "Stop after this track"
msgstr "Arrêter la lecture après cette piste"

View File

@ -150,9 +150,6 @@ msgstr ""
msgid "Group by"
msgstr ""
msgid "Configure library..."
msgstr "Configurar a biblioteca..."
msgid "Various Artists"
msgstr "Vários Artistas"
@ -708,6 +705,9 @@ msgstr ""
msgid "All Files (*)"
msgstr ""
msgid "Configure library..."
msgstr "Configurar a biblioteca..."
msgid "Stop after this track"
msgstr "Parar a reproduzón despois da faixa actual"

View File

@ -151,9 +151,6 @@ msgstr "Mostra"
msgid "Group by"
msgstr "Raggruppa per"
msgid "Configure library..."
msgstr "Configura raccolta..."
msgid "Various Artists"
msgstr "Artisti vari"
@ -713,6 +710,9 @@ msgstr "Scalette (*.m3u *.xspf *.xml)"
msgid "All Files (*)"
msgstr "Tutti i file (*)"
msgid "Configure library..."
msgstr "Configura raccolta..."
msgid "Stop after this track"
msgstr "Ferma dopo questa traccia"

View File

@ -150,9 +150,6 @@ msgstr ""
msgid "Group by"
msgstr ""
msgid "Configure library..."
msgstr ""
msgid "Various Artists"
msgstr ""
@ -708,6 +705,9 @@ msgstr ""
msgid "All Files (*)"
msgstr ""
msgid "Configure library..."
msgstr ""
msgid "Stop after this track"
msgstr ""

View File

@ -150,9 +150,6 @@ msgstr ""
msgid "Group by"
msgstr ""
msgid "Configure library..."
msgstr "Sett opp bibliotek..."
msgid "Various Artists"
msgstr "Diverse artister"
@ -708,6 +705,9 @@ msgstr ""
msgid "All Files (*)"
msgstr ""
msgid "Configure library..."
msgstr "Sett opp bibliotek..."
msgid "Stop after this track"
msgstr "Stopp etter denne sangen"

View File

@ -150,9 +150,6 @@ msgstr "Afichar"
msgid "Group by"
msgstr ""
msgid "Configure library..."
msgstr ""
msgid "Various Artists"
msgstr "Artistas divèrses"
@ -706,6 +703,9 @@ msgstr ""
msgid "All Files (*)"
msgstr ""
msgid "Configure library..."
msgstr ""
msgid "Stop after this track"
msgstr ""

View File

@ -151,9 +151,6 @@ msgstr ""
msgid "Group by"
msgstr ""
msgid "Configure library..."
msgstr "Konfiguruj bibliotekę..."
msgid "Various Artists"
msgstr "Różni wykonawcy"
@ -708,6 +705,9 @@ msgstr ""
msgid "All Files (*)"
msgstr ""
msgid "Configure library..."
msgstr "Konfiguruj bibliotekę..."
msgid "Stop after this track"
msgstr "Zatrzymaj po tym utworze"

View File

@ -150,9 +150,6 @@ msgstr "Mostrar"
msgid "Group by"
msgstr "Agrupar por"
msgid "Configure library..."
msgstr "Configurar biblioteca..."
msgid "Various Artists"
msgstr "Vários Artistas"
@ -711,6 +708,9 @@ msgstr "Listas (*.m3u *.xspf *.xml)"
msgid "All Files (*)"
msgstr "Todos os Ficheiros (*)"
msgid "Configure library..."
msgstr "Configurar biblioteca..."
msgid "Stop after this track"
msgstr "Parar depois desta faixa"

View File

@ -150,9 +150,6 @@ msgstr "Exibir"
msgid "Group by"
msgstr "Organizar por"
msgid "Configure library..."
msgstr "Configurar biblioteca"
msgid "Various Artists"
msgstr "Vários Artistas"
@ -713,6 +710,9 @@ msgstr "Listas de reprodução (*.m3u *.xspf *.xml)"
msgid "All Files (*)"
msgstr "Todos os Arquivos (*)"
msgid "Configure library..."
msgstr "Configurar biblioteca"
msgid "Stop after this track"
msgstr "Parar depois desta música"

View File

@ -150,9 +150,6 @@ msgstr ""
msgid "Group by"
msgstr ""
msgid "Configure library..."
msgstr "Configurează biblioteca..."
msgid "Various Artists"
msgstr "Diferiți artiști"
@ -707,6 +704,9 @@ msgstr ""
msgid "All Files (*)"
msgstr ""
msgid "Configure library..."
msgstr "Configurează biblioteca..."
msgid "Stop after this track"
msgstr "Oprește după pista aceasta"

View File

@ -149,9 +149,6 @@ msgstr "Показать"
msgid "Group by"
msgstr "Сгруппировать по"
msgid "Configure library..."
msgstr "Настройки коллекции..."
msgid "Various Artists"
msgstr "Различные исполнители"
@ -711,6 +708,9 @@ msgstr "Плейлисты (*.m3u *.xspf *.xml)"
msgid "All Files (*)"
msgstr "Все файлы (*)"
msgid "Configure library..."
msgstr "Настройки коллекции..."
msgid "Stop after this track"
msgstr "Остановить после этой композиции"

View File

@ -151,9 +151,6 @@ msgstr "Zobraziť"
msgid "Group by"
msgstr "Zoskupiť podľa"
msgid "Configure library..."
msgstr "Nastaviť zbierku..."
msgid "Various Artists"
msgstr "Rôzni interpréti"
@ -711,6 +708,9 @@ msgstr "Playlisty (*.m3u *.xspf *.xml)"
msgid "All Files (*)"
msgstr "Všetky súbory (*)"
msgid "Configure library..."
msgstr "Nastaviť zbierku..."
msgid "Stop after this track"
msgstr "Zastaviť po tejto skladbe"

View File

@ -150,9 +150,6 @@ msgstr "Visa"
msgid "Group by"
msgstr "Gruppera efter"
msgid "Configure library..."
msgstr "Ställ in bibliotek..."
msgid "Various Artists"
msgstr "Diverse artister"
@ -709,6 +706,9 @@ msgstr "Spellistor (*.m3u *.xspf *.xml)"
msgid "All Files (*)"
msgstr "Alla filer (*)"
msgid "Configure library..."
msgstr "Ställ in bibliotek..."
msgid "Stop after this track"
msgstr "Stoppa efter nuvarande spår"

View File

@ -150,9 +150,6 @@ msgstr "Göster"
msgid "Group by"
msgstr "Grupla"
msgid "Configure library..."
msgstr ""
msgid "Various Artists"
msgstr ""
@ -706,6 +703,9 @@ msgstr ""
msgid "All Files (*)"
msgstr "Tüm Dosyalar (*)"
msgid "Configure library..."
msgstr ""
msgid "Stop after this track"
msgstr ""

View File

@ -150,9 +150,6 @@ msgstr "显示"
msgid "Group by"
msgstr "分组"
msgid "Configure library..."
msgstr "配置乐库..."
msgid "Various Artists"
msgstr "多位艺人"
@ -706,6 +703,9 @@ msgstr ""
msgid "All Files (*)"
msgstr ""
msgid "Configure library..."
msgstr "配置乐库..."
msgid "Stop after this track"
msgstr ""

View File

@ -150,9 +150,6 @@ msgstr ""
msgid "Group by"
msgstr ""
msgid "Configure library..."
msgstr ""
msgid "Various Artists"
msgstr ""
@ -706,6 +703,9 @@ msgstr ""
msgid "All Files (*)"
msgstr ""
msgid "Configure library..."
msgstr ""
msgid "Stop after this track"
msgstr ""

View File

@ -309,18 +309,18 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
connect(ui_->library_view, SIGNAL(doubleClicked(QModelIndex)), SLOT(LibraryItemDoubleClicked(QModelIndex)));
connect(ui_->library_view, SIGNAL(Load(QModelIndex)), SLOT(LoadLibraryItemToPlaylist(QModelIndex)));
connect(ui_->library_view, SIGNAL(AddToPlaylist(QModelIndex)), SLOT(AddLibraryItemToPlaylist(QModelIndex)));
connect(ui_->library_view, SIGNAL(ShowConfigDialog()), ui_->library_filter, SLOT(ShowConfigDialog()));
connect(ui_->library_view, SIGNAL(ShowConfigDialog()), SLOT(ShowLibraryConfig()));
connect(library_->model(), SIGNAL(TotalSongCountUpdated(int)), ui_->library_view, SLOT(TotalSongCountUpdated(int)));
connect(library_, SIGNAL(ScanStarted()), SLOT(LibraryScanStarted()));
connect(library_, SIGNAL(ScanFinished()), SLOT(LibraryScanFinished()));
// Library filter widget
QAction* library_config_action = new QAction(
IconLoader::Load("configure"), tr("Configure library..."), this);
connect(library_config_action, SIGNAL(triggered()), SLOT(ShowLibraryConfig()));
ui_->library_filter->SetSettingsGroup(kSettingsGroup);
ui_->library_filter->SetLibraryModel(library_->model());
ui_->library_filter->SetSettingsDialog(settings_dialog_.get());
connect(ui_->library_filter, SIGNAL(LibraryConfigChanged()), ui_->library_view,
SLOT(ReloadSettings()));
connect(ui_->library_filter, SIGNAL(LibraryConfigChanged()), SLOT(ReloadSettings()));
ui_->library_filter->AddMenuAction(library_config_action);
// Playlist menu
playlist_play_pause_ = playlist_menu_->addAction(tr("Play"), this, SLOT(PlaylistPlay()));
@ -1147,3 +1147,7 @@ void MainWindow::PlaylistUndoRedoChanged(QAction *undo, QAction *redo) {
playlist_menu_->insertAction(playlist_undoredo_, undo);
playlist_menu_->insertAction(playlist_undoredo_, redo);
}
void MainWindow::ShowLibraryConfig() {
settings_dialog_->OpenAtPage(SettingsDialog::Page_Library);
}

View File

@ -132,6 +132,7 @@ class MainWindow : public QMainWindow {
void LibraryScanStarted();
void LibraryScanFinished();
void ShowLibraryConfig();
void ReloadSettings();
void AddFile();