Mercurial > minori
view src/gui/dialog/about.cc @ 327:b5d6c27c308f
anime: refactor Anime::SeriesSeason to Season class
ToLocalString has also been altered to take in both season
and year because lots of locales actually treat formatting
seasons differently! most notably is Russian which adds a
suffix at the end to notate seasons(??)
author | Paper <paper@paper.us.eu.org> |
---|---|
date | Thu, 13 Jun 2024 01:49:18 -0400 |
parents | 3b355fa948c7 |
children | e9d040e2045f |
line wrap: on
line source
#include "gui/dialog/about.h" #include "core/json.h" #include "core/session.h" #include "core/strings.h" #include "gui/widgets/text.h" #include "pugixml.hpp" #include "utf8proc.h" #include <QCoreApplication> #include <QFont> #include <QHBoxLayout> #include <QTextBrowser> #include <QTextCharFormat> #include <QTextCursor> #include <curl/curl.h> #ifdef WIN32 # include "sys/win32/dark_theme.h" #endif template<typename T, size_t N> constexpr size_t array_size(T (&)[N]) { return N; } static constexpr semver::version pugixml_version{PUGIXML_VERSION / 1000 % 10, PUGIXML_VERSION / 10 % 100, PUGIXML_VERSION % 10}; static constexpr semver::version json_version{NLOHMANN_JSON_VERSION_MAJOR, NLOHMANN_JSON_VERSION_MINOR, NLOHMANN_JSON_VERSION_PATCH}; static constexpr semver::version semver_version{SEMVER_VERSION_MAJOR, SEMVER_VERSION_MINOR, SEMVER_VERSION_PATCH}; const char* get_curl_version() { const curl_version_info_data* data = curl_version_info(CURLVERSION_NOW); return data->version; } AboutWindow::AboutWindow(QWidget* parent) : QDialog(parent) { setMinimumSize(641, 325); setWindowTitle(tr("About Minori")); setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint); setAutoFillBackground(true); QHBoxLayout* layout = new QHBoxLayout(this); /* we have to generate this on-the-fly for localization purposes */ const QString html = QString("<body>" " <h2 style=\"font-weight: normal;\"><strong>Minori</strong> v" + Strings::ToQString(session.version.to_string()) + "</h2>" " <p>" " <strong>" + tr("Author:") + "</strong><br>" " Paper (@mrpapersonic)" " </p>" " <p>" " <strong>" + tr("Third party components:") + "</strong><br>" "<a href=\"https://curl.se/\">libcurl v") + get_curl_version() + "</a>" ", " "<a href=\"https://p.yusukekamiyamane.com/\">Fugue Icons v3.5.6</a>" ", " "<a href=\"https://github.com/erengy/anitomy\">Anitomy</a>" ", " "<a href=\"https://github.com/nlohmann/json\">JSON for Modern C++ v" + Strings::ToQString(json_version.to_string()) + "</a>" ", " "<a href=\"https://pugixml.org/\">pugixml v" + Strings::ToQString(pugixml_version.to_string()) + "</a>" ", " "<a href=\"https://github.com/Neargye/semver\">semver v" + Strings::ToQString(semver_version.to_string()) + "</a>" ", " "<a href=\"http://juliastrings.github.io/utf8proc/\">utf8proc v" + Strings::ToQString(utf8proc_version()) + "</a>" ", parts of " "<a href=\"https://github.com/erengy/anisthesia\">Anisthesia</a>" " </p>" "<span>" "<strong>" + tr("Special thanks:") + "</strong>" "</span>" " <ul style=\"margin-top: 0px; margin-bottom: 0px; margin-left: 15px; margin-right: 0px; -qt-list-indent:0;\">" " <li><strong>Eren Okka</strong> " + tr("for creating <a href=\"https://taiga.moe/\">Taiga</a>") + "</li>" " <li><strong>Alex Huszagh</strong> " + tr("and") + " <strong>Colin Duquesnoy</strong> " + tr("for creating BreezeStyleSheets, on which the dark theme in this program is " "based off of") + "</li>" " <li><strong>Andy Brice</strong> " + tr("for providing some sample code for " "detecting dark mode on Windows and macOS") + "</li>" " <li><strong>Manuel Wudka-Robles</strong> " + tr("for providing information on " "getting open file descriptors on macOS") + "</li>" " </ul>" "</body>"; setBackgroundRole(QPalette::Base); { QTextBrowser* paragraph = new QTextBrowser(this); paragraph->setOpenExternalLinks(true); paragraph->setFrameShape(QFrame::NoFrame); paragraph->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); paragraph->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); paragraph->setHtml(html); layout->addWidget(paragraph); } } void AboutWindow::showEvent(QShowEvent* event) { QDialog::showEvent(event); #ifdef WIN32 win32::SetTitleBarsToBlack(session.config.theme.IsInDarkTheme()); #endif }