Files
deskflow/src/gui/src/dialogs/AboutDialog.cpp

86 lines
2.9 KiB
C++

/*
* Deskflow -- mouse and keyboard sharing utility
* Copyright (C) 2024 Chris Rizzitello <sithlord48@gmail.com>
* Copyright (C) 2012 Symless Ltd.
* Copyright (C) 2008 Volker Lanz (vl@fidra.de)
*
* This package is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* found in the file LICENSE that should have accompanied this file.
*
* This package is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "AboutDialog.h"
#include "common/constants.h"
#include "common/copyright.h"
#include "gui/style_utils.h"
#include <QClipboard>
#include <QDateTime>
#include <QHBoxLayout>
#include <QLabel>
#include <QPushButton>
#include <QStyle>
AboutDialog::AboutDialog(QWidget *parent) : QDialog(parent)
{
setWindowTitle(tr("About Deskflow"));
auto copyIcon = QIcon::fromTheme(
QIcon::ThemeIcon::EditCopy, deskflow::gui::isDarkMode() ? QIcon(s_darkCopy) : QIcon(s_lightCopy)
);
auto btnCopyVersion = new QPushButton(copyIcon, QString(), this);
btnCopyVersion->setFlat(true);
connect(btnCopyVersion, &QPushButton::clicked, this, [] { QGuiApplication::clipboard()->setText(kVersion); });
auto versionString = QString(kVersion);
if (!QString(kVersionGitSha).isEmpty())
versionString.append(QStringLiteral(" (%1)").arg(kVersionGitSha));
auto versionLayout = new QHBoxLayout();
versionLayout->addWidget(new QLabel(tr("Version:")));
versionLayout->addWidget(new QLabel(versionString, this));
versionLayout->addWidget(btnCopyVersion);
versionLayout->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Fixed));
auto lblLogo = new QLabel(this);
lblLogo->setPixmap(deskflow::gui::isDarkMode() ? s_darkLogo : s_lightLogo);
auto lblCopyright = new QLabel(QString::fromStdString(deskflow::kCopyright));
auto boldFont = font();
boldFont.setBold(true);
auto lblDevsTitle = new QLabel(tr("Important developers"));
lblDevsTitle->setFont(boldFont);
auto lblDevsBody = new QLabel(QStringLiteral("%1\n").arg(s_awesomeDevs.join(", ")));
lblDevsBody->setWordWrap(true);
auto btnOk = new QPushButton(tr("Ok"), this);
btnOk->setDefault(true);
connect(btnOk, &QPushButton::clicked, this, [this] { close(); });
auto mainLayout = new QVBoxLayout();
mainLayout->addWidget(lblLogo);
mainLayout->addLayout(versionLayout);
mainLayout->addWidget(new QLabel(tr("Keyboard and mouse sharing application"), this));
mainLayout->addWidget(lblCopyright);
mainLayout->addWidget(lblDevsTitle);
mainLayout->addWidget(lblDevsBody);
mainLayout->addWidget(btnOk);
setLayout(mainLayout);
adjustSize();
setFixedSize(size());
}