ukui-menu/0001-fix-uninstall-failed-issue.patch
2023-02-01 13:58:45 +08:00

374 lines
16 KiB
Diff

From b8df82788c21c4e768b55e9a09f6d61f44febd5f Mon Sep 17 00:00:00 2001
From: peijiankang <peijiankang@kylinos.cn>
Date: Wed, 1 Feb 2023 12:44:20 +0800
Subject: [PATCH] fix uninstall failed issue
---
.../RightClickMenu/rightclickmenu.cpp | 50 +++++++++-
.../RightClickMenu/rightclickmenu.h | 6 ++
.../RightClickMenu/tabletrightclickmenu.cpp | 2 +
translations/ukui-menu_zh_CN.ts | 94 ++++++++++---------
4 files changed, 105 insertions(+), 47 deletions(-)
diff --git a/src/UserInterface/RightClickMenu/rightclickmenu.cpp b/src/UserInterface/RightClickMenu/rightclickmenu.cpp
index 45f7b46..40d58e0 100755
--- a/src/UserInterface/RightClickMenu/rightclickmenu.cpp
+++ b/src/UserInterface/RightClickMenu/rightclickmenu.cpp
@@ -19,11 +19,15 @@
#include "rightclickmenu.h"
#include "src/UtilityFunction/utility.h"
#include <QDebug>
+#include <QMessageBox>
+#include <QKeyEvent>
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");
@@ -141,14 +145,50 @@ 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;
- myDebug() << "kylin-uninstaller";
+ QString cmd=QString("rpm -qf "+m_desktopfp);
+ m_cmdProc->setReadChannel(QProcess::StandardOutput);
+ m_cmdProc->start("sh",QStringList()<<"-c"<<cmd);
+ m_cmdProc->waitForFinished();
+ m_cmdProc->waitForReadyRead();
+ m_cmdProc->close();
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(!bFail)
+ {
+ QMessageBox::information(this,tr("infomation"),tr("Uninstall finished!"));
+ }
+ else {
+ QMessageBox::information(this,tr("error"), errorInfo1);
+ }
+ QKeyEvent event(QEvent::KeyPress, Qt::Key_Menu,Qt::NoModifier);
+ QCoreApplication::sendEvent(this->parent(),&event);
+}
+
+
void RightClickMenu::attributeActionTriggerSlot()
{
char command[100];
diff --git a/src/UserInterface/RightClickMenu/rightclickmenu.h b/src/UserInterface/RightClickMenu/rightclickmenu.h
index a96c65d..bba9cf1 100755
--- a/src/UserInterface/RightClickMenu/rightclickmenu.h
+++ b/src/UserInterface/RightClickMenu/rightclickmenu.h
@@ -117,6 +117,12 @@ private Q_SLOTS:
* @brief Uninstall
*/
void uninstallActionTriggerSlot();
+
+ /**
+ * @brief Read command output
+ */
+ void onReadOutput();
+
/**
* @brief Attribute
*/
diff --git a/src/UserInterface/RightClickMenu/tabletrightclickmenu.cpp b/src/UserInterface/RightClickMenu/tabletrightclickmenu.cpp
index 3dfdc5d..00e1a92 100755
--- a/src/UserInterface/RightClickMenu/tabletrightclickmenu.cpp
+++ b/src/UserInterface/RightClickMenu/tabletrightclickmenu.cpp
@@ -19,6 +19,7 @@
#include "tabletrightclickmenu.h"
#include "src/UtilityFunction/utility.h"
#include <QDebug>
+#include <syslog.h>
TabletRightClickMenu::TabletRightClickMenu(QWidget *parent):
QWidget(parent)
@@ -185,6 +186,7 @@ void TabletRightClickMenu::addToDesktopActionTriggerSlot()
void TabletRightClickMenu::uninstallActionTriggerSlot()
{
+ syslog(LOG_ERR,"uninstallActionTriggerSlot!!!!!!!!!!!!!!!!\n");
// QString cmd = QString("dpkg -S " + m_desktopfp);
// myDebug() << "void TabletRightClickMenu::uninstallActionTriggerSlot()" << m_desktopfp;
// m_cmdProc->setReadChannel(QProcess::StandardOutput);
diff --git a/translations/ukui-menu_zh_CN.ts b/translations/ukui-menu_zh_CN.ts
index d4abdca..88b52d1 100755
--- a/translations/ukui-menu_zh_CN.ts
+++ b/translations/ukui-menu_zh_CN.ts
@@ -4,22 +4,22 @@
<context>
<name>FullMainWindow</name>
<message>
- <location filename="../src/UserInterface/full_mainwindow.cpp" line="79"/>
+ <location filename="../src/UserInterface/full_mainwindow.cpp" line="86"/>
<source>Search</source>
<translation>搜索应用</translation>
</message>
<message>
- <location filename="../src/UserInterface/full_mainwindow.cpp" line="138"/>
+ <location filename="../src/UserInterface/full_mainwindow.cpp" line="144"/>
<source>All</source>
<translation>全部</translation>
</message>
<message>
- <location filename="../src/UserInterface/full_mainwindow.cpp" line="140"/>
+ <location filename="../src/UserInterface/full_mainwindow.cpp" line="146"/>
<source>Letter</source>
<translation>字母排序</translation>
</message>
<message>
- <location filename="../src/UserInterface/full_mainwindow.cpp" line="142"/>
+ <location filename="../src/UserInterface/full_mainwindow.cpp" line="148"/>
<source>Function</source>
<translation>功能分类</translation>
</message>
@@ -27,7 +27,7 @@
<context>
<name>FunctionWidget</name>
<message>
- <location filename="../src/UserInterface/Widget/function_Widget.cpp" line="205"/>
+ <location filename="../src/UserInterface/Widget/function_Widget.cpp" line="204"/>
<source>Search</source>
<translation>全局搜索</translation>
</message>
@@ -35,51 +35,46 @@
<context>
<name>MainWindow</name>
<message>
- <location filename="../src/UserInterface/mainwindow.cpp" line="97"/>
+ <location filename="../src/UserInterface/mainwindow.cpp" line="89"/>
<source>Search</source>
<translation>搜索应用</translation>
</message>
<message>
- <location filename="../src/UserInterface/mainwindow.cpp" line="237"/>
- <location filename="../src/UserInterface/mainwindow.cpp" line="426"/>
- <location filename="../src/UserInterface/mainwindow.cpp" line="844"/>
+ <location filename="../src/UserInterface/mainwindow.cpp" line="221"/>
+ <location filename="../src/UserInterface/mainwindow.cpp" line="421"/>
+ <location filename="../src/UserInterface/mainwindow.cpp" line="939"/>
<source>All</source>
<translation>全部</translation>
</message>
<message>
- <location filename="../src/UserInterface/mainwindow.cpp" line="239"/>
- <source>...</source>
- <translation></translation>
- </message>
- <message>
- <location filename="../src/UserInterface/mainwindow.cpp" line="242"/>
+ <location filename="../src/UserInterface/mainwindow.cpp" line="226"/>
<source>collection</source>
<translation>收藏</translation>
</message>
<message>
- <location filename="../src/UserInterface/mainwindow.cpp" line="243"/>
+ <location filename="../src/UserInterface/mainwindow.cpp" line="227"/>
<source>recent</source>
<translation>最近</translation>
</message>
<message>
- <location filename="../src/UserInterface/mainwindow.cpp" line="244"/>
+ <location filename="../src/UserInterface/mainwindow.cpp" line="228"/>
<source>Max</source>
<translation>放大</translation>
</message>
<message>
- <location filename="../src/UserInterface/mainwindow.cpp" line="246"/>
+ <location filename="../src/UserInterface/mainwindow.cpp" line="230"/>
<source>PowerOff</source>
<translation>关机</translation>
</message>
<message>
- <location filename="../src/UserInterface/mainwindow.cpp" line="428"/>
- <location filename="../src/UserInterface/mainwindow.cpp" line="852"/>
+ <location filename="../src/UserInterface/mainwindow.cpp" line="423"/>
+ <location filename="../src/UserInterface/mainwindow.cpp" line="947"/>
<source>Letter</source>
<translation>字母排序</translation>
</message>
<message>
- <location filename="../src/UserInterface/mainwindow.cpp" line="430"/>
- <location filename="../src/UserInterface/mainwindow.cpp" line="860"/>
+ <location filename="../src/UserInterface/mainwindow.cpp" line="425"/>
+ <location filename="../src/UserInterface/mainwindow.cpp" line="955"/>
<source>Function</source>
<translation>功能分类</translation>
</message>
@@ -156,82 +151,97 @@
<context>
<name>RightClickMenu</name>
<message>
- <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="228"/>
+ <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="182"/>
+ <source>infomation</source>
+ <translation>提示</translation>
+ </message>
+ <message>
+ <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="182"/>
+ <source>Uninstall finished!</source>
+ <translation>卸载成功!</translation>
+ </message>
+ <message>
+ <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="185"/>
+ <source>error</source>
+ <translation>错误</translation>
+ </message>
+ <message>
+ <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="253"/>
<source>Pin to all</source>
<translation>固定到“所有软件”</translation>
</message>
<message>
- <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="231"/>
+ <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="256"/>
<source>Unpin from all</source>
<translation>从“所有软件”取消固定</translation>
</message>
<message>
- <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="241"/>
+ <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="266"/>
<source>Pin to taskbar</source>
<translation>固定到任务栏</translation>
</message>
<message>
- <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="244"/>
+ <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="269"/>
<source>Unpin from taskbar</source>
<translation>从任务栏取消固定</translation>
</message>
<message>
- <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="247"/>
+ <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="272"/>
<source>Add to desktop shortcuts</source>
<translation>添加到桌面快捷方式</translation>
</message>
<message>
- <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="251"/>
+ <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="276"/>
<source>Pin to collection</source>
<translation>固定到收藏</translation>
</message>
<message>
- <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="254"/>
+ <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="279"/>
<source>Remove from collection</source>
<translation>从收藏移除</translation>
</message>
<message>
- <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="269"/>
+ <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="294"/>
<source>Uninstall</source>
<translation>卸载</translation>
</message>
<message>
- <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="290"/>
+ <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="314"/>
<source>Switch user</source>
<translation>切换用户</translation>
</message>
<message>
- <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="296"/>
+ <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="321"/>
<source>Hibernate</source>
<translation>休眠</translation>
</message>
<message>
- <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="302"/>
+ <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="328"/>
<source>Sleep</source>
<translation>睡眠</translation>
</message>
<message>
- <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="306"/>
+ <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="332"/>
<source>Lock Screen</source>
<translation>锁屏</translation>
</message>
<message>
- <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="311"/>
+ <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="337"/>
<source>Log Out</source>
<translation>注销</translation>
</message>
<message>
- <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="317"/>
+ <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="344"/>
<source>Restart</source>
<translation>重启</translation>
</message>
<message>
- <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="323"/>
+ <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="351"/>
<source>Power Off</source>
<translation>关机</translation>
</message>
<message>
- <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="354"/>
+ <location filename="../src/UserInterface/RightClickMenu/rightclickmenu.cpp" line="382"/>
<source>Personalize this list</source>
<translation type="unfinished"></translation>
</message>
@@ -239,22 +249,22 @@
<context>
<name>TabletRightClickMenu</name>
<message>
- <location filename="../src/UserInterface/RightClickMenu/tabletrightclickmenu.cpp" line="241"/>
+ <location filename="../src/UserInterface/RightClickMenu/tabletrightclickmenu.cpp" line="243"/>
<source>Pin to taskbar</source>
<translation>固定到任务栏</translation>
</message>
<message>
- <location filename="../src/UserInterface/RightClickMenu/tabletrightclickmenu.cpp" line="244"/>
+ <location filename="../src/UserInterface/RightClickMenu/tabletrightclickmenu.cpp" line="246"/>
<source>Unpin from taskbar</source>
<translation>从任务栏取消固定</translation>
</message>
<message>
- <location filename="../src/UserInterface/RightClickMenu/tabletrightclickmenu.cpp" line="250"/>
+ <location filename="../src/UserInterface/RightClickMenu/tabletrightclickmenu.cpp" line="252"/>
<source>Add to desktop shortcuts</source>
<translation>固定到桌面快捷方式</translation>
</message>
<message>
- <location filename="../src/UserInterface/RightClickMenu/tabletrightclickmenu.cpp" line="269"/>
+ <location filename="../src/UserInterface/RightClickMenu/tabletrightclickmenu.cpp" line="271"/>
<source>Uninstall</source>
<translation>卸载</translation>
</message>
--
2.33.0