Skip to content

Commit 37e82e1

Browse files
committed
feat(ui): enhance wizard dialog with new info cards
* Added new information cards to the wizard dialog for better user guidance. * Updated layout and spacing for improved visual consistency. * Adjusted resizing of the wizard window to accommodate new content.
1 parent c42ed7f commit 37e82e1

1 file changed

Lines changed: 55 additions & 37 deletions

File tree

src/ui/dialog/Wizard.cpp

Lines changed: 55 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ auto CreateLinkCard(const QString& title, const QString& description,
6060
auto* frame = new QFrame;
6161
frame->setObjectName(QStringLiteral("WizardLinkCard"));
6262
frame->setFrameShape(QFrame::StyledPanel);
63+
frame->setCursor(Qt::PointingHandCursor);
6364

6465
auto* title_label = CreateBodyLabel(
6566
QStringLiteral("<a href=\"%1\"><b>%2</b></a>").arg(url, title));
@@ -75,11 +76,23 @@ auto CreateLinkCard(const QString& title, const QString& description,
7576
return frame;
7677
}
7778

78-
auto CreateSectionTitle(const QString& text) -> QLabel* {
79-
auto* label = new QLabel(QStringLiteral("<b>%1</b>").arg(text));
80-
label->setTextFormat(Qt::RichText);
81-
label->setWordWrap(true);
82-
return label;
79+
auto CreateInfoCard(const QString& title, const QString& description)
80+
-> QFrame* {
81+
auto* frame = new QFrame;
82+
frame->setObjectName(QStringLiteral("WizardInfoCard"));
83+
frame->setFrameShape(QFrame::StyledPanel);
84+
85+
auto* title_label = CreateBodyLabel(QStringLiteral("<b>%1</b>").arg(title));
86+
87+
auto* desc_label = CreateMutedLabel(description);
88+
89+
auto* layout = new QVBoxLayout(frame);
90+
layout->setContentsMargins(14, 10, 14, 10);
91+
layout->setSpacing(4);
92+
layout->addWidget(title_label);
93+
layout->addWidget(desc_label);
94+
95+
return frame;
8396
}
8497

8598
} // namespace
@@ -97,7 +110,7 @@ Wizard::Wizard(QWidget* parent) : QWizard(parent) {
97110
setOption(QWizard::NoBackButtonOnStartPage);
98111
setOption(QWizard::HaveHelpButton, false);
99112

100-
resize(680, 460);
113+
resize(680, 500);
101114

102115
const auto logo =
103116
QPixmap(QStringLiteral(":/icons/gpgfrontend_logo.png"))
@@ -148,13 +161,21 @@ IntroPage::IntroPage(QWidget* parent) : QWizardPage(parent) {
148161
tr("Get a quick tour of the main features and common workflows."),
149162
QStringLiteral("https://gpgfrontend.bktus.com/overview/glance"));
150163

164+
auto* concepts_card = CreateLinkCard(
165+
tr("Fundamental concepts"),
166+
tr("Understand public keys, private keys, encryption, signing, and "
167+
"trust."),
168+
QStringLiteral(
169+
"https://gpgfrontend.bktus.com/guides/fundamental-concepts/"));
170+
151171
auto* layout = new QVBoxLayout;
152172
layout->setContentsMargins(8, 8, 8, 8);
153173
layout->setSpacing(14);
154174
layout->addWidget(intro_label);
155175
layout->addWidget(privacy_label);
156176
layout->addSpacing(8);
157177
layout->addWidget(overview_card);
178+
layout->addWidget(concepts_card);
158179
layout->addStretch();
159180

160181
setLayout(layout);
@@ -168,14 +189,12 @@ ChoosePage::ChoosePage(QWidget* parent) : QWizardPage(parent) {
168189

169190
auto* layout = new QVBoxLayout;
170191
layout->setContentsMargins(8, 8, 8, 8);
171-
layout->setSpacing(12);
192+
layout->setSpacing(10);
172193

173194
layout->addWidget(CreateLinkCard(
174-
tr("Fundamental concepts"),
175-
tr("Understand public keys, private keys, encryption, signing, and "
176-
"trust."),
177-
QStringLiteral(
178-
"https://gpgfrontend.bktus.com/guides/fundamental-concepts/")));
195+
tr("Generate a new Key Pair"),
196+
tr("Learn how to create your own key pairs."),
197+
QStringLiteral("https://gpgfrontend.bktus.com/guides/generate-key/")));
179198

180199
layout->addWidget(CreateLinkCard(
181200
tr("Text operations"),
@@ -187,11 +206,18 @@ ChoosePage::ChoosePage(QWidget* parent) : QWizardPage(parent) {
187206
tr("Learn how to encrypt, decrypt, sign, and verify files securely."),
188207
QStringLiteral("https://gpgfrontend.bktus.com/guides/file-operations/")));
189208

209+
layout->addWidget(CreateLinkCard(
210+
tr("View key pair information"),
211+
tr("Learn how to inspect key details, user IDs, fingerprints, and key "
212+
"capabilities."),
213+
QStringLiteral(
214+
"https://gpgfrontend.bktus.com/guides/view-keypair-info/")));
215+
190216
auto* hint_label = CreateMutedLabel(
191217
tr("You can also skip these guides and start using GpgFrontend "
192218
"directly."));
193219

194-
layout->addSpacing(4);
220+
layout->addSpacing(2);
195221
layout->addWidget(hint_label);
196222
layout->addStretch();
197223

@@ -226,24 +252,25 @@ void ChoosePage::slot_jump_page(const QString& page) {
226252

227253
ConclusionPage::ConclusionPage(QWidget* parent) : QWizardPage(parent) {
228254
setTitle(tr("Ready to use"));
255+
setSubTitle(
256+
tr("GpgFrontend is ready. You can adjust these options before "
257+
"finishing."));
229258

230-
auto* done_label = CreateBodyLabel(
231-
tr("<b>You're all set.</b><br><br>"
232-
"You can now create or import keys, encrypt files, sign messages, and "
233-
"verify signatures."));
234-
235-
auto* next_steps_title = CreateSectionTitle(tr("Useful next steps"));
259+
auto* layout = new QVBoxLayout;
260+
layout->setContentsMargins(8, 8, 8, 8);
261+
layout->setSpacing(10);
236262

237-
auto* key_hint = CreateMutedLabel(
238-
tr("Start by creating a new key pair or importing an existing public or "
239-
"private key."));
263+
layout->addWidget(CreateLinkCard(
264+
tr("Contact and feedback"),
265+
tr("Report issues, ask questions, or send feedback to help improve "
266+
"GpgFrontend."),
267+
QStringLiteral("https://gpgfrontend.bktus.com/overview/contact/")));
240268

241-
auto* support_label = CreateBodyLabel(
242-
tr("If you encounter a problem, you can "
243-
"<a href=\"https://github.com/saturneric/GpgFrontend/issues\">submit "
244-
"an issue on GitHub</a> or "
245-
"<a href=\"https://gpgfrontend.bktus.com/overview/contact/\">contact "
246-
"the developer</a>."));
269+
layout->addWidget(CreateLinkCard(
270+
tr("Submit an issue on GitHub"),
271+
tr("Use GitHub issues if you want to report a bug or track a technical "
272+
"problem."),
273+
QStringLiteral("https://github.com/saturneric/GpgFrontend/issues")));
247274

248275
check_updates_checkbox_ = new QCheckBox(tr("Check for updates on startup"));
249276
check_updates_checkbox_->setChecked(false);
@@ -260,15 +287,6 @@ ConclusionPage::ConclusionPage(QWidget* parent) : QWizardPage(parent) {
260287
registerField(QStringLiteral("hideWizard"), dont_show_wizard_checkbox_);
261288
registerField(QStringLiteral("checkUpdate"), check_updates_checkbox_);
262289

263-
auto* layout = new QVBoxLayout;
264-
layout->setContentsMargins(8, 8, 8, 8);
265-
layout->setSpacing(12);
266-
layout->addWidget(done_label);
267-
layout->addSpacing(4);
268-
layout->addWidget(next_steps_title);
269-
layout->addWidget(key_hint);
270-
layout->addSpacing(4);
271-
layout->addWidget(support_label);
272290
layout->addSpacing(8);
273291
layout->addWidget(check_updates_checkbox_);
274292
layout->addWidget(dont_show_wizard_checkbox_);

0 commit comments

Comments
 (0)