Sandboxie/SandboxiePlus/SandMan/Windows/SettingsWindow.h

191 lines
4.6 KiB
C
Raw Normal View History

2021-10-16 16:19:51 +01:00
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_SettingsWindow.h"
#include <QProxyStyle>
2022-08-15 12:18:26 +01:00
#include "../../MiscHelpers/Common/SettingsWidgets.h"
2021-10-16 16:19:51 +01:00
class CustomTabStyle : public QProxyStyle {
public:
CustomTabStyle(QStyle* style = 0) : QProxyStyle(style) {}
QSize sizeFromContents(ContentsType type, const QStyleOption* option, const QSize& size, const QWidget* widget) const;
void drawControl(ControlElement element, const QStyleOption* option, QPainter* painter, const QWidget* widget) const;
};
2022-08-10 19:14:37 +01:00
void FixTriStateBoxPallete(QWidget* pWidget);
2022-07-01 07:37:29 +01:00
class CSecretCheckBox : public QCheckBox
{
Q_OBJECT
public:
CSecretCheckBox(const QString& Text) : QCheckBox(Text)
{
setTristate(false);
m_SecretMode = false;
}
bool IsSecretSet() const { return m_SecretMode && this->checkState() == Qt::PartiallyChecked; }
protected:
void mouseDoubleClickEvent(QMouseEvent* e)
{
if (QApplication::keyboardModifiers() & Qt::ControlModifier) {
setTristate();
m_SecretMode = true;
}
}
bool m_SecretMode;
};
2021-10-16 16:19:51 +01:00
2022-09-29 17:28:48 +01:00
void AddIconToLabel(QLabel* pLabel, const QPixmap& Pixmap);
2022-08-15 12:18:26 +01:00
//////////////////////////////////////////////////////////////////////////
// CSettingsWindow
class CSettingsWindow : public CConfigDialog
2021-10-16 16:19:51 +01:00
{
Q_OBJECT
public:
CSettingsWindow(QWidget *parent = Q_NULLPTR);
~CSettingsWindow();
virtual void accept() {}
virtual void reject();
2022-05-15 14:02:58 +01:00
static bool ApplyCertificate(const QByteArray &Certificate, QWidget* widget);
2022-07-09 10:46:07 +01:00
static void LoadCertificate(QString CertPath = QString());
enum ETabs {
eOptions = 0,
eShell,
eGuiConfig,
eAdvanced,
eProgCtrl,
eConfigLock,
eSoftCompat,
eEditIni,
eSupport
};
2021-10-16 16:19:51 +01:00
signals:
2022-07-09 10:46:07 +01:00
void OptionsChanged(bool bRebuildUI = false);
2021-10-16 16:19:51 +01:00
void Closed();
public slots:
void ok();
void apply();
2022-07-10 17:28:10 +01:00
void showTab(int Tab, bool bExclusive = false);
2021-10-16 16:19:51 +01:00
private slots:
void OnChange();
void OnTab();
2022-11-29 17:26:51 +00:00
void OnBrowsePath();
void OnAddCommand();
void OnDelCommand();
2022-07-09 10:46:07 +01:00
void OnChangeGUI() { m_bRebuildUI = true; }
2021-10-16 16:19:51 +01:00
void OnFeaturesChanged() { m_FeaturesChanged = true; }
void OnBrowse();
void OnSetPassword();
void OnWarnChanged() { m_WarnProgsChanged = true; }
void OnAddWarnProg();
void OnAddWarnFolder();
void OnDelWarnProg();
void OnTemplateClicked(QTreeWidgetItem* pItem, int Column);
2022-05-29 07:07:17 +01:00
void OnTemplateDoubleClicked(QTreeWidgetItem* pItem, int Column);
2021-10-16 16:19:51 +01:00
void OnAddCompat();
void OnDelCompat();
2022-01-13 22:52:58 +00:00
void SetIniEdit(bool bEnable);
void OnEditIni();
void OnSaveIni();
void OnCancelEdit();
2021-10-16 16:19:51 +01:00
void CertChanged();
2022-01-13 22:52:58 +00:00
void UpdateCert();
2022-11-20 16:23:15 +00:00
void UpdateUpdater();
2021-10-16 16:19:51 +01:00
2022-08-11 23:09:35 +01:00
void GetUpdates();
void OnUpdateData(const QVariantMap& Data, const QVariantMap& Params);
void OnUpdate(const QString& Channel);
2022-08-15 12:18:26 +01:00
void OnSetTree();
2021-10-16 16:19:51 +01:00
protected:
void closeEvent(QCloseEvent *e);
2022-08-15 12:18:26 +01:00
bool eventFilter(QObject *watched, QEvent *e);
2022-09-29 17:28:48 +01:00
void OnTab(QWidget* pTab);
2022-08-15 12:18:26 +01:00
2022-11-29 17:26:51 +00:00
void AddRunItem(const QString& Name, const QString& Command);
2021-10-16 16:19:51 +01:00
void AddWarnEntry(const QString& Name, int type);
void LoadSettings();
void SaveSettings();
2022-01-13 22:52:58 +00:00
void LoadIniSection();
void SaveIniSection();
2022-07-09 10:46:07 +01:00
bool m_bRebuildUI;
2021-10-16 16:19:51 +01:00
int m_CompatLoaded;
QString m_NewPassword;
bool m_WarnProgsChanged;
bool m_CompatChanged;
bool m_FeaturesChanged;
bool m_CertChanged;
2022-08-11 23:09:35 +01:00
QVariantMap m_UpdateData;
2022-07-24 14:30:54 +01:00
2021-10-16 16:19:51 +01:00
private:
2022-07-24 14:30:54 +01:00
void WriteAdvancedCheck(QCheckBox* pCheck, const QString& Name, const QString& OnValue, const QString& OffValue);
void WriteText(const QString& Name, const QString& Value);
void WriteTextList(const QString& Setting, const QStringList& List);
2021-10-16 16:19:51 +01:00
Ui::SettingsWindow ui;
};
2022-07-01 07:19:30 +01:00
void CSettingsWindow__AddContextMenu(bool bAlwaysClassic = false);
2022-05-15 12:26:22 +01:00
void CSettingsWindow__RemoveContextMenu();
void CSettingsWindow__AddBrowserIcon();
2022-02-04 21:08:25 +00:00
2021-10-16 16:19:51 +01:00
void WindowsMoveFile(const QString& from, const QString& to);
2022-01-13 22:52:58 +00:00
extern quint32 g_FeatureFlags;
2021-10-16 16:19:51 +01:00
extern QByteArray g_Certificate;
2022-01-13 22:52:58 +00:00
union SCertInfo {
quint64 State;
struct {
quint32
2023-01-23 21:48:51 +00:00
valid : 1, // certificate is active
expired : 1, // certificate is expired but may be active
outdated : 1, // certificate is expired, not anymore valid for the current build
business : 1, // certificate is suitable for business use
evaluation: 1, // evaluation certificate
grace_period: 1, // the certificate is expired and or outdated but we keep it valid for 1 extra month to allof wor a seamless renewal
reservd_1 : 2,
2022-01-13 22:52:58 +00:00
reservd_2 : 8,
reservd_3 : 8,
reservd_4 : 8;
2022-08-09 17:19:46 +01:00
qint32
2022-01-13 22:52:58 +00:00
expirers_in_sec : 30,
2022-12-07 16:32:40 +00:00
unused_1 : 1, // skim a couple high bits to use as flags flag, 0x3fffffff -> is 34 years count down is enough
2022-01-13 22:52:58 +00:00
about_to_expire : 1;
};
};
2022-12-07 16:32:40 +00:00
extern SCertInfo g_CertInfo;