Skip to content

Commit a2465f6

Browse files
committed
Plugins: fix "Always shown" checkbox popup not being respected #54
1 parent 38075fa commit a2465f6

40 files changed

+9683
-8401
lines changed

Plugins/WakeOnLan/OperateWakeOnLan.cpp

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -163,37 +163,6 @@ const QString COperateWakeOnLan::Name()
163163

164164
int COperateWakeOnLan::Start()
165165
{
166-
#if defined(Q_OS_UNIX)
167-
if(!RabbitCommon::CTools::HasAdministratorPrivilege()
168-
&& m_pParameterPlugin->GetPromptAdministratorPrivilege())
169-
{
170-
static bool bShow = false;
171-
if(!bShow) {
172-
bShow = true;
173-
int nRet = 0;
174-
QMessageBox msg(
175-
QMessageBox::Warning, tr("Warning"),
176-
tr("There are no administrator privileges, "
177-
"and some functions(Get mac address) are restricted. "
178-
"Please restart the program with administrative privileges."),
179-
QMessageBox::Yes | QMessageBox::No);
180-
msg.setCheckBox(new QCheckBox(tr("Always shown"), &msg));
181-
msg.checkBox()->setChecked(
182-
m_pParameterPlugin->GetPromptAdministratorPrivilege());
183-
nRet = msg.exec();
184-
if(QMessageBox::Yes == nRet) {
185-
RabbitCommon::CTools::Instance()->StartWithAdministratorPrivilege(true);
186-
}
187-
if(m_pParameterPlugin->GetPromptAdministratorPrivilege()
188-
!= msg.checkBox()->isChecked()) {
189-
m_pParameterPlugin->SetPromptAdministratorPrivilege(
190-
msg.checkBox()->isChecked());
191-
// TODO: save settings
192-
//SaveSettings();
193-
}
194-
}
195-
}
196-
#endif
197166
emit sigRunning();
198167
return 0;
199168
}

Src/Manager.cpp

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,53 @@ CManager::CManager(QObject *parent, QString szFile) : QObject(parent)
4848
m_pParameter = new CParameterPlugin();
4949
if(m_pParameter) {
5050
LoadSettings(m_szSettingsFile);
51+
52+
bool bReboot = true;
53+
QString szSnap;
54+
QString szFlatpak;
55+
#if QT_VERSION > QT_VERSION_CHECK(6, 0, 0) && defined(Q_OS_WIN)
56+
szSnap = qEnvironmentVariable("SNAP");
57+
szFlatpak = qEnvironmentVariable("FLATPAK_ID");
58+
#else
59+
szSnap = QString::fromLocal8Bit(qgetenv("SNAP"));
60+
szFlatpak = QString::fromLocal8Bit(qgetenv("FLATPAK_ID"));
61+
#endif
62+
if(!szSnap.isEmpty() || !szFlatpak.isEmpty())
63+
bReboot = false;
64+
if(bReboot && !RabbitCommon::CTools::Instance()->HasAdministratorPrivilege()
65+
&& m_pParameter->GetPromptAdministratorPrivilege())
66+
{
67+
int nRet = 0;
68+
QString szMsg;
69+
szMsg = tr("The programe is not administrator privilege.\n"
70+
"Some features are limited.\n");
71+
#if defined(Q_OS_WIN)
72+
szMsg += tr("Eg: Can not disable system shortcuts(eg: Ctrl+Alt+del).") + "\n";
73+
#else
74+
szMsg += tr("Eg: Can not use the wake on LAN feature.") + "\n";
75+
#endif
76+
szMsg += tr("Restart program by administrator?");
77+
QMessageBox msg(QMessageBox::Warning, tr("Warning"), szMsg,
78+
QMessageBox::Yes | QMessageBox::No);
79+
msg.setCheckBox(new QCheckBox(tr("Always shown"), &msg));
80+
msg.checkBox()->setCheckable(true);
81+
msg.checkBox()->setChecked(
82+
m_pParameter->GetPromptAdministratorPrivilege());
83+
nRet = msg.exec();
84+
85+
m_pParameter->SetPromptAdministratorPrivilege(
86+
msg.checkBox()->isChecked());
87+
SaveSettings(m_szSettingsFile);
88+
89+
if(QMessageBox::Yes == nRet) {
90+
RabbitCommon::CTools::Instance()->StartWithAdministratorPrivilege(true);
91+
return;
92+
}
93+
}
94+
5195
check = connect(m_pParameter, SIGNAL(sigNativeWindowRecieveKeyboard()),
5296
this, SLOT(slotNativeWindowRecieveKeyboard()));
97+
Q_ASSERT(check);
5398
m_pHook = CHook::GetHook(m_pParameter, this);
5499
if(m_pHook)
55100
m_pHook->RegisterKeyboard();

Src/ParameterCompone/ParameterPlugin.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
// Author: Kang Lin <kl222@126.com>
2+
3+
#include "RabbitCommonTools.h"
24
#include "ParameterPlugin.h"
35

46
CParameterPlugin::CParameterPlugin(QObject *parent)
57
: CParameter(parent)
68
, m_bNativeWindowReceiveKeyboard(false)
79
, m_bEnableLocalInputMethod(false)
8-
, m_bPromptAdministratorPrivilege(true)
10+
, m_bPromptAdministratorPrivilege(!RabbitCommon::CTools::Instance()->HasAdministratorPrivilege())
911
, m_bEnableSystemUserToUser(true)
1012
, m_bSavePassword(false)
1113
, m_PromptType(PromptType::First)

0 commit comments

Comments
 (0)