comparison src/gui/dialog/about.cc @ 108:2004b41d4a59

*: huge commit 1. WORKING LOCALIZATION + translation for Spanish and British English 2. idk like 2 changes for the dark theme :)
author Paper <mrpapersonic@gmail.com>
date Sun, 05 Nov 2023 23:31:49 -0500
parents 6d8da6e64d61
children 649786bae914
comparison
equal deleted inserted replaced
107:49c8d1976869 108:2004b41d4a59
1 #include "gui/dialog/about.h" 1 #include "gui/dialog/about.h"
2 #include "core/json.h" 2 #include "core/json.h"
3 #include "core/version.h" 3 #include "core/version.h"
4 #include "core/session.h"
4 #include "core/strings.h" 5 #include "core/strings.h"
5 #include "gui/widgets/text.h" 6 #include "gui/widgets/text.h"
6 #include "pugixml.hpp" 7 #include "pugixml.hpp"
7 #include <QFont> 8 #include <QFont>
8 #include <QHBoxLayout> 9 #include <QHBoxLayout>
9 #include <QTextBrowser> 10 #include <QTextBrowser>
10 #include <QTextCharFormat> 11 #include <QTextCharFormat>
11 #include <QTextCursor> 12 #include <QTextCursor>
13 #include <QCoreApplication>
12 #include <curl/curl.h> 14 #include <curl/curl.h>
15 #ifdef WIN32
16 #include "sys/win32/dark_theme.h"
17 #endif
13 18
14 template <typename T, size_t N> 19 template <typename T, size_t N>
15 constexpr size_t array_size(T (&)[N]) { 20 constexpr size_t array_size(T (&)[N]) {
16 return N; 21 return N;
17 } 22 }
18 23
24 /* used for JSON for Modern C++ */
19 #define CONCAT_VERSION_NX(major, minor, patch) "v" #major "." #minor "." #patch 25 #define CONCAT_VERSION_NX(major, minor, patch) "v" #major "." #minor "." #patch
20 #define CONCAT_VERSION(major, minor, patch) CONCAT_VERSION_NX(major, minor, patch) 26 #define CONCAT_VERSION(major, minor, patch) CONCAT_VERSION_NX(major, minor, patch)
21 27
22 /* Ahhh, my dumb little hack to get this to be constexpr :) */ 28 /* Ahhh, my dumb little hack to get this to be constexpr :) */
23 static constexpr const char pugixml_version[] = { 29 static constexpr const char pugixml_version[] = {
33 const char* get_curl_version() { 39 const char* get_curl_version() {
34 const curl_version_info_data* data = curl_version_info(CURLVERSION_NOW); 40 const curl_version_info_data* data = curl_version_info(CURLVERSION_NOW);
35 return data->version; 41 return data->version;
36 } 42 }
37 43
38 /* I hate HTML so much... */
39 static const QString html = QString(
40 "<body>"
41 " <h2 style=\"font-weight: normal;\"><strong>Minori</strong> " MINORI_VERSION "</h2>"
42 " <p>"
43 " <strong>Author:</strong><br>"
44 " Paper (@mrpapersonic)"
45 " </p>"
46 " <p>"
47 " <strong>Third party components:</strong><br>"
48 "<a href=\"https://curl.se/\">libcurl v") + get_curl_version() + "</a>"
49 ", "
50 "<a href=\"https://p.yusukekamiyamane.com/\">Fugue Icons v3.5.6</a>"
51 ", "
52 "<a href=\"https://github.com/erengy/anitomy\">Anitomy</a>"
53 ", "
54 "<a href=\"https://github.com/nlohmann/json\">JSON for Modern C++ " CONCAT_VERSION(NLOHMANN_JSON_VERSION_MAJOR,
55 NLOHMANN_JSON_VERSION_MINOR,
56 NLOHMANN_JSON_VERSION_PATCH) "</a>"
57 ", "
58 "<a href=\"https://pugixml.org/\">pugixml v" + pugixml_version + "</a>"
59 ", "
60 "<a href=\"https://github.com/pulzed/mINI\">mINI v0.9.14</a>"
61 " </p>"
62 "<span>"
63 "<strong>Special thanks:</strong>"
64 "</span>"
65 " <ul style=\"margin-top: 0px; margin-bottom: 0px; margin-left: 15px; margin-right: 0px; -qt-list-indent:0;\">"
66 " <li><strong>Eren Okka</strong> for creating Taiga</li>"
67 " <li><strong>Alex Huszagh</strong> and <strong>Colin Duquesnoy</strong> for "
68 "creating BreezeStyleSheets, on which the dark theme in this program is "
69 "based off of</li>"
70 " <li><strong>Andy Brice</strong> for making "
71 " </ul>"
72 "</body>";
73
74 AboutWindow::AboutWindow(QWidget* parent) : QDialog(parent) { 44 AboutWindow::AboutWindow(QWidget* parent) : QDialog(parent) {
75 setMinimumSize(641, 325); 45 setMinimumSize(641, 325);
76 setWindowTitle(tr("About Minori")); 46 setWindowTitle(tr("About Minori"));
77 setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint); 47 setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint);
48 setAutoFillBackground(true);
49
78 QHBoxLayout* layout = new QHBoxLayout(this); 50 QHBoxLayout* layout = new QHBoxLayout(this);
79 51
80 QPalette pal = QPalette(); 52 /* we have to generate this on-the-fly for localization purposes */
81 pal.setColor(QPalette::Window, pal.color(QPalette::Base)); 53 static const QString html = QString(
82 setPalette(pal); 54 "<body>"
83 setAutoFillBackground(true); 55 " <h2 style=\"font-weight: normal;\"><strong>Minori</strong> " MINORI_VERSION "</h2>"
56 " <p>"
57 " <strong>" + QCoreApplication::tr("Author:") + "</strong><br>"
58 " Paper (@mrpapersonic)"
59 " </p>"
60 " <p>"
61 " <strong>" + QCoreApplication::tr("Third party components:") + "</strong><br>"
62 "<a href=\"https://curl.se/\">libcurl v") + get_curl_version() + "</a>"
63 ", "
64 "<a href=\"https://p.yusukekamiyamane.com/\">Fugue Icons v3.5.6</a>"
65 ", "
66 "<a href=\"https://github.com/erengy/anitomy\">Anitomy</a>"
67 ", "
68 "<a href=\"https://github.com/nlohmann/json\">JSON for Modern C++ " CONCAT_VERSION(NLOHMANN_JSON_VERSION_MAJOR,
69 NLOHMANN_JSON_VERSION_MINOR,
70 NLOHMANN_JSON_VERSION_PATCH) "</a>"
71 ", "
72 "<a href=\"https://pugixml.org/\">pugixml v" + pugixml_version + "</a>"
73 ", "
74 "<a href=\"https://github.com/pulzed/mINI\">mINI v0.9.14</a>"
75 " </p>"
76 "<span>"
77 "<strong>" + QCoreApplication::tr("Special thanks:") + "</strong>"
78 "</span>"
79 " <ul style=\"margin-top: 0px; margin-bottom: 0px; margin-left: 15px; margin-right: 0px; -qt-list-indent:0;\">"
80 " <li><strong>Eren Okka</strong> " + QCoreApplication::tr("for creating Taiga") + "</li>"
81 " <li><strong>Alex Huszagh</strong> " + QCoreApplication::tr("and") + " <strong>Colin Duquesnoy</strong> " +
82 QCoreApplication::tr("for creating BreezeStyleSheets, on which the dark theme in this program is "
83 "based off of") + "</li>"
84 " <li><strong>Andy Brice</strong> " + QCoreApplication::tr("for providing some sample code for "
85 "detecting dark mode on Windows and macOS") + "</li>"
86 " <li><strong>Manuel Wudka-Robles</strong> " + QCoreApplication::tr("for providing information on "
87 "getting open file descriptors on macOS") + "</li>"
88 " </ul>"
89 "</body>";
84 90
85 QTextBrowser* paragraph = new QTextBrowser(this); 91 {
86 paragraph->setOpenExternalLinks(true); 92 QPalette pal = QPalette();
87 paragraph->setFrameShape(QFrame::NoFrame); 93 pal.setColor(QPalette::Window, pal.color(QPalette::Base));
88 paragraph->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); 94 setPalette(pal);
89 paragraph->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); 95 }
90 paragraph->setHtml(html);
91 96
92 layout->addWidget(paragraph); 97 {
98 QTextBrowser* paragraph = new QTextBrowser(this);
99 paragraph->setOpenExternalLinks(true);
100 paragraph->setFrameShape(QFrame::NoFrame);
101 paragraph->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
102 paragraph->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
103 paragraph->setHtml(html);
104
105 layout->addWidget(paragraph);
106 }
93 } 107 }
108
109 void AboutWindow::showEvent(QShowEvent* event) {
110 QDialog::showEvent(event);
111 #ifdef WIN32
112 win32::SetTitleBarsToBlack(session.config.theme.IsInDarkTheme());
113 #endif
114 }
115
116 #include "gui/dialog/moc_about.cpp"