add global UI

This commit is contained in:
likehomedream 2023-06-28 17:44:21 +08:00
parent df5da75447
commit db08176957
3 changed files with 144 additions and 15 deletions

View File

@ -2,7 +2,8 @@
#include <QApplication> #include <QApplication>
#include <QDebug> #include <QDebug>
#include <QPalette> #include <QPalette>
#include <QButtonGroup>
#include <QIcon>
GlobalThemeWidget::GlobalThemeWidget(QWidget *parent) : WidgetBase(parent) GlobalThemeWidget::GlobalThemeWidget(QWidget *parent) : WidgetBase(parent)
{ {
this->initThemeLabel("创建全局主题"); this->initThemeLabel("创建全局主题");
@ -13,16 +14,18 @@ GlobalThemeWidget::GlobalThemeWidget(QWidget *parent) : WidgetBase(parent)
void GlobalThemeWidget::init() void GlobalThemeWidget::init()
{ {
QString name = qgetenv("USER");
m_globalpath = HOMEPATH +name + "/.cache/theme-build/global/";
m_allLayout->takeAt(1); m_allLayout->takeAt(1);
initglobalwidget(); initGlobalWidget();
int index = m_allLayout->indexOf(m_buttonWidget); int index = m_allLayout->indexOf(m_buttonWidget);
m_allLayout->insertWidget(index, m_globalwidget); m_allLayout->insertWidget(index, m_globalwidget);
} }
void GlobalThemeWidget::initglobalwidget() void GlobalThemeWidget::initGlobalWidget()
{ {
m_globalwidget = new QWidget(this); m_globalwidget = new QWidget(this);
m_globallayout = new QVBoxLayout(); m_globallayout = new QVBoxLayout();
@ -39,20 +42,31 @@ void GlobalThemeWidget::initglobalwidget()
label->setText("主题强调色:"); label->setText("主题强调色:");
m_accentcolorlayout->addWidget(label); m_accentcolorlayout->addWidget(label);
m_accentcolorlayout->addSpacing(10); m_accentcolorlayout->addSpacing(10);
QMap<QString, QPushButton*> colorButtonMap;
QButtonGroup * box = new QButtonGroup;
box->setExclusive(true);
m_colorlist = QStringList{"#3790fa", "#7873f5", "#eb3096", "#f3222d", "#f68c27", "#f9c53d", "#52c429"}; m_colorlist = QStringList{"#3790fa", "#7873f5", "#eb3096", "#f3222d", "#f68c27", "#f9c53d", "#52c429"};
m_numberList = QStringList{"daybreakBlue", "jamPurple", "magenta", "sunRed", "sunsetOrange", "dustGold", "polarGreen"};
for (const QString& color : m_colorlist) { for (int i = 0; i < m_colorlist.size(); ++i) {
QPushButton* pushButton = new QPushButton(); QPushButton *button = new QPushButton;
pushButton->setProperty("isRoundButton", true); button->setFixedSize(QSize(24, 24));
button->setStyleSheet(QString("background-color:%1").arg(m_colorlist.at(i)));
pushButton->setFixedSize(QSize(24,24)); if (m_accentcolorlayout) {
pal.setColor(QPalette::Button,QColor(color)); m_accentcolorlayout->addWidget(button);
pushButton->setPalette(pal); }
colorButtonMap.insert(color, pushButton); m_accentcolorlayout->addWidget(button);
m_accentcolorlayout->addWidget(pushButton); box->addButton(button, i);
} }
QObject::connect(box, QOverload<int>::of(&QButtonGroup::buttonClicked), [&](int id) {
if (id >= 0 && id < m_numberList.size()) {
m_color = m_numberList.at(id);
qDebug() << m_color;
}
});
m_accentcolorlayout->addStretch(1); m_accentcolorlayout->addStretch(1);
m_coverwidget = new QWidget(m_globalwidget); m_coverwidget = new QWidget(m_globalwidget);
@ -81,6 +95,11 @@ void GlobalThemeWidget::initglobalwidget()
buttonlayout->addWidget(iconLabel); buttonlayout->addWidget(iconLabel);
buttonlayout->addWidget(textLabel); buttonlayout->addWidget(textLabel);
buttonlayout->addStretch(1); buttonlayout->addStretch(1);
connect(m_coverbutton,&QPushButton::clicked,[=](){
importCover();
});
m_coverlayout->addWidget(coverlabel); m_coverlayout->addWidget(coverlabel);
m_coverlayout->addWidget(m_coverbutton); m_coverlayout->addWidget(m_coverbutton);
m_coverlayout->addStretch(1); m_coverlayout->addStretch(1);
@ -109,6 +128,9 @@ void GlobalThemeWidget::initglobalwidget()
buttonlayout1->addWidget(iconLabel1); buttonlayout1->addWidget(iconLabel1);
buttonlayout1->addWidget(textLabel1); buttonlayout1->addWidget(textLabel1);
buttonlayout1->addStretch(1); buttonlayout1->addStretch(1);
connect(m_wallpaperbutton,&QPushButton::clicked,[=](){
importWallpaper();
});
m_wallpaperlayout->addWidget(wallpaperlabel); m_wallpaperlayout->addWidget(wallpaperlabel);
@ -119,4 +141,99 @@ void GlobalThemeWidget::initglobalwidget()
m_globallayout->addWidget(m_coverwidget); m_globallayout->addWidget(m_coverwidget);
m_globallayout->addWidget(m_wallpaperwidget); m_globallayout->addWidget(m_wallpaperwidget);
m_globalwidget->setLayout(m_globallayout); m_globalwidget->setLayout(m_globallayout);
}
void GlobalThemeWidget::importCover()
{
QString filters = tr("Cover files(*.png *.jpg)");
m_fd= new QFileDialog(this);
m_fd->setFileMode(QFileDialog::Directory);
m_fd->setViewMode(QFileDialog::List);
m_fd->setNameFilter(filters);
m_fd->setFileMode(QFileDialog::ExistingFile);
m_fd->setDirectory(HOMEPATH+qgetenv("USER"));
m_fd->setWindowTitle(tr("Select Import Wallpapers"));
m_fd->setLabelText(QFileDialog::Accept, tr("Select"));
m_fd->setLabelText(QFileDialog::Reject, tr("Cancel"));
connect(m_fd, &QFileDialog::fileSelected, this, [this](const QString &file){
QFileInfo fileInfo(file);
QPixmap pixmap(fileInfo.absoluteFilePath());
m_coverbutton->setIcon(pixmap);
m_coverbutton->setIconSize(m_coverbutton->size());
QLayout* layout = m_coverbutton->layout();
if (layout != nullptr) {
QLayoutItem* item;
while ((item = layout->takeAt(0)) != nullptr) {
delete item->widget();
delete item;
}
delete layout;
}
});
openFileDialog();
}
void GlobalThemeWidget::importWallpaper()
{
QString filters = tr("Wallpaper files(*.png *.jpg)");
m_fd= new QFileDialog(this);
m_fd->setFileMode(QFileDialog::Directory);
m_fd->setViewMode(QFileDialog::List);
m_fd->setNameFilter(filters);
m_fd->setFileMode(QFileDialog::ExistingFile);
m_fd->setDirectory(HOMEPATH+qgetenv("USER"));
m_fd->setWindowTitle(tr("Select Import Wallpapers"));
m_fd->setLabelText(QFileDialog::Accept, tr("Select"));
m_fd->setLabelText(QFileDialog::Reject, tr("Cancel"));
connect(m_fd, &QFileDialog::fileSelected, this, [this](const QString &file){
QFileInfo fileInfo(file);
QPixmap pixmap(fileInfo.absoluteFilePath());
m_wallpaperbutton->setIcon(pixmap);
m_wallpaperbutton->setIconSize(m_wallpaperbutton->size());
QLayout* layout = m_wallpaperbutton->layout();
if (layout != nullptr) {
QLayoutItem* item;
while ((item = layout->takeAt(0)) != nullptr) {
delete item->widget();
delete item;
}
delete layout;
}
});
openFileDialog();
}
void GlobalThemeWidget::openFileDialog()
{
if (m_fd->exec() != QDialog::Accepted)
return;
QString path = m_globalpath;
QDir dir(path);
if (!dir.exists()) {
dir.mkpath(path);
}
QString sourceFilePath = m_fd->selectedFiles().first();
if (sourceFilePath.isEmpty())
return;
QFileInfo fileInfo(sourceFilePath);
QString destinationFolderPath = m_globalpath; // 替换为目标文件夹的路径
QString destinationFilePath = destinationFolderPath + "/" + fileInfo.fileName();
QFile::copy(sourceFilePath, destinationFilePath);
} }

View File

@ -5,6 +5,7 @@
#include "widgetbase.h" #include "widgetbase.h"
#include <QWidget> #include <QWidget>
#include <QMap> #include <QMap>
#include <QFileDialog>
class GlobalThemeWidget : public WidgetBase class GlobalThemeWidget : public WidgetBase
{ {
@ -12,9 +13,14 @@ class GlobalThemeWidget : public WidgetBase
public: public:
explicit GlobalThemeWidget(QWidget *parent = nullptr); explicit GlobalThemeWidget(QWidget *parent = nullptr);
void init(); void init();
void initglobalwidget(); void initGlobalWidget();
void importCover();
void importWallpaper();
void openFileDialog();
signals: signals:
private: private:
QString m_globalpath = "";
QWidget *m_globalwidget; QWidget *m_globalwidget;
QVBoxLayout *m_globallayout; QVBoxLayout *m_globallayout;
QWidget *m_accentcolorwidget; QWidget *m_accentcolorwidget;
@ -22,7 +28,8 @@ private:
QMap<QString, QPushButton*> m_colorbuttonmap; QMap<QString, QPushButton*> m_colorbuttonmap;
QMap<QString, QColor> m_colormap; QMap<QString, QColor> m_colormap;
QStringList m_colorlist; QStringList m_colorlist;
QString m_color = "";
QStringList m_numberList;
QWidget *m_coverwidget; QWidget *m_coverwidget;
QHBoxLayout *m_coverlayout; QHBoxLayout *m_coverlayout;
QPushButton *m_coverbutton; QPushButton *m_coverbutton;
@ -30,6 +37,10 @@ private:
QWidget *m_wallpaperwidget; QWidget *m_wallpaperwidget;
QHBoxLayout *m_wallpaperlayout; QHBoxLayout *m_wallpaperlayout;
QPushButton *m_wallpaperbutton; QPushButton *m_wallpaperbutton;
QFileDialog *m_fd;
QString m_iconpath;
private slots: private slots:

View File

@ -68,6 +68,7 @@ void WallpaperthemeWidget::importWallpaper()
m_fd->setViewMode(QFileDialog::List); m_fd->setViewMode(QFileDialog::List);
m_fd->setNameFilter(filters); m_fd->setNameFilter(filters);
m_fd->setFileMode(QFileDialog::ExistingFile); m_fd->setFileMode(QFileDialog::ExistingFile);
m_fd->setDirectory(HOMEPATH+qgetenv("USER"));
m_fd->setWindowTitle(tr("Select Import Wallpapers")); m_fd->setWindowTitle(tr("Select Import Wallpapers"));
m_fd->setLabelText(QFileDialog::Accept, tr("Select")); m_fd->setLabelText(QFileDialog::Accept, tr("Select"));
m_fd->setLabelText(QFileDialog::Reject, tr("Cancel")); m_fd->setLabelText(QFileDialog::Reject, tr("Cancel"));