/*
 * This file is part of smolbote. It's copyrighted by the contributors recorded
 * in the version control history of the file, available from its original
 * location: https://neueland.iserlohn-fortress.net/smolbote.hg
 *
 * SPDX-License-Identifier: GPL-3.0
 */
#include "aboutdialog.h"
#include "browser.h"
#include "ui_aboutdialog.h"
#include "version.h"
#include 
#include 
// compiler
// clang also defines __GNUC__, so we need to check for clang first
#if defined(__clang__)
#define compiler "Clang " __clang_version__
#elif defined(__GNUC__)
#define compiler "GCC " __VERSION__
#else
#define compiler "unknown compiler";
#endif
AboutDialog::AboutDialog(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::AboutDialog)
{
    setAttribute(Qt::WA_DeleteOnClose, true);
    ui->setupUi(this);
    auto *browser = dynamic_cast(QApplication::instance());
    ui->icon->setPixmap(dynamic_cast(browser)->windowIcon().pixmap(72, 72));
    auto *aboutLabel = new QLabel(this);
    aboutLabel->setWordWrap(true);
    aboutLabel->setText(tr("smolbote " SMOLBOTE_VERSION "
"
                           "yet another no-frills browser
"));
    ui->toolBox->addItem(aboutLabel, tr("About"));
    auto *licenseLabel = new QLabel(this);
    licenseLabel->setWordWrap(true);
    licenseLabel->setText(tr("Copyright (C) 2017 Xian Nox
"
                             "This program is free software, and you are welcome to use it under the conditions set by the GNU GPLv3:"
                             "
"
                             "-  the freedom to use the software for any purpose,"
                             "
-  the freedom to change the software to suit your needs,"
                             "
-  the freedom to share the software with anyone,"
                             "
-  the freedom to share the changes you make, and"
                             "
-  the responsibility to grant the same freedoms when sharing the software."
                             "
"
                             "You can find the full license text in LICENSE.md.
"));
    ui->toolBox->addItem(licenseLabel, tr("License"));
    auto *libsLabel = new QLabel(this);
    libsLabel->setWordWrap(true);
    libsLabel->setText(tr("Version " SMOLBOTE_DESCRIBE "
"
                          "Branch: " SMOLBOTE_BRANCH "
"
                          "Compiled with " compiler "
"
                          ""
                          "- Qt " QT_VERSION_STR ""
                          "
- QtWebEngine " QTWEBENGINE_VERSION_STR ""
                          "
- Boost " BOOST_LIB_VERSION " "
                          "
"));
    ui->toolBox->addItem(libsLabel, tr("Details"));
    // list profiles
    if(!browser->profiles().isEmpty()) {
        QString profilesText = tr("Profile list:
"
                                  "");
        for(const QString &name : browser->profiles()) {
            if(name.isEmpty())
                profilesText += tr("- Off-the-record");
            else
                profilesText += tr("
- %1").arg(name);
        }
        profilesText += tr("
");
        libsLabel->setText(libsLabel->text() + profilesText);
    }
    // list plugins
    if(!browser->plugins().isEmpty()) {
        QString pluginText = tr("Plugin list:
"
                                "");
        for(const Browser::Plugin &plugin : browser->plugins()) {
            pluginText += tr("- %1 (%2)").arg(plugin.meta["name"].toString(), plugin.meta["author"].toString());
        }
        pluginText += tr("
");
        libsLabel->setText(libsLabel->text() + pluginText);
    }
}
AboutDialog::~AboutDialog()
{
    delete ui;
}