diff --git a/0001-add-dbus-service.patch b/0001-add-dbus-service.patch
deleted file mode 100644
index ffe345d..0000000
--- a/0001-add-dbus-service.patch
+++ /dev/null
@@ -1,1794 +0,0 @@
-diff -Naur kylin-usb-creator-1.0.0/data/org.kylin-usb-creator-data.gschema.xml kylin-usb-creator-1.0.0~/data/org.kylin-usb-creator-data.gschema.xml
---- kylin-usb-creator-1.0.0/data/org.kylin-usb-creator-data.gschema.xml 1970-01-01 08:00:00.000000000 +0800
-+++ kylin-usb-creator-1.0.0~/data/org.kylin-usb-creator-data.gschema.xml 2021-12-07 21:19:30.909611942 +0800
-@@ -0,0 +1,9 @@
-+
-+
-+
-+ "normal"
-+ "gsetting test key"
-+ test
-+
-+
-+
-diff -Naur kylin-usb-creator-1.0.0/debian/changelog kylin-usb-creator-1.0.0~/debian/changelog
---- kylin-usb-creator-1.0.0/debian/changelog 2021-01-05 17:04:45.000000000 +0800
-+++ kylin-usb-creator-1.0.0~/debian/changelog 2021-12-07 21:19:30.050515990 +0800
-@@ -1,8 +1,8 @@
- kylin-usb-creator (1.0.0-26kord) v101; urgency=medium
-
-- * 移除程序外部透明顶级窗口,改为主题接管状态栏样式及阴影圆角。
-- * 移除模块stylewidget、stylewidgetattribute、stylewidgetshadow。
-- * 注册Dbus服务。
-+ * 移除程序外部透明顶级窗口,改为主题接管状态栏样式及阴影圆角
-+ * 移除模块stylewidget、stylewidgetattribute、stylewidgetshadow
-+ * 注册Dbus服务
-
- -- shixiaoshuo Fri, 27 Nov 2020 12:24:52 +0800
-
-diff -Naur kylin-usb-creator-1.0.0/kylin-usb-creator.pro kylin-usb-creator-1.0.0~/kylin-usb-creator.pro
---- kylin-usb-creator-1.0.0/kylin-usb-creator.pro 2021-01-05 17:04:45.000000000 +0800
-+++ kylin-usb-creator-1.0.0~/kylin-usb-creator.pro 2021-12-07 21:19:30.006098673 +0800
-@@ -1,4 +1,4 @@
--QT += core gui dbus
-+QT += core gui dbus network
-
- greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
-
-@@ -21,6 +21,10 @@
- src/mainwindow.cpp \
- src/page1.cpp \
- src/page2.cpp \
-+ src/qtlocalpeer.cpp \
-+ src/qtlockedfile.cpp \
-+ src/qtlockedfile_unix.cpp \
-+ src/qtsingleapplication.cpp \
- src/stylecombobox.cpp \
- src/rootauthdialog.cpp
-
-@@ -29,6 +33,9 @@
- src/mainwindow.h \
- src/page1.h \
- src/page2.h \
-+ src/qtlocalpeer.h \
-+ src/qtlockedfile.h \
-+ src/qtsingleapplication.h \
- src/stylecombobox.h \
- src/rootauthdialog.h
-
-@@ -41,7 +48,7 @@
- icons.path = /usr/share/pixmaps/
-
- # gsettings
--schemes.file = /data/org.kylin-usb.creator.gschema.xml
-+schemes.file = data/org.kylin-usb-creator-data.gschema.xml
- schemes.path = /usr/share/glib-2.0/schemas/
-
- desktop.path = /usr/share/applications
-diff -Naur kylin-usb-creator-1.0.0/src/dbusadaptor.cpp kylin-usb-creator-1.0.0~/src/dbusadaptor.cpp
---- kylin-usb-creator-1.0.0/src/dbusadaptor.cpp 2021-01-05 17:04:45.000000000 +0800
-+++ kylin-usb-creator-1.0.0~/src/dbusadaptor.cpp 2021-12-07 21:19:31.089447916 +0800
-@@ -31,5 +31,5 @@
-
- void DbusAdaptor::showMainWindow()
- {
-- parent()->handleIconClickedSub();
-+// parent()->handleIconClickedSub();
- }
-diff -Naur kylin-usb-creator-1.0.0/src/main.cpp kylin-usb-creator-1.0.0~/src/main.cpp
---- kylin-usb-creator-1.0.0/src/main.cpp 2021-01-05 17:04:45.000000000 +0800
-+++ kylin-usb-creator-1.0.0~/src/main.cpp 2021-12-07 21:19:31.094864662 +0800
-@@ -1,5 +1,6 @@
- #include "mainwindow.h"
- #include "dbusadaptor.h"
-+#include "qtsingleapplication.h"
- #define SHADOW 6//阴影宽度
- #define BUTTONRADIUS 0//按钮圆角
- #define SHADOWALPHA 0.16//阴影透明度
-@@ -11,29 +12,18 @@
- #include
- #include
- #include
--void responseCommand(QApplication &a) //响应外部dbus命令
--{
-- //提供DBus接口,添加show参数
-- QCommandLineParser parser;
-- parser.setApplicationDescription(QCoreApplication::translate("main", "kylinusbcreator"));
-- parser.addHelpOption();
-- parser.addVersionOption();
--
-- QCommandLineOption swOption(QStringLiteral("show"),QCoreApplication::translate("main", "show kylin-usb-creator test"));
--
-- parser.addOptions({swOption});
-- parser.process(a);
-
-- if(parser.isSet(swOption) || !QDBusConnection::sessionBus().registerService("com.kylin.usbcreator"))
-+// 拉起最小化窗口
-+void activeMainwindow()
-+{
-+ qDebug()<<"gsetting state:"<call(QStringLiteral("showMainWindow"));
-+ QGSettings *p = new QGSettings(APPDATA);
-+// p->get()
-+ qDebug()<<"main.cpp activeMainwindow value:"<get("mode").toString();
-+ p->set("mode","stat4");
-+ qDebug()<<"main.cpp after set value:"<get("mode").toString();
- }
- }
- int main(int argc, char *argv[])
-@@ -42,68 +32,63 @@
- QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
- QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
-
-+ QtSingleApplication a(argc,argv);
-
-- QApplication a(argc, argv);
-- responseCommand(a);
-- a.setWindowIcon(QIcon(":data/logo/96.png"));
--
--// 添加vnc支持
-- QStringList homePath = QStandardPaths::standardLocations(QStandardPaths::HomeLocation);
-- int fd = open(QString(homePath.at(0) + "/.config/kylin-usb-creator%1.lock").arg(getenv("DISPLAY")).toUtf8().data(), O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR);
-- if (fd < 0) { exit(1); }
-- if (lockf(fd, F_TLOCK, 0)) {
-- syslog(LOG_ERR, "Can't lock single file, kylin-usb-creator is already running!");
-- qDebug()<<"Can't lock single file, kylin-usb-creator is already running!";
-- exit(0);
-- }
--
--
-+// TODO: 整合qt的标准翻译和自行定制的qm翻译
- // 标准对话框汉化(QT标准翻译
--#ifndef QT_NO_TRANSLATION
-- QString translatorFileName = QLatin1String("qt_");
-- translatorFileName += QLocale::system().name();
-- QTranslator *translator = new QTranslator();
-- if (translator->load(translatorFileName, QLibraryInfo::location(QLibraryInfo::TranslationsPath)))
-- a.installTranslator(translator);
-- else
-- qDebug() << "Failed to load Chinese translation file.";
--#endif
-- // 应用内翻译
-- QTranslator app_trans;
-- QString locale = QLocale::system().name();
-- QString trans_path;
-- if(QDir("/usr/share/kylin-usb-creator/src/translations").exists()){
-- trans_path = "/usr/share/kylin-usb-creator/translations";
-- }else{
-- trans_path = qApp->applicationDirPath() + ":/src/translations";
-- }
-- if(locale == "zh_CN"){
-- qDebug()<load(translatorFileName, QLibraryInfo::location(QLibraryInfo::TranslationsPath)))
-+ a.installTranslator(translator);
-+ else
-+ qDebug() << "Failed to load Chinese translation file.";
-+ #endif
-+ // 应用内翻译
-+ QTranslator app_trans;
-+ QString locale = QLocale::system().name();
-+ QString trans_path;
-+ if(QDir("/usr/share/kylin-usb-creator/src/translations").exists()){
-+ trans_path = "/usr/share/kylin-usb-creator/translations";
- }else{
-- a.installTranslator(&app_trans);
-+ trans_path = qApp->applicationDirPath() + ":/src/translations";
- }
-- }else if(locale == "bo_CN")
-- {
-- if(!app_trans.load("kylin-usb-creator_bo_CN.qm",trans_path))
-+ if(locale == "zh_CN"){
-+ qDebug()<show();
-+
- }
-
- MainWindow::~MainWindow()
-@@ -17,9 +19,21 @@
- this->setFixedSize(680,467);
- // 在屏幕中央显示
- QRect availableGeometry = qApp->primaryScreen()->availableGeometry();
--// QRect availableGeometry = qApp->
- this->move((availableGeometry.width()-this->width())/2,(availableGeometry.height()- this->height())/2);
--
-+ dbustimer = new QTimer();
-+ connect(dbustimer,&QTimer::timeout,[=](){
-+ test();
-+// dbustimer->stop();
-+ qDebug()<start(3000);
-+}
-+void MainWindow::test()
-+{
-+ this->raise();
-+ this->showNormal();
-+ this->activateWindow();
- }
- void MainWindow::myStyle()
- {
-@@ -31,8 +45,6 @@
- connect(page2,&Page2::makeFinish,this,&MainWindow::makeFinish);
- connect(page2,&Page2::returnMain,this,&MainWindow::returnMain);
-
--
--
- //内部样式
- QSize pointSize(8,8);
- pointLable1=new QLabel;
-@@ -63,61 +75,61 @@
- vlt->addLayout(hlt,1);
- vlt->addSpacing(7);
- this->setLayout(vlt);
--
- // 状态栏初始化部分,需要时打开注释
- // createTrayActions();
- }
-
- void MainWindow::initGsetting()
- {
-+ //应用主窗口状态
-+ qDebug()<<":initGsetting QGSettings::isSchemaInstalled(APPDATA):"<showNormal();
-+ this->raise();
-+ this->activateWindow();
-+ });
-+ }
-+
-+ // 主题适配
- if(QGSettings::isSchemaInstalled(FITTHEMEWINDOW))
- {
--// m_pGsettingThemeData = new QGSettings(KYLINUSBCREATORDATA);
--// if(1)
--// {
--// qDebug()<<"Local gsettings init success.";
--// page1->setThemeStyleLight();
--// page2->setThemeStyleLight();
--// }
-- // 主题适配
-- if(QGSettings::isSchemaInstalled(FITTHEMEWINDOW))
-- {
-- m_pGsettingThemeData = new QGSettings(FITTHEMEWINDOW);
-+ m_pGsettingThemeData = new QGSettings(FITTHEMEWINDOW);
-
-- connect(m_pGsettingThemeData,&QGSettings::changed,this, [=] (const QString &key)
-+ connect(m_pGsettingThemeData,&QGSettings::changed,this, [=] (const QString &key)
-+ {
-+ if(key == "styleName")
- {
-- if(key == "styleName")
-- {
--
-- setThemeStyle();
-- }
-- });
-- setThemeStyle(); //主题安装成功之后默认做一次主题状态的判断
-- }
-+ qDebug()<<"@@@@@@@@:"<showNormal();
-+ this->raise();
-+ this->activateWindow();
-+ }
-+ });
-+ setThemeStyle(); //主题安装成功之后默认做一次主题状态的判断
- }
- return ;
- }
-
--
- void MainWindow::setThemeStyle()
- {
- QString nowThemeStyle = m_pGsettingThemeData->get("styleName").toString();
- if("ukui-dark" == nowThemeStyle || "ukui-black" == nowThemeStyle)
- {
--// 子类在这里调用对应方法做深色渲染
-- qDebug()<<"深色渲染start";
- page2->setThemeStyleDark();
- this->setStyleSheet("background-color:rgba(31,32,34,1);");
- page1->setThemeStyleDark();
- }else{
--// 子类在这里调用方法做对应浅色渲染
-- qDebug()<<"浅色渲染start";
- page1->setThemeStyleLight();
- this->setStyleSheet("background-color:rgba(255,255,255,1);");
- page2->setThemeStyleLight();
- }
--
- }
-+
- void MainWindow::createTrayActions()
- {
- if(!QSystemTrayIcon::isSystemTrayAvailable())
-@@ -149,33 +161,19 @@
- }
- void MainWindow::handleIconClickedSub()
- {
-- qDebug()<<"MainWindow::handleIconClickedSub iswindowminized:"<isMinimized();
--
--// QRect availableGeometry = qApp->primaryScreen()->availableGeometry();
--// this->move((availableGeometry.width() - this->width())/2, (availableGeometry.height() - this->height())/2);
-+ QRect availableGeometry = qApp->primaryScreen()->availableGeometry();
-+ this->move((availableGeometry.width() - this->width())/2, (availableGeometry.height() - this->height())/2);
- this->showNormal();
- this->raise();
- this->activateWindow();
-- qDebug()<parent();
-
--// this->show();
--
--// stackedWidget->showNormal();
--// stackedWidget->raise();
--// stackedWidget->activateWindow();
--// stackedWidget->show();
--
--
--// page1->showNormal();
--// page1->raise();
--// page1->activateWindow();
--// page1->show();
- }
-+
- void MainWindow::makeFinish()
- {
-- if(!page1->ifStartBtnChange())
-- {
-- }
-+// if(!page1->ifStartBtnChange())
-+// {
-+// }
- pointLable3->setStyleSheet("border-radius:4px;background:rgba(100, 105, 241, 1);");
- pointLable2->setStyleSheet("border-radius:4px;background:rgba(151, 151, 151, 1);");
- pointLable1->setStyleSheet("border-radius:4px;background:rgba(151, 151, 151, 1);");
-diff -Naur kylin-usb-creator-1.0.0/src/mainwindow.h kylin-usb-creator-1.0.0~/src/mainwindow.h
---- kylin-usb-creator-1.0.0/src/mainwindow.h 2021-01-05 17:04:45.000000000 +0800
-+++ kylin-usb-creator-1.0.0~/src/mainwindow.h 2021-12-07 21:19:31.040697200 +0800
-@@ -1,13 +1,12 @@
- #ifndef MAINWINDOW_H
- #define MAINWINDOW_H
- #define FITTHEMEWINDOW "org.ukui.style"
--#define KYLINUSBCREATORDATA "org.kylin-usb-creator-data.settings"
-+#define APPDATA "org.kylin-usb-creator-data.settings"
- #define WINDOWW 680 //窗口宽度
- #define WINDOWH 510//窗口高度
- #define TITLEH 40//标题栏高度
- #define SHADOW 6//阴影宽度
- #define WIDGETRADIUS 6//窗口圆角
--//#define BUTTONRADIUS 4//按钮圆角
- #define SHADOWALPHA 0.16//阴影透明度
-
- #include "page1.h"
-@@ -26,7 +25,6 @@
- public:
- MainWindow(QWidget *parent = nullptr);
- ~MainWindow();
-- void handleIconClickedSub();
-
- signals:
- void setMakeStart();
-@@ -35,14 +33,19 @@
- void makeStart(); //点击授权按钮后由页面1跳转到页面2
- void makeFinish();
- void returnMain();
-+// void handleIconClickedSub(const QString&);
- // void passwdCheck();
- private:
- void init(); //初始化mainwindow相关的设置
- int changePage();
- void myStyle();//设定样式
-+ void test();
- void createTrayActions();
- void initGsetting();
- void setThemeStyle();
-+
-+ void handleIconClickedSub();
-+ QTimer *dbustimer = nullptr;
- QStackedWidget *stackedWidget= nullptr;
- //页面小圆点
- QLabel *pointLable1 = nullptr;
-@@ -54,5 +57,6 @@
- QTimer *timer;
- // bool isInPage2 = false; //程序是否处在页面2
- QGSettings *m_pGsettingThemeData = nullptr;
-+ QGSettings *m_pGsettingAppData = nullptr;
- };
- #endif // MAINWINDOW_H
-diff -Naur kylin-usb-creator-1.0.0/src/page1.cpp kylin-usb-creator-1.0.0~/src/page1.cpp
---- kylin-usb-creator-1.0.0/src/page1.cpp 2021-01-05 17:04:45.000000000 +0800
-+++ kylin-usb-creator-1.0.0~/src/page1.cpp 2021-12-07 21:19:31.038530502 +0800
-@@ -2,7 +2,6 @@
-
- Page1::Page1()
- {
--
- initControlQss();//初始化样式
- dialogInitControlQss();
- getStorageInfo();//获取磁盘信息
-@@ -277,7 +276,7 @@
- continue;
- if(disk.device().contains("/dev/sr0")) //光盘不显示
- continue;
-- if(disk.device().contains("/dev/sda0")) //内置硬盘不显示
-+ if(disk.device().contains("/dev/sda")) //内置硬盘不显示
- continue;
- if(disk.device().contains("/dev/nvm")) //nvme类型的设备不显示
- continue;
-diff -Naur kylin-usb-creator-1.0.0/src/page2.h kylin-usb-creator-1.0.0~/src/page2.h
---- kylin-usb-creator-1.0.0/src/page2.h 2021-01-05 17:04:45.000000000 +0800
-+++ kylin-usb-creator-1.0.0~/src/page2.h 2021-12-07 21:19:31.064530884 +0800
-@@ -1,4 +1,3 @@
--
- #ifndef PAGE2_H
- #define PAGE2_H
-
-diff -Naur kylin-usb-creator-1.0.0/src/qtlocalpeer.cpp kylin-usb-creator-1.0.0~/src/qtlocalpeer.cpp
---- kylin-usb-creator-1.0.0/src/qtlocalpeer.cpp 1970-01-01 08:00:00.000000000 +0800
-+++ kylin-usb-creator-1.0.0~/src/qtlocalpeer.cpp 2021-12-07 21:19:31.055864089 +0800
-@@ -0,0 +1,204 @@
-+/****************************************************************************
-+**
-+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-+** Contact: http://www.qt-project.org/legal
-+**
-+** This file is part of the Qt Solutions component.
-+**
-+** $QT_BEGIN_LICENSE:BSD$
-+** You may use this file under the terms of the BSD license as follows:
-+**
-+** "Redistribution and use in source and binary forms, with or without
-+** modification, are permitted provided that the following conditions are
-+** met:
-+** * Redistributions of source code must retain the above copyright
-+** notice, this list of conditions and the following disclaimer.
-+** * Redistributions in binary form must reproduce the above copyright
-+** notice, this list of conditions and the following disclaimer in
-+** the documentation and/or other materials provided with the
-+** distribution.
-+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
-+** of its contributors may be used to endorse or promote products derived
-+** from this software without specific prior written permission.
-+**
-+**
-+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-+**
-+** $QT_END_LICENSE$
-+**
-+****************************************************************************/
-+
-+
-+#include "qtlocalpeer.h"
-+#include
-+#include
-+#include
-+
-+#if defined(Q_OS_WIN)
-+#include
-+#include
-+typedef BOOL(WINAPI*PProcessIdToSessionId)(DWORD,DWORD*);
-+static PProcessIdToSessionId pProcessIdToSessionId = 0;
-+#endif
-+#if defined(Q_OS_UNIX)
-+#include
-+#include
-+#include
-+#endif
-+
-+namespace QtLP_Private {
-+#include "qtlockedfile.cpp"
-+#if defined(Q_OS_WIN)
-+#include "qtlockedfile_win.cpp"
-+#else
-+#include "qtlockedfile_unix.cpp"
-+#endif
-+}
-+
-+const char* QtLocalPeer::ack = "ack";
-+
-+QtLocalPeer::QtLocalPeer(QObject* parent, const QString &appId)
-+ : QObject(parent), id(appId)
-+{
-+ QString prefix = id;
-+ if (id.isEmpty()) {
-+ id = QCoreApplication::applicationFilePath();
-+#if defined(Q_OS_WIN)
-+ id = id.toLower();
-+#endif
-+ prefix = id.section(QLatin1Char('/'), -1);
-+ }
-+ prefix.remove(QRegExp("[^a-zA-Z]"));
-+ prefix.truncate(6);
-+
-+ QByteArray idc = id.toUtf8();
-+ quint16 idNum = qChecksum(idc.constData(), idc.size());
-+ socketName = QLatin1String("qtsingleapp-") + prefix
-+ + QLatin1Char('-') + QString::number(idNum, 16);
-+
-+#if defined(Q_OS_WIN)
-+ if (!pProcessIdToSessionId) {
-+ QLibrary lib("kernel32");
-+ pProcessIdToSessionId = (PProcessIdToSessionId)lib.resolve("ProcessIdToSessionId");
-+ }
-+ if (pProcessIdToSessionId) {
-+ DWORD sessionId = 0;
-+ pProcessIdToSessionId(GetCurrentProcessId(), &sessionId);
-+ socketName += QLatin1Char('-') + QString::number(sessionId, 16);
-+ }
-+#else
-+ socketName += QLatin1Char('-') + QString::number(::getuid(), 16);
-+#endif
-+
-+ server = new QLocalServer(this);
-+ QString lockName = QDir(QDir::tempPath()).absolutePath()
-+ + QLatin1Char('/') + socketName
-+ + QLatin1String("-lockfile");
-+ lockFile.setFileName(lockName);
-+ lockFile.open(QIODevice::ReadWrite);
-+}
-+
-+
-+
-+bool QtLocalPeer::isClient()
-+{
-+ if (lockFile.isLocked())
-+ return false;
-+
-+ if (!lockFile.lock(QtLP_Private::QtLockedFile::WriteLock, false))
-+ return true;
-+
-+ bool res = server->listen(socketName);
-+#if defined(Q_OS_UNIX) && (QT_VERSION >= QT_VERSION_CHECK(4,5,0))
-+ // ### Workaround
-+ if (!res && server->serverError() == QAbstractSocket::AddressInUseError) {
-+ QFile::remove(QDir::cleanPath(QDir::tempPath())+QLatin1Char('/')+socketName);
-+ res = server->listen(socketName);
-+ }
-+#endif
-+ if (!res)
-+ qWarning("QtSingleCoreApplication: listen on local socket failed, %s", qPrintable(server->errorString()));
-+ QObject::connect(server, SIGNAL(newConnection()), SLOT(receiveConnection()));
-+ return false;
-+}
-+
-+
-+bool QtLocalPeer::sendMessage(const QString &message, int timeout)
-+{
-+ if (!isClient())
-+ return false;
-+
-+ QLocalSocket socket;
-+ bool connOk = false;
-+ for(int i = 0; i < 2; i++) {
-+ // Try twice, in case the other instance is just starting up
-+ socket.connectToServer(socketName);
-+ connOk = socket.waitForConnected(timeout/2);
-+ if (connOk || i)
-+ break;
-+ int ms = 250;
-+#if defined(Q_OS_WIN)
-+ Sleep(DWORD(ms));
-+#else
-+ struct timespec ts = { ms / 1000, (ms % 1000) * 1000 * 1000 };
-+ nanosleep(&ts, NULL);
-+#endif
-+ }
-+ if (!connOk)
-+ return false;
-+
-+ QByteArray uMsg(message.toUtf8());
-+ QDataStream ds(&socket);
-+ ds.writeBytes(uMsg.constData(), uMsg.size());
-+ bool res = socket.waitForBytesWritten(timeout);
-+ if (res) {
-+ res &= socket.waitForReadyRead(timeout); // wait for ack
-+ if (res)
-+ res &= (socket.read(qstrlen(ack)) == ack);
-+ }
-+ return res;
-+}
-+
-+
-+void QtLocalPeer::receiveConnection()
-+{
-+ QLocalSocket* socket = server->nextPendingConnection();
-+ if (!socket)
-+ return;
-+
-+ while (socket->bytesAvailable() < (int)sizeof(quint32))
-+ socket->waitForReadyRead();
-+ QDataStream ds(socket);
-+ QByteArray uMsg;
-+ quint32 remaining;
-+ ds >> remaining;
-+ uMsg.resize(remaining);
-+ int got = 0;
-+ char* uMsgBuf = uMsg.data();
-+ do {
-+ got = ds.readRawData(uMsgBuf, remaining);
-+ remaining -= got;
-+ uMsgBuf += got;
-+ } while (remaining && got >= 0 && socket->waitForReadyRead(2000));
-+ if (got < 0) {
-+ qWarning("QtLocalPeer: Message reception failed %s", socket->errorString().toLatin1().constData());
-+ delete socket;
-+ return;
-+ }
-+ QString message(QString::fromUtf8(uMsg));
-+ socket->write(ack, qstrlen(ack));
-+ socket->waitForBytesWritten(1000);
-+ socket->waitForDisconnected(1000); // make sure client reads ack
-+ delete socket;
-+ emit messageReceived(message); //### (might take a long time to return)
-+}
-diff -Naur kylin-usb-creator-1.0.0/src/qtlocalpeer.h kylin-usb-creator-1.0.0~/src/qtlocalpeer.h
---- kylin-usb-creator-1.0.0/src/qtlocalpeer.h 1970-01-01 08:00:00.000000000 +0800
-+++ kylin-usb-creator-1.0.0~/src/qtlocalpeer.h 2021-12-07 21:19:31.050447343 +0800
-@@ -0,0 +1,77 @@
-+/****************************************************************************
-+**
-+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-+** Contact: http://www.qt-project.org/legal
-+**
-+** This file is part of the Qt Solutions component.
-+**
-+** $QT_BEGIN_LICENSE:BSD$
-+** You may use this file under the terms of the BSD license as follows:
-+**
-+** "Redistribution and use in source and binary forms, with or without
-+** modification, are permitted provided that the following conditions are
-+** met:
-+** * Redistributions of source code must retain the above copyright
-+** notice, this list of conditions and the following disclaimer.
-+** * Redistributions in binary form must reproduce the above copyright
-+** notice, this list of conditions and the following disclaimer in
-+** the documentation and/or other materials provided with the
-+** distribution.
-+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
-+** of its contributors may be used to endorse or promote products derived
-+** from this software without specific prior written permission.
-+**
-+**
-+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-+**
-+** $QT_END_LICENSE$
-+**
-+****************************************************************************/
-+
-+#ifndef QTLOCALPEER_H
-+#define QTLOCALPEER_H
-+
-+#include
-+#include
-+#include
-+
-+#include "qtlockedfile.h"
-+
-+class QtLocalPeer : public QObject
-+{
-+ Q_OBJECT
-+
-+public:
-+ QtLocalPeer(QObject *parent = 0, const QString &appId = QString());
-+ bool isClient();
-+ bool sendMessage(const QString &message, int timeout);
-+ QString applicationId() const
-+ { return id; }
-+
-+Q_SIGNALS:
-+ void messageReceived(const QString &message);
-+
-+protected Q_SLOTS:
-+ void receiveConnection();
-+
-+protected:
-+ QString id;
-+ QString socketName;
-+ QLocalServer* server;
-+ QtLP_Private::QtLockedFile lockFile;
-+
-+private:
-+ static const char* ack;
-+};
-+
-+#endif // QTLOCALPEER_H
-diff -Naur kylin-usb-creator-1.0.0/src/qtlockedfile.cpp kylin-usb-creator-1.0.0~/src/qtlockedfile.cpp
---- kylin-usb-creator-1.0.0/src/qtlockedfile.cpp 1970-01-01 08:00:00.000000000 +0800
-+++ kylin-usb-creator-1.0.0~/src/qtlockedfile.cpp 2021-12-07 21:19:31.090531265 +0800
-@@ -0,0 +1,193 @@
-+/****************************************************************************
-+**
-+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-+** Contact: http://www.qt-project.org/legal
-+**
-+** This file is part of the Qt Solutions component.
-+**
-+** $QT_BEGIN_LICENSE:BSD$
-+** You may use this file under the terms of the BSD license as follows:
-+**
-+** "Redistribution and use in source and binary forms, with or without
-+** modification, are permitted provided that the following conditions are
-+** met:
-+** * Redistributions of source code must retain the above copyright
-+** notice, this list of conditions and the following disclaimer.
-+** * Redistributions in binary form must reproduce the above copyright
-+** notice, this list of conditions and the following disclaimer in
-+** the documentation and/or other materials provided with the
-+** distribution.
-+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
-+** of its contributors may be used to endorse or promote products derived
-+** from this software without specific prior written permission.
-+**
-+**
-+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-+**
-+** $QT_END_LICENSE$
-+**
-+****************************************************************************/
-+
-+#include "qtlockedfile.h"
-+
-+/*!
-+ \class QtLockedFile
-+
-+ \brief The QtLockedFile class extends QFile with advisory locking
-+ functions.
-+
-+ A file may be locked in read or write mode. Multiple instances of
-+ \e QtLockedFile, created in multiple processes running on the same
-+ machine, may have a file locked in read mode. Exactly one instance
-+ may have it locked in write mode. A read and a write lock cannot
-+ exist simultaneously on the same file.
-+
-+ The file locks are advisory. This means that nothing prevents
-+ another process from manipulating a locked file using QFile or
-+ file system functions offered by the OS. Serialization is only
-+ guaranteed if all processes that access the file use
-+ QLockedFile. Also, while holding a lock on a file, a process
-+ must not open the same file again (through any API), or locks
-+ can be unexpectedly lost.
-+
-+ The lock provided by an instance of \e QtLockedFile is released
-+ whenever the program terminates. This is true even when the
-+ program crashes and no destructors are called.
-+*/
-+
-+/*! \enum QtLockedFile::LockMode
-+
-+ This enum describes the available lock modes.
-+
-+ \value ReadLock A read lock.
-+ \value WriteLock A write lock.
-+ \value NoLock Neither a read lock nor a write lock.
-+*/
-+
-+/*!
-+ Constructs an unlocked \e QtLockedFile object. This constructor
-+ behaves in the same way as \e QFile::QFile().
-+
-+ \sa QFile::QFile()
-+*/
-+QtLockedFile::QtLockedFile()
-+ : QFile()
-+{
-+#ifdef Q_OS_WIN
-+ wmutex = 0;
-+ rmutex = 0;
-+#endif
-+ m_lock_mode = NoLock;
-+}
-+
-+/*!
-+ Constructs an unlocked QtLockedFile object with file \a name. This
-+ constructor behaves in the same way as \e QFile::QFile(const
-+ QString&).
-+
-+ \sa QFile::QFile()
-+*/
-+QtLockedFile::QtLockedFile(const QString &name)
-+ : QFile(name)
-+{
-+#ifdef Q_OS_WIN
-+ wmutex = 0;
-+ rmutex = 0;
-+#endif
-+ m_lock_mode = NoLock;
-+}
-+
-+/*!
-+ Opens the file in OpenMode \a mode.
-+
-+ This is identical to QFile::open(), with the one exception that the
-+ Truncate mode flag is disallowed. Truncation would conflict with the
-+ advisory file locking, since the file would be modified before the
-+ write lock is obtained. If truncation is required, use resize(0)
-+ after obtaining the write lock.
-+
-+ Returns true if successful; otherwise false.
-+
-+ \sa QFile::open(), QFile::resize()
-+*/
-+bool QtLockedFile::open(OpenMode mode)
-+{
-+ if (mode & QIODevice::Truncate) {
-+ qWarning("QtLockedFile::open(): Truncate mode not allowed.");
-+ return false;
-+ }
-+ return QFile::open(mode);
-+}
-+
-+/*!
-+ Returns \e true if this object has a in read or write lock;
-+ otherwise returns \e false.
-+
-+ \sa lockMode()
-+*/
-+bool QtLockedFile::isLocked() const
-+{
-+ return m_lock_mode != NoLock;
-+}
-+
-+/*!
-+ Returns the type of lock currently held by this object, or \e
-+ QtLockedFile::NoLock.
-+
-+ \sa isLocked()
-+*/
-+QtLockedFile::LockMode QtLockedFile::lockMode() const
-+{
-+ return m_lock_mode;
-+}
-+
-+/*!
-+ \fn bool QtLockedFile::lock(LockMode mode, bool block = true)
-+
-+ Obtains a lock of type \a mode. The file must be opened before it
-+ can be locked.
-+
-+ If \a block is true, this function will block until the lock is
-+ aquired. If \a block is false, this function returns \e false
-+ immediately if the lock cannot be aquired.
-+
-+ If this object already has a lock of type \a mode, this function
-+ returns \e true immediately. If this object has a lock of a
-+ different type than \a mode, the lock is first released and then a
-+ new lock is obtained.
-+
-+ This function returns \e true if, after it executes, the file is
-+ locked by this object, and \e false otherwise.
-+
-+ \sa unlock(), isLocked(), lockMode()
-+*/
-+
-+/*!
-+ \fn bool QtLockedFile::unlock()
-+
-+ Releases a lock.
-+
-+ If the object has no lock, this function returns immediately.
-+
-+ This function returns \e true if, after it executes, the file is
-+ not locked by this object, and \e false otherwise.
-+
-+ \sa lock(), isLocked(), lockMode()
-+*/
-+
-+/*!
-+ \fn QtLockedFile::~QtLockedFile()
-+
-+ Destroys the \e QtLockedFile object. If any locks were held, they
-+ are released.
-+*/
-diff -Naur kylin-usb-creator-1.0.0/src/qtlockedfile.h kylin-usb-creator-1.0.0~/src/qtlockedfile.h
---- kylin-usb-creator-1.0.0/src/qtlockedfile.h 1970-01-01 08:00:00.000000000 +0800
-+++ kylin-usb-creator-1.0.0~/src/qtlockedfile.h 2021-12-07 21:19:31.078614424 +0800
-@@ -0,0 +1,97 @@
-+/****************************************************************************
-+**
-+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-+** Contact: http://www.qt-project.org/legal
-+**
-+** This file is part of the Qt Solutions component.
-+**
-+** $QT_BEGIN_LICENSE:BSD$
-+** You may use this file under the terms of the BSD license as follows:
-+**
-+** "Redistribution and use in source and binary forms, with or without
-+** modification, are permitted provided that the following conditions are
-+** met:
-+** * Redistributions of source code must retain the above copyright
-+** notice, this list of conditions and the following disclaimer.
-+** * Redistributions in binary form must reproduce the above copyright
-+** notice, this list of conditions and the following disclaimer in
-+** the documentation and/or other materials provided with the
-+** distribution.
-+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
-+** of its contributors may be used to endorse or promote products derived
-+** from this software without specific prior written permission.
-+**
-+**
-+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-+**
-+** $QT_END_LICENSE$
-+**
-+****************************************************************************/
-+
-+#ifndef QTLOCKEDFILE_H
-+#define QTLOCKEDFILE_H
-+
-+#include
-+#ifdef Q_OS_WIN
-+#include
-+#endif
-+
-+#if defined(Q_OS_WIN)
-+# if !defined(QT_QTLOCKEDFILE_EXPORT) && !defined(QT_QTLOCKEDFILE_IMPORT)
-+# define QT_QTLOCKEDFILE_EXPORT
-+# elif defined(QT_QTLOCKEDFILE_IMPORT)
-+# if defined(QT_QTLOCKEDFILE_EXPORT)
-+# undef QT_QTLOCKEDFILE_EXPORT
-+# endif
-+# define QT_QTLOCKEDFILE_EXPORT __declspec(dllimport)
-+# elif defined(QT_QTLOCKEDFILE_EXPORT)
-+# undef QT_QTLOCKEDFILE_EXPORT
-+# define QT_QTLOCKEDFILE_EXPORT __declspec(dllexport)
-+# endif
-+#else
-+# define QT_QTLOCKEDFILE_EXPORT
-+#endif
-+
-+namespace QtLP_Private {
-+
-+class QT_QTLOCKEDFILE_EXPORT QtLockedFile : public QFile
-+{
-+public:
-+ enum LockMode { NoLock = 0, ReadLock, WriteLock };
-+
-+ QtLockedFile();
-+ QtLockedFile(const QString &name);
-+ ~QtLockedFile();
-+
-+ bool open(OpenMode mode);
-+
-+ bool lock(LockMode mode, bool block = true);
-+ bool unlock();
-+ bool isLocked() const;
-+ LockMode lockMode() const;
-+
-+private:
-+#ifdef Q_OS_WIN
-+ Qt::HANDLE wmutex;
-+ Qt::HANDLE rmutex;
-+ QVector rmutexes;
-+ QString mutexname;
-+
-+ Qt::HANDLE getMutexHandle(int idx, bool doCreate);
-+ bool waitMutex(Qt::HANDLE mutex, bool doBlock);
-+
-+#endif
-+ LockMode m_lock_mode;
-+};
-+}
-+#endif
-diff -Naur kylin-usb-creator-1.0.0/src/qtlockedfile_unix.cpp kylin-usb-creator-1.0.0~/src/qtlockedfile_unix.cpp
---- kylin-usb-creator-1.0.0/src/qtlockedfile_unix.cpp 1970-01-01 08:00:00.000000000 +0800
-+++ kylin-usb-creator-1.0.0~/src/qtlockedfile_unix.cpp 2021-12-07 21:19:31.061280836 +0800
-@@ -0,0 +1,115 @@
-+/****************************************************************************
-+**
-+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-+** Contact: http://www.qt-project.org/legal
-+**
-+** This file is part of the Qt Solutions component.
-+**
-+** $QT_BEGIN_LICENSE:BSD$
-+** You may use this file under the terms of the BSD license as follows:
-+**
-+** "Redistribution and use in source and binary forms, with or without
-+** modification, are permitted provided that the following conditions are
-+** met:
-+** * Redistributions of source code must retain the above copyright
-+** notice, this list of conditions and the following disclaimer.
-+** * Redistributions in binary form must reproduce the above copyright
-+** notice, this list of conditions and the following disclaimer in
-+** the documentation and/or other materials provided with the
-+** distribution.
-+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
-+** of its contributors may be used to endorse or promote products derived
-+** from this software without specific prior written permission.
-+**
-+**
-+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-+**
-+** $QT_END_LICENSE$
-+**
-+****************************************************************************/
-+
-+#include
-+#include
-+#include
-+#include
-+
-+#include "qtlockedfile.h"
-+
-+bool QtLockedFile::lock(LockMode mode, bool block)
-+{
-+ if (!isOpen()) {
-+ qWarning("QtLockedFile::lock(): file is not opened");
-+ return false;
-+ }
-+
-+ if (mode == NoLock)
-+ return unlock();
-+
-+ if (mode == m_lock_mode)
-+ return true;
-+
-+ if (m_lock_mode != NoLock)
-+ unlock();
-+
-+ struct flock fl;
-+ fl.l_whence = SEEK_SET;
-+ fl.l_start = 0;
-+ fl.l_len = 0;
-+ fl.l_type = (mode == ReadLock) ? F_RDLCK : F_WRLCK;
-+ int cmd = block ? F_SETLKW : F_SETLK;
-+ int ret = fcntl(handle(), cmd, &fl);
-+
-+ if (ret == -1) {
-+ if (errno != EINTR && errno != EAGAIN)
-+ qWarning("QtLockedFile::lock(): fcntl: %s", strerror(errno));
-+ return false;
-+ }
-+
-+
-+ m_lock_mode = mode;
-+ return true;
-+}
-+
-+
-+bool QtLockedFile::unlock()
-+{
-+ if (!isOpen()) {
-+ qWarning("QtLockedFile::unlock(): file is not opened");
-+ return false;
-+ }
-+
-+ if (!isLocked())
-+ return true;
-+
-+ struct flock fl;
-+ fl.l_whence = SEEK_SET;
-+ fl.l_start = 0;
-+ fl.l_len = 0;
-+ fl.l_type = F_UNLCK;
-+ int ret = fcntl(handle(), F_SETLKW, &fl);
-+
-+ if (ret == -1) {
-+ qWarning("QtLockedFile::lock(): fcntl: %s", strerror(errno));
-+ return false;
-+ }
-+
-+ m_lock_mode = NoLock;
-+ return true;
-+}
-+
-+QtLockedFile::~QtLockedFile()
-+{
-+ if (isOpen())
-+ unlock();
-+}
-+
-diff -Naur kylin-usb-creator-1.0.0/src/qtsingleapplication.cpp kylin-usb-creator-1.0.0~/src/qtsingleapplication.cpp
---- kylin-usb-creator-1.0.0/src/qtsingleapplication.cpp 1970-01-01 08:00:00.000000000 +0800
-+++ kylin-usb-creator-1.0.0~/src/qtsingleapplication.cpp 2021-12-07 21:19:31.074281027 +0800
-@@ -0,0 +1,347 @@
-+/****************************************************************************
-+**
-+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-+** Contact: http://www.qt-project.org/legal
-+**
-+** This file is part of the Qt Solutions component.
-+**
-+** $QT_BEGIN_LICENSE:BSD$
-+** You may use this file under the terms of the BSD license as follows:
-+**
-+** "Redistribution and use in source and binary forms, with or without
-+** modification, are permitted provided that the following conditions are
-+** met:
-+** * Redistributions of source code must retain the above copyright
-+** notice, this list of conditions and the following disclaimer.
-+** * Redistributions in binary form must reproduce the above copyright
-+** notice, this list of conditions and the following disclaimer in
-+** the documentation and/or other materials provided with the
-+** distribution.
-+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
-+** of its contributors may be used to endorse or promote products derived
-+** from this software without specific prior written permission.
-+**
-+**
-+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-+**
-+** $QT_END_LICENSE$
-+**
-+****************************************************************************/
-+
-+
-+#include "qtsingleapplication.h"
-+#include "qtlocalpeer.h"
-+#include
-+
-+
-+/*!
-+ \class QtSingleApplication qtsingleapplication.h
-+ \brief The QtSingleApplication class provides an API to detect and
-+ communicate with running instances of an application.
-+
-+ This class allows you to create applications where only one
-+ instance should be running at a time. I.e., if the user tries to
-+ launch another instance, the already running instance will be
-+ activated instead. Another usecase is a client-server system,
-+ where the first started instance will assume the role of server,
-+ and the later instances will act as clients of that server.
-+
-+ By default, the full path of the executable file is used to
-+ determine whether two processes are instances of the same
-+ application. You can also provide an explicit identifier string
-+ that will be compared instead.
-+
-+ The application should create the QtSingleApplication object early
-+ in the startup phase, and call isRunning() to find out if another
-+ instance of this application is already running. If isRunning()
-+ returns false, it means that no other instance is running, and
-+ this instance has assumed the role as the running instance. In
-+ this case, the application should continue with the initialization
-+ of the application user interface before entering the event loop
-+ with exec(), as normal.
-+
-+ The messageReceived() signal will be emitted when the running
-+ application receives messages from another instance of the same
-+ application. When a message is received it might be helpful to the
-+ user to raise the application so that it becomes visible. To
-+ facilitate this, QtSingleApplication provides the
-+ setActivationWindow() function and the activateWindow() slot.
-+
-+ If isRunning() returns true, another instance is already
-+ running. It may be alerted to the fact that another instance has
-+ started by using the sendMessage() function. Also data such as
-+ startup parameters (e.g. the name of the file the user wanted this
-+ new instance to open) can be passed to the running instance with
-+ this function. Then, the application should terminate (or enter
-+ client mode).
-+
-+ If isRunning() returns true, but sendMessage() fails, that is an
-+ indication that the running instance is frozen.
-+
-+ Here's an example that shows how to convert an existing
-+ application to use QtSingleApplication. It is very simple and does
-+ not make use of all QtSingleApplication's functionality (see the
-+ examples for that).
-+
-+ \code
-+ // Original
-+ int main(int argc, char **argv)
-+ {
-+ QApplication app(argc, argv);
-+
-+ MyMainWidget mmw;
-+ mmw.show();
-+ return app.exec();
-+ }
-+
-+ // Single instance
-+ int main(int argc, char **argv)
-+ {
-+ QtSingleApplication app(argc, argv);
-+
-+ if (app.isRunning())
-+ return !app.sendMessage(someDataString);
-+
-+ MyMainWidget mmw;
-+ app.setActivationWindow(&mmw);
-+ mmw.show();
-+ return app.exec();
-+ }
-+ \endcode
-+
-+ Once this QtSingleApplication instance is destroyed (normally when
-+ the process exits or crashes), when the user next attempts to run the
-+ application this instance will not, of course, be encountered. The
-+ next instance to call isRunning() or sendMessage() will assume the
-+ role as the new running instance.
-+
-+ For console (non-GUI) applications, QtSingleCoreApplication may be
-+ used instead of this class, to avoid the dependency on the QtGui
-+ library.
-+
-+ \sa QtSingleCoreApplication
-+*/
-+
-+
-+void QtSingleApplication::sysInit(const QString &appId)
-+{
-+ actWin = 0;
-+ peer = new QtLocalPeer(this, appId);
-+ connect(peer, SIGNAL(messageReceived(const QString&)), SIGNAL(messageReceived(const QString&)));
-+}
-+
-+
-+/*!
-+ Creates a QtSingleApplication object. The application identifier
-+ will be QCoreApplication::applicationFilePath(). \a argc, \a
-+ argv, and \a GUIenabled are passed on to the QAppliation constructor.
-+
-+ If you are creating a console application (i.e. setting \a
-+ GUIenabled to false), you may consider using
-+ QtSingleCoreApplication instead.
-+*/
-+
-+QtSingleApplication::QtSingleApplication(int &argc, char **argv, bool GUIenabled)
-+ : QApplication(argc, argv, GUIenabled)
-+{
-+ sysInit();
-+}
-+
-+
-+/*!
-+ Creates a QtSingleApplication object with the application
-+ identifier \a appId. \a argc and \a argv are passed on to the
-+ QAppliation constructor.
-+*/
-+
-+QtSingleApplication::QtSingleApplication(const QString &appId, int &argc, char **argv)
-+ : QApplication(argc, argv)
-+{
-+ sysInit(appId);
-+}
-+
-+#if QT_VERSION < 0x050000
-+
-+/*!
-+ Creates a QtSingleApplication object. The application identifier
-+ will be QCoreApplication::applicationFilePath(). \a argc, \a
-+ argv, and \a type are passed on to the QAppliation constructor.
-+*/
-+QtSingleApplication::QtSingleApplication(int &argc, char **argv, Type type)
-+ : QApplication(argc, argv, type)
-+{
-+ sysInit();
-+}
-+
-+
-+# if defined(Q_WS_X11)
-+/*!
-+ Special constructor for X11, ref. the documentation of
-+ QApplication's corresponding constructor. The application identifier
-+ will be QCoreApplication::applicationFilePath(). \a dpy, \a visual,
-+ and \a cmap are passed on to the QApplication constructor.
-+*/
-+QtSingleApplication::QtSingleApplication(Display* dpy, Qt::HANDLE visual, Qt::HANDLE cmap)
-+ : QApplication(dpy, visual, cmap)
-+{
-+ sysInit();
-+}
-+
-+/*!
-+ Special constructor for X11, ref. the documentation of
-+ QApplication's corresponding constructor. The application identifier
-+ will be QCoreApplication::applicationFilePath(). \a dpy, \a argc, \a
-+ argv, \a visual, and \a cmap are passed on to the QApplication
-+ constructor.
-+*/
-+QtSingleApplication::QtSingleApplication(Display *dpy, int &argc, char **argv, Qt::HANDLE visual, Qt::HANDLE cmap)
-+ : QApplication(dpy, argc, argv, visual, cmap)
-+{
-+ sysInit();
-+}
-+
-+/*!
-+ Special constructor for X11, ref. the documentation of
-+ QApplication's corresponding constructor. The application identifier
-+ will be \a appId. \a dpy, \a argc, \a
-+ argv, \a visual, and \a cmap are passed on to the QApplication
-+ constructor.
-+*/
-+QtSingleApplication::QtSingleApplication(Display* dpy, const QString &appId, int argc, char **argv, Qt::HANDLE visual, Qt::HANDLE cmap)
-+ : QApplication(dpy, argc, argv, visual, cmap)
-+{
-+ sysInit(appId);
-+}
-+# endif // Q_WS_X11
-+#endif // QT_VERSION < 0x050000
-+
-+
-+/*!
-+ Returns true if another instance of this application is running;
-+ otherwise false.
-+
-+ This function does not find instances of this application that are
-+ being run by a different user (on Windows: that are running in
-+ another session).
-+
-+ \sa sendMessage()
-+*/
-+
-+bool QtSingleApplication::isRunning()
-+{
-+ return peer->isClient();
-+}
-+
-+
-+/*!
-+ Tries to send the text \a message to the currently running
-+ instance. The QtSingleApplication object in the running instance
-+ will emit the messageReceived() signal when it receives the
-+ message.
-+
-+ This function returns true if the message has been sent to, and
-+ processed by, the current instance. If there is no instance
-+ currently running, or if the running instance fails to process the
-+ message within \a timeout milliseconds, this function return false.
-+
-+ \sa isRunning(), messageReceived()
-+*/
-+bool QtSingleApplication::sendMessage(const QString &message, int timeout)
-+{
-+ return peer->sendMessage(message, timeout);
-+}
-+
-+
-+/*!
-+ Returns the application identifier. Two processes with the same
-+ identifier will be regarded as instances of the same application.
-+*/
-+QString QtSingleApplication::id() const
-+{
-+ return peer->applicationId();
-+}
-+
-+
-+/*!
-+ Sets the activation window of this application to \a aw. The
-+ activation window is the widget that will be activated by
-+ activateWindow(). This is typically the application's main window.
-+
-+ If \a activateOnMessage is true (the default), the window will be
-+ activated automatically every time a message is received, just prior
-+ to the messageReceived() signal being emitted.
-+
-+ \sa activateWindow(), messageReceived()
-+*/
-+
-+void QtSingleApplication::setActivationWindow(QWidget* aw, bool activateOnMessage)
-+{
-+ actWin = aw;
-+ if (activateOnMessage)
-+ connect(peer, SIGNAL(messageReceived(const QString&)), this, SLOT(activateWindow()));
-+ else
-+ disconnect(peer, SIGNAL(messageReceived(const QString&)), this, SLOT(activateWindow()));
-+}
-+
-+
-+/*!
-+ Returns the applications activation window if one has been set by
-+ calling setActivationWindow(), otherwise returns 0.
-+
-+ \sa setActivationWindow()
-+*/
-+QWidget* QtSingleApplication::activationWindow() const
-+{
-+ return actWin;
-+}
-+
-+
-+/*!
-+ De-minimizes, raises, and activates this application's activation window.
-+ This function does nothing if no activation window has been set.
-+
-+ This is a convenience function to show the user that this
-+ application instance has been activated when he has tried to start
-+ another instance.
-+
-+ This function should typically be called in response to the
-+ messageReceived() signal. By default, that will happen
-+ automatically, if an activation window has been set.
-+
-+ \sa setActivationWindow(), messageReceived(), initialize()
-+*/
-+void QtSingleApplication::activateWindow()
-+{
-+ if (actWin) {
-+ actWin->setWindowState(actWin->windowState() & ~Qt::WindowMinimized);
-+ actWin->raise();
-+ actWin->activateWindow();
-+ }
-+}
-+
-+
-+/*!
-+ \fn void QtSingleApplication::messageReceived(const QString& message)
-+
-+ This signal is emitted when the current instance receives a \a
-+ message from another instance of this application.
-+
-+ \sa sendMessage(), setActivationWindow(), activateWindow()
-+*/
-+
-+
-+/*!
-+ \fn void QtSingleApplication::initialize(bool dummy = true)
-+
-+ \obsolete
-+*/
-diff -Naur kylin-usb-creator-1.0.0/src/qtsingleapplication.h kylin-usb-creator-1.0.0~/src/qtsingleapplication.h
---- kylin-usb-creator-1.0.0/src/qtsingleapplication.h 1970-01-01 08:00:00.000000000 +0800
-+++ kylin-usb-creator-1.0.0~/src/qtsingleapplication.h 2021-12-07 21:19:31.034197105 +0800
-@@ -0,0 +1,105 @@
-+/****************************************************************************
-+**
-+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-+** Contact: http://www.qt-project.org/legal
-+**
-+** This file is part of the Qt Solutions component.
-+**
-+** $QT_BEGIN_LICENSE:BSD$
-+** You may use this file under the terms of the BSD license as follows:
-+**
-+** "Redistribution and use in source and binary forms, with or without
-+** modification, are permitted provided that the following conditions are
-+** met:
-+** * Redistributions of source code must retain the above copyright
-+** notice, this list of conditions and the following disclaimer.
-+** * Redistributions in binary form must reproduce the above copyright
-+** notice, this list of conditions and the following disclaimer in
-+** the documentation and/or other materials provided with the
-+** distribution.
-+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
-+** of its contributors may be used to endorse or promote products derived
-+** from this software without specific prior written permission.
-+**
-+**
-+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-+**
-+** $QT_END_LICENSE$
-+**
-+****************************************************************************/
-+
-+#ifndef QTSINGLEAPPLICATION_H
-+#define QTSINGLEAPPLICATION_H
-+
-+#include
-+
-+class QtLocalPeer;
-+
-+#if defined(Q_OS_WIN)
-+# if !defined(QT_QTSINGLEAPPLICATION_EXPORT) && !defined(QT_QTSINGLEAPPLICATION_IMPORT)
-+# define QT_QTSINGLEAPPLICATION_EXPORT
-+# elif defined(QT_QTSINGLEAPPLICATION_IMPORT)
-+# if defined(QT_QTSINGLEAPPLICATION_EXPORT)
-+# undef QT_QTSINGLEAPPLICATION_EXPORT
-+# endif
-+# define QT_QTSINGLEAPPLICATION_EXPORT __declspec(dllimport)
-+# elif defined(QT_QTSINGLEAPPLICATION_EXPORT)
-+# undef QT_QTSINGLEAPPLICATION_EXPORT
-+# define QT_QTSINGLEAPPLICATION_EXPORT __declspec(dllexport)
-+# endif
-+#else
-+# define QT_QTSINGLEAPPLICATION_EXPORT
-+#endif
-+
-+class QT_QTSINGLEAPPLICATION_EXPORT QtSingleApplication : public QApplication
-+{
-+ Q_OBJECT
-+
-+public:
-+ QtSingleApplication(int &argc, char **argv, bool GUIenabled = true);
-+ QtSingleApplication(const QString &id, int &argc, char **argv);
-+#if QT_VERSION < 0x050000
-+ QtSingleApplication(int &argc, char **argv, Type type);
-+# if defined(Q_WS_X11)
-+ QtSingleApplication(Display* dpy, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0);
-+ QtSingleApplication(Display *dpy, int &argc, char **argv, Qt::HANDLE visual = 0, Qt::HANDLE cmap= 0);
-+ QtSingleApplication(Display* dpy, const QString &appId, int argc, char **argv, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0);
-+# endif // Q_WS_X11
-+#endif // QT_VERSION < 0x050000
-+
-+ bool isRunning();
-+ QString id() const;
-+
-+ void setActivationWindow(QWidget* aw, bool activateOnMessage = true);
-+ QWidget* activationWindow() const;
-+
-+ // Obsolete:
-+ void initialize(bool dummy = true)
-+ { isRunning(); Q_UNUSED(dummy) }
-+
-+public Q_SLOTS:
-+ bool sendMessage(const QString &message, int timeout = 5000);
-+ void activateWindow();
-+
-+
-+Q_SIGNALS:
-+ void messageReceived(const QString &message);
-+
-+
-+private:
-+ void sysInit(const QString &appId = QString());
-+ QtLocalPeer *peer;
-+ QWidget *actWin;
-+};
-+
-+#endif // QTSINGLEAPPLICATION_H
-diff -Naur kylin-usb-creator-1.0.0/src/stylecombobox.cpp kylin-usb-creator-1.0.0~/src/stylecombobox.cpp
---- kylin-usb-creator-1.0.0/src/stylecombobox.cpp 2021-01-05 17:04:45.000000000 +0800
-+++ kylin-usb-creator-1.0.0~/src/stylecombobox.cpp 2021-12-07 21:19:31.059114137 +0800
-@@ -21,6 +21,7 @@
- hlt->addWidget(text,9);
- hlt->addWidget(icon);
-
-+ //下拉弹窗以及阴影绘制
- listWidget=new QListWidget;
- listWidget->setWindowFlag(Qt::FramelessWindowHint); // 无边框
- listWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); //关闭水平滚动条
-@@ -48,48 +49,44 @@
- {
- if(!isDiskListOpen)
- {
--// deleteShadow();
- closeListWidget();
- int listWidgetHeight=listWidget->count() * ITEMHIGHT + SHADOW;
- listWidget->setFixedHeight(listWidgetHeight);
- listWidget->setFixedWidth(UDISKLISTWIDGETWIDTH);
--// swa.setH(listWidgetHeight);
--// swa.h = listWidgetHeight + SHADOW;
--// swa.w = UDISKLISTWIDGETWIDTH + 8;
-- //设置阴影
--// swshadow =new StyleWidgetShadow(swa);
--// QVBoxLayout *vblayout=new QVBoxLayout(swshadow);
-+
- QPoint point= pushButton->mapToGlobal(QPoint(0,0));
--// vblayout->setMargin(10);//控件间距
--// vblayout->setSpacing(10);//控件间距
--// vblayout->addWidget(listWidget);
- icon->setStyleSheet("border-image:url(:/data/comboboxIcon_c.png);border:0px;");
- if(LIGHTTHEME == themeStatus){
- pushButton->setStyleSheet(".QPushButton{background-color:#fff;border:1px solid rgba(100, 105, 241, 1);}");
--// swshadow->setStyleSheet("border:1px solid rgba(255,255,255,1);border-radius:4px;background-color:rgba(255,255,255,1);");
--// swshadow->setStyleSheet("border:1px solid rgba(255,255,255,0);border-radius:4px;background-color:rgba(255,255,255,1);");
-+// .QListWidget{border:1px solid rgba(255,255,255,1);}"
- listWidget->setStyleSheet("QListWidget::Item{background-color:rgba(255,255,255,1);border-radius:2px;padding-left:20px;color:rgba(96,98,102,1);}"
- "QListWidget::Item:hover{background-color:rgba(246,246,246,1);}");
- }else if(DARKTHEME == themeStatus){
- pushButton->setStyleSheet(".QPushButton{background-color:rgba(31,32,34,1);border:1px solid rgba(100,105,241,1);border-radius:4px;color:rgba(143,417,153,1);}");
--// swshadow->setStyleSheet("border:1px solid rgba(61,61,65,1);border-radius:4px;background-color:rgba(61,61,65,1);");
- listWidget->setStyleSheet("QListWidget::Item{background-color:rgba(61,61,65,1);border-radius:2px;color:rgba(249,249,249,1);padding-left:20px;}"
- "QListWidget::Item:hover{background-color:rgba(72,72,76,1);color:rgba(249,249,249,1);}");
- }
-- listWidget->move(point.rx()-SHADOW/2,point.ry()+pushButton->height()+ SHADOW);
-+ listWidget->move(point.rx()-SHADOW/3 + 2,point.ry()+pushButton->height()+ SHADOW);
-
--// swshadow->show();
--// listWidget->move(SHADOW/2,SHADOW);
- listWidget->show();
- isDiskListOpen = true;
- }
- else
- {
--// deleteShadow();
- isDiskListOpen = false;
-+
-+ icon->setStyleSheet("border-image:url(:/data/comboboxIcon_d.png);border:0px;");
-+ if(LIGHTTHEME == themeStatus){
-+ pushButton->setStyleSheet(".QPushButton{background-color:#fff;border:1px solid rgba(192, 196,204,1);border-radius:4px;}"
-+ ".QPushButton:hover{background-color:#fff;border:1px solid rgba(192,196,204,1);border-radius:4px;}");
-+ }else if(DARKTHEME == themeStatus){
-+ pushButton->setStyleSheet(".QPushButton{background-color:rgba(31,32,34,1);border:1px solid rgba(61,61,65,1);border-radius:4px;}"
-+ ".QPushButton:hover{background-color:rgba(31,32,34,1);border:1px solid rgba(61,61,65,1);border-radius:4px;}");
-+ }
- }
- }
-
-+
- void StyleComboBox::addItem(QString lable, QString data)
- {
- QListWidgetItem *item=new QListWidgetItem;
-@@ -101,22 +98,6 @@
- listWidget->addItem(item);
- }
-
--//void StyleComboBox::deleteShadow()
--//{
--// if(swshadow!=nullptr)
--// {
--// swshadow->close();
--// icon->setStyleSheet("border-image:url(:/data/comboboxIcon_d.png);border:0px;");
--// if(LIGHTTHEME == themeStatus){
--// pushButton->setStyleSheet(".QPushButton{background-color:#fff;border:1px solid rgba(192, 196,204,1);border-radius:4px;}"
--// ".QPushButton:hover{background-color:#fff;border:1px solid rgba(192,196,204,1);border-radius:4px;}");
--// }else if(DARKTHEME == themeStatus){
--// pushButton->setStyleSheet(".QPushButton{background-color:rgba(31,32,34,1);border:1px solid rgba(61,61,65,1);border-radius:4px;}"
--// ".QPushButton:hover{background-color:rgba(31,32,34,1);border:1px solid rgba(61,61,65,1);border-radius:4px;}");
--// }
--// }
--//}
--
- void StyleComboBox::closeListWidget()
- {
- icon->setStyleSheet("border-image:url(:/data/comboboxIcon_d.png);border:0px;");
-@@ -133,7 +114,6 @@
- {
- text->setText(item->text());
- text->setStatusTip(item->statusTip());
--// deleteShadow();
- closeListWidget();
- }
-
-diff -Naur kylin-usb-creator-1.0.0/src/stylecombobox.h kylin-usb-creator-1.0.0~/src/stylecombobox.h
---- kylin-usb-creator-1.0.0/src/stylecombobox.h 2021-01-05 17:04:45.000000000 +0800
-+++ kylin-usb-creator-1.0.0~/src/stylecombobox.h 2021-12-07 21:19:31.027697009 +0800
-@@ -18,12 +18,9 @@
- {
- Q_OBJECT
- public:
--// explicit StyleComboBox(StyleWidgetAttribute scb_swa);
- explicit StyleComboBox();
--// void deleteShadow();
- void closeListWidget();
- QListWidget *listWidget = nullptr;//U盘列表列表部分
--// QListWidget *menuListWidget = nullptr;//菜单列表部分
- void addItem(QString lable, QString data);//添加到列表
- void clearDiskList(); //清空U盘的listWidget
- void setThemeDark(); //深色模式
-@@ -41,7 +38,6 @@
- private:
- QPushButton *pushButton = nullptr;//点击部分
- void on_diskButton_click(); //U盘栏点击事件
--// void on_menuButton_click(); //菜单栏点击事件
- bool isDiskListOpen = false;
- bool mouseInListWidget=false;
- QLabel *text=nullptr; // U盘框选中的部分
diff --git a/fix-bug-min-window-logic.patch b/fix-bug-min-window-logic.patch
deleted file mode 100644
index c3cf096..0000000
--- a/fix-bug-min-window-logic.patch
+++ /dev/null
@@ -1,133 +0,0 @@
-diff -Naur kylin-usb-creator-1.0.0/debian/changelog kylin-usb-creator-1.0.0~/debian/changelog
---- kylin-usb-creator-1.0.0/debian/changelog 2021-12-09 14:37:53.464467473 +0800
-+++ kylin-usb-creator-1.0.0~/debian/changelog 2021-12-09 15:20:44.713299353 +0800
-@@ -1,3 +1,9 @@
-+kylin-usb-creator (1.0.0-27kord) v101; urgency=medium
-+
-+ * 解决了BUG#24046 程序正在运行且处于最小化状态时,可以通过点击菜单栏图标拉起
-+
-+ -- shixiaoshuo Mon, 30 Nov 2020 15:38:52 +0800
-+
- kylin-usb-creator (1.0.0-26kord) v101; urgency=medium
-
- * 移除程序外部透明顶级窗口,改为主题接管状态栏样式及阴影圆角
-diff -Naur kylin-usb-creator-1.0.0/src/main.cpp kylin-usb-creator-1.0.0~/src/main.cpp
---- kylin-usb-creator-1.0.0/src/main.cpp 2021-12-09 14:37:53.464467473 +0800
-+++ kylin-usb-creator-1.0.0~/src/main.cpp 2021-12-09 15:20:46.315571642 +0800
-@@ -20,7 +20,6 @@
- if(QGSettings::isSchemaInstalled(APPDATA))
- {
- QGSettings *p = new QGSettings(APPDATA);
--// p->get()
- qDebug()<<"main.cpp activeMainwindow value:"<get("mode").toString();
- p->set("mode","stat4");
- qDebug()<<"main.cpp after set value:"<get("mode").toString();
-@@ -74,14 +73,14 @@
-
-
- if(a.isRunning()){
--// a.sendMessage(nullptr);
-- activeMainwindow();
-+ a.sendMessage(QApplication::arguments().length() > 1 ? QApplication::arguments().at(0):a.applicationFilePath());
- qDebug()<<"#### kylin-usb-creator is already running";
- return EXIT_SUCCESS;
- }else {
- MainWindow w;
-+ a.setActiveWindow(&w);
- w.show();
--// QObject::connect(&a,SIGNAL(messageReceived(const QString&)),&w,SLOT(handleIconClickedSub(const QString&)));
-+ QObject::connect(&a,SIGNAL(messageReceived(const QString&)),&w,SLOT(handleIconClickedSub()));
- return a.exec();
- }
- a.setWindowIcon(QIcon(":data/logo/96.png"));
-diff -Naur kylin-usb-creator-1.0.0/src/mainwindow.cpp kylin-usb-creator-1.0.0~/src/mainwindow.cpp
---- kylin-usb-creator-1.0.0/src/mainwindow.cpp 2021-12-09 14:37:53.465550821 +0800
-+++ kylin-usb-creator-1.0.0~/src/mainwindow.cpp 2021-12-09 15:20:46.272237706 +0800
-@@ -161,11 +161,21 @@
- }
- void MainWindow::handleIconClickedSub()
- {
-- QRect availableGeometry = qApp->primaryScreen()->availableGeometry();
-- this->move((availableGeometry.width() - this->width())/2, (availableGeometry.height() - this->height())/2);
-- this->showNormal();
-- this->raise();
-- this->activateWindow();
-+ qDebug()<<"handleIconClickedSub";
-+// QRect availableGeometry = qApp->primaryScreen()->availableGeometry();
-+// this->move((availableGeometry.width() - this->width())/2, (availableGeometry.height() - this->height())/2);
-+// this->showNormal();
-+
-+ Qt::WindowFlags flags = windowFlags();
-+ flags |= Qt::WindowStaysOnTopHint;
-+ setWindowFlags(flags);
-+ show();
-+ flags &= ~Qt::WindowStaysOnTopHint;
-+ setWindowFlags(flags);
-+ showNormal();
-+
-+// this->raise();
-+// this->activateWindow();
-
- }
-
-diff -Naur kylin-usb-creator-1.0.0/src/mainwindow.h kylin-usb-creator-1.0.0~/src/mainwindow.h
---- kylin-usb-creator-1.0.0/src/mainwindow.h 2021-12-09 14:37:53.465550821 +0800
-+++ kylin-usb-creator-1.0.0~/src/mainwindow.h 2021-12-09 15:20:46.250570738 +0800
-@@ -33,7 +33,7 @@
- void makeStart(); //点击授权按钮后由页面1跳转到页面2
- void makeFinish();
- void returnMain();
--// void handleIconClickedSub(const QString&);
-+ void handleIconClickedSub();
- // void passwdCheck();
- private:
- void init(); //初始化mainwindow相关的设置
-@@ -44,7 +44,7 @@
- void initGsetting();
- void setThemeStyle();
-
-- void handleIconClickedSub();
-+// void handleIconClickedSub();
- QTimer *dbustimer = nullptr;
- QStackedWidget *stackedWidget= nullptr;
- //页面小圆点
-diff -Naur kylin-usb-creator-1.0.0/src/qtsingleapplication.cpp kylin-usb-creator-1.0.0~/src/qtsingleapplication.cpp
---- kylin-usb-creator-1.0.0/src/qtsingleapplication.cpp 2021-12-09 14:37:53.467717517 +0800
-+++ kylin-usb-creator-1.0.0~/src/qtsingleapplication.cpp 2021-12-09 15:20:46.276571099 +0800
-@@ -284,13 +284,13 @@
- \sa activateWindow(), messageReceived()
- */
-
--void QtSingleApplication::setActivationWindow(QWidget* aw, bool activateOnMessage)
-+void QtSingleApplication::setActivationWindow(MainWindow* aw, bool activateOnMessage)
- {
- actWin = aw;
- if (activateOnMessage)
- connect(peer, SIGNAL(messageReceived(const QString&)), this, SLOT(activateWindow()));
-- else
-- disconnect(peer, SIGNAL(messageReceived(const QString&)), this, SLOT(activateWindow()));
-+// else
-+// disconnect(peer, SIGNAL(messageReceived(const QString&)), this, SLOT(activateWindow()));
- }
-
-
-diff -Naur kylin-usb-creator-1.0.0/src/qtsingleapplication.h kylin-usb-creator-1.0.0~/src/qtsingleapplication.h
---- kylin-usb-creator-1.0.0/src/qtsingleapplication.h 2021-12-09 14:37:53.467717517 +0800
-+++ kylin-usb-creator-1.0.0~/src/qtsingleapplication.h 2021-12-09 15:20:46.244070647 +0800
-@@ -41,6 +41,7 @@
- #ifndef QTSINGLEAPPLICATION_H
- #define QTSINGLEAPPLICATION_H
-
-+#include "mainwindow.h"
- #include
-
- class QtLocalPeer;
-@@ -80,7 +81,7 @@
- bool isRunning();
- QString id() const;
-
-- void setActivationWindow(QWidget* aw, bool activateOnMessage = true);
-+ void setActivationWindow(MainWindow* aw, bool activateOnMessage = true);
- QWidget* activationWindow() const;
-
- // Obsolete:
diff --git a/kylin-usb-creator-1.0.0.tar.gz b/kylin-usb-creator-1.0.0.tar.gz
deleted file mode 100644
index 9a286e1..0000000
Binary files a/kylin-usb-creator-1.0.0.tar.gz and /dev/null differ
diff --git a/kylin-usb-creator-1.1.1.tar.gz b/kylin-usb-creator-1.1.1.tar.gz
new file mode 100644
index 0000000..3f2689f
Binary files /dev/null and b/kylin-usb-creator-1.1.1.tar.gz differ
diff --git a/kylin-usb-creator.spec b/kylin-usb-creator.spec
index 6e1e9ec..42295de 100644
--- a/kylin-usb-creator.spec
+++ b/kylin-usb-creator.spec
@@ -1,21 +1,21 @@
%define debug_package %{nil}
Name: kylin-usb-creator
-Version: 1.0.0
-Release: 3
+Version: 1.1.1
+Release: 1
Summary: kylin-usb-creator
License: GPL-3+
URL: http://www.ukui.org
Source0: %{name}-%{version}.tar.gz
-patch0: 0001-add-dbus-service.patch
-patch1: fix-bug-min-window-logic.patch
-
BuildRequires: qt5-qttools-devel
BuildRequires: qt5-qtscript-devel
BuildRequires: qtchooser
BuildRequires: qt5-qtbase-devel
BuildRequires: pkgconf
BuildRequires: gsettings-qt-devel
+BuildRequires: kf5-kwindowsystem-devel
+BuildRequires: qt5-qtx11extras-devel
+BuildRequires: polkit-qt5-1-devel
# Requires: NetworkManager
@@ -24,8 +24,6 @@ BuildRequires: gsettings-qt-devel
%prep
%setup -q
-%patch0 -p1
-%patch1 -p1
%build
%{qmake_qt5} %{_qt5_qmake_flags} CONFIG+=enable-by-default kylin-usb-creator.pro
@@ -50,13 +48,23 @@ rm -rf $RPM_BUILD_ROOT
%{_datadir}/doc/kylin-usb-creator/changelog.gz
%{_datadir}/doc/kylin-usb-creator/copyright
%{_datadir}/pixmaps/kylin-usb-creator.png
+%{_sysconfdir}/dbus-1/system.d/com.kylinusbcreator.systemdbus.conf
+%{_bindir}/kylin-usb-creator-sysdbus
+%{_datadir}/dbus-1/system-services/com.kylinusbcreator.systemdbus.service
+%{_datadir}/glib-2.0/schemas/org.kylin-usb-creator-data.gschema.xml
+%{_datadir}/polkit-1/actions/com.kylinusbcreator.systemdbus.policy
+
+
+
%changelog
+* Wed Mar 16 2022 tanyulong - 1.1.1-1
+- update to upstream version 1.1.1
+
* Fri Dec 10 2021 douyan - 1.0.0-3
- fix min window logic
* Wed Dec 8 2021 douyan - 1.0.0-2
- add dbus service
-
* Tue Dec 15 2020 lvhan - 1.0.0-1
- update to upstream version 1.0.0-26kord