diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2021-01-16 19:03:33 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2021-01-16 19:03:33 +0000 |
| commit | 7d9b7792aeb3db45e235f923061254de96d37e04 (patch) | |
| tree | 745157293cdfb97f2de6892be4f2bdd95ac7e025 /src/plugins | |
| parent | 4762863d93e56b9d4766e65a0247c8811b4c6756 (diff) | |
| download | qmmp-7d9b7792aeb3db45e235f923061254de96d37e04.tar.gz qmmp-7d9b7792aeb3db45e235f923061254de96d37e04.tar.bz2 qmmp-7d9b7792aeb3db45e235f923061254de96d37e04.zip | |
library: added window mode (#147)
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@9646 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins')
| -rw-r--r-- | src/plugins/General/library/library.cpp | 26 | ||||
| -rw-r--r-- | src/plugins/General/library/library.h | 4 | ||||
| -rw-r--r-- | src/plugins/General/library/libraryfactory.cpp | 21 | ||||
| -rw-r--r-- | src/plugins/General/library/librarywidget.cpp | 13 | ||||
| -rw-r--r-- | src/plugins/General/library/librarywidget.h | 4 | ||||
| -rw-r--r-- | src/plugins/General/library/librarywidget.ui | 23 |
6 files changed, 77 insertions, 14 deletions
diff --git a/src/plugins/General/library/library.cpp b/src/plugins/General/library/library.cpp index adcf2eb7a..fe3da9bd4 100644 --- a/src/plugins/General/library/library.cpp +++ b/src/plugins/General/library/library.cpp @@ -63,9 +63,15 @@ Library::Library(QPointer<LibraryWidget> *libraryWidget, QObject *parent) : QSettings settings(Qmmp::configFile(), QSettings::IniFormat); m_dirs = settings.value("Library/dirs").toStringList(); - QAction *action = new QAction(QIcon::fromTheme("view-refresh"), tr("Update library"), this); - UiHelper::instance()->addAction(action, UiHelper::TOOLS_MENU); - connect(action, SIGNAL(triggered()), SLOT(startDirectoryScanning())); + m_showAction = new QAction(QIcon::fromTheme("text-x-generic"), tr("Library"), this); + UiHelper::instance()->addAction(m_showAction, UiHelper::TOOLS_MENU); + connect(m_showAction, SIGNAL(triggered()), SLOT(showLibraryWindow())); + if(!m_libraryWidget->isNull() && !m_libraryWidget->data()->isWindow()) + m_showAction->setVisible(false); + + QAction *refreshAction = new QAction(QIcon::fromTheme("view-refresh"), tr("Update library"), this); + UiHelper::instance()->addAction(refreshAction, UiHelper::TOOLS_MENU); + connect(refreshAction, SIGNAL(triggered()), SLOT(startDirectoryScanning())); connect(&m_watcher, &QFutureWatcher<bool>::finished, [=] { if(!m_libraryWidget->isNull()) @@ -96,12 +102,18 @@ bool Library::isRunning() const return m_future.isRunning(); } +QAction *Library::showAction() const +{ + return m_showAction; +} + void Library::showLibraryWindow() { - /*if(!m_historyWindow) - m_historyWindow = new HistoryWindow(QSqlDatabase::database(CONNECTION_NAME), qApp->activeWindow()); - m_historyWindow->show(); - m_historyWindow->activateWindow();*/ + if(m_libraryWidget->isNull()) + *m_libraryWidget = new LibraryWidget(true, qApp->activeWindow()); + + if(m_libraryWidget->data()->isWindow()) + m_libraryWidget->data()->show(); } void Library::startDirectoryScanning() diff --git a/src/plugins/General/library/library.h b/src/plugins/General/library/library.h index fec9508a5..053571a5c 100644 --- a/src/plugins/General/library/library.h +++ b/src/plugins/General/library/library.h @@ -31,6 +31,7 @@ #include <qmmp/qmmp.h> class QFileInfo; +class QAction; class SoundCore; class PlayListTrack; class LibraryWidget; @@ -44,6 +45,8 @@ public: bool isRunning() const; + QAction *showAction() const; + private slots: void showLibraryWindow(); @@ -65,6 +68,7 @@ private: bool m_stopped = false; QPointer<LibraryWidget> *m_libraryWidget; QFutureWatcher<bool> m_watcher; + QAction *m_showAction; }; diff --git a/src/plugins/General/library/libraryfactory.cpp b/src/plugins/General/library/libraryfactory.cpp index b19b5a709..e23063033 100644 --- a/src/plugins/General/library/libraryfactory.cpp +++ b/src/plugins/General/library/libraryfactory.cpp @@ -19,6 +19,7 @@ ***************************************************************************/ #include <QMessageBox> +#include <QAction> #include <QtPlugin> #include <qmmp/qmmp.h> #include "library.h" @@ -49,9 +50,25 @@ QWidget *LibraryFactory::createWidget(int id, QWidget *parent) { if(id == LIBRARY_WIDGET) { + if(!m_libraryWidget.isNull() && m_libraryWidget->isWindow()) + { + m_libraryWidget->close(); + delete m_libraryWidget; + } + m_libraryWidget = new LibraryWidget(false, parent); - if(!m_library.isNull() && m_library->isRunning()) - m_libraryWidget->setEnabled(false); + if(!m_library.isNull()) + { + if(m_library->isRunning()) + m_libraryWidget->setEnabled(false); + + m_library->showAction()->setVisible(false); + } + connect(m_libraryWidget, &QObject::destroyed, [=]() { + if(!m_library.isNull()) + m_library->showAction()->setVisible(true); + }); + return m_libraryWidget; } return nullptr; diff --git a/src/plugins/General/library/librarywidget.cpp b/src/plugins/General/library/librarywidget.cpp index 27cc266db..d31ac585a 100644 --- a/src/plugins/General/library/librarywidget.cpp +++ b/src/plugins/General/library/librarywidget.cpp @@ -56,12 +56,14 @@ LibraryWidget::LibraryWidget(bool dialog, QWidget *parent) : QSettings settings(Qmmp::configFile(), QSettings::IniFormat); m_filterAction->setChecked(settings.value("Library/quick_search_visible", true).toBool()); m_ui->filterLineEdit->setVisible(m_filterAction->isChecked()); + if(dialog) + restoreGeometry(settings.value("Library/geometry").toByteArray()); } LibraryWidget::~LibraryWidget() { QSettings settings(Qmmp::configFile(), QSettings::IniFormat); - settings.value("Library/quick_search_visible", m_filterAction->isChecked()); + settings.setValue("Library/quick_search_visible", m_filterAction->isChecked()); delete m_ui; } @@ -72,6 +74,15 @@ void LibraryWidget::refresh() m_model->refresh(); } +void LibraryWidget::closeEvent(QCloseEvent *) +{ + if(isWindow()) + { + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.setValue("Library/geometry", saveGeometry()); + } +} + void LibraryWidget::contextMenuEvent(QContextMenuEvent *e) { m_menu->exec(mapToGlobal(e->pos())); diff --git a/src/plugins/General/library/librarywidget.h b/src/plugins/General/library/librarywidget.h index 39b6e7022..31f7b9c1d 100644 --- a/src/plugins/General/library/librarywidget.h +++ b/src/plugins/General/library/librarywidget.h @@ -31,6 +31,7 @@ class QMenu; class QAction; class LibraryModel; class QContextMenuEvent; +class QCloseEvent; class LibraryWidget : public QWidget { @@ -41,7 +42,8 @@ public: void refresh(); private: - void contextMenuEvent(QContextMenuEvent *e); + void closeEvent(QCloseEvent *) override; + void contextMenuEvent(QContextMenuEvent *e) override; private slots: void on_filterLineEdit_textChanged(const QString &text); diff --git a/src/plugins/General/library/librarywidget.ui b/src/plugins/General/library/librarywidget.ui index 31caf95e6..8c0e104c8 100644 --- a/src/plugins/General/library/librarywidget.ui +++ b/src/plugins/General/library/librarywidget.ui @@ -11,7 +11,7 @@ </rect> </property> <property name="windowTitle"> - <string>Form</string> + <string>Media Library</string> </property> <layout class="QVBoxLayout" name="verticalLayout"> <property name="leftMargin"> @@ -49,12 +49,29 @@ <item> <widget class="QDialogButtonBox" name="buttonBox"> <property name="standardButtons"> - <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + <set>QDialogButtonBox::Close</set> </property> </widget> </item> </layout> </widget> <resources/> - <connections/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>LibraryWidget</receiver> + <slot>close()</slot> + <hints> + <hint type="sourcelabel"> + <x>360</x> + <y>368</y> + </hint> + <hint type="destinationlabel"> + <x>423</x> + <y>392</y> + </hint> + </hints> + </connection> + </connections> </ui> |
