From 14ac76396eacc901751bd7ea7179e4c5bc594f92 Mon Sep 17 00:00:00 2001 From: gfdgd_xi <3025613752@qq.com> Date: Tue, 23 Jan 2024 22:48:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AD=A5=E6=94=AF=E6=8C=81=E5=AE=89?= =?UTF-8?q?=E8=A3=85deb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- installdeb.cpp | 23 +++++++++++++++++------ installdeb.h | 9 +++++---- main.cpp | 21 ++++++++++++++++++++- mainwindow.cpp | 19 +++++++------------ mainwindow.ui | 20 ++++++++++++++++++++ 5 files changed, 69 insertions(+), 23 deletions(-) diff --git a/installdeb.cpp b/installdeb.cpp index eaccbfe..8e9be07 100644 --- a/installdeb.cpp +++ b/installdeb.cpp @@ -1,10 +1,11 @@ #include "installdeb.h" +#include "messagebox.h" #include #include #include #include -InstallDEB::InstallDEB(QTermWidget *terminal, QMainWindow *mainWindow) +InstallDEB::InstallDEB(QTermWidget *terminal, DMainWindow *mainWindow) { this->terminal = terminal; this->mainWindow = mainWindow; @@ -14,7 +15,7 @@ void InstallDEB::AddCommand(QString command){ this->commandList.append(command); } -void InstallDEB::RunCommand(){ +void InstallDEB::RunCommand(bool withRoot){ this->terminal->setEnabled(true); this->runStatus = true; // 写入为 Bash 文件,方便执行 @@ -33,12 +34,22 @@ void InstallDEB::RunCommand(){ file.close(); system(("chmod +x '" + bashPath + "'").toUtf8()); // 赋予运行权限 this->terminal->setColorScheme("DarkPastels"); - this->terminal->setShellProgram("/usr/bin/bash"); - this->terminal->setArgs(QStringList() << bashPath); + if(withRoot){ + this->terminal->setShellProgram("/usr/bin/pkexec"); + this->terminal->setArgs(QStringList() << "/usr/bin/bash" << bashPath); + } + else{ + this->terminal->setShellProgram("/usr/bin/bash"); + this->terminal->setArgs(QStringList() << bashPath); + } //this->terminal->setAutoClose(1); this->terminal->setAutoFillBackground(1); - this->terminal->startShellProgram(); QObject::connect(this->terminal, &QTermWidget::finished, this->mainWindow, [this](){ - QMessageBox::information(this->mainWindow, "A", "B"); + //QMessageBox::information(this->mainWindow, "A", "B"); + MessageBox *message = new MessageBox(); + message->information("提示", "应用安装完成"); + this->mainWindow->sendMessage(QIcon(":/Icon/MessageBox/dialog-information.svg"), "应用安装完成"); }); + this->terminal->startShellProgram(); + } diff --git a/installdeb.h b/installdeb.h index 48831c3..58b7ec9 100644 --- a/installdeb.h +++ b/installdeb.h @@ -3,18 +3,19 @@ #include #include -#include +#include +using namespace Dtk::Widget; class InstallDEB { public: - InstallDEB(QTermWidget *terminal, QMainWindow *mainWindow = NULL); + InstallDEB(QTermWidget *terminal, DMainWindow *mainWindow = NULL); void AddCommand(QString command); - void RunCommand(); + void RunCommand(bool withRoot=false); QStringList commandList; private: QTermWidget *terminal; - QMainWindow *mainWindow = NULL; + DMainWindow *mainWindow = NULL; bool runStatus; }; diff --git a/main.cpp b/main.cpp index c63e44e..d51960d 100644 --- a/main.cpp +++ b/main.cpp @@ -3,11 +3,30 @@ #include #include #include +#include +#include using namespace Dtk::Widget; +using namespace std; int main(int argc, char *argv[]) { - DApplication a(argc, argv); + // 强制使用 DTK 平台插件 + QVector fakeArgs(argc + 2); + fakeArgs[0] = argv[0]; + fakeArgs[1] = const_cast("-platformtheme"); + fakeArgs[2] = const_cast("deepin"); + for(int i = 1; i < argc; i++){ + fakeArgs[i + 2] = argv[i]; + } + int fakeArgc = argc + 2; + DApplication a(fakeArgc, fakeArgs.data()); + DApplication::setOrganizationName("gfdgd_xi"); + DApplication::setApplicationName("deepin-wine-runner-aptss-installer"); + + if(system("which aptss")){ + DMessageBox::information(NULL, "错误", "无法检测到 aptss\n请确保您已安装星火应用商店并更新至最新版本"); + return 1; + } QTranslator translator; const QStringList uiLanguages = QLocale::system().uiLanguages(); diff --git a/mainwindow.cpp b/mainwindow.cpp index b85c550..61b6511 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -10,9 +10,9 @@ MainWindow::MainWindow(QWidget *parent) , ui(new Ui::MainWindow) { ui->setupUi(this); - MessageBox *message = new MessageBox(); + /*MessageBox *message = new MessageBox(); message->information("A", "B"); - this->close(); + this->close();*/ } MainWindow::~MainWindow() @@ -25,16 +25,11 @@ void MainWindow::on_installPath_clicked() { QTermWidget *terminal = new QTermWidget(0); terminal->setColorScheme("DarkPastels"); - terminal->setShellProgram("/usr/bin/bash"); - terminal->setArgs(QStringList() << "-c" << "gedit"); - connect(terminal, &QTermWidget::finished, this, [&, this](){ - //QMessageBox::information(NULL, "提示", "系统安装完成"); - MessageBox *message = new MessageBox(); - message->information("A", "B"); - }); - terminal->startShellProgram(); - - + terminal->setAutoClose(1); + InstallDEB *deb = new InstallDEB(terminal, this); + deb->AddCommand("aptss update"); + deb->AddCommand("aptss install \"" + ui->debPath->text() + "\""); + deb->RunCommand(1); ui->gridLayout->addWidget(terminal, 1, 0); } diff --git a/mainwindow.ui b/mainwindow.ui index 5a49cd5..baff2a4 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -20,6 +20,13 @@ + + + + 浏览 + + + @@ -29,6 +36,19 @@ + + + + Qt::Vertical + + + + 20 + 40 + + + +