fix uninstall failed issue

This commit is contained in:
pei-jiankang 2022-03-30 11:34:26 +08:00
parent 921efe0c32
commit 92955ac15c
2 changed files with 359 additions and 1 deletions

View File

@ -0,0 +1,353 @@
From e523ae71ada3db531df88679d25fb64580fd6678 Mon Sep 17 00:00:00 2001
From: pei-jiankang <peijiankang@kylinos.cn>
Date: Tue, 29 Mar 2022 17:29:46 +0800
Subject: [PATCH] fix uninstall failed issue
---
src/RightClickMenu/rightclickmenu.cpp | 66 ++++++++++++++--------
src/RightClickMenu/rightclickmenu.h | 4 ++
translations/ukui-menu_zh_CN.ts | 79 ++++++++++++++++-----------
3 files changed, 94 insertions(+), 55 deletions(-)
diff --git a/src/RightClickMenu/rightclickmenu.cpp b/src/RightClickMenu/rightclickmenu.cpp
index 2e86f6f..a3af856 100644
--- a/src/RightClickMenu/rightclickmenu.cpp
+++ b/src/RightClickMenu/rightclickmenu.cpp
@@ -19,11 +19,14 @@
#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");
@@ -138,32 +141,49 @@ void RightClickMenu::addToDesktopActionTriggerSlot()
void RightClickMenu::uninstallActionTriggerSlot()
{
-// if(!checkOsRelease())
-// {
- QString cmd=QString("kylin-uninstaller %1")
- .arg(m_desktopfp.toLocal8Bit().data());
- bool ret=QProcess::startDetached(cmd);
- qDebug()<<"卸载:"<<cmd<<ret;
- qDebug() << "kylin-uninstaller";
-
-// }
-// else
-// {
-// QString cmd=QString("dpkg -S "+m_desktopfp);
-// m_cmdProc->start("sh",QStringList()<<"-c"<<cmd);
-// m_cmdProc->waitForFinished();
-// QString output=m_cmdProc->readAllStandardOutput().trimmed();
-// QString packageName=output.split(":").at(0);
-// cmd.clear();
-// cmd=QString("kylin-installer -remove %1")
-// .arg(packageName.toLocal8Bit().data());
-// bool ret=QProcess::startDetached(cmd);
-// qDebug()<<"卸载:"<<cmd<<ret;
-// qDebug() << "dpkg -S";
-// }
+ 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/RightClickMenu/rightclickmenu.h b/src/RightClickMenu/rightclickmenu.h
index 5760972..f2bed42 100644
--- a/src/RightClickMenu/rightclickmenu.h
+++ b/src/RightClickMenu/rightclickmenu.h
@@ -144,6 +144,10 @@ private Q_SLOTS:
* @brief Personalize this list
*/
void otherListActionTriggerSlot();
+ /**
+ * @brief Read command output
+ */
+ void onReadOutput();
public:
Q_SIGNALS:
diff --git a/translations/ukui-menu_zh_CN.ts b/translations/ukui-menu_zh_CN.ts
index f4c522a..5737288 100644
--- a/translations/ukui-menu_zh_CN.ts
+++ b/translations/ukui-menu_zh_CN.ts
@@ -62,57 +62,57 @@
<context>
<name>FunctionWidget</name>
<message>
- <location filename="../src/FunctionWidget/functionwidget.cpp" line="87"/>
+ <location filename="../src/FunctionWidget/functionwidget.cpp" line="88"/>
<source>Mobile</source>
<translation>移动</translation>
</message>
<message>
- <location filename="../src/FunctionWidget/functionwidget.cpp" line="93"/>
+ <location filename="../src/FunctionWidget/functionwidget.cpp" line="94"/>
<source>Internet</source>
<translation>网络</translation>
</message>
<message>
- <location filename="../src/FunctionWidget/functionwidget.cpp" line="99"/>
+ <location filename="../src/FunctionWidget/functionwidget.cpp" line="100"/>
<source>Social</source>
<translation>社交</translation>
</message>
<message>
- <location filename="../src/FunctionWidget/functionwidget.cpp" line="105"/>
+ <location filename="../src/FunctionWidget/functionwidget.cpp" line="106"/>
<source>Video</source>
<translation>影音</translation>
</message>
<message>
- <location filename="../src/FunctionWidget/functionwidget.cpp" line="111"/>
+ <location filename="../src/FunctionWidget/functionwidget.cpp" line="112"/>
<source>Development</source>
<translation>开发</translation>
</message>
<message>
- <location filename="../src/FunctionWidget/functionwidget.cpp" line="117"/>
+ <location filename="../src/FunctionWidget/functionwidget.cpp" line="118"/>
<source>Image</source>
<translation>图像</translation>
</message>
<message>
- <location filename="../src/FunctionWidget/functionwidget.cpp" line="123"/>
+ <location filename="../src/FunctionWidget/functionwidget.cpp" line="124"/>
<source>Game</source>
<translation>游戏</translation>
</message>
<message>
- <location filename="../src/FunctionWidget/functionwidget.cpp" line="129"/>
+ <location filename="../src/FunctionWidget/functionwidget.cpp" line="130"/>
<source>Office</source>
<translation>办公</translation>
</message>
<message>
- <location filename="../src/FunctionWidget/functionwidget.cpp" line="135"/>
+ <location filename="../src/FunctionWidget/functionwidget.cpp" line="136"/>
<source>Education</source>
<translation>教育</translation>
</message>
<message>
- <location filename="../src/FunctionWidget/functionwidget.cpp" line="142"/>
+ <location filename="../src/FunctionWidget/functionwidget.cpp" line="143"/>
<source>System</source>
<translation>系统</translation>
</message>
<message>
- <location filename="../src/FunctionWidget/functionwidget.cpp" line="148"/>
+ <location filename="../src/FunctionWidget/functionwidget.cpp" line="149"/>
<source>Others</source>
<translation>其它</translation>
</message>
@@ -120,7 +120,7 @@
<context>
<name>MainViewWidget</name>
<message>
- <location filename="../src/MainViewWidget/mainviewwidget.cpp" line="226"/>
+ <location filename="../src/MainViewWidget/mainviewwidget.cpp" line="256"/>
<source>Search</source>
<translation>搜索</translation>
</message>
@@ -175,32 +175,47 @@
<context>
<name>RightClickMenu</name>
<message>
- <location filename="../src/RightClickMenu/rightclickmenu.cpp" line="216"/>
+ <location filename="../src/RightClickMenu/rightclickmenu.cpp" line="176"/>
+ <source>infomation</source>
+ <translation>提示</translation>
+ </message>
+ <message>
+ <location filename="../src/RightClickMenu/rightclickmenu.cpp" line="176"/>
+ <source>Uninstall finished!</source>
+ <translation>卸载成功!</translation>
+ </message>
+ <message>
+ <location filename="../src/RightClickMenu/rightclickmenu.cpp" line="179"/>
+ <source>error</source>
+ <translation>错误</translation>
+ </message>
+ <message>
+ <location filename="../src/RightClickMenu/rightclickmenu.cpp" line="247"/>
<source>Pin to all</source>
<translation>固定到“所有软件”</translation>
</message>
<message>
- <location filename="../src/RightClickMenu/rightclickmenu.cpp" line="219"/>
+ <location filename="../src/RightClickMenu/rightclickmenu.cpp" line="250"/>
<source>Unpin from all</source>
<translation>从“所有软件”取消固定</translation>
</message>
<message>
- <location filename="../src/RightClickMenu/rightclickmenu.cpp" line="228"/>
+ <location filename="../src/RightClickMenu/rightclickmenu.cpp" line="259"/>
<source>Pin to taskbar</source>
<translation>固定到任务栏</translation>
</message>
<message>
- <location filename="../src/RightClickMenu/rightclickmenu.cpp" line="231"/>
+ <location filename="../src/RightClickMenu/rightclickmenu.cpp" line="262"/>
<source>Unpin from taskbar</source>
<translation>从任务栏取消固定</translation>
</message>
<message>
- <location filename="../src/RightClickMenu/rightclickmenu.cpp" line="234"/>
+ <location filename="../src/RightClickMenu/rightclickmenu.cpp" line="265"/>
<source>Add to desktop shortcuts</source>
<translation>添加到桌面快捷方式</translation>
</message>
<message>
- <location filename="../src/RightClickMenu/rightclickmenu.cpp" line="245"/>
+ <location filename="../src/RightClickMenu/rightclickmenu.cpp" line="274"/>
<source>Uninstall</source>
<translation>卸载</translation>
</message>
@@ -209,7 +224,7 @@
<translation type="vanished">休眠</translation>
</message>
<message>
- <location filename="../src/RightClickMenu/rightclickmenu.cpp" line="259"/>
+ <location filename="../src/RightClickMenu/rightclickmenu.cpp" line="291"/>
<source>Sleep</source>
<translation>睡眠</translation>
</message>
@@ -222,22 +237,22 @@
<translation type="vanished">切换用户</translation>
</message>
<message>
- <location filename="../src/RightClickMenu/rightclickmenu.cpp" line="261"/>
+ <location filename="../src/RightClickMenu/rightclickmenu.cpp" line="293"/>
<source>Log Out</source>
<translation>注销</translation>
</message>
<message>
- <location filename="../src/RightClickMenu/rightclickmenu.cpp" line="263"/>
+ <location filename="../src/RightClickMenu/rightclickmenu.cpp" line="295"/>
<source>Restart</source>
<translation>重启</translation>
</message>
<message>
- <location filename="../src/RightClickMenu/rightclickmenu.cpp" line="265"/>
+ <location filename="../src/RightClickMenu/rightclickmenu.cpp" line="297"/>
<source>Power Off</source>
<translation>关机</translation>
</message>
<message>
- <location filename="../src/RightClickMenu/rightclickmenu.cpp" line="292"/>
+ <location filename="../src/RightClickMenu/rightclickmenu.cpp" line="327"/>
<source>Personalize this list</source>
<translation>设置开始菜单显示列表</translation>
</message>
@@ -245,42 +260,42 @@
<context>
<name>SideBarWidget</name>
<message>
- <location filename="../src/SideBarWidget/sidebarwidget.cpp" line="95"/>
+ <location filename="../src/SideBarWidget/sidebarwidget.cpp" line="143"/>
<source>All</source>
<translation>所有软件</translation>
</message>
<message>
- <location filename="../src/SideBarWidget/sidebarwidget.cpp" line="97"/>
+ <location filename="../src/SideBarWidget/sidebarwidget.cpp" line="145"/>
<source>Letter</source>
<translation>字母排序</translation>
</message>
<message>
- <location filename="../src/SideBarWidget/sidebarwidget.cpp" line="99"/>
+ <location filename="../src/SideBarWidget/sidebarwidget.cpp" line="147"/>
<source>Function</source>
<translation>功能分类</translation>
</message>
<message>
- <location filename="../src/SideBarWidget/sidebarwidget.cpp" line="113"/>
+ <location filename="../src/SideBarWidget/sidebarwidget.cpp" line="161"/>
<source>Trash</source>
<translation>回收站</translation>
</message>
<message>
- <location filename="../src/SideBarWidget/sidebarwidget.cpp" line="115"/>
+ <location filename="../src/SideBarWidget/sidebarwidget.cpp" line="163"/>
<source>Computer</source>
<translation>计算机</translation>
</message>
<message>
- <location filename="../src/SideBarWidget/sidebarwidget.cpp" line="469"/>
+ <location filename="../src/SideBarWidget/sidebarwidget.cpp" line="521"/>
<source>Max</source>
<translation>放大</translation>
</message>
<message>
- <location filename="../src/SideBarWidget/sidebarwidget.cpp" line="111"/>
+ <location filename="../src/SideBarWidget/sidebarwidget.cpp" line="159"/>
<source>Personal</source>
<translation>个人</translation>
</message>
<message>
- <location filename="../src/SideBarWidget/sidebarwidget.cpp" line="117"/>
+ <location filename="../src/SideBarWidget/sidebarwidget.cpp" line="165"/>
<source>Settings</source>
<translation>设置</translation>
</message>
@@ -289,7 +304,7 @@
<translation type="vanished">回收站</translation>
</message>
<message>
- <location filename="../src/SideBarWidget/sidebarwidget.cpp" line="119"/>
+ <location filename="../src/SideBarWidget/sidebarwidget.cpp" line="167"/>
<source>Power</source>
<translation>电源</translation>
</message>
--
2.33.0

View File

@ -2,11 +2,12 @@
Name: ukui-menu
Version: 3.0.3
Release: 1
Release: 2
Summary: Advanced ukui menu
License: GPL-3.0
URL: http://www.ukui.org
Source0: %{name}-%{version}.tar.gz
Patch1: 0001-fix-uninstall-failed-issue.patch
BuildRequires: qt5-qtbase-devel
BuildRequires: libqtxdg-devel
@ -37,6 +38,7 @@ Requires: accountsservice
%prep
%setup -q
%patch1 -p1
%build
mkdir build && cd build
@ -58,6 +60,9 @@ rm -rf $RPM_BUILD_ROOT
%{_datadir}/ukui-menu/translations/
%changelog
* Tue Mar 29 2022 pei-jiankang <peijiankang@kylinos.cn> - 3.0.3-2
- fix uninstalled failed issue
* Mon Oct 26 2020 huayadong <huayadong@kylinos.cn> - 3.0.3-1
- update to upstream version 3.0.3-1