aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2019-04-18 09:34:27 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2019-04-18 09:34:27 +0000
commit67d105bf5e0d6e05f9f606b27df2145727c9c4e6 (patch)
tree0a7b5d09c88d3f2e38bfdaa78ce6ccba1d6c8753 /src/qmmpui
parent0140e8d79c40c90a49b6be41ce6466eb23cc126e (diff)
downloadqmmp-67d105bf5e0d6e05f9f606b27df2145727c9c4e6.tar.gz
qmmp-67d105bf5e0d6e05f9f606b27df2145727c9c4e6.tar.bz2
qmmp-67d105bf5e0d6e05f9f606b27df2145727c9c4e6.zip
auto-hide empty service menus
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@8783 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui')
-rw-r--r--src/qmmpui/uihelper.cpp25
-rw-r--r--src/qmmpui/uihelper.h7
2 files changed, 21 insertions, 11 deletions
diff --git a/src/qmmpui/uihelper.cpp b/src/qmmpui/uihelper.cpp
index a6029621e..5ae9e9184 100644
--- a/src/qmmpui/uihelper.cpp
+++ b/src/qmmpui/uihelper.cpp
@@ -45,7 +45,6 @@ UiHelper::UiHelper(QObject *parent)
{
m_instance = this;
m_jumpDialog = nullptr;
- m_model = nullptr;
General::create(parent);
QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
m_lastDir = settings.value("General/last_dir", QDir::homePath()).toString(); //last directory
@@ -59,7 +58,7 @@ UiHelper::~UiHelper()
bool UiHelper::visibilityControl()
{
- foreach(GeneralFactory *factory, General::enabledFactories())
+ for(const GeneralFactory *factory : General::enabledFactories())
{
if (factory->properties().visibilityControl)
return true;
@@ -79,16 +78,20 @@ void UiHelper::addAction(QAction *action, MenuType type)
m_menus[type].menu->insertAction(m_menus[type].before, action);
else
m_menus[type].menu->addAction(action);
+ m_menus[type].menu->menuAction()->setVisible(!m_menus[type].autoHide || !m_menus[type].actions.isEmpty());
}
}
void UiHelper::removeAction(QAction *action)
{
- foreach(MenuType type, m_menus.keys())
+ for(MenuType type : m_menus.keys())
{
m_menus[type].actions.removeAll(action);
if(m_menus[type].menu)
+ {
m_menus[type].menu->removeAction(action);
+ m_menus[type].menu->menuAction()->setVisible(!m_menus[type].autoHide || !m_menus[type].actions.isEmpty());
+ }
}
}
@@ -97,26 +100,32 @@ QList<QAction *> UiHelper::actions(MenuType type)
return m_menus[type].actions;
}
-QMenu *UiHelper::createMenu(MenuType type, const QString &title, QWidget *parent)
+QMenu *UiHelper::createMenu(MenuType type, const QString &title, bool autoHide, QWidget *parent)
{
if(m_menus[type].menu)
{
m_menus[type].menu->setTitle(title);
- return m_menus[type].menu;
}
- m_menus[type].menu = new QMenu(title, parent);
- m_menus[type].menu->addActions(m_menus[type].actions);
+ else
+ {
+ m_menus[type].menu = new QMenu(title, parent);
+ m_menus[type].menu->addActions(m_menus[type].actions);
+ }
+ m_menus[type].autoHide = autoHide;
+ m_menus[type].menu->menuAction()->setVisible(!autoHide || !m_menus[type].actions.isEmpty());
return m_menus[type].menu;
}
-void UiHelper::registerMenu(UiHelper::MenuType type, QMenu *menu, QAction *before)
+void UiHelper::registerMenu(UiHelper::MenuType type, QMenu *menu, bool autoHide, QAction *before)
{
m_menus[type].menu = menu;
m_menus[type].before = before;
+ m_menus[type].autoHide = autoHide;
if(before)
m_menus[type].menu->insertActions(before, m_menus[type].actions);
else
m_menus[type].menu->addActions(m_menus[type].actions);
+ m_menus[type].menu->menuAction()->setVisible(!autoHide || !m_menus[type].actions.isEmpty());
}
void UiHelper::addFiles(QWidget *parent, PlayListModel *model)
diff --git a/src/qmmpui/uihelper.h b/src/qmmpui/uihelper.h
index ff8521271..2367b62f4 100644
--- a/src/qmmpui/uihelper.h
+++ b/src/qmmpui/uihelper.h
@@ -88,14 +88,14 @@ public:
* @param title Menu title.
* @param parent Parent widget
*/
- QMenu *createMenu(MenuType type, const QString &title = QString(), QWidget *parent = nullptr);
+ QMenu *createMenu(MenuType type, const QString &title = QString(), bool autoHide = true, QWidget *parent = nullptr);
/*!
* Registers existing menu for access from general plugins.
* @param type Menu type.
* @param menu Menu pointer.
* @param before An action, after which the rest are added.
*/
- void registerMenu(MenuType type, QMenu *menu, QAction *before = nullptr);
+ void registerMenu(MenuType type, QMenu *menu, bool autoHide = false, QAction *before = nullptr);
/*!
* Opens 'Add Files' dialog
* @param parent Parent widget
@@ -194,11 +194,12 @@ private:
QPointer<QMenu> menu;
QPointer<QAction> before;
QList<QAction*> actions;
+ bool autoHide = false;
};
QMap<MenuType, MenuData> m_menus;
QString m_lastDir;
QPointer <JumpToTrackDialog> m_jumpDialog;
- PlayListModel *m_model;
+ PlayListModel *m_model = nullptr;
static UiHelper* m_instance;
};