Mercurial > minori
annotate src/gui/dialog/about.cc @ 255:fe702c8f161f
*: whatever
author | Paper <paper@paper.us.eu.org> |
---|---|
date | Wed, 07 Feb 2024 17:04:06 -0500 |
parents | 4d461ef7d424 |
children | 862d0d8619f6 |
rev | line source |
---|---|
51 | 1 #include "gui/dialog/about.h" |
2 #include "core/json.h" | |
108 | 3 #include "core/session.h" |
104 | 4 #include "core/strings.h" |
63 | 5 #include "gui/widgets/text.h" |
55
d10b6c6b432e
add xml lib, we will need to use it eventually
Paper <mrpapersonic@gmail.com>
parents:
52
diff
changeset
|
6 #include "pugixml.hpp" |
51 | 7 #include <QFont> |
8 #include <QHBoxLayout> | |
63 | 9 #include <QTextBrowser> |
10 #include <QTextCharFormat> | |
11 #include <QTextCursor> | |
108 | 12 #include <QCoreApplication> |
63 | 13 #include <curl/curl.h> |
108 | 14 #ifdef WIN32 |
15 #include "sys/win32/dark_theme.h" | |
16 #endif | |
51 | 17 |
104 | 18 template <typename T, size_t N> |
19 constexpr size_t array_size(T (&)[N]) { | |
20 return N; | |
21 } | |
51 | 22 |
255 | 23 static constexpr semver::version pugixml_version{PUGIXML_VERSION / 1000 % 10, PUGIXML_VERSION / 10 % 100, PUGIXML_VERSION % 10}; |
24 static constexpr semver::version json_version{NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH}; | |
25 static constexpr semver::version semver_version{SEMVER_VERSION_MAJOR, SEMVER_VERSION_MINOR, SEMVER_VERSION_PATCH}; | |
51 | 26 |
104 | 27 const char* get_curl_version() { |
28 const curl_version_info_data* data = curl_version_info(CURLVERSION_NOW); | |
29 return data->version; | |
30 } | |
51 | 31 |
32 AboutWindow::AboutWindow(QWidget* parent) : QDialog(parent) { | |
104 | 33 setMinimumSize(641, 325); |
51 | 34 setWindowTitle(tr("About Minori")); |
35 setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint); | |
36 setAutoFillBackground(true); | |
37 | |
108 | 38 QHBoxLayout* layout = new QHBoxLayout(this); |
104 | 39 |
108 | 40 /* we have to generate this on-the-fly for localization purposes */ |
189 | 41 const QString html = QString( |
108 | 42 "<body>" |
221
53211cb1e7f5
library: add initial library stuff
Paper <paper@paper.us.eu.org>
parents:
189
diff
changeset
|
43 " <h2 style=\"font-weight: normal;\"><strong>Minori</strong> v" + Strings::ToQString(session.version.to_string()) + "</h2>" |
108 | 44 " <p>" |
224
7ca56c4ac0bc
about: don't abuse QCoreApplication:tr
Paper <mrpapersonic@gmail.com>
parents:
221
diff
changeset
|
45 " <strong>" + tr("Author:") + "</strong><br>" |
108 | 46 " Paper (@mrpapersonic)" |
47 " </p>" | |
48 " <p>" | |
224
7ca56c4ac0bc
about: don't abuse QCoreApplication:tr
Paper <mrpapersonic@gmail.com>
parents:
221
diff
changeset
|
49 " <strong>" + tr("Third party components:") + "</strong><br>" |
108 | 50 "<a href=\"https://curl.se/\">libcurl v") + get_curl_version() + "</a>" |
51 ", " | |
52 "<a href=\"https://p.yusukekamiyamane.com/\">Fugue Icons v3.5.6</a>" | |
53 ", " | |
54 "<a href=\"https://github.com/erengy/anitomy\">Anitomy</a>" | |
55 ", " | |
255 | 56 "<a href=\"https://github.com/nlohmann/json\">JSON for Modern C++ v" + Strings::ToQString(json_version.to_string()) + "</a>" |
108 | 57 ", " |
255 | 58 "<a href=\"https://pugixml.org/\">pugixml v" + Strings::ToQString(pugixml_version.to_string()) + "</a>" |
108 | 59 ", " |
60 "<a href=\"https://github.com/pulzed/mINI\">mINI v0.9.14</a>" | |
255 | 61 ", " |
62 "<a href=\"https://github.com/Neargye/semver\">semver v" + Strings::ToQString(semver_version.to_string()) + "</a>" | |
108 | 63 " </p>" |
64 "<span>" | |
224
7ca56c4ac0bc
about: don't abuse QCoreApplication:tr
Paper <mrpapersonic@gmail.com>
parents:
221
diff
changeset
|
65 "<strong>" + tr("Special thanks:") + "</strong>" |
108 | 66 "</span>" |
67 " <ul style=\"margin-top: 0px; margin-bottom: 0px; margin-left: 15px; margin-right: 0px; -qt-list-indent:0;\">" | |
224
7ca56c4ac0bc
about: don't abuse QCoreApplication:tr
Paper <mrpapersonic@gmail.com>
parents:
221
diff
changeset
|
68 " <li><strong>Eren Okka</strong> " + tr("for creating Taiga") + "</li>" |
7ca56c4ac0bc
about: don't abuse QCoreApplication:tr
Paper <mrpapersonic@gmail.com>
parents:
221
diff
changeset
|
69 " <li><strong>Alex Huszagh</strong> " + tr("and") + " <strong>Colin Duquesnoy</strong> " + |
7ca56c4ac0bc
about: don't abuse QCoreApplication:tr
Paper <mrpapersonic@gmail.com>
parents:
221
diff
changeset
|
70 tr("for creating BreezeStyleSheets, on which the dark theme in this program is " |
108 | 71 "based off of") + "</li>" |
224
7ca56c4ac0bc
about: don't abuse QCoreApplication:tr
Paper <mrpapersonic@gmail.com>
parents:
221
diff
changeset
|
72 " <li><strong>Andy Brice</strong> " + tr("for providing some sample code for " |
108 | 73 "detecting dark mode on Windows and macOS") + "</li>" |
224
7ca56c4ac0bc
about: don't abuse QCoreApplication:tr
Paper <mrpapersonic@gmail.com>
parents:
221
diff
changeset
|
74 " <li><strong>Manuel Wudka-Robles</strong> " + tr("for providing information on " |
108 | 75 "getting open file descriptors on macOS") + "</li>" |
76 " </ul>" | |
77 "</body>"; | |
78 | |
79 { | |
80 QPalette pal = QPalette(); | |
81 pal.setColor(QPalette::Window, pal.color(QPalette::Base)); | |
82 setPalette(pal); | |
83 } | |
84 | |
85 { | |
86 QTextBrowser* paragraph = new QTextBrowser(this); | |
87 paragraph->setOpenExternalLinks(true); | |
88 paragraph->setFrameShape(QFrame::NoFrame); | |
89 paragraph->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); | |
90 paragraph->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); | |
91 paragraph->setHtml(html); | |
92 | |
93 layout->addWidget(paragraph); | |
94 } | |
51 | 95 } |
108 | 96 |
97 void AboutWindow::showEvent(QShowEvent* event) { | |
98 QDialog::showEvent(event); | |
99 #ifdef WIN32 | |
100 win32::SetTitleBarsToBlack(session.config.theme.IsInDarkTheme()); | |
101 #endif | |
102 } |