Skip to content

Commit bff102d

Browse files
committed
powerprofiles: Hide power profiles menu, when API not available
1 parent 694ff05 commit bff102d

File tree

3 files changed

+11
-6
lines changed

3 files changed

+11
-6
lines changed

src/PowerProfiles.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,11 @@ namespace LXQt
6060
: QObject{parent}
6161
, mThread{new QThread}
6262
, mPropGetter{new DBusPropAsyncGetter{msDBusPPService, msDBusPPPath, msDBusPPInterface, QDBusConnection::systemBus()}}
63+
, mMenuAction{new QAction}
6364
, mMenu{new QMenu}
6465

6566
{
67+
mMenuAction->setMenu(mMenu.get());
6668
mMenu->menuAction()->setIcon(QIcon::fromTheme(QStringLiteral("preferences-system-performance")));
6769
mMenu->setTitle(tr("Power profile"));
6870

@@ -99,9 +101,9 @@ namespace LXQt
99101
mThread->wait();
100102
}
101103

102-
QMenu * PowerProfiles::menu()
104+
QAction * PowerProfiles::menuAction()
103105
{
104-
return mMenu.get();
106+
return mMenuAction.get();
105107
}
106108

107109
void PowerProfiles::onFetched(const QString name, const QVariant value)
@@ -125,12 +127,13 @@ namespace LXQt
125127
if (profiles.empty())
126128
{
127129
mActions.reset(nullptr);
128-
mMenu->addAction(tr("power-profiles-daemon not available"))->setDisabled(true);
130+
mMenuAction->setVisible(false);
129131
return;
130132
}
131133

134+
mMenuAction->setVisible(true);
132135
mActions.reset(new QActionGroup(nullptr));
133-
mActions->setExclusionPolicy(QActionGroup::ExclusionPolicy::ExclusiveOptional);
136+
mActions->setExclusionPolicy(QActionGroup::ExclusionPolicy::Exclusive);
134137

135138
connect(mActions.get(), &QActionGroup::triggered, this, [this] (const QAction * a) {
136139
setActiveProfile(get<QString>(a->data()));

src/PowerProfiles.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
#include <QObject>
3131
#include "dbus_types.h"
3232

33+
class QAction;
3334
class QMenu;
3435
class QActionGroup;
3536

@@ -57,7 +58,7 @@ namespace LXQt
5758
bool isValid() const;
5859
const QString & activeProfile() const;
5960
void setActiveProfile(const QString & value);
60-
QMenu * menu();
61+
QAction * menuAction();
6162

6263
Q_SIGNALS:
6364
void needPropertyFetch(const QString & name);
@@ -83,6 +84,7 @@ namespace LXQt
8384
std::unique_ptr<QThread> mThread;
8485
std::unique_ptr<DBusPropAsyncGetter> mPropGetter;
8586

87+
std::unique_ptr<QAction> mMenuAction;
8688
std::unique_ptr<QMenu> mMenu;
8789
std::unique_ptr<QActionGroup> mActions;
8890
QString mActiveProfile;

src/trayicon.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ TrayIcon::TrayIcon(Solid::Battery *battery, QObject *parent)
100100
pauseMenu->addActions(mPauseActions->actions());
101101

102102
// power-profiles actions
103-
mContextMenu.addMenu(LXQt::PowerProfiles::instance().menu());
103+
mContextMenu.addAction(LXQt::PowerProfiles::instance().menuAction());
104104

105105
mContextMenu.addSeparator();
106106

0 commit comments

Comments
 (0)