@@ -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
227253ConclusionPage::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