From c4cdc73946990ddfb9aa24e8a394ab77a49baf3e Mon Sep 17 00:00:00 2001 From: peijiankang Date: Wed, 24 May 2023 12:45:45 +0800 Subject: [PATCH] fix-uninstall-failed-issue --- .../RightClickMenu/rightclickmenu.cpp | 62 +++- .../RightClickMenu/rightclickmenu.h | 4 + translations/ukui-menu_zh_CN.ts | 97 ++++-- translations/ukui-menu_zh_CN.ts_back | 322 ++++++++++++++++++ 4 files changed, 442 insertions(+), 43 deletions(-) create mode 100755 translations/ukui-menu_zh_CN.ts_back diff --git a/src/UserInterface/RightClickMenu/rightclickmenu.cpp b/src/UserInterface/RightClickMenu/rightclickmenu.cpp index de3cc85..3db1762 100755 --- a/src/UserInterface/RightClickMenu/rightclickmenu.cpp +++ b/src/UserInterface/RightClickMenu/rightclickmenu.cpp @@ -18,11 +18,15 @@ #include "rightclickmenu.h" #include "src/UtilityFunction/utility.h" #include +#include +#include RightClickMenu::RightClickMenu(QWidget *parent): QWidget(parent) { m_cmdProc = new QProcess; + connect(m_cmdProc , &QProcess::readyReadStandardOutput, this , &RightClickMenu::onReadOutput); + m_whiteList.append("kylin-screenshot.desktop"); m_whiteList.append("ukui-notebook.desktop"); m_whiteList.append("ukui-clock.desktop"); @@ -177,14 +181,56 @@ void RightClickMenu::addToDesktopActionTriggerSlot() void RightClickMenu::uninstallActionTriggerSlot() { - QString cmd = QString("kylin-uninstaller %1") - .arg(m_desktopfp.toLocal8Bit().data()); - bool ret = QProcess::startDetached(cmd); - myDebug() << "卸载:" << cmd << ret; + QString cmd=QString("rpm -qf "+m_desktopfp); + m_cmdProc->setReadChannel(QProcess::StandardOutput); + m_cmdProc->start("sh",QStringList()<<"-c"<waitForFinished(); + m_cmdProc->waitForReadyRead(); + m_cmdProc->close(); + myDebug() << "卸载:" << cmd; myDebug() << "kylin-uninstaller"; m_actionNumber = 6; } +void RightClickMenu::onReadOutput() +{ + QString packagestr=QString::fromLocal8Bit(m_cmdProc->readAllStandardOutput().data()); + QString packageName=packagestr.split(":").at(0); + + packageName = packageName.trimmed(); + QProcess tempProcess; + QString cmd = QString("pkexec rpm -e %1").arg(packageName); + tempProcess.start(cmd); + tempProcess.waitForFinished(); + + QString errorInfo1 = tempProcess.readAllStandardError().data(); + QString result1 = tempProcess.readAllStandardOutput().data(); + //check uninstall + cmd = QString("rpm -qa"); + tempProcess.start(cmd); + tempProcess.waitForFinished(); + + QString errorInfo2 = tempProcess.readAllStandardError().data(); + QString result2 = tempProcess.readAllStandardOutput().data(); + bool bFail = false; + bFail= result2.contains(packageName); + + if(!result2.isEmpty() && !bFail) + { + QMessageBox::information(this,tr("infomation"),tr("Uninstall finished!")); + } + else if(result2.isEmpty()) { + QMessageBox::information(this,tr("error"), tr("timeout!")); + } + else { + QMessageBox::information(this,tr("error"), errorInfo1); + } + + QKeyEvent event(QEvent::KeyPress, Qt::Key_Menu,Qt::NoModifier); + QCoreApplication::sendEvent(this->parent(),&event); + tempProcess.close(); +} + void RightClickMenu::attributeActionTriggerSlot() { char command[100]; @@ -286,9 +332,11 @@ int RightClickMenu::showAppBtnMenu(const QPoint &pos, QString desktopfp) m_showAppMenu.addSeparator(); - if (!m_whiteList.contains(desktopfn)) - m_showAppMenu.addAction(QIcon(getIconPixmap(":/data/img/mainviewwidget/uninstall.svg", 0)), tr("Uninstall"), - this, SLOT(uninstallActionTriggerSlot())); + if(!g_isFullScreen){ + if (!m_whiteList.contains(desktopfn)) + m_showAppMenu.addAction(QIcon(getIconPixmap(":/data/img/mainviewwidget/uninstall.svg", 0)), tr("Uninstall"), + this, SLOT(uninstallActionTriggerSlot())); + } m_showAppMenu.setAttribute(Qt::WA_TranslucentBackground); m_showAppMenu.setAttribute(Qt::WA_DeleteOnClose); diff --git a/src/UserInterface/RightClickMenu/rightclickmenu.h b/src/UserInterface/RightClickMenu/rightclickmenu.h index 573b08e..c4d5968 100755 --- a/src/UserInterface/RightClickMenu/rightclickmenu.h +++ b/src/UserInterface/RightClickMenu/rightclickmenu.h @@ -119,6 +119,10 @@ private Q_SLOTS: * @brief Uninstall */ void uninstallActionTriggerSlot(); + /** + * @brief Read command output + */ + void onReadOutput(); /** * @brief Attribute */ diff --git a/translations/ukui-menu_zh_CN.ts b/translations/ukui-menu_zh_CN.ts index 59aa5fd..e35f008 100755 --- a/translations/ukui-menu_zh_CN.ts +++ b/translations/ukui-menu_zh_CN.ts @@ -43,18 +43,18 @@ 打开字母排序菜单 - + Open the function sort menu 打开功能排序菜单 - + Open the alphabetical menu 打开字母排序菜单 - - + + path: 路径: @@ -72,36 +72,36 @@ 搜索应用 - + No recent files 暂无最近文件 - - - - + + + + All 全部 - + collection 收藏 - + recent 最近 - + Max 放大 - + PowerOff 电源 @@ -110,16 +110,16 @@ 搜索应用 - - - + + + Letter 字母排序 - - - + + + Function 功能分类 @@ -196,82 +196,103 @@ RightClickMenu - + + infomation + 提示 + + + + Uninstall finished! + 卸载成功! + + + + + error + 错误 + + + + timeout! + 超时! + + + Pin to all 固定到“所有软件” - + Unpin from all 从“所有软件”取消固定 - + Pin to taskbar 固定到任务栏 - + Unpin from taskbar 从任务栏取消固定 - + Add to desktop shortcuts 添加到桌面快捷方式 - + Pin to collection 固定到收藏 - + Remove from collection 从收藏移除 - + Uninstall 卸载 - + Switch user 切换用户 - + Hibernate 休眠 - + Sleep 睡眠 - + Lock Screen 锁屏 - + Log Out 注销 - + Restart 重启 - + Power Off 关机 - + Personalize this list @@ -295,8 +316,12 @@ + Uninstall2 + + + Uninstall - 卸载 + 卸载 diff --git a/translations/ukui-menu_zh_CN.ts_back b/translations/ukui-menu_zh_CN.ts_back new file mode 100755 index 0000000..8ce304a --- /dev/null +++ b/translations/ukui-menu_zh_CN.ts_back @@ -0,0 +1,322 @@ + + + + + FullMainWindow + + + Search + 搜索应用 + + + + All + 全部 + + + + Letter + 字母排序 + + + + Function + 功能分类 + + + + FunctionWidget + + + Search + 全局搜索 + + + + ItemDelegate + + Open feature sort list + 打开功能排序菜单 + + + Open alphabetical list + 打开字母排序菜单 + + + + Open the function sort menu + 打开功能排序菜单 + + + + Open the alphabetical menu + 打开字母排序菜单 + + + + + path: + 路径: + + + path + 路径 + + + + MainWindow + + + + Search + 搜索应用 + + + + No recent files + 暂无最近文件 + + + + + + + + All + 全部 + + + + collection + 收藏 + + + + recent + 最近 + + + + Max + 放大 + + + + PowerOff + 电源 + + + Search application + 搜索应用 + + + + + + Letter + 字母排序 + + + + + + Function + 功能分类 + + + + QObject + + + + Office + 办公 + + + + + Development + 开发 + + + + + Image + 图像 + + + + + Video + 影音 + + + + + Internet + 网络 + + + + + Game + 游戏 + + + + + Education + 教育 + + + + + Social + 社交 + + + + + System + 系统 + + + + + Safe + 安全 + + + + + Others + 其他 + + + + RightClickMenu + + + infomation + 提示 + + + + Uninstall finished! + 卸载成功! + + + + error + 错误 + + + + timeout! + 超时! + + + + Pin to all + 固定到“所有软件” + + + + Unpin from all + 从“所有软件”取消固定 + + + + Pin to taskbar + 固定到任务栏 + + + + Unpin from taskbar + 从任务栏取消固定 + + + + Add to desktop shortcuts + 添加到桌面快捷方式 + + + + Pin to collection + 固定到收藏 + + + + Remove from collection + 从收藏移除 + + + + Uninstall + 卸载 + + + + Switch user + 切换用户 + + + + Hibernate + 休眠 + + + + Sleep + 睡眠 + + + + Lock Screen + 锁屏 + + + + Log Out + 注销 + + + + Restart + 重启 + + + + Power Off + 关机 + + + + Personalize this list + + + + + TabletRightClickMenu + + + Pin to taskbar + 固定到任务栏 + + + + Unpin from taskbar + 从任务栏取消固定 + + + + Add to desktop shortcuts + 固定到桌面快捷方式 + + + + Uninstall + 卸载 + + + -- 2.39.1