@@ -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 ();
0 commit comments