From 8198dc48c557e4894bd0cf92e3a5e5cf403db952 Mon Sep 17 00:00:00 2001 From: RigoLigoRLC Date: Thu, 22 Jul 2021 13:07:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5SpkAbout=EF=BC=88=E6=97=A0?= =?UTF-8?q?=E5=86=85=E5=AE=B9=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gui/spkabout.cpp | 42 ++++++++++++++++++++++++++++++++++++++++-- gui/spkdialog.cpp | 13 +++++++++++++ gui/spktitlebar.cpp | 2 +- gui/spkwindow.cpp | 16 +++++++++++++++- inc/spkabout.h | 12 +++++++++++- inc/spkdialog.h | 4 +++- inc/spkmainwindow.h | 5 +++++ inc/spkstore.h | 2 +- inc/spkwindow.h | 2 +- src/main.cpp | 4 ++++ src/spkstore.cpp | 5 +++-- 11 files changed, 97 insertions(+), 10 deletions(-) diff --git a/gui/spkabout.cpp b/gui/spkabout.cpp index 45ebdb9..c4a9505 100644 --- a/gui/spkabout.cpp +++ b/gui/spkabout.cpp @@ -1,18 +1,56 @@ +#include "gitver.h" #include "spkabout.h" SpkAbout::SpkAbout(QWidget *parent) : SpkDialog(parent) { setWindowModality(Qt::ApplicationModal); + + mIconLay = new QHBoxLayout; + + mSpkVersion = new QLabel; + mSpkVersion->setText(tr("

Spark Store

" + "

Version %1

" + "Code committed on (%2)
" + "Built on %3 %4") + .arg(GitVer::DescribeTags()) + .arg(GitVer::CommitDate()) + .arg(__DATE__) + .arg(__TIME__)); + + mSpkIcon = new QLabel; + mSpkIcon->setPixmap(QIcon(":/icons/spark-store.svg").pixmap(QSize(128, 128))); + + QFile lipsum(":/info/lipsum.txt"); + lipsum.open(QFile::ReadOnly); + mDescriptionText = new QLabel; + mDescriptionText->setText(lipsum.readAll()); + lipsum.close(); + + mIconLay->addWidget(mSpkIcon); + mIconLay->addWidget(mSpkVersion); + mIconLay->setAlignment(Qt::AlignVCenter); + AddLayout(mIconLay); + AddSpacing(18); + AddWidget(mDescriptionText); + SetMargin(18); + + GetTitleBar()->SetOperationButton(SpkTitleBar::OperationButton::Close); + GetTitleBar()->SetTitle(tr("About Spark Store")); +} + +SpkAbout::~SpkAbout() +{ +// delete mIconLay; +// delete mDescriptionText; } void SpkAbout::Show() { SpkAbout *b = new SpkAbout; - b->GetTitleBar()->SetOperationButton(SpkTitleBar::OperationButton::Close); - // TODO: Waiting for qygw + b->Exec(); delete b; diff --git a/gui/spkdialog.cpp b/gui/spkdialog.cpp index f995c29..61b9502 100644 --- a/gui/spkdialog.cpp +++ b/gui/spkdialog.cpp @@ -59,16 +59,29 @@ void SpkDialog::AddButton(QString text, SpkUi::SpkButtonStyle style) void SpkDialog::AddWidget(QWidget *w) { + // Adding a widget does not take the ownership. mWidgetsVLay->addWidget(w); mWidgetsList << w; mParentsList << w->parentWidget(); } +void SpkDialog::AddLayout(QLayout *w) +{ + mWidgetsVLay->addLayout(w); + mWidgetsList << w; + mParentsList << w->parentWidget(); +} + void SpkDialog::AddSpacing(int a) { mWidgetsVLay->addSpacing(a); } +void SpkDialog::SetMargin(int a) +{ + mWidgetsVLay->setMargin(a); +} + int SpkDialog::Exec() { QEventLoop loop; diff --git a/gui/spktitlebar.cpp b/gui/spktitlebar.cpp index 35c663b..a789e43 100644 --- a/gui/spktitlebar.cpp +++ b/gui/spktitlebar.cpp @@ -25,7 +25,7 @@ SpkTitleBar::SpkTitleBar(QWidget *parent) : QWidget(parent) mMainLayout->setSpacing(8); mBtnGroup->setSpacing(0); - mMainLayout->addSpacing(8); + mMainLayout->addSpacing(12); mMainLayout->addWidget(mIcon); mMainLayout->addWidget(mTitle); mMainLayout->addLayout(mUserSpace); diff --git a/gui/spkwindow.cpp b/gui/spkwindow.cpp index dcca330..0aade80 100644 --- a/gui/spkwindow.cpp +++ b/gui/spkwindow.cpp @@ -14,6 +14,7 @@ SpkWindow::SpkWindow(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, flags) { + mUseCustomEvents = SpkUi::DtkPlugin == nullptr; // Put to the front, to prevent warnings if(SpkUi::DtkPlugin && !qgetenv("SPARK_NO_DXCB").toInt()) SpkUi::DtkPlugin->addWindow(this, parent); // Register window to DXcb so we got Deepin else @@ -24,7 +25,6 @@ SpkWindow::SpkWindow(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(paren mMoving = mResizing = false; mCloseHook = nullptr; mMaximized = windowState().testFlag(Qt::WindowMaximized); - mUseCustomEvents = SpkUi::DtkPlugin == nullptr; PopulateUi(); } @@ -225,6 +225,20 @@ void SpkWindow::closeEvent(QCloseEvent *e) emit Closed(); } +void SpkWindow::paintEvent(QPaintEvent *e) +{ + //FIXME: DOESN'T WORK! +// QPainter painter(this); +// painter.setBrush(QBrush(Qt::NoBrush)); +// painter.setPen(QPen(SpkUi::ColorLine)); +// QRect rect = this->rect(); +// rect.setWidth(rect.width() - 2); +// rect.setHeight(rect.height() - 2); +// rect.adjust(-1, -1, 1, 1); +// painter.drawRect(rect); +// QWidget::paintEvent(e); +} + void SpkWindow::SetCornerRadius(int radius) { mCornerRadius = radius; diff --git a/inc/spkabout.h b/inc/spkabout.h index 7565e1a..c3c9cf8 100644 --- a/inc/spkabout.h +++ b/inc/spkabout.h @@ -1,11 +1,21 @@ #pragma once +#include +#include +#include #include "spkdialog.h" class SpkAbout : public SpkDialog { public: SpkAbout(QWidget* parent = nullptr); - void Show(); + ~SpkAbout(); + static void Show(); + + private: + QHBoxLayout *mIconLay; + QLabel *mSpkIcon; + QLabel *mSpkVersion; + QLabel *mDescriptionText; }; diff --git a/inc/spkdialog.h b/inc/spkdialog.h index 1c0ce1f..79e1a9d 100644 --- a/inc/spkdialog.h +++ b/inc/spkdialog.h @@ -15,7 +15,9 @@ class SpkDialog : public SpkWindow ~SpkDialog(); void AddButton(QString text, SpkUi::SpkButtonStyle style = SpkUi::SpkButtonStyle::Normal); void AddWidget(QWidget*); + void AddLayout(QLayout*); void AddSpacing(int); + void SetMargin(int); int Exec(); private slots: @@ -31,5 +33,5 @@ class SpkDialog : public SpkWindow QVBoxLayout *mMainVLay, *mWidgetsVLay; QHBoxLayout *mBtnLay; QButtonGroup *mBtnGroup; - QList mWidgetsList, mParentsList; + QList mWidgetsList, mParentsList; }; diff --git a/inc/spkmainwindow.h b/inc/spkmainwindow.h index e49fc7f..df80de7 100644 --- a/inc/spkmainwindow.h +++ b/inc/spkmainwindow.h @@ -17,6 +17,11 @@ class QNetworkReply; namespace SpkUi { + enum SpkStackedPages + { + PgQssTest // Must be at last + }; + class SpkSidebarSelector : public QObject { Q_OBJECT diff --git a/inc/spkstore.h b/inc/spkstore.h index a3fce4b..60aeb56 100644 --- a/inc/spkstore.h +++ b/inc/spkstore.h @@ -35,5 +35,5 @@ class SpkStore : public QObject SpkLogger *mLogger; SpkMainWindow *mMainWindow = nullptr; QNetworkAccessManager *mNetMgr = nullptr; - QString mDistroName, mApiRequestUrl, mUserAgentStr; + QString mDistroName, mApiRequestUrl, mUserAgentStr, mConfigPath; }; diff --git a/inc/spkwindow.h b/inc/spkwindow.h index fb0dabe..b3e4706 100644 --- a/inc/spkwindow.h +++ b/inc/spkwindow.h @@ -59,7 +59,7 @@ class SpkWindow : public QMainWindow void SetMouseCursor(Qt::Edges); void ResizeWindowByCursor(QPoint); void closeEvent(QCloseEvent *) override; -// void paintEvent(QPaintEvent *) override; + void paintEvent(QPaintEvent *) override; private: void PopulateUi(); diff --git a/src/main.cpp b/src/main.cpp index 7039f12..cf72fb9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4,6 +4,8 @@ #include "spkui_general.h" #include "spkstore.h" +#include "spkabout.h" + int main(int argc, char *argv[]) { QApplication a(argc, argv); @@ -12,5 +14,7 @@ int main(int argc, char *argv[]) SpkStore store(false, LogPath); + SpkAbout::Show(); + return QApplication::exec(); } diff --git a/src/spkstore.cpp b/src/spkstore.cpp index 07df5d6..d7454d6 100644 --- a/src/spkstore.cpp +++ b/src/spkstore.cpp @@ -26,10 +26,11 @@ SpkStore::SpkStore(bool aCli, QString &aLogPath) mConfigPath = QDir::homePath() + "/.config/spark-store/config"; //TODO: flexible config via CLI if(QFileInfo(mConfigPath).exists()) - mCfg = new QSettings(QDir::homePath() + "/.config/spark-store/config", QSettings::IniFormat); + mCfg = new QSettings(QDir::homePath() + "/.config/spark-store/config", QSettings::IniFormat, + this); else { - mCfg = new QSettings(":/info/default_config", QSettings::IniFormat); + mCfg = new QSettings(":/info/default_config", QSettings::IniFormat, this); #if 0 bool cfgDirOk; if(!qgetenv("SPARK_NO_INSTALL_CONFIG").toInt())