Browse Source

1.0 finish

lennlouis 2 weeks ago
parent
commit
c84b88a422

+ 31 - 14
core_form/frmsetting/frmsetting.cpp

@@ -2,12 +2,11 @@
 #include "ui_frmsetting.h"
 #include <QDebug>
 
-FrmSetting::FrmSetting(FileConfigDecode* fileConfig, QWidget *parent)
+FrmSetting::FrmSetting(QWidget *parent)
     : QWidget(parent)
     , ui(new Ui::FrmSetting)
 {
     ui->setupUi(this);
-    this->fileConfig = fileConfig;
     initForm();
     initWidget();
 }
@@ -43,13 +42,21 @@ void FrmSetting::initForm()
 
 
     serversetting = new ServerSetting();
+    connect(serversetting, &ServerSetting::signal_updateServerConfig, this, &FrmSetting::slot_updateServerConfig);
     serversetting->hide();
 
+    QString address = FileConfigDecode::getInstance()->getAddress();
+    QString username = FileConfigDecode::getInstance()->getUserName();
+    QString password = FileConfigDecode::getInstance()->getPassword();
+
+    serversetting->setAddress(address);
+    serversetting->setPassword(password);
+    serversetting->setUserName(username);
 }
 
 void FrmSetting::initWidget()
 {
-    if (fileConfig->getRename()) {
+    if (FileConfigDecode::getInstance()->getRename()) {
         ui->labRenameOpen->setStyleSheet(OPENQSS);
         ui->labRenameClose->setStyleSheet(CLOSEQSS);
     }
@@ -57,7 +64,7 @@ void FrmSetting::initWidget()
         ui->labRenameOpen->setStyleSheet(CLOSEQSS);
         ui->labRenameClose->setStyleSheet(OPENQSS);
     }
-    if (fileConfig->getAutoSetup()) {
+    if (FileConfigDecode::getInstance()->getAutoSetup()) {
         ui->labAutoSetupOpen->setStyleSheet(OPENQSS);
         ui->labAutoSetupClose->setStyleSheet(CLOSEQSS);
     }
@@ -65,7 +72,7 @@ void FrmSetting::initWidget()
         ui->labAutoSetupOpen->setStyleSheet(CLOSEQSS);
         ui->labAutoSetupClose->setStyleSheet(OPENQSS);
     }
-    if (fileConfig->getTimeRename()) {
+    if (FileConfigDecode::getInstance()->getTimeRename()) {
         ui->labTimeRenameOpen->setStyleSheet(OPENQSS);
         ui->labTimeRenameClose->setStyleSheet(CLOSEQSS);
     }
@@ -73,7 +80,7 @@ void FrmSetting::initWidget()
         ui->labTimeRenameOpen->setStyleSheet(CLOSEQSS);
         ui->labTimeRenameClose->setStyleSheet(OPENQSS);
     }
-    if (fileConfig->getAutoCopy()) {
+    if (FileConfigDecode::getInstance()->getAutoCopy()) {
         ui->labEnableSsl->setStyleSheet(OPENQSS);
         ui->labEnableSsl->setStyleSheet(CLOSEQSS);
     }
@@ -82,10 +89,10 @@ void FrmSetting::initWidget()
         ui->labEnableSsl->setStyleSheet(OPENQSS);
     }
 
-    ui->schRename->setChecked(fileConfig->getRename());
-    ui->schAutoSetup->setChecked(fileConfig->getAutoSetup());
-    ui->schTimeRename->setChecked(fileConfig->getTimeRename());
-    ui->schEnableSsl->setChecked(fileConfig->getAutoCopy());
+    ui->schRename->setChecked(FileConfigDecode::getInstance()->getRename());
+    ui->schAutoSetup->setChecked(FileConfigDecode::getInstance()->getAutoSetup());
+    ui->schTimeRename->setChecked(FileConfigDecode::getInstance()->getTimeRename());
+    ui->schEnableSsl->setChecked(FileConfigDecode::getInstance()->getAutoCopy());
 
     connect(ui->schRename, &SwitchButton::checkedChanged, this, &FrmSetting::schRenameSlot);
     connect(ui->schAutoSetup, &SwitchButton::checkedChanged, this, &FrmSetting::schAutoSetup);
@@ -97,28 +104,31 @@ void FrmSetting::initWidget()
 
 void FrmSetting::schRenameSlot(bool checked)
 {
-    fileConfig->setRename(checked);
+    FileConfigDecode::getInstance()->setRename(checked);
     ui->labRenameOpen->setStyleSheet(checked?OPENQSS:CLOSEQSS);
     ui->labRenameClose->setStyleSheet(checked?CLOSEQSS:OPENQSS);
 }
 
 void FrmSetting::schAutoSetup(bool checked)
 {
-    fileConfig->setAutoSetup(checked);
+    FileConfigDecode::getInstance()->setAutoSetup(checked);
     ui->labAutoSetupOpen->setStyleSheet(checked?OPENQSS:CLOSEQSS);
     ui->labAutoSetupClose->setStyleSheet(checked?CLOSEQSS:OPENQSS);
 }
 
 void FrmSetting::schTimeRename(bool checked)
 {
-    fileConfig->setTimeRename(checked);
+    if (ui->schRename->getChecked())
+        FileConfigDecode::getInstance()->setTimeRename(checked, 1);
+    else
+        FileConfigDecode::getInstance()->setTimeRename(checked, 0);
     ui->labTimeRenameOpen->setStyleSheet(checked?OPENQSS:CLOSEQSS);
     ui->labTimeRenameClose->setStyleSheet(checked?CLOSEQSS:OPENQSS);
 }
 
 void FrmSetting::schEnableSsl(bool checked)
 {
-    fileConfig->setAutoCopy(checked);
+    FileConfigDecode::getInstance()->setAutoCopy(checked);
     ui->labEnableSslOpen->setStyleSheet(checked?OPENQSS:CLOSEQSS);
     ui->labEnableSslClose->setStyleSheet(checked?CLOSEQSS:OPENQSS);
 
@@ -126,5 +136,12 @@ void FrmSetting::schEnableSsl(bool checked)
 
 }
 
+void FrmSetting::slot_updateServerConfig(QString address, QString username, QString password)
+{
+    FileConfigDecode::getInstance()->setAddress(address);
+    FileConfigDecode::getInstance()->setUserName(username);
+    FileConfigDecode::getInstance()->setPassword(password);
+}
+
 
 

+ 4 - 2
core_form/frmsetting/frmsetting.h

@@ -24,7 +24,7 @@ class FrmSetting : public QWidget
     Q_OBJECT
 
 public:
-    explicit FrmSetting(FileConfigDecode* fileConfig, QWidget *parent = nullptr);
+    explicit FrmSetting(QWidget *parent = nullptr);
     ~FrmSetting();
 
 private:
@@ -38,9 +38,11 @@ private slots:
     void schTimeRename(bool checked);
     void schEnableSsl(bool checked);
 
+    void slot_updateServerConfig(QString address, QString username, QString password);
+
 private:
     Ui::FrmSetting *ui;
-    FileConfigDecode* fileConfig = nullptr;
+    // FileConfigDecode* fileConfig = nullptr;
     ServerSetting* serversetting;
 };
 

+ 21 - 18
core_form/frmsetting/frmsetting.ui

@@ -26,7 +26,7 @@
      <item>
       <spacer name="horizontalSpacer">
        <property name="orientation">
-        <enum>Qt::Horizontal</enum>
+        <enum>Qt::Orientation::Horizontal</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
@@ -47,7 +47,7 @@
        <property name="minimumSize">
         <size>
          <width>100</width>
-         <height>35</height>
+         <height>25</height>
         </size>
        </property>
        <property name="text">
@@ -66,7 +66,7 @@
       </sizepolicy>
      </property>
      <property name="orientation">
-      <enum>Qt::Horizontal</enum>
+      <enum>Qt::Orientation::Horizontal</enum>
      </property>
     </widget>
    </item>
@@ -82,7 +82,7 @@
      <item>
       <spacer name="horizontalSpacer_2">
        <property name="orientation">
-        <enum>Qt::Horizontal</enum>
+        <enum>Qt::Orientation::Horizontal</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
@@ -115,8 +115,8 @@
        </property>
        <property name="maximumSize">
         <size>
-         <width>200</width>
-         <height>30</height>
+         <width>100</width>
+         <height>25</height>
         </size>
        </property>
       </widget>
@@ -139,7 +139,7 @@
       </sizepolicy>
      </property>
      <property name="orientation">
-      <enum>Qt::Horizontal</enum>
+      <enum>Qt::Orientation::Horizontal</enum>
      </property>
     </widget>
    </item>
@@ -155,7 +155,7 @@
      <item>
       <spacer name="horizontalSpacer_3">
        <property name="orientation">
-        <enum>Qt::Horizontal</enum>
+        <enum>Qt::Orientation::Horizontal</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
@@ -188,8 +188,8 @@
        </property>
        <property name="maximumSize">
         <size>
-         <width>200</width>
-         <height>30</height>
+         <width>100</width>
+         <height>25</height>
         </size>
        </property>
       </widget>
@@ -212,7 +212,7 @@
       </sizepolicy>
      </property>
      <property name="orientation">
-      <enum>Qt::Horizontal</enum>
+      <enum>Qt::Orientation::Horizontal</enum>
      </property>
     </widget>
    </item>
@@ -228,7 +228,7 @@
      <item>
       <spacer name="horizontalSpacer_4">
        <property name="orientation">
-        <enum>Qt::Horizontal</enum>
+        <enum>Qt::Orientation::Horizontal</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
@@ -261,8 +261,8 @@
        </property>
        <property name="maximumSize">
         <size>
-         <width>200</width>
-         <height>30</height>
+         <width>100</width>
+         <height>25</height>
         </size>
        </property>
       </widget>
@@ -285,7 +285,7 @@
       </sizepolicy>
      </property>
      <property name="orientation">
-      <enum>Qt::Horizontal</enum>
+      <enum>Qt::Orientation::Horizontal</enum>
      </property>
     </widget>
    </item>
@@ -293,6 +293,9 @@
     <layout class="QHBoxLayout" name="horizontalLayout_5">
      <item>
       <widget class="QLabel" name="labEnableSsl">
+       <property name="styleSheet">
+        <string notr="true">color: rgb(255, 255, 255);</string>
+       </property>
        <property name="text">
         <string>开启SSL</string>
        </property>
@@ -301,7 +304,7 @@
      <item>
       <spacer name="horizontalSpacer_5">
        <property name="orientation">
-        <enum>Qt::Horizontal</enum>
+        <enum>Qt::Orientation::Horizontal</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
@@ -334,8 +337,8 @@
        </property>
        <property name="maximumSize">
         <size>
-         <width>200</width>
-         <height>30</height>
+         <width>100</width>
+         <height>25</height>
         </size>
        </property>
       </widget>

+ 150 - 2
core_form/frmupload/frmupload.cpp

@@ -2,6 +2,7 @@
 #include "ui_frmupload.h"
 #include <QtDebug>
 #include <QImageReader>
+#include <QStandardPaths>
 
 FrmUpload::FrmUpload(QWidget *parent)
     : QWidget(parent)
@@ -11,6 +12,29 @@ FrmUpload::FrmUpload(QWidget *parent)
     initFrom();
     initWidget();
     connect(TCHttpService::getInstance(), &TCHttpService::signal_uploadFileSec, this, &FrmUpload::slot_uploadFileSec);
+
+    QButtonGroup *buttonGroup = new QButtonGroup(this);
+    buttonGroup->setExclusive(true); // 确保每次只有一个按钮被选中
+
+    // 添加按钮到组中
+    buttonGroup->addButton(ui->btnHTML);
+    buttonGroup->addButton(ui->btnMarkdown);
+    buttonGroup->addButton(ui->btnUBB);
+    buttonGroup->addButton(ui->btnUrl);
+
+    // 设置样式表
+    QString buttonStyle = R"(
+    QPushButton {
+        color: black;
+    }
+    QPushButton:checked {
+        color: #409EFF
+    }
+)";
+    ui->btnHTML->setStyleSheet(buttonStyle);
+    ui->btnMarkdown->setStyleSheet(buttonStyle);
+    ui->btnUBB->setStyleSheet(buttonStyle);
+    ui->btnUrl->setStyleSheet(buttonStyle);
 }
 
 FrmUpload::~FrmUpload()
@@ -20,14 +44,26 @@ FrmUpload::~FrmUpload()
 
 void FrmUpload::slot_uploadFileSec(QString url)
 {
+    qDebug() << "slot_uploadFileSec:" << url;
     QClipboard* clipboard = QApplication::clipboard();
 
-    if (copyState == 0) {
+
+    if (copyType == COPY_TYPE_MARKDOWN) {
         clipboard->setText(QString("![](%1)").arg(url));
     }
-    else {
+    if (copyType == COPY_TYPE_URL) {
         clipboard->setText(url);
     }
+    if (copyType == COPY_TYPE_UBB) {
+        // [IMG]https://imagehyj.oss-cn-hangzhou.aliyuncs.com/blog/logo512.png[/IMG]
+        clipboard->setText(QString("[IMG]%1[/IMG]").arg(url));
+    }
+    if (copyType == COPY_TYPE_HTML) {
+        clipboard->setText(QString("<img src=\"%1\"/>").arg(url));
+
+        // QThread::sleep(50);
+    }
+
 }
 
 bool FrmUpload::eventFilter(QObject *watched, QEvent *event)
@@ -106,12 +142,19 @@ void FrmUpload::initFrom()
     ui->btnMarkdown->setText("Markdown");
     ui->btnUrl->setText("URL");
     ui->btnUBB->setText("UBB");
+
+    ui->btnMarkdown->setChecked(true);
+    ui->btnHTML->setChecked(false);
+    ui->btnUBB->setChecked(false);
+    ui->btnUrl->setChecked(false);
 }
 
 void FrmUpload::initWidget()
 {
     ui->frmUpload->installEventFilter(this);
     this->setAcceptDrops(true);
+    setWindowFlags(Qt::FramelessWindowHint); // 移除系统边框
+    setAttribute(Qt::WA_TranslucentBackground); // 启用透明背景
 //    ui->frmUpload->setAcceptDrops(true);
 }
 
@@ -127,3 +170,108 @@ void FrmUpload::uploadFiles(QStringList fileList)
     // TCHttpService::getInstance()->apiMyfileNormal();
 
 }
+
+void FrmUpload::on_btnFastUpload_clicked()
+{
+    // QString addDataPath = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);
+    // QString cacheDirPath = addDataPath + "/cache/";
+    QDir cacheDir(QStandardPaths::writableLocation(QStandardPaths::CacheLocation));
+    if (!cacheDir.exists()) {
+        cacheDir.mkpath(".");
+    }
+    QClipboard* clipboard = QApplication::clipboard();
+    const QMimeData* mimeData = clipboard->mimeData();
+
+    if (mimeData->hasImage()) {
+        QImage image = clipboard->image();
+        if (!image.isNull()) {
+            RenameType renametype = FileConfigDecode::getInstance()->getRenameType();
+            qDebug() << "renameType:" << renametype;
+            if (renametype == RENAME_TYPE_NORMAL) {
+                bool ok;
+                QString timestamp = QDateTime::currentDateTime().toString("yyyyMMdd_hhmmsszzz");
+                QString text = QInputDialog::getText(this, "重命名图片", "输入文件名", QLineEdit::Normal, timestamp, &ok);
+                if (ok && !text.isEmpty()) {
+                    QString filePath = cacheDir.filePath(text + ".png");
+
+                    if (image.save(filePath, "PNG")) {
+                        TCHttpService::getInstance()->apiUpload(filePath);
+                    }
+                }
+            }
+
+            if (renametype == RENAME_TYPE_TIME) {
+                qDebug() << "time rename";
+                QString timestamp = QDateTime::currentDateTime().toString("yyyyMMdd_hhmmsszzz");
+                QString filePath = cacheDir.filePath(timestamp + ".png");
+
+                if (image.save(filePath, "PNG")) {
+                    TCHttpService::getInstance()->apiUpload(filePath);
+                }
+            }
+            else {
+                QString timestamp = QDateTime::currentDateTime().toString("yyyyMMdd_hhmmsszzz");
+                QString filePath = cacheDir.filePath("clipboard_" + timestamp + ".png");
+
+                if (image.save(filePath, "PNG")) {
+                    TCHttpService::getInstance()->apiUpload(filePath);
+                }
+            }
+
+        }
+        clipboard->clear();
+    }
+}
+
+
+void FrmUpload::on_btnMarkdown_clicked()
+{
+    if (!ui->btnMarkdown->isChecked())
+        return;
+    copyType = COPY_TYPE_MARKDOWN;
+    ui->btnMarkdown->setChecked(true);
+    ui->btnUrl->setChecked(false);
+    ui->btnHTML->setChecked(false);
+    ui->btnUBB->setChecked(false);
+    qDebug() << copyType;
+}
+
+
+void FrmUpload::on_btnUrl_clicked()
+{
+    if (!ui->btnUrl->isChecked())
+        return;
+    copyType = COPY_TYPE_URL;
+    ui->btnMarkdown->setChecked(false);
+    ui->btnUrl->setChecked(true);
+    ui->btnHTML->setChecked(false);
+    ui->btnUBB->setChecked(false);
+    qDebug() << copyType;
+}
+
+
+void FrmUpload::on_btnHTML_clicked()
+{
+    if (!ui->btnHTML->isChecked())
+        return;
+    copyType = COPY_TYPE_HTML;
+    ui->btnMarkdown->setChecked(false);
+    ui->btnUrl->setChecked(false);
+    ui->btnHTML->setChecked(true);
+    ui->btnUBB->setChecked(false);
+    qDebug() << copyType;
+}
+
+
+void FrmUpload::on_btnUBB_clicked()
+{
+    if (!ui->btnUBB->isChecked())
+        return;
+    copyType = COPY_TYPE_UBB;
+    ui->btnMarkdown->setChecked(false);
+    ui->btnUrl->setChecked(false);
+    ui->btnHTML->setChecked(false);
+    ui->btnUBB->setChecked(true);
+    qDebug() << copyType;
+}
+

+ 28 - 1
core_form/frmupload/frmupload.h

@@ -12,10 +12,26 @@
 #include <tchttpservice.h>
 #include <QFileInfo>
 #include <QClipboard>
+#include <QPixmap>
+#include <QMimeData>
+#include <QDebug>
+#include <QBuffer>
+#include <QDateTime>
+#include <QInputDialog>
+#include <QButtonGroup>
+#include <QThread>
+#include "fileconfigdecode.h"
 #include "tchttpservice.h"
 
 #define DEBUG   1
 
+typedef enum{
+    COPY_TYPE_MARKDOWN = 0,
+    COPY_TYPE_URL,
+    COPY_TYPE_UBB,
+    COPY_TYPE_HTML
+} CopyType;
+
 namespace Ui {
 class FrmUpload;
 }
@@ -36,12 +52,23 @@ protected:
     virtual void dragEnterEvent(QDragEnterEvent *event) override;
     virtual void dropEvent(QDropEvent *event) override;
 
+private slots:
+    void on_btnFastUpload_clicked();
+
+    void on_btnMarkdown_clicked();
+
+    void on_btnUrl_clicked();
+
+    void on_btnHTML_clicked();
+
+    void on_btnUBB_clicked();
+
 private:
     void initFrom();
     void initWidget();
     void uploadFiles(QStringList fileList);
     // 0 md 1 url
-    int copyState = 0;
+    CopyType copyType = COPY_TYPE_MARKDOWN;
 
 private:
     Ui::FrmUpload *ui;

+ 33 - 6
core_form/frmupload/frmupload.ui

@@ -17,7 +17,7 @@
    <item>
     <widget class="QLabel" name="labTitle">
      <property name="text">
-      <string>LennDFS 快捷助手</string>
+      <string>LennDFS PicPanel</string>
      </property>
      <property name="alignment">
       <set>Qt::AlignmentFlag::AlignCenter</set>
@@ -208,12 +208,18 @@
            <property name="minimumSize">
             <size>
              <width>100</width>
-             <height>20</height>
+             <height>25</height>
             </size>
            </property>
+           <property name="cursor">
+            <cursorShape>PointingHandCursor</cursorShape>
+           </property>
            <property name="text">
             <string>PushButton</string>
            </property>
+           <property name="checkable">
+            <bool>true</bool>
+           </property>
           </widget>
          </item>
          <item>
@@ -227,12 +233,18 @@
            <property name="minimumSize">
             <size>
              <width>75</width>
-             <height>20</height>
+             <height>25</height>
             </size>
            </property>
+           <property name="cursor">
+            <cursorShape>PointingHandCursor</cursorShape>
+           </property>
            <property name="text">
             <string>PushButton</string>
            </property>
+           <property name="checkable">
+            <bool>true</bool>
+           </property>
           </widget>
          </item>
          <item>
@@ -246,12 +258,18 @@
            <property name="minimumSize">
             <size>
              <width>75</width>
-             <height>20</height>
+             <height>25</height>
             </size>
            </property>
+           <property name="cursor">
+            <cursorShape>PointingHandCursor</cursorShape>
+           </property>
            <property name="text">
             <string>PushButton</string>
            </property>
+           <property name="checkable">
+            <bool>true</bool>
+           </property>
           </widget>
          </item>
          <item>
@@ -265,12 +283,18 @@
            <property name="minimumSize">
             <size>
              <width>100</width>
-             <height>20</height>
+             <height>25</height>
             </size>
            </property>
+           <property name="cursor">
+            <cursorShape>PointingHandCursor</cursorShape>
+           </property>
            <property name="text">
             <string>PushButton</string>
            </property>
+           <property name="checkable">
+            <bool>true</bool>
+           </property>
           </widget>
          </item>
         </layout>
@@ -313,9 +337,12 @@
          <property name="minimumSize">
           <size>
            <width>100</width>
-           <height>20</height>
+           <height>25</height>
           </size>
          </property>
+         <property name="cursor">
+          <cursorShape>PointingHandCursor</cursorShape>
+         </property>
          <property name="text">
           <string>PushButton</string>
          </property>

+ 42 - 1
core_form/serversetting/serversetting.cpp

@@ -15,10 +15,27 @@ ServerSetting::~ServerSetting()
     delete ui;
 }
 
+void ServerSetting::setAddress(QString address)
+{
+    ui->ledAddress->setText(address);
+}
+
+void ServerSetting::setUserName(QString username)
+{
+    ui->ledPort->setText(username);
+}
+
+void ServerSetting::setPassword(QString password)
+{
+    ui->ledPwd->setText(password);
+}
+
 void ServerSetting::initForm()
 {
+
     this->setWindowFlag(Qt::FramelessWindowHint);
-    this->setWindowFlags(this->windowFlags() | Qt::WindowSystemMenuHint | Qt::WindowMaximizeButtonHint);
+    this->setWindowFlags(this->windowFlags() | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint);
+    setAttribute(Qt::WA_TranslucentBackground);
     ui->ledAddress->setPlaceholderText("example.com/ip:port");
     ui->ledPort->setPlaceholderText("admin");
 }
@@ -32,6 +49,8 @@ void ServerSetting::initWidget()
         emit okClicked(ui->ledAddress->text(), ui->ledPort->text().toInt());
         this->hide();
     });
+
+    this->setWindowModality(Qt::ApplicationModal);
 }
 
 void ServerSetting::on_btnOk_clicked()
@@ -44,5 +63,27 @@ void ServerSetting::on_btnOk_clicked()
     QString userName = ui->ledPort->text();
     QString password = ui->ledPwd->text();
 
+    emit signal_updateServerConfig(address, userName, password);
+
     TCHttpService::getInstance()->setConfiguration(userName, password, address);
 }
+
+void ServerSetting::paintEvent(__attribute__((unused))QPaintEvent *event)
+{
+//     QStyleOption opt;
+// #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
+//     opt.init(this);
+// #else
+//     opt.initFrom(this);
+// #endif
+//     QPainter painter(this);
+//     style()->drawPrimitive(QStyle::PE_Widget, &opt, &painter, this);
+
+    QPainter painter(this);
+    painter.setRenderHint(QPainter::Antialiasing); // 抗锯齿
+
+    // 绘制圆角背景
+    QPainterPath path;
+    path.addRoundedRect(rect(), 15, 15); // 30px 圆角半径
+    painter.fillPath(path, Qt::white);   // 填充白色
+}

+ 14 - 0
core_form/serversetting/serversetting.h

@@ -2,6 +2,11 @@
 #define SERVERSETTING_H
 
 #include <QWidget>
+#include <QObject>
+#include <QPaintEvent>
+#include <QPainter>
+#include <QStyleOption>
+#include <QPainterPath>
 #include "tchttpservice.h"
 
 namespace Ui {
@@ -16,15 +21,24 @@ public:
     explicit ServerSetting(QWidget *parent = nullptr);
     ~ServerSetting();
 
+    void setAddress(QString address);
+    void setUserName(QString username);
+    void setPassword(QString password);
+
 signals:
     void okClicked(QString addr, quint16 port);
 
+    void signal_updateServerConfig(QString address, QString username, QString password);
+
 private slots:
     void on_btnOk_clicked();
 
 private:
     Ui::ServerSetting *ui;
 
+protected:
+    virtual void paintEvent(QPaintEvent* event);
+
 private:
     void initForm();
     void initWidget();

+ 69 - 31
core_form/serversetting/serversetting.ui

@@ -7,12 +7,15 @@
     <x>0</x>
     <y>0</y>
     <width>281</width>
-    <height>188</height>
+    <height>121</height>
    </rect>
   </property>
   <property name="windowTitle">
    <string>Form</string>
   </property>
+  <property name="styleSheet">
+   <string notr="true"/>
+  </property>
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
     <layout class="QFormLayout" name="formLayout">
@@ -44,16 +47,23 @@
       </widget>
      </item>
      <item row="2" column="1">
-      <widget class="QLineEdit" name="ledPwd"/>
+      <widget class="QLineEdit" name="ledPwd">
+       <property name="inputMethodHints">
+        <set>Qt::InputMethodHint::ImhHiddenText|Qt::InputMethodHint::ImhNoAutoUppercase|Qt::InputMethodHint::ImhNoPredictiveText|Qt::InputMethodHint::ImhSensitiveData</set>
+       </property>
+       <property name="echoMode">
+        <enum>QLineEdit::EchoMode::Password</enum>
+       </property>
+      </widget>
      </item>
     </layout>
    </item>
    <item>
-    <layout class="QHBoxLayout" name="horizontalLayout">
+    <layout class="QHBoxLayout" name="horizontalLayout_2">
      <item>
       <spacer name="horizontalSpacer">
        <property name="orientation">
-        <enum>Qt::Horizontal</enum>
+        <enum>Qt::Orientation::Horizontal</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
@@ -64,33 +74,61 @@
       </spacer>
      </item>
      <item>
-      <widget class="QPushButton" name="btnCencel">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="text">
-        <string>取消</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QPushButton" name="btnOk">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="styleSheet">
-        <string notr="true"/>
-       </property>
-       <property name="text">
-        <string>确定</string>
-       </property>
-      </widget>
+      <layout class="QHBoxLayout" name="horizontalLayout">
+       <item>
+        <widget class="QPushButton" name="btnCencel">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>50</width>
+           <height>35</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>100</width>
+           <height>50</height>
+          </size>
+         </property>
+         <property name="text">
+          <string>取消</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QPushButton" name="btnOk">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>50</width>
+           <height>35</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>100</width>
+           <height>50</height>
+          </size>
+         </property>
+         <property name="styleSheet">
+          <string notr="true"/>
+         </property>
+         <property name="text">
+          <string>确定</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
      </item>
     </layout>
    </item>

+ 89 - 11
core_support/fileconfigdecode/fileconfigdecode.cpp

@@ -1,15 +1,30 @@
 #include "fileconfigdecode.h"
 #include <QDebug>
 
+QScopedPointer<FileConfigDecode> FileConfigDecode::m_instance;
+
 FileConfigDecode::FileConfigDecode()
 {
+    // if (m_instance.isNull()) {
+    //     m_instance.reset(new FileConfigDecode);
+
+    // }
     initFile();
-    qDebug() << "read:" << autoSetup << rename << timeRename << autoCopy;
+}
+
+FileConfigDecode *FileConfigDecode::getInstance()
+{
+    if (m_instance.isNull()) {
+        m_instance.reset(new FileConfigDecode);
+
+    }
+
+    return m_instance.data();
 }
 
 FileConfigDecode::~FileConfigDecode()
 {
-    updateFile();
+    // updateFile();
 //    qDebug() << "write:" << autoSetup << rename << timeRename << autoCopy;
 }
 
@@ -43,6 +58,21 @@ bool FileConfigDecode::getAutoCopy()
     return autoCopy;
 }
 
+QString FileConfigDecode::getUserName()
+{
+    return userName;
+}
+
+QString FileConfigDecode::getPassword()
+{
+    return password;
+}
+
+RenameType FileConfigDecode::getRenameType()
+{
+    return renameType;
+}
+
 void FileConfigDecode::setAddress(QString value)
 {
     this->address = value;
@@ -58,28 +88,64 @@ void FileConfigDecode::setPort(quint16 value)
 void FileConfigDecode::setAutoSetup(bool value)
 {
     this->autoSetup = value;
+    updateFile();
 //    updateFile();
 }
 
 void FileConfigDecode::setRename(bool value)
 {
     this->rename = value;
+    if (value == true) {
+        renameType = (renameType == RENAME_TYPE_TIME) ? RENAME_TYPE_TIME : RENAME_TYPE_NORMAL;
+    }
+    else {
+        renameType = (renameType == RENAME_TYPE_TIME) ? RENAME_TYPE_TIME : RENAME_TYPE_NORMAL;
+    }
+    qDebug() << renameType;
+    updateFile();
 //    updateFile();
 }
 
-void FileConfigDecode::setTimeRename(bool value)
+void FileConfigDecode::setTimeRename(bool value, int flag)
 {
     this->timeRename = value;
+    if (value) {
+        renameType = RENAME_TYPE_TIME;
+    }
+
+    if (!value && flag == 1) {
+        renameType = RENAME_TYPE_NORMAL;
+    }
+
+    if (!value && flag == 0) {
+        renameType = RENAME_TYPE_NONE;
+    }
+    qDebug() << renameType;
+    updateFile();
 //    updateFile();
 }
 
 void FileConfigDecode::setAutoCopy(bool value)
 {
     this->autoCopy = value;
+    updateFile();
 //    updateFile();
 }
 
-void FileConfigDecode::fileWrite(QString path, QString address, quint16 port, bool autosetup, bool rename, bool timerename, bool autocopy)
+void FileConfigDecode::setUserName(QString username)
+{
+    this->userName = username;
+    updateFile();
+}
+
+void FileConfigDecode::setPassword(QString password)
+{
+    this->password = password;
+    updateFile();
+}
+
+void FileConfigDecode::fileWrite(QString path, QString address, bool autosetup,
+                                 bool rename, bool timerename, bool autocopy, QString username, QString password)
 {
 #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
     QSettings* config = new QSettings(path, QSettings::IniFormat);
@@ -105,6 +171,8 @@ void FileConfigDecode::fileWrite(QString path, QString address, quint16 port, bo
     config->setValue("rename", rename);
     config->setValue("timerename", timerename);
     config->setValue("autocopy", autocopy);
+    config->setValue("username", username);
+    config->setValue("password", password);
     config->endGroup();
     delete config;
 #endif
@@ -113,7 +181,7 @@ void FileConfigDecode::fileWrite(QString path, QString address, quint16 port, bo
 void FileConfigDecode::initFile()
 {
     QString addDataPath = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);
-    QString addFilePath = addDataPath + "config.ini";
+    QString addFilePath = addDataPath + "/config.ini";
     qDebug() << addFilePath;
     QFile file(addFilePath);
     if (file.exists()) {
@@ -126,6 +194,8 @@ void FileConfigDecode::initFile()
         this->rename = config->value(section + "rename").toBool();
         this->timeRename = config->value(section + "timerename").toBool();
         this->autoCopy = config->value(section + "autocopy").toBool();
+        this->userName = config->value(section+"username").toString();
+        this->password = config->value(section+"password").toString();
 
         checkConfig();
 
@@ -134,30 +204,38 @@ void FileConfigDecode::initFile()
     else {
         this->firstCreate = true;
 
-        this->address = "127.0.0.1";
-        this->port = 0;
+        this->address = "127.0.0.1:8080";
         this->autoSetup = false;
         this->rename = false;
         this->timeRename = false;
         this->autoCopy = false;
+        this->userName = "admin";
+        this->password = "admin";
 
-        fileWrite(addFilePath, address, port, autoSetup, rename, timeRename, autoCopy);
+        fileWrite(addFilePath, address, autoSetup, rename, timeRename, autoCopy, userName, password);
     }
 }
 
 void FileConfigDecode::checkConfig()
 {
     if (address.isEmpty()) {
-        address = "127.0.0.1";
+        address = "127.0.0.1:8080";
     }
+
+    if (rename)
+        renameType = RENAME_TYPE_NORMAL;
+
+    if (timeRename)
+        renameType = RENAME_TYPE_TIME;
+    qDebug() << renameType;
 }
 
 void FileConfigDecode::updateFile()
 {
     QString addDataPath = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);
-    QString addFilePath = addDataPath + "config.ini";
+    QString addFilePath = addDataPath + "/config.ini";
 
     qDebug() << "write" << autoSetup << rename << timeRename << autoCopy;
-    fileWrite(addFilePath, address, port, autoSetup, rename, timeRename, autoCopy);
+    fileWrite(addFilePath, address, autoSetup, rename, timeRename, autoCopy, userName, password);
 }
 

+ 27 - 5
core_support/fileconfigdecode/fileconfigdecode.h

@@ -6,14 +6,21 @@
 #include <QFile>
 #include <QSettings>
 #include <QFileInfo>
+#include <QDebug>
 #if (QT_VERSION <= QT_VERSION_CHECK(6, 0, 0))
 #include <QTextCodec>
 #endif
 
+typedef enum {
+    RENAME_TYPE_NONE = 0,
+    RENAME_TYPE_NORMAL,
+    RENAME_TYPE_TIME
+} RenameType;
+
 class FileConfigDecode
 {
 public:
-    FileConfigDecode();
+    static FileConfigDecode* getInstance();
     ~FileConfigDecode();
 
     QString getAddress();
@@ -22,13 +29,21 @@ public:
     bool getRename();
     bool getTimeRename();
     bool getAutoCopy();
+    QString getUserName();
+    QString getPassword();
+    RenameType getRenameType();
 
     void setAddress(QString value);
     void setPort(quint16 value);
     void setAutoSetup(bool value);
     void setRename(bool value);
-    void setTimeRename(bool value);
+    void setTimeRename(bool value, int flag);
     void setAutoCopy(bool value);
+    void setUserName(QString username);
+    void setPassword(QString password);
+
+    void initFile();
+    void updateFile();
 
 private:
     QString address;
@@ -37,15 +52,22 @@ private:
     bool rename;
     bool timeRename;
     bool autoCopy;
+    QString userName;
+    QString password;
 
     bool firstCreate;
 
-    void fileWrite(QString path, QString address, quint16 port, bool autosetup, bool rename, bool timerename, bool autocopy);
+    RenameType  renameType = RENAME_TYPE_NONE;
+
+    void fileWrite(QString path, QString address, bool autosetup, bool rename, bool timerename, bool autocopy, QString username, QString password);
+
+    static QScopedPointer<FileConfigDecode> m_instance;
 
 private:
-    void initFile();
+    FileConfigDecode();
+
     void checkConfig();
-    void updateFile();
+
 //    void initForm();
 
 };

+ 23 - 5
core_support/tchttpservice/tchttpservice.cpp

@@ -284,7 +284,7 @@ void TCHttpService::setConfiguration(QString userName, QString firstPwd, QString
             if (code == 0) {
                 this->m_token = jsonObj["token"].toString();
                 qDebug() << this->m_token;
-                this->m_isOnline = true;
+
                 apiMyfileCount();
 
             }
@@ -300,15 +300,18 @@ void TCHttpService::setConfiguration(QString userName, QString firstPwd, QString
                 int total = jsonObj["total"].toInt();
                 this->m_total = total;
                 int n = total / 10 + 1;
+                int pendingRequests = n;
                 for (int i = 0; i < n; i++) {
-                    //0 10 20
                     int count = (total - i * 10 >= 10) ? 10 : (total - i * 10);
                     apiMyfileNormal(i*10, count);
                 }
 
+
             }
         }
         if (api == "myfilenormal") {
+            static int loginCnt = 0;
+
             QJsonDocument jsonDoc = QJsonDocument::fromJson(rawData);
             if (jsonDoc.isEmpty())
                 return;
@@ -328,15 +331,23 @@ void TCHttpService::setConfiguration(QString userName, QString firstPwd, QString
                 QString md5 = jsonObj["md5"].toString();
 
                 QMap<QString, file_info_t>::iterator ite;
-                ite = m_fileMap.find(file_name);
+                ite = m_fileMap.find(md5);
                 if (ite == m_fileMap.end()) {
+                    qDebug() << file_name;
                     file_info_t info;
                     info.share_status = share_status;
                     info.size = size;
                     info.url = url;
                     info.file_name = file_name;
-                    emit signal_uploadFileSec(url);
+                    if (m_isOnline) {
+                        qDebug() << "now upload";
+                        emit signal_uploadFileSec(url);
+
+                    }
                     m_fileMap.insert(md5, info);
+                    // if (m_fileMap.size() == m_total && m_isOnline == false)
+
+
                 }
 #if !DEBUG
                 // for(auto ite = m_fileMap.constBegin(); ite != m_fileMap.constEnd(); ite++) {
@@ -345,7 +356,14 @@ void TCHttpService::setConfiguration(QString userName, QString firstPwd, QString
                 qDebug() << "fileMap size:" << m_fileMap.size();
 #endif
             }
-
+            if (!m_isOnline) {
+                loginCnt++;
+                qDebug() << "loginCnt:" << loginCnt;
+                if (loginCnt == m_total/10+1) {
+                    m_isOnline = true;
+                    qDebug() << "login success";
+                }
+            }
 
         }
         // if (api == "upload") {

+ 0 - 2
core_support/tchttpservice/tchttpservice.h

@@ -72,8 +72,6 @@ private:
 
     bool m_uploadNum = 0;
 
-signals:
-
 };
 
 #endif // TCHTTPSERVICE_H

+ 4 - 1
main.cpp

@@ -1,12 +1,15 @@
 #include "widget.h"
 
 #include <QApplication>
+#include <windows.h>
+#include <objbase.h>
 #include <QFile>
 
 int main(int argc, char *argv[])
 {
-    QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
+    // QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
     QApplication a(argc, argv);
+
     a.setFont(QFont("Microsoft YaHei UI"));
     Widget w;
     w.setWindowIcon(QIcon(QPixmap(":/qrc/image/icon.png")));

+ 1 - 1
picpanel.pro

@@ -2,7 +2,7 @@ QT       += core gui network
 
 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
-CONFIG += c++17 console
+CONFIG += c++17
 
 # You can make your code fail to compile if it uses deprecated APIs.
 # In order to do so, uncomment the following line.

+ 262 - 15
picpanel.pro.user

@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 14.0.2, 2025-03-24T18:42:47. -->
+<!-- Written by QtCreator 14.0.2, 2025-03-25T02:39:05. -->
 <qtcreator>
  <data>
   <variable>EnvironmentId</variable>
-  <value type="QByteArray">{631b5895-04c2-4f08-83d2-9e1277f189a1}</value>
+  <value type="QByteArray">{4f2ec396-c2e0-4f3d-a369-5968ecaf5cee}</value>
  </data>
  <data>
   <variable>ProjectExplorer.Project.ActiveTarget</variable>
@@ -41,7 +41,7 @@
    <value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
    <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
    <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
-   <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">2</value>
+   <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
    <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
    <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
    <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
@@ -74,11 +74,15 @@
    <valuelist type="QVariantList" key="AutoTest.PathFilters"/>
    <value type="int" key="AutoTest.RunAfterBuild">0</value>
    <value type="bool" key="AutoTest.UseGlobal">true</value>
+   <valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey">
+    <value type="QString">-fno-delayed-template-parsing</value>
+   </valuelist>
+   <value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
    <valuemap type="QVariantMap" key="ClangTools">
     <value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
     <value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
     <value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
-    <value type="int" key="ClangTools.ParallelJobs">12</value>
+    <value type="int" key="ClangTools.ParallelJobs">16</value>
     <value type="bool" key="ClangTools.PreferConfigFile">true</value>
     <valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
     <valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
@@ -94,13 +98,13 @@
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 6.7.3 MinGW 64-bit</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 6.7.3 MinGW 64-bit</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt6.673.win64_mingw_kit</value>
-   <value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
+   <value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
    <value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
    <value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
    <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
     <value type="int" key="EnableQmlDebugging">0</value>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\picpanel\build\Desktop_Qt_6_7_3_MinGW_64_bit-Debug</value>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">E:/picpanel/build/Desktop_Qt_6_7_3_MinGW_64_bit-Debug</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\Workspaces\picpanel\build\Desktop_Qt_6_7_3_MinGW_64_bit-Debug</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/Workspaces/picpanel/build/Desktop_Qt_6_7_3_MinGW_64_bit-Debug</value>
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
      <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
       <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@@ -138,8 +142,8 @@
     <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
    </valuemap>
    <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\picpanel\build\Desktop_Qt_6_7_3_MinGW_64_bit-Release</value>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">E:/picpanel/build/Desktop_Qt_6_7_3_MinGW_64_bit-Release</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\Workspaces\picpanel\build\Desktop_Qt_6_7_3_MinGW_64_bit-Release</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/Workspaces/picpanel/build/Desktop_Qt_6_7_3_MinGW_64_bit-Release</value>
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
      <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
       <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@@ -179,8 +183,8 @@
    </valuemap>
    <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
     <value type="int" key="EnableQmlDebugging">0</value>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\picpanel\build\Desktop_Qt_6_7_3_MinGW_64_bit-Profile</value>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">E:/picpanel/build/Desktop_Qt_6_7_3_MinGW_64_bit-Profile</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\Workspaces\picpanel\build\Desktop_Qt_6_7_3_MinGW_64_bit-Profile</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">D:/Workspaces/picpanel/build/Desktop_Qt_6_7_3_MinGW_64_bit-Profile</value>
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
      <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
       <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@@ -245,20 +249,263 @@
     <value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
     <value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph &quot;dwarf,4096&quot; -F 250</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:E:/picpanel/picpanel.pro</value>
-    <value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">E:/picpanel/picpanel.pro</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:D:/Workspaces/picpanel/picpanel.pro</value>
+    <value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">D:/Workspaces/picpanel/picpanel.pro</value>
     <value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
     <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
     <value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
     <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
-    <value type="QString" key="RunConfiguration.WorkingDirectory.default">E:/picpanel/build/Desktop_Qt_6_7_3_MinGW_64_bit-Debug</value>
+    <value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/Workspaces/picpanel/build/Desktop_Qt_6_7_3_MinGW_64_bit-Release</value>
    </valuemap>
    <value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
   </valuemap>
  </data>
+ <data>
+  <variable>ProjectExplorer.Project.Target.1</variable>
+  <valuemap type="QVariantMap">
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5142.win64_mingw73_kit</value>
+   <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
+   <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
+   <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/Workspaces/build-picpanel-Desktop_Qt_5_14_2_MinGW_64_bit-Debug</value>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+     </valuemap>
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+    </valuemap>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
+   </valuemap>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/Workspaces/build-picpanel-Desktop_Qt_5_14_2_MinGW_64_bit-Release</value>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
+      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
+     </valuemap>
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+    </valuemap>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+   </valuemap>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/Workspaces/build-picpanel-Desktop_Qt_5_14_2_MinGW_64_bit-Profile</value>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
+     </valuemap>
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+    </valuemap>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+   </valuemap>
+   <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
+   </valuemap>
+   <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
+    <value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
+    <valuelist type="QVariantList" key="Analyzer.Perf.Events">
+     <value type="QString">cpu-cycles</value>
+    </valuelist>
+    <valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
+    <value type="int" key="Analyzer.Perf.Frequency">250</value>
+    <valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
+     <value type="QString">-e</value>
+     <value type="QString">cpu-cycles</value>
+     <value type="QString">--call-graph</value>
+     <value type="QString">dwarf,4096</value>
+     <value type="QString">-F</value>
+     <value type="QString">250</value>
+    </valuelist>
+    <value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
+    <value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
+    <value type="int" key="Analyzer.Perf.StackSize">4096</value>
+    <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
+    <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
+    <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
+    <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
+    <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
+    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
+    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
+    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
+    <value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
+    <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
+    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
+    <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
+    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
+    <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
+    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
+    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
+     <value type="int">0</value>
+     <value type="int">1</value>
+     <value type="int">2</value>
+     <value type="int">3</value>
+     <value type="int">4</value>
+     <value type="int">5</value>
+     <value type="int">6</value>
+     <value type="int">7</value>
+     <value type="int">8</value>
+     <value type="int">9</value>
+     <value type="int">10</value>
+     <value type="int">11</value>
+     <value type="int">12</value>
+     <value type="int">13</value>
+     <value type="int">14</value>
+    </valuelist>
+    <value type="int" key="PE.EnvironmentAspect.Base">2</value>
+    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:D:/Workspaces/picpanel/picpanel.pro</value>
+    <value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">D:/Workspaces/picpanel/picpanel.pro</value>
+    <value type="QString" key="RunConfiguration.Arguments"></value>
+    <value type="bool" key="RunConfiguration.Arguments.multi">false</value>
+    <value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
+    <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
+    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+    <value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
+    <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
+    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
+    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+    <value type="QString" key="RunConfiguration.WorkingDirectory"></value>
+    <value type="QString" key="RunConfiguration.WorkingDirectory.default"></value>
+   </valuemap>
+   <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
+  </valuemap>
+ </data>
  <data>
   <variable>ProjectExplorer.Project.TargetCount</variable>
-  <value type="qlonglong">1</value>
+  <value type="qlonglong">2</value>
  </data>
  <data>
   <variable>ProjectExplorer.Project.Updater.FileVersion</variable>

+ 271 - 0
picpanel.pro.user.631b589

@@ -0,0 +1,271 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE QtCreatorProject>
+<!-- Written by QtCreator 14.0.2, 2025-03-24T18:42:47. -->
+<qtcreator>
+ <data>
+  <variable>EnvironmentId</variable>
+  <value type="QByteArray">{631b5895-04c2-4f08-83d2-9e1277f189a1}</value>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.ActiveTarget</variable>
+  <value type="qlonglong">0</value>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.EditorSettings</variable>
+  <valuemap type="QVariantMap">
+   <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
+   <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
+   <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
+   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
+    <value type="QString" key="language">Cpp</value>
+    <valuemap type="QVariantMap" key="value">
+     <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
+    </valuemap>
+   </valuemap>
+   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
+    <value type="QString" key="language">QmlJS</value>
+    <valuemap type="QVariantMap" key="value">
+     <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
+    </valuemap>
+   </valuemap>
+   <value type="qlonglong" key="EditorConfiguration.CodeStyle.Count">2</value>
+   <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
+   <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
+   <value type="int" key="EditorConfiguration.IndentSize">4</value>
+   <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
+   <value type="int" key="EditorConfiguration.MarginColumn">80</value>
+   <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
+   <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
+   <value type="int" key="EditorConfiguration.PaddingMode">1</value>
+   <value type="int" key="EditorConfiguration.PreferAfterWhitespaceComments">0</value>
+   <value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
+   <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
+   <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
+   <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">2</value>
+   <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
+   <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
+   <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
+   <value type="int" key="EditorConfiguration.TabSize">8</value>
+   <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
+   <value type="bool" key="EditorConfiguration.UseIndenter">false</value>
+   <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
+   <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
+   <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
+   <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
+   <value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
+   <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
+   <value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
+   <value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.PluginSettings</variable>
+  <valuemap type="QVariantMap">
+   <valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
+    <value type="bool" key="AutoTest.Framework.Boost">true</value>
+    <value type="bool" key="AutoTest.Framework.CTest">false</value>
+    <value type="bool" key="AutoTest.Framework.Catch">true</value>
+    <value type="bool" key="AutoTest.Framework.GTest">true</value>
+    <value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
+    <value type="bool" key="AutoTest.Framework.QtTest">true</value>
+   </valuemap>
+   <value type="bool" key="AutoTest.ApplyFilter">false</value>
+   <valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
+   <valuelist type="QVariantList" key="AutoTest.PathFilters"/>
+   <value type="int" key="AutoTest.RunAfterBuild">0</value>
+   <value type="bool" key="AutoTest.UseGlobal">true</value>
+   <valuemap type="QVariantMap" key="ClangTools">
+    <value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
+    <value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
+    <value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
+    <value type="int" key="ClangTools.ParallelJobs">12</value>
+    <value type="bool" key="ClangTools.PreferConfigFile">true</value>
+    <valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
+    <valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
+    <valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
+    <value type="bool" key="ClangTools.UseGlobalSettings">true</value>
+   </valuemap>
+  </valuemap>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.Target.0</variable>
+  <valuemap type="QVariantMap">
+   <value type="QString" key="DeviceType">Desktop</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 6.7.3 MinGW 64-bit</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 6.7.3 MinGW 64-bit</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt6.673.win64_mingw_kit</value>
+   <value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
+   <value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
+   <value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
+    <value type="int" key="EnableQmlDebugging">0</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\picpanel\build\Desktop_Qt_6_7_3_MinGW_64_bit-Debug</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">E:/picpanel/build/Desktop_Qt_6_7_3_MinGW_64_bit-Debug</value>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+      <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
+     </valuemap>
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+     </valuemap>
+     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+    </valuemap>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+     </valuemap>
+     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
+   </valuemap>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\picpanel\build\Desktop_Qt_6_7_3_MinGW_64_bit-Release</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">E:/picpanel/build/Desktop_Qt_6_7_3_MinGW_64_bit-Release</value>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+      <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
+     </valuemap>
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+     </valuemap>
+     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+    </valuemap>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+     </valuemap>
+     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+    <value type="int" key="QtQuickCompiler">0</value>
+   </valuemap>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
+    <value type="int" key="EnableQmlDebugging">0</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\picpanel\build\Desktop_Qt_6_7_3_MinGW_64_bit-Profile</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">E:/picpanel/build/Desktop_Qt_6_7_3_MinGW_64_bit-Profile</value>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+      <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
+     </valuemap>
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+     </valuemap>
+     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+    </valuemap>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+     </valuemap>
+     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清除</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">清除</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+    <value type="int" key="QtQuickCompiler">0</value>
+    <value type="int" key="SeparateDebugInfo">0</value>
+   </valuemap>
+   <value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">部署</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
+    <valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
+    <value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
+   </valuemap>
+   <value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
+    <value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
+    <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
+    <value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
+    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
+    <value type="QList&lt;int&gt;" key="Analyzer.Valgrind.VisibleErrorKinds"></value>
+    <valuelist type="QVariantList" key="CustomOutputParsers"/>
+    <value type="int" key="PE.EnvironmentAspect.Base">2</value>
+    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+    <value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
+    <value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph &quot;dwarf,4096&quot; -F 250</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:E:/picpanel/picpanel.pro</value>
+    <value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">E:/picpanel/picpanel.pro</value>
+    <value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
+    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+    <value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
+    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+    <value type="QString" key="RunConfiguration.WorkingDirectory.default">E:/picpanel/build/Desktop_Qt_6_7_3_MinGW_64_bit-Debug</value>
+   </valuemap>
+   <value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.TargetCount</variable>
+  <value type="qlonglong">1</value>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
+  <value type="int">22</value>
+ </data>
+ <data>
+  <variable>Version</variable>
+  <value type="int">22</value>
+ </data>
+</qtcreator>

BIN
qrc/image/info_blue.png


BIN
qrc/image/info_blue_bak.png


BIN
qrc/image/info_grey.png


BIN
qrc/image/info_grey_bak.png


+ 52 - 9
qrc/qss/blacksoft.qss

@@ -140,7 +140,7 @@ QWidget#FrmSetting > QLabel {
 }
 
 QWidget#FrmSetting > QPushButton {
-    border-radius: 15px;
+    border-radius: 10px;
     border: none;
     background-color: #409EFF;
     font-family: 'Microsoft YaHei UI';
@@ -152,11 +152,24 @@ QPushButton#btnServer:hover {
     background-color: #79BBFF;
 }
 
+QPushButton#btnServer:pressed {
+    background-color: #337ECC;
+}
+
 /* server设置 */
 QWidget#ServerSetting {
+    
+    /* border: 1px solid white;
+    border-radius: 8px;
+    background-color: white; */
+    /* background-color: rgb(63, 60, 55);
     border: none;
-    border: 1px solid white;
-    border-radius: 15px;
+    border: 1px solid rgb(63, 60, 55);
+    border-radius: 15px; */
+}
+
+QWidget#ServerSetting > QLineEdit {
+    border-radius: 8px;
 }
 
 QWidget#ServerSetting > QPushButton#btnOk {
@@ -165,10 +178,16 @@ QWidget#ServerSetting > QPushButton#btnOk {
     border: 2px solid #66B1FF;
     border-radius: 10px;;
     color: white;
-    padding-left: 20px;
-    padding-right: 20px;
-    padding-top: 8px;
-    padding-bottom: 8px;
+
+    font-size: 15px;
+}
+
+QWidget#ServerSetting > QPushButton#btnOk:hover {
+    background-color: #79BBFF;
+}
+
+QWidget#ServerSetting > QPushButton#btnOk:pressed {
+    background-color: #337ECC;
 }
 
 QWidget#ServerSetting > QPushButton#btnCencel {
@@ -177,6 +196,7 @@ QWidget#ServerSetting > QPushButton#btnCencel {
     border: 2px solid #DCDFE6;
     border-radius: 10px;
     color: black;
+    font-size: 15px;
 }
 
 QWidget#ServerSetting > QLabel {
@@ -208,16 +228,38 @@ QWidget#FrmUpload > QLabel#labLinkType {
     font-size: 15px;
 }
 
-QWidget#FrmUpload > QPushButton#btnMarkdown {
+QPushButton#btnMarkdown {
     border-top-left-radius: 10px;
     border-bottom-left-radius: 10px;
 }
 
-QWidget#FrmUpload > QPushButton#btnUBB {
+QPushButton#btnUBB {
     border-top-right-radius: 10px;
     border-bottom-right-radius: 10px;
 }
 
+QPushButton#btnHTML {
+    color: #5E6B71;
+    background-color: white;
+}
+
+QPushButton#btnUrl {
+    color: #5E6B71;
+    background-color: white;
+}
+
+QPushButton#btnHTML:checked {
+    color: #409EFF;
+}
+QPushButton#btnMarkdown:checked {
+    color: #409EFF;
+}
+QPushButton#btnUBB:checked {
+    color: #409EFF;
+}
+QPushButton#btnUrl:checked {
+    color: #409EFF;
+}
 
 QWidget#FrmUpload > QPushButton#btnFastUpload {
     border-radius: 10px;
@@ -241,3 +283,4 @@ QWidget#FrmUpload > QLabel#labTitle {
     color: white;
     font-size: 30px;
 }
+

+ 5 - 3
widget.cpp

@@ -123,8 +123,11 @@ bool Widget::eventFilter(QObject *watched, QEvent *event)
     return QWidget::eventFilter(watched, event);
 }
 
-void Widget::paintEvent(QPaintEvent *event)
+
+
+void Widget::paintEvent(__attribute__((unused))QPaintEvent *event)
 {
+
 //    QPainter painter(this);
 //    painter.setRenderHint(QPainter::Antialiasing);
 //    painter.setPen(Qt::NoPen);
@@ -209,8 +212,7 @@ void Widget::initLeftMenu()
 {
     frmupload = new FrmUpload;
     frmalbum = new FrmAlbum;
-    fileConfig = new FileConfigDecode();
-    frmsetting = new FrmSetting(fileConfig);
+    frmsetting = new FrmSetting(this);
 
     ui->frmTop->setPalette(QPalette(QColor(63, 60, 55)));