-
Notifications
You must be signed in to change notification settings - Fork 4
/
mainui.cpp
118 lines (95 loc) · 3.37 KB
/
mainui.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
// SPDX-License-Identifier: MIT
// SPDX-FileCopyrightText: 2022-2024 XMuli
// SPDX-GitHub: https://github.com/XMuli/windows-defender-close
// SPDX-Author: XMuli <xmulitech@gmail.com>
#include "mainui.h"
#include "./ui_mainui.h"
#include "dwctrl.h"
#include <QButtonGroup>
#include <QMetaEnum>
#include <QRadioButton>
#include <QTranslator>
MainUI::MainUI(QWidget *parent)
: QWidget(parent)
, ui(new Ui::MainUI)
, m_DWCtrl(new DWCtrl)
{
ui->setupUi(this);
// loadTranslation();
const auto& title = QString("%1 %2 [%3]").arg(MY_PROJECT_NAME).arg(_PROJECT_VERSION).arg(tr("Free"));
setWindowTitle(title); // AV Streaking
resize(1000, 500);
initUI();
}
MainUI::~MainUI()
{
delete ui;
}
void MainUI::loadTranslation(QString language)
{
// 创建 QTranslator 对象
static QTranslator* translator = nullptr;
if (!translator) translator = new QTranslator(this);
// 构建翻译文件的路径
QString qmFile = QString("%1.qm").arg(language);
const QString& qmDir = qGuiApp->applicationDirPath() + "/translations/";
auto t1 = qmDir + qmFile;
// 加载翻译文件
if (translator->load(qmDir + qmFile)) {
qApp->installTranslator(translator);
ui->retranslateUi(this);
const auto& title = QString("%1 %2 [%3]").arg(MY_PROJECT_NAME).arg(_PROJECT_VERSION).arg(tr("Free"));
setWindowTitle(title); // AV Streaking
}
}
void MainUI::initUI()
{
ui->cbbLanguage->hide(); // 后续写
auto group = new QButtonGroup(this);
group->addButton(ui->rbDisabled);
group->addButton(ui->rbEnabled);
group->addButton(ui->rbRemove);
group->addButton(ui->rbDefault);
group->setExclusive(true);
void (QButtonGroup::* sigFun)(QAbstractButton*) = &QButtonGroup::buttonClicked;
connect(group, sigFun, this, &MainUI::onRbClicked);
}
void MainUI::onRbClicked(QAbstractButton *bt)
{
auto rb = qobject_cast<QRadioButton *>(bt);
if (!rb)
return;
ui->textEdit->append(rb->text() + tr(" RadioButton is clicked."));
}
void MainUI::on_btActivate_released()
{
auto group = findChild<QButtonGroup*>();
if (!group)
return;
const auto& pbtn = qobject_cast<QRadioButton *>(group->checkedButton());
if (!pbtn)
return;
WDValues val = WDValues::WD_Disabled;
if (pbtn->objectName().compare("rbEnabled") == 0)
val = WDValues::WD_Enabled;
else if (pbtn->objectName().compare("rbDisabled") == 0)
val = WDValues::WD_Disabled;
else if (pbtn->objectName().compare("rbRemove") == 0)
val = WDValues::WD_Remove;
else if (pbtn->objectName().compare("rbDefault") == 0)
val = WDValues::WD_Default;
bool ok = m_DWCtrl->setWindowsDefender(val);
QMetaEnum metaEnum = QMetaEnum::fromType<MainUI::WDValues>();
QString msg = QString("setWindowsDefender: %1 is %2.").arg(metaEnum.valueToKey(val)).arg(QVariant(ok).toString());
ui->textEdit->append(msg);
if (!ok)
ui->textEdit->append("Please try running with administrator.\n");
}
void MainUI::on_cbbLanguage_currentTextChanged(const QString &arg1)
{
QString language = "en_us";
if (arg1 == "简体中文") language = "zh_cn";
else if (arg1 == "繁体中文") language = "zh_tw";
else language = "en_us";
loadTranslation(language);
}