annotate src/gui/dialog/about.cc @ 374:f7bb2978de48

gui/pages/anime_list: add Search right-click menu, don't create menu items that do nothing
author Paper <paper@tflc.us>
date Fri, 25 Jul 2025 11:03:34 -0400
parents ea3a74ed2ef9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
51
75c804f713b2 window: add about window,
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
1 #include "gui/dialog/about.h"
75c804f713b2 window: add about window,
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
2 #include "core/json.h"
108
2004b41d4a59 *: huge commit
Paper <mrpapersonic@gmail.com>
parents: 105
diff changeset
3 #include "core/session.h"
104
27455104ea37 about: switch to using HTML
Paper <mrpapersonic@gmail.com>
parents: 81
diff changeset
4 #include "core/strings.h"
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
5 #include "gui/dialog/licenses.h"
63
3d2decf093bb *: fix many clang warnings
Paper <mrpapersonic@gmail.com>
parents: 55
diff changeset
6 #include "gui/widgets/text.h"
292
ac1451035c85 dialog/about: add utf8proc
Paper <paper@paper.us.eu.org>
parents: 258
diff changeset
7
ac1451035c85 dialog/about: add utf8proc
Paper <paper@paper.us.eu.org>
parents: 258
diff changeset
8 #include "utf8proc.h"
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
9 #include <fmt/core.h>
367
8d45d892be88 *: instead of pugixml, use Qt XML features
Paper <paper@tflc.us>
parents: 339
diff changeset
10 #include <toml11/toml.hpp>
330
e9d040e2045f dialog/about: templateize
Paper <paper@paper.us.eu.org>
parents: 318
diff changeset
11
258
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 255
diff changeset
12 #include <QCoreApplication>
51
75c804f713b2 window: add about window,
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
13 #include <QFont>
75c804f713b2 window: add about window,
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
14 #include <QHBoxLayout>
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
15 #include <QPushButton>
63
3d2decf093bb *: fix many clang warnings
Paper <mrpapersonic@gmail.com>
parents: 55
diff changeset
16 #include <QTextBrowser>
3d2decf093bb *: fix many clang warnings
Paper <mrpapersonic@gmail.com>
parents: 55
diff changeset
17 #include <QTextCharFormat>
3d2decf093bb *: fix many clang warnings
Paper <mrpapersonic@gmail.com>
parents: 55
diff changeset
18 #include <QTextCursor>
258
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 255
diff changeset
19
63
3d2decf093bb *: fix many clang warnings
Paper <mrpapersonic@gmail.com>
parents: 55
diff changeset
20 #include <curl/curl.h>
108
2004b41d4a59 *: huge commit
Paper <mrpapersonic@gmail.com>
parents: 105
diff changeset
21 #ifdef WIN32
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
22 # include "sys/win32/dark_theme.h"
108
2004b41d4a59 *: huge commit
Paper <mrpapersonic@gmail.com>
parents: 105
diff changeset
23 #endif
51
75c804f713b2 window: add about window,
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
24
258
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 255
diff changeset
25 template<typename T, size_t N>
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
26 constexpr size_t array_size(T (&)[N])
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
27 {
104
27455104ea37 about: switch to using HTML
Paper <mrpapersonic@gmail.com>
parents: 81
diff changeset
28 return N;
27455104ea37 about: switch to using HTML
Paper <mrpapersonic@gmail.com>
parents: 81
diff changeset
29 }
51
75c804f713b2 window: add about window,
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
30
330
e9d040e2045f dialog/about: templateize
Paper <paper@paper.us.eu.org>
parents: 318
diff changeset
31 static constexpr semver::version fmt_version{FMT_VERSION / 10000, FMT_VERSION / 100 % 100, FMT_VERSION % 100};
258
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 255
diff changeset
32 static constexpr semver::version json_version{NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR,
862d0d8619f6 *: HUUUGE changes
Paper <paper@paper.us.eu.org>
parents: 255
diff changeset
33 NLOHMANN_JSON_VERSION_PATCH};
255
fe702c8f161f *: whatever
Paper <paper@paper.us.eu.org>
parents: 236
diff changeset
34 static constexpr semver::version semver_version{SEMVER_VERSION_MAJOR, SEMVER_VERSION_MINOR, SEMVER_VERSION_PATCH};
367
8d45d892be88 *: instead of pugixml, use Qt XML features
Paper <paper@tflc.us>
parents: 339
diff changeset
35 static constexpr semver::version toml11_version{TOML11_VERSION_MAJOR, TOML11_VERSION_MINOR, TOML11_VERSION_PATCH};
330
e9d040e2045f dialog/about: templateize
Paper <paper@paper.us.eu.org>
parents: 318
diff changeset
36 static constexpr semver::version fugue_icons_version{3, 5, 6};
51
75c804f713b2 window: add about window,
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
37
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
38 const char *get_curl_version()
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
39 {
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
40 const curl_version_info_data *data = curl_version_info(CURLVERSION_NOW);
104
27455104ea37 about: switch to using HTML
Paper <mrpapersonic@gmail.com>
parents: 81
diff changeset
41 return data->version;
27455104ea37 about: switch to using HTML
Paper <mrpapersonic@gmail.com>
parents: 81
diff changeset
42 }
51
75c804f713b2 window: add about window,
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
43
330
e9d040e2045f dialog/about: templateize
Paper <paper@paper.us.eu.org>
parents: 318
diff changeset
44 static constexpr std::string_view about_template =
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
45 "<body>"
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
46 "<h2 style=\"font-weight: normal;\"><strong>Minori</strong> v{}</h2>"
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
47 "<p><strong>Author:</strong><br>Paper &lt;paper@paper.us.eu.org&gt;</p>"
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
48 "<p><strong>Third party components:</strong><br>"
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
49 "<a href=\"https://curl.se/\">libcurl v{}</a>, "
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
50 "<a href=\"https://p.yusukekamiyamane.com/\">Fugue Icons v{}</a>, "
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
51 "<a href=\"https://github.com/erengy/anitomy\">Anitomy</a>, "
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
52 "<a href=\"https://github.com/nlohmann/json\">JSON for Modern C++ v{}</a>, "
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
53 "<a href=\"https://github.com/Neargye/semver\">semver v{}</a>, "
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
54 "<a href=\"http://juliastrings.github.io/utf8proc/\">utf8proc v{}</a>, "
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
55 "<a href=\"https://github.com/fmtlib/fmt\">fmt v{}</a>, "
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
56 "<a href=\"https://github.com/ToruNiina/toml11\">toml11 v{}</a>, "
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
57 "and parts of <a href=\"https://github.com/erengy/anisthesia\">Anisthesia</a>"
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
58 "</p>"
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
59 "<span><strong>Special thanks:</strong></span>"
330
e9d040e2045f dialog/about: templateize
Paper <paper@paper.us.eu.org>
parents: 318
diff changeset
60 "<ul style=\"margin-top: 0px; margin-bottom: 0px; margin-left: 15px; margin-right: 0px; -qt-list-indent:0;\">"
e9d040e2045f dialog/about: templateize
Paper <paper@paper.us.eu.org>
parents: 318
diff changeset
61 "<li><strong>Eren Okka</strong> for creating <a href=\"https://taiga.moe/\">Taiga</a></li>"
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
62 "<li><strong>Alex Huszagh</strong> and <strong>Colin Duquesnoy</strong> for creating BreezeStyleSheets, on which "
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
63 "the dark theme in this program is based off of</li>"
330
e9d040e2045f dialog/about: templateize
Paper <paper@paper.us.eu.org>
parents: 318
diff changeset
64 "<li><strong>Andy Brice</strong> for providing some sample code for detecting dark mode on Windows and macOS</li>"
e9d040e2045f dialog/about: templateize
Paper <paper@paper.us.eu.org>
parents: 318
diff changeset
65 "<li><strong>Manuel Wudka-Robles</strong> for providing information on getting open file descriptors on macOS</li>"
e9d040e2045f dialog/about: templateize
Paper <paper@paper.us.eu.org>
parents: 318
diff changeset
66 "</ul>"
e9d040e2045f dialog/about: templateize
Paper <paper@paper.us.eu.org>
parents: 318
diff changeset
67 "</body>";
e9d040e2045f dialog/about: templateize
Paper <paper@paper.us.eu.org>
parents: 318
diff changeset
68
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
69 AboutWindow::AboutWindow(QWidget *parent) : Dialog(parent)
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
70 {
104
27455104ea37 about: switch to using HTML
Paper <mrpapersonic@gmail.com>
parents: 81
diff changeset
71 setMinimumSize(641, 325);
51
75c804f713b2 window: add about window,
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
72 setWindowTitle(tr("About Minori"));
75c804f713b2 window: add about window,
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
73 setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint);
75c804f713b2 window: add about window,
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
74 setAutoFillBackground(true);
75c804f713b2 window: add about window,
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
75
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
76 QVBoxLayout *layout = new QVBoxLayout(this);
104
27455104ea37 about: switch to using HTML
Paper <mrpapersonic@gmail.com>
parents: 81
diff changeset
77
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
78 std::string html =
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
79 fmt::format(about_template, session.version.to_string(), get_curl_version(), fugue_icons_version.to_string(),
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
80 json_version.to_string(), semver_version.to_string(), utf8proc_version(), fmt_version.to_string(),
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
81 toml11_version.to_string());
108
2004b41d4a59 *: huge commit
Paper <mrpapersonic@gmail.com>
parents: 105
diff changeset
82
294
99cbc51433e4 *: cleanup uses of QPalette
Paper <paper@paper.us.eu.org>
parents: 292
diff changeset
83 setBackgroundRole(QPalette::Base);
108
2004b41d4a59 *: huge commit
Paper <mrpapersonic@gmail.com>
parents: 105
diff changeset
84
2004b41d4a59 *: huge commit
Paper <mrpapersonic@gmail.com>
parents: 105
diff changeset
85 {
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
86 QTextBrowser *paragraph = new QTextBrowser(this);
108
2004b41d4a59 *: huge commit
Paper <mrpapersonic@gmail.com>
parents: 105
diff changeset
87 paragraph->setOpenExternalLinks(true);
2004b41d4a59 *: huge commit
Paper <mrpapersonic@gmail.com>
parents: 105
diff changeset
88 paragraph->setFrameShape(QFrame::NoFrame);
2004b41d4a59 *: huge commit
Paper <mrpapersonic@gmail.com>
parents: 105
diff changeset
89 paragraph->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
2004b41d4a59 *: huge commit
Paper <mrpapersonic@gmail.com>
parents: 105
diff changeset
90 paragraph->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
330
e9d040e2045f dialog/about: templateize
Paper <paper@paper.us.eu.org>
parents: 318
diff changeset
91 paragraph->setHtml(Strings::ToQString(html));
108
2004b41d4a59 *: huge commit
Paper <mrpapersonic@gmail.com>
parents: 105
diff changeset
92
2004b41d4a59 *: huge commit
Paper <mrpapersonic@gmail.com>
parents: 105
diff changeset
93 layout->addWidget(paragraph);
2004b41d4a59 *: huge commit
Paper <mrpapersonic@gmail.com>
parents: 105
diff changeset
94 }
339
eac06513db86 dialog/about: add licenses button
Paper <paper@paper.us.eu.org>
parents: 332
diff changeset
95
eac06513db86 dialog/about: add licenses button
Paper <paper@paper.us.eu.org>
parents: 332
diff changeset
96 {
eac06513db86 dialog/about: add licenses button
Paper <paper@paper.us.eu.org>
parents: 332
diff changeset
97 QPushButton *license = new QPushButton("&Licenses", this);
eac06513db86 dialog/about: add licenses button
Paper <paper@paper.us.eu.org>
parents: 332
diff changeset
98 layout->addWidget(license, Qt::AlignRight);
370
ea3a74ed2ef9 *: hm, last commit wasn't quite finished?
Paper <paper@tflc.us>
parents: 368
diff changeset
99 connect(license, &QPushButton::clicked, this, [] {
339
eac06513db86 dialog/about: add licenses button
Paper <paper@paper.us.eu.org>
parents: 332
diff changeset
100 LicensesWindow dialog;
eac06513db86 dialog/about: add licenses button
Paper <paper@paper.us.eu.org>
parents: 332
diff changeset
101 dialog.exec();
eac06513db86 dialog/about: add licenses button
Paper <paper@paper.us.eu.org>
parents: 332
diff changeset
102 });
eac06513db86 dialog/about: add licenses button
Paper <paper@paper.us.eu.org>
parents: 332
diff changeset
103 }
51
75c804f713b2 window: add about window,
Paper <mrpapersonic@gmail.com>
parents:
diff changeset
104 }