Mercurial > minori
comparison src/gui/dialog/about.cpp @ 51:75c804f713b2
window: add about window,
*: use tr() when applicable (useful for i18n)
author | Paper <mrpapersonic@gmail.com> |
---|---|
date | Mon, 25 Sep 2023 20:29:26 -0400 |
parents | |
children | 0c4138de2ea7 |
comparison
equal
deleted
inserted
replaced
50:10868c3fb2be | 51:75c804f713b2 |
---|---|
1 #include "core/version.h" | |
2 #include "gui/widgets/text.h" | |
3 #include "gui/dialog/about.h" | |
4 #include "core/json.h" | |
5 #include <curl/curl.h> | |
6 #include <QFont> | |
7 #include <QTextCharFormat> | |
8 #include <QTextBrowser> | |
9 #include <QTextCursor> | |
10 #include <QHBoxLayout> | |
11 | |
12 #define CONCAT_VERSION_NX(major, minor, patch) \ | |
13 ("v" #major "." #minor "." #patch) | |
14 | |
15 #define CONCAT_VERSION(major, minor, patch) \ | |
16 CONCAT_VERSION_NX(major, minor, patch) | |
17 | |
18 #define SET_TITLE_FONT(font, format, cursor) \ | |
19 { \ | |
20 font = cursor.charFormat().font(); \ | |
21 font.setPointSize(10); \ | |
22 format.setFont(font); \ | |
23 cursor.setCharFormat(format); \ | |
24 } | |
25 | |
26 #define SET_PARAGRAPH_FONT(font, format, cursor) \ | |
27 { \ | |
28 font = cursor.charFormat().font(); \ | |
29 font.setPointSize(8); \ | |
30 format.setFont(font); \ | |
31 cursor.setCharFormat(format); \ | |
32 } | |
33 | |
34 #define SET_FONT_BOLD(font, format, cursor) \ | |
35 { \ | |
36 font = cursor.charFormat().font(); \ | |
37 font.setBold(true); \ | |
38 format.setFont(font); \ | |
39 cursor.setCharFormat(format); \ | |
40 } | |
41 | |
42 #define UNSET_FONT_BOLD(font, format, cursor) \ | |
43 { \ | |
44 font = cursor.charFormat().font(); \ | |
45 font.setBold(false); \ | |
46 format.setFont(font); \ | |
47 cursor.setCharFormat(format); \ | |
48 } | |
49 | |
50 #define SET_FORMAT_HYPERLINK(format, cursor, link) \ | |
51 { \ | |
52 format.setAnchor(true); \ | |
53 format.setAnchorHref(link); \ | |
54 cursor.setCharFormat(format); \ | |
55 } | |
56 #define UNSET_FORMAT_HYPERLINK(format, cursor) \ | |
57 { \ | |
58 format.setAnchor(false); \ | |
59 format.setAnchorHref(""); \ | |
60 cursor.setCharFormat(format); \ | |
61 } | |
62 | |
63 AboutWindow::AboutWindow(QWidget* parent) : QDialog(parent) { | |
64 setWindowTitle(tr("About Minori")); | |
65 setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint); | |
66 setLayout(new QHBoxLayout); | |
67 | |
68 QPalette pal = QPalette(); | |
69 pal.setColor(QPalette::Window, pal.color(QPalette::Base)); | |
70 setPalette(pal); | |
71 setAutoFillBackground(true); | |
72 | |
73 QFont font; | |
74 QTextCharFormat format; | |
75 QTextBrowser* paragraph = new QTextBrowser(this); | |
76 paragraph->setOpenExternalLinks(true); | |
77 QTextCursor cursor = paragraph->textCursor(); | |
78 SET_TITLE_FONT(font, format, cursor); | |
79 SET_FONT_BOLD(font, format, cursor); | |
80 cursor.insertText("Minori"); | |
81 UNSET_FONT_BOLD(font, format, cursor); | |
82 cursor.insertText(" " MINORI_VERSION); | |
83 SET_PARAGRAPH_FONT(font, format, cursor); | |
84 cursor.insertBlock(); | |
85 cursor.insertBlock(); | |
86 SET_FONT_BOLD(font, format, cursor); | |
87 cursor.insertText(tr("Author:")); | |
88 UNSET_FONT_BOLD(font, format, cursor); | |
89 cursor.insertBlock(); | |
90 cursor.insertText(tr("Paper")); | |
91 cursor.insertBlock(); | |
92 cursor.insertBlock(); | |
93 SET_FONT_BOLD(font, format, cursor); | |
94 cursor.insertText(tr("Third party components:")); | |
95 UNSET_FONT_BOLD(font, format, cursor); | |
96 cursor.insertBlock(); | |
97 SET_FORMAT_HYPERLINK(format, cursor, "https://github.com/nlohmann/json"); | |
98 cursor.insertText(tr("JSON for Modern C++ ") + CONCAT_VERSION(NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH)); | |
99 UNSET_FORMAT_HYPERLINK(format, cursor); | |
100 cursor.insertText(", "); | |
101 { | |
102 curl_version_info_data* data = curl_version_info(CURLVERSION_NOW); | |
103 SET_FORMAT_HYPERLINK(format, cursor, "https://curl.se/"); | |
104 cursor.insertText(tr("libcurl v") + data->version); | |
105 UNSET_FORMAT_HYPERLINK(format, cursor); | |
106 cursor.insertText(", "); | |
107 } | |
108 SET_FORMAT_HYPERLINK(format, cursor, "https://p.yusukekamiyamane.com/"); | |
109 cursor.insertText(tr("Fugue Icons ") + CONCAT_VERSION(3, 5, 6)); | |
110 UNSET_FORMAT_HYPERLINK(format, cursor); | |
111 cursor.insertBlock(); | |
112 cursor.insertBlock(); | |
113 SET_FONT_BOLD(font, format, cursor); | |
114 cursor.insertText(tr("Links:")); | |
115 UNSET_FONT_BOLD(font, format, cursor); | |
116 cursor.insertBlock(); | |
117 layout()->addWidget(paragraph); | |
118 } |