aboutsummaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2021-01-16 19:03:33 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2021-01-16 19:03:33 +0000
commit7d9b7792aeb3db45e235f923061254de96d37e04 (patch)
tree745157293cdfb97f2de6892be4f2bdd95ac7e025 /src/plugins
parent4762863d93e56b9d4766e65a0247c8811b4c6756 (diff)
downloadqmmp-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.cpp26
-rw-r--r--src/plugins/General/library/library.h4
-rw-r--r--src/plugins/General/library/libraryfactory.cpp21
-rw-r--r--src/plugins/General/library/librarywidget.cpp13
-rw-r--r--src/plugins/General/library/librarywidget.h4
-rw-r--r--src/plugins/General/library/librarywidget.ui23
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>