ukui-menu/0003-Fixed-right-click-exception-popover-problem.patch
2022-08-04 02:11:50 +08:00

1012 lines
42 KiB
Diff

From b4ae3b3b79baab4d8b449d46ceb79ed84ac31a4b Mon Sep 17 00:00:00 2001
From: liuhao-startmenu <liuhao@kylinos.cn>
Date: Thu, 2 Apr 2020 20:04:58 +0800
Subject: [PATCH] Fixed right-click exception popover problem
---
data/img/mainviewwidget/lock-fs.svg | 35 +-------
data/img/mainviewwidget/lock.svg | 32 +-------
src/CommonUseWidget/commonusewidget.cpp | 77 +++++++++---------
src/CommonUseWidget/commonusewidget.h | 2 +-
src/CommonUseWidget/fullcommonusewidget.cpp | 74 +++++++++--------
src/CommonUseWidget/fullcommonusewidget.h | 1 +
src/Interface/ukuimenuinterface.cpp | 33 ++++----
src/MainViewWidget/mainviewwidget.cpp | 4 +
src/MainWindow/mainwindow.cpp | 22 +++--
src/MainWindow/mainwindow.h | 2 +-
src/MainWindow/mainwindow.ui | 28 ++-----
src/RightClickMenu/rightclickmenu.cpp | 44 ++++++----
src/RightClickMenu/rightclickmenu.h | 1 +
src/SideBarWidget/sidebarwidget.cpp | 24 ------
src/UtilityFunction/fullitemdelegate.cpp | 10 +--
src/UtilityFunction/fulllistview.cpp | 89 ++++++++-------------
src/UtilityFunction/fulllistview.h | 6 --
src/UtilityFunction/itemdelegate.cpp | 9 ++-
src/UtilityFunction/listview.cpp | 55 +++++++------
19 files changed, 218 insertions(+), 330 deletions(-)
diff --git a/data/img/mainviewwidget/lock-fs.svg b/data/img/mainviewwidget/lock-fs.svg
index 9f1b445..71f3141 100644
--- a/data/img/mainviewwidget/lock-fs.svg
+++ b/data/img/mainviewwidget/lock-fs.svg
@@ -1,34 +1 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
-<style type="text/css">
- .st0{fill:#607D8B;}
- .st1{opacity:0.3;enable-background:new ;}
- .st2{fill:url(#SVGID_1_);}
- .st3{opacity:0.5;fill:#FDEFBA;enable-background:new ;}
-</style>
-<title>画板 1</title>
-<g id="锁-小">
- <g id="_32-3">
- <g id="_512">
- <g>
- <g>
- <path class="st0" d="M8,2c1.6,0,3,1.2,3,2.6V6H5V4.6C5,3.2,6.4,2,8,2 M8,0C5.3,0,3,2.1,3,4.6V8h8.3H13V4.6C13,2.1,10.8,0,8,0
- L8,0z"/>
- </g>
- </g>
- <path class="st1" d="M2,6h12c1.1,0,2,0.9,2,2v6c0,1.1-0.9,2-2,2H2c-1.1,0-2-0.9-2-2V8C0,6.9,0.9,6,2,6z"/>
-
- <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="8" y1="-93.1268" x2="8" y2="-102" gradientTransform="matrix(1 0 0 1 0 108)">
- <stop offset="0" style="stop-color:#F5A816"/>
- <stop offset="0.67" style="stop-color:#F9CE4B"/>
- <stop offset="1" style="stop-color:#FADD60"/>
- </linearGradient>
- <path class="st2" d="M3,6h10c1.1,0,2,0.9,2,2v5c0,1.1-0.9,2-2,2H3c-1.1,0-2-0.9-2-2V8C1,6.9,1.9,6,3,6z"/>
- <rect x="3" y="6" class="st3" width="2" height="9"/>
- <rect x="11" y="6" class="st3" width="2" height="9"/>
- </g>
- </g>
-</g>
-</svg>
+<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 16 16"><defs><style>.cls-1{opacity:0.3;}.cls-2{opacity:0.1;}.cls-3{fill:#c2c2c2;}.cls-4{fill:url(#未命名的渐变_72);}.cls-5{fill:url(#未命名的渐变_64);}.cls-6{fill:url(#未命名的渐变_10);}.cls-7{fill:url(#未命名的渐变_39);}</style><linearGradient id="未命名的渐变_72" x1="3.15" y1="9.36" x2="11.5" y2="9.36" gradientTransform="translate(8.25 -2.65) rotate(45)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ffcd94"/><stop offset="1" stop-color="#ff986a"/></linearGradient><linearGradient id="未命名的渐变_64" x1="5.36" y1="6.47" x2="9.48" y2="6.47" gradientTransform="translate(8.25 -2.65) rotate(45)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ffb16a"/><stop offset="0.11" stop-color="#ffc586"/><stop offset="0.22" stop-color="#ffd49b"/><stop offset="0.29" stop-color="#ffd9a3"/><stop offset="0.42" stop-color="#fec98f"/><stop offset="0.66" stop-color="#fcaf6f"/><stop offset="0.86" stop-color="#faa05c"/><stop offset="1" stop-color="#fa9a55"/></linearGradient><linearGradient id="未命名的渐变_10" x1="3.15" y1="3.73" x2="11.5" y2="3.73" gradientTransform="translate(8.25 -2.65) rotate(45)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ff986a"/><stop offset="0.23" stop-color="#ffb16a"/><stop offset="1" stop-color="#ff986a"/></linearGradient><linearGradient id="未命名的渐变_39" x1="3.15" y1="2.3" x2="11.5" y2="2.3" gradientTransform="translate(14.1 -3.17) rotate(90)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ffd9a3"/><stop offset="1" stop-color="#ffb16a"/></linearGradient></defs><title>彩色</title><path class="cls-1" d="M12.59,4.37C11,2.74,9.29,1.77,8.85,2.21s-.64,1.91-.14,3.26l-2.2,2.2c-1.34-.51-2.73-.4-3.26.14-.38.38.31,1.7,1.57,3.11L1.91,14.74l.42.43,4-2.81c1.31,1.11,2.5,1.7,2.85,1.35a3.29,3.29,0,0,0,.21-3.07l2.33-2.32a3.32,3.32,0,0,0,3.06-.21C15.19,7.67,14.22,6,12.59,4.37Z"/><path class="cls-2" d="M13.21,5.2C11.58,3.57,9.91,2.61,9.47,3S8.83,5,9.33,6.3L7.13,8.5C5.79,8,4.4,8.11,3.87,8.64c-.38.38.31,1.7,1.57,3.11L2.52,15.58,3,16l4-2.81c1.31,1.12,2.49,1.71,2.85,1.35A3.27,3.27,0,0,0,10,11.48l2.33-2.33a3.27,3.27,0,0,0,3.06-.21C15.81,8.51,14.84,6.83,13.21,5.2Z"/><polygon class="cls-3" points="1.91 13.74 5.07 9.6 6.61 11.13 2.33 14.17 1.91 13.74"/><path class="cls-4" d="M8.22,7.74C6.59,6.11,4,6,3.25,6.81c-.43.43.54,2.11,2.16,3.74s3.31,2.59,3.74,2.16C9.93,11.93,9.85,9.37,8.22,7.74Z"/><path class="cls-5" d="M9.18,4l-3,3c-.25.26.2,1.12,1,1.92s1.66,1.25,1.92,1l3-3Z"/><path class="cls-6" d="M11,4.94c-1.63-1.63-2.6-3.3-2.17-3.73-.77.77-.69,3.33.94,5s4.19,1.71,5,.94C14.32,7.54,12.65,6.57,11,4.94Z"/><ellipse class="cls-7" cx="11.8" cy="4.16" rx="1.11" ry="4.17" transform="translate(0.52 9.56) rotate(-45)"/></svg>
\ No newline at end of file
diff --git a/data/img/mainviewwidget/lock.svg b/data/img/mainviewwidget/lock.svg
index 0ceb0d3..6b3d4bf 100644
--- a/data/img/mainviewwidget/lock.svg
+++ b/data/img/mainviewwidget/lock.svg
@@ -1,31 +1 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- viewBox="0 0 12 12" style="enable-background:new 0 0 12 12;" xml:space="preserve">
-<style type="text/css">
- .st0{fill:#607D8B;}
- .st1{opacity:0.3;}
- .st2{fill:url(#SVGID_1_);}
- .st3{opacity:0.5;fill:#FDEFBA;enable-background:new ;}
-</style>
-<title>画板 1</title>
-<g id="锁-小">
- <g id="_32-3">
- <g id="_512">
- <g>
- <path class="st0" d="M10,7H8.6V6H9V4c0-1.6-1.4-3-3-3C4.3,1,3,2.3,3,4v2h0.4v1H2V4c0-2.2,1.8-4,4-4c2.2,0,4,1.8,4,4V7z"/>
- </g>
- <path class="st1" d="M1,4h10c0.6,0,1,0.4,1,1v5c0,1.1-0.9,2-2,2H2c-1.1,0-2-0.9-2-2V5C0,4.4,0.4,4,1,4z"/>
-
- <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="6" y1="113.0986" x2="6" y2="120" gradientTransform="matrix(1 0 0 -1 0 124)">
- <stop offset="0" style="stop-color:#F5A816"/>
- <stop offset="0.67" style="stop-color:#F9CE4B"/>
- <stop offset="1" style="stop-color:#FADD60"/>
- </linearGradient>
- <path class="st2" d="M2,4h8c0.6,0,1,0.4,1,1v5c0,0.6-0.4,1-1,1H2c-0.6,0-1-0.4-1-1V5C1,4.4,1.4,4,2,4z"/>
- <rect x="2" y="4" class="st3" width="1" height="7"/>
- <rect x="9" y="4" class="st3" width="1" height="7"/>
- </g>
- </g>
-</g>
-</svg>
+<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><defs><style>.cls-1{fill:#fff;opacity:0.65;}</style></defs><title>单色</title><path class="cls-1" d="M14.35,5.79,10.19,1.63A.75.75,0,0,0,9.13,2.69l.48.48L5.9,6.8l-2.68.69a.25.25,0,0,0-.11.42l2.14,2.14L1.87,13.43a.5.5,0,0,0,.35.85.47.47,0,0,0,.35-.15L6,10.75l2.14,2.14a.25.25,0,0,0,.42-.11L9.2,10.1l3.63-3.71.46.46a.74.74,0,0,0,.53.22.71.71,0,0,0,.53-.22A.74.74,0,0,0,14.35,5.79Z"/></svg>
\ No newline at end of file
diff --git a/src/CommonUseWidget/commonusewidget.cpp b/src/CommonUseWidget/commonusewidget.cpp
index d276d82..b216247 100644
--- a/src/CommonUseWidget/commonusewidget.cpp
+++ b/src/CommonUseWidget/commonusewidget.cpp
@@ -79,29 +79,8 @@ void CommonUseWidget::initAppListWidget()
*/
void CommonUseWidget::fillAppList()
{
- QStringList keys;
- keys.clear();
- setting->beginGroup("application");
- keys=setting->childKeys();
- QStringList applist;
- applist.clear();
- for(int i=0;i<keys.count();i++)
- {
- int val=setting->value(keys.at(i)).toInt();
- if(val==2 || val==0)
- applist.append(keys.at(i));
- }
-
- data.clear();
- for(int i=0;i<applist.count();i++)
- {
-// QString desktopfp=pUkuiMenuInterface->getDesktopPathByAppName(applist.at(i));
- QString desktopfp=QString("/usr/share/applications/"+applist.at(i));
- data.append(QStringList()<<desktopfp<<"1");
- }
-
+ getCommonUseAppList();
listview->addData(data);
- setting->endGroup();
}
/**
@@ -126,30 +105,50 @@ void CommonUseWidget::execApplication(QStringList arg)
*/
void CommonUseWidget::updateListViewSlot()
{
- QStringList keys;
- keys.clear();
+ getCommonUseAppList();
+ listview->updateData(data);
+}
+
+void CommonUseWidget::getCommonUseAppList()
+{
+// QStringList lockdesktopfnList;
+ QStringList desktopfnList;
+// lockdesktopfnList.clear();
+ desktopfnList.clear();
+ setting->beginGroup("lockapplication");
+ QStringList lockdesktopfnList=setting->allKeys();
+ for(int i=0;i<lockdesktopfnList.count()-1;i++)
+ for(int j=0;j<lockdesktopfnList.count()-1-i;j++)
+ {
+ int value_1=setting->value(lockdesktopfnList.at(j)).toInt();
+ int value_2=setting->value(lockdesktopfnList.at(j+1)).toInt();
+ if(value_1 > value_2)
+ {
+ QString tmp=lockdesktopfnList.at(j);
+ lockdesktopfnList.replace(j,lockdesktopfnList.at(j+1));
+ lockdesktopfnList.replace(j+1,tmp);
+
+ }
+ }
+ setting->endGroup();
setting->beginGroup("application");
- keys=setting->childKeys();
- QStringList applist;
- applist.clear();
- for(int i=0;i<keys.count();i++)
+ Q_FOREACH(QString desktopfn,setting->childKeys())
{
- int val=setting->value(keys.at(i)).toInt();
- if(val==2 || val==0)
- applist.append(keys.at(i));
+ if(setting->value(desktopfn)==2)
+ desktopfnList.append(desktopfn);
}
-
+ setting->endGroup();
data.clear();
- for(int i=0;i<applist.count();i++)
+ Q_FOREACH(QString desktopfn,lockdesktopfnList)
{
-// QString desktopfp=pUkuiMenuInterface->getDesktopPathByAppName(applist.at(i));
- QString desktopfp=QString("/usr/share/applications/"+applist.at(i));
+ QString desktopfp=QString("/usr/share/applications/"+desktopfn);
+ data.append(QStringList()<<desktopfp<<"1");
+ }
+ Q_FOREACH(QString desktopfn,desktopfnList)
+ {
+ QString desktopfp=QString("/usr/share/applications/"+desktopfn);
data.append(QStringList()<<desktopfp<<"1");
}
-
- listview->updateData(data);
- setting->endGroup();
-
}
void CommonUseWidget::widgetMakeZero()
diff --git a/src/CommonUseWidget/commonusewidget.h b/src/CommonUseWidget/commonusewidget.h
index 3009327..84dedcd 100644
--- a/src/CommonUseWidget/commonusewidget.h
+++ b/src/CommonUseWidget/commonusewidget.h
@@ -65,7 +65,7 @@ protected:
void initWidget();
void initAppListWidget();//初始化应用列表界面
void fillAppList();//填充应用列表
-
+ void getCommonUseAppList();//获取常用应用列表
private Q_SLOTS:
void updateListViewSlot();//更新应用列表槽函数
diff --git a/src/CommonUseWidget/fullcommonusewidget.cpp b/src/CommonUseWidget/fullcommonusewidget.cpp
index 3d91c6b..d6bb171 100644
--- a/src/CommonUseWidget/fullcommonusewidget.cpp
+++ b/src/CommonUseWidget/fullcommonusewidget.cpp
@@ -69,29 +69,8 @@ void FullCommonUseWidget::initAppListWidget()
void FullCommonUseWidget::fillAppList()
{
- QStringList keys;
- keys.clear();
- setting->beginGroup("application");
- keys=setting->childKeys();
- QStringList applist;
- applist.clear();
- for(int i=0;i<keys.count();i++)
- {
- int val=setting->value(keys.at(i)).toInt();
- if(val==2 || val==0)
- applist.append(keys.at(i));
- }
-
- data.clear();
- for(int i=0;i<applist.count();i++)
- {
-// QString desktopfp=pUkuiMenuInterface->getDesktopPathByAppName(applist.at(i));
- QString desktopfp=QString("/usr/share/applications/"+applist.at(i));
- data.append(desktopfp);
- }
-
+ getCommonUseAppList();
listview->addData(data);
- setting->endGroup();
}
/**
@@ -115,29 +94,48 @@ void FullCommonUseWidget::execApplication(QString appname)
*/
void FullCommonUseWidget::updateListViewSlot()
{
- QStringList keys;
- keys.clear();
+ getCommonUseAppList();
+ listview->updateData(data);
+}
+
+void FullCommonUseWidget::getCommonUseAppList()
+{
+ QStringList desktopfnList;
+ desktopfnList.clear();
+ setting->beginGroup("lockapplication");
+ QStringList lockdesktopfnList=setting->allKeys();
+ for(int i=0;i<lockdesktopfnList.count()-1;i++)
+ for(int j=0;j<lockdesktopfnList.count()-1-i;j++)
+ {
+ int value_1=setting->value(lockdesktopfnList.at(j)).toInt();
+ int value_2=setting->value(lockdesktopfnList.at(j+1)).toInt();
+ if(value_1 > value_2)
+ {
+ QString tmp=lockdesktopfnList.at(j);
+ lockdesktopfnList.replace(j,lockdesktopfnList.at(j+1));
+ lockdesktopfnList.replace(j+1,tmp);
+
+ }
+ }
+ setting->endGroup();
setting->beginGroup("application");
- keys=setting->childKeys();
- QStringList applist;
- applist.clear();
- for(int i=0;i<keys.count();i++)
+ Q_FOREACH(QString desktopfn,setting->childKeys())
{
- int val=setting->value(keys.at(i)).toInt();
- if(val==2 || val==0)
- applist.append(keys.at(i));
+ if(setting->value(desktopfn)==2)
+ desktopfnList.append(desktopfn);
}
-
+ setting->endGroup();
data.clear();
- for(int i=0;i<applist.count();i++)
+ Q_FOREACH(QString desktopfn,lockdesktopfnList)
{
-// QString desktopfp=pUkuiMenuInterface->getDesktopPathByAppName(applist.at(i));
- QString desktopfp=QString("/usr/share/applications/"+applist.at(i));
+ QString desktopfp=QString("/usr/share/applications/"+desktopfn);
+ data.append(desktopfp);
+ }
+ Q_FOREACH(QString desktopfn,desktopfnList)
+ {
+ QString desktopfp=QString("/usr/share/applications/"+desktopfn);
data.append(desktopfp);
}
-
- listview->updateData(data);
- setting->endGroup();
}
void FullCommonUseWidget::widgetMakeZero()
diff --git a/src/CommonUseWidget/fullcommonusewidget.h b/src/CommonUseWidget/fullcommonusewidget.h
index ae5eca4..c5a7d4e 100644
--- a/src/CommonUseWidget/fullcommonusewidget.h
+++ b/src/CommonUseWidget/fullcommonusewidget.h
@@ -67,6 +67,7 @@ protected:
void initWidget();
void initAppListWidget();//初始化应用列表界面
void fillAppList();//填充应用列表
+ void getCommonUseAppList();//获取常用应用列表
private Q_SLOTS:
void updateListViewSlot();//更新应用列表槽函数
diff --git a/src/Interface/ukuimenuinterface.cpp b/src/Interface/ukuimenuinterface.cpp
index 577873b..3ebb8cf 100644
--- a/src/Interface/ukuimenuinterface.cpp
+++ b/src/Interface/ukuimenuinterface.cpp
@@ -273,21 +273,24 @@ QString UkuiMenuInterface::getAppName(QString desktopfp)
char* filepath=fpbyte.data();
g_key_file_load_from_file(keyfile,filepath,flags,error);
- QString namestr;
- QLocale cn;
- QString language=cn.languageToString(cn.language());
- if(QString::compare(language,"Chinese")==0)
- {
- char* name;
- name=g_key_file_get_locale_string(keyfile,"Desktop Entry","Name[zh_CN]", nullptr, nullptr);
- if(QString::fromLocal8Bit(name).isEmpty())
- name=g_key_file_get_locale_string(keyfile,"Desktop Entry","Name", nullptr, nullptr);
- namestr=QString::fromLocal8Bit(name);
- }
- else {
- char* name=g_key_file_get_locale_string(keyfile,"Desktop Entry","Name", nullptr, nullptr);
- namestr=QString::fromLocal8Bit(name);
- }
+ char* name=g_key_file_get_locale_string(keyfile,"Desktop Entry","Name", nullptr, nullptr);
+ QString namestr=QString::fromLocal8Bit(name);
+
+// QString namestr;
+// QLocale cn;
+// QString language=cn.languageToString(cn.language());
+// if(QString::compare(language,"Chinese")==0)
+// {
+// char* name;
+// name=g_key_file_get_locale_string(keyfile,"Desktop Entry","Name[zh_CN]", nullptr, nullptr);
+// if(QString::fromLocal8Bit(name).isEmpty())
+// name=g_key_file_get_locale_string(keyfile,"Desktop Entry","Name", nullptr, nullptr);
+// namestr=QString::fromLocal8Bit(name);
+// }
+// else {
+// char* name=g_key_file_get_locale_string(keyfile,"Desktop Entry","Name", nullptr, nullptr);
+// namestr=QString::fromLocal8Bit(name);
+// }
g_key_file_free(keyfile);
return namestr;
diff --git a/src/MainViewWidget/mainviewwidget.cpp b/src/MainViewWidget/mainviewwidget.cpp
index 8a4f434..ed354fa 100644
--- a/src/MainViewWidget/mainviewwidget.cpp
+++ b/src/MainViewWidget/mainviewwidget.cpp
@@ -613,6 +613,10 @@ void MainViewWidget::directoryChangedSlot()
QString desktopfp=UkuiMenuInterface::appInfoVector.at(i).at(0);
QFileInfo fileInfo(desktopfp);
QString desktopfn=fileInfo.fileName();
+ setting->beginGroup("lockapplication");
+ setting->remove(desktopfn);
+ setting->sync();
+ setting->endGroup();
setting->beginGroup("application");
setting->remove(desktopfn);
setting->sync();
diff --git a/src/MainWindow/mainwindow.cpp b/src/MainWindow/mainwindow.cpp
index 0db0ffa..e03ddcf 100644
--- a/src/MainWindow/mainwindow.cpp
+++ b/src/MainWindow/mainwindow.cpp
@@ -101,9 +101,8 @@ void MainWindow::initMainWindow()
// path.addRoundedRect(rect, 6, 6);
// setProperty("blurRegion", QRegion(path.toFillPolygon().toPolygon()));
- ui->mainToolBar->hide();
- ui->menuBar->hide();
- ui->statusBar->hide();
+ ui->menubar->hide();
+ ui->statusbar->hide();
this->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum);
// this->setMinimumSize(390+20+2,532+20+2);
// this->setContentsMargins(1,21,21,1);
@@ -111,7 +110,7 @@ void MainWindow::initMainWindow()
this->setContentsMargins(0,0,0,0);
frame=new QFrame(this);
- sidebarwid=new SideBarWidget();
+ sidebarwid=new SideBarWidget(this);
mainviewwid=new MainViewWidget(this);
this->setCentralWidget(frame);
@@ -168,10 +167,10 @@ void MainWindow::initMainWindow()
/**
* 添加阴影
*/
-void MainWindow::paintEvent(QPaintEvent *)
-{
- if(!is_fullscreen)
- {
+//void MainWindow::paintEvent(QPaintEvent *)
+//{
+// if(!is_fullscreen)
+// {
// QPainter painter(this);
// const qreal radius =6;
@@ -232,8 +231,8 @@ void MainWindow::paintEvent(QPaintEvent *)
// painter.setBrush(Qt::NoBrush);
// painter.drawPath(path);
// }
- }
-}
+// }
+//}
/**
* 显示全屏窗口
@@ -300,7 +299,7 @@ void MainWindow::showDefaultWidget()
mainviewwid->loadMinMainView();
//插入分割线
mainlayout->insertWidget(1,line);
- this->repaint();
+// this->repaint();
frame->setStyleSheet(style);
}
@@ -401,5 +400,4 @@ void MainWindow::keyPressEvent(QKeyEvent *e)
mainviewwid->setLineEditFocus(e->text());
}
}
-
}
diff --git a/src/MainWindow/mainwindow.h b/src/MainWindow/mainwindow.h
index 3c48c5b..8e2902b 100644
--- a/src/MainWindow/mainwindow.h
+++ b/src/MainWindow/mainwindow.h
@@ -72,7 +72,7 @@ private:
protected:
void initMainWindow();
bool event(QEvent *event);//鼠标点击窗口外部事件
- void paintEvent(QPaintEvent*);//添加阴影
+// void paintEvent(QPaintEvent*);//添加阴影
void keyPressEvent(QKeyEvent* e);//查询框响应键盘事件
private Q_SLOTS:
diff --git a/src/MainWindow/mainwindow.ui b/src/MainWindow/mainwindow.ui
index 8144409..b232854 100644
--- a/src/MainWindow/mainwindow.ui
+++ b/src/MainWindow/mainwindow.ui
@@ -6,35 +6,17 @@
<rect>
<x>0</x>
<y>0</y>
- <width>400</width>
- <height>300</height>
+ <width>800</width>
+ <height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
- <widget class="QWidget" name="centralWidget"/>
- <widget class="QMenuBar" name="menuBar">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>400</width>
- <height>29</height>
- </rect>
- </property>
- </widget>
- <widget class="QToolBar" name="mainToolBar">
- <attribute name="toolBarArea">
- <enum>TopToolBarArea</enum>
- </attribute>
- <attribute name="toolBarBreak">
- <bool>false</bool>
- </attribute>
- </widget>
- <widget class="QStatusBar" name="statusBar"/>
+ <widget class="QWidget" name="centralwidget"/>
+ <widget class="QMenuBar" name="menubar"/>
+ <widget class="QStatusBar" name="statusbar"/>
</widget>
- <layoutdefault spacing="6" margin="11"/>
<resources/>
<connections/>
</ui>
diff --git a/src/RightClickMenu/rightclickmenu.cpp b/src/RightClickMenu/rightclickmenu.cpp
index 165a9d6..f21459e 100644
--- a/src/RightClickMenu/rightclickmenu.cpp
+++ b/src/RightClickMenu/rightclickmenu.cpp
@@ -171,24 +171,24 @@ RightClickMenu::~RightClickMenu()
//常用应用按钮右键菜单
void RightClickMenu::addCommonUseAppBtnAction()
{
- setting->beginGroup("application");
+ setting->beginGroup("lockapplication");
QFileInfo fileInfo(desktopfp);
QString desktopfn=fileInfo.fileName();
- if(!setting->contains(desktopfn) || setting->value(desktopfn).toInt()>0)
+ if(!setting->contains(desktopfn))
{
initWidgetAction(CuFix2CommonUseWid,":/data/img/mainviewwidget/fixed.svg",tr("Pin to common"));
CuFix2CommonUseAction->setDefaultWidget(CuFix2CommonUseWid);
cuappbtnmenu->addAction(CuFix2CommonUseAction);
connect(CuFix2CommonUseAction, SIGNAL(triggered()),this,SLOT(fixToCommonUseActionTriggerSlot()));
}
-
- if(setting->contains(desktopfn) && setting->value(desktopfn).toInt()==0)
+ else
{
initWidgetAction(CuUnfixed4CommonUseWid,":/data/img/mainviewwidget/unfixed.svg",tr("Unpin from common"));
CuUnfixed4CommonUseAction->setDefaultWidget(CuUnfixed4CommonUseWid);
cuappbtnmenu->addAction(CuUnfixed4CommonUseAction);
connect(CuUnfixed4CommonUseAction, SIGNAL(triggered()),this,SLOT(unfixedFromCommonUseActionTriggerSlot()));
}
+ setting->endGroup();
cuappbtnmenu->addSeparator();
@@ -224,11 +224,13 @@ void RightClickMenu::addCommonUseAppBtnAction()
cuappbtnmenu->addAction(separatorAction_1);
// cuappbtnmenu->addSeparator();
+
initWidgetAction(CuDeleteWid,"",tr("Remove from list"));
CuDeleteAction->setDefaultWidget(CuDeleteWid);
cuappbtnmenu->addAction(CuDeleteAction);
connect(CuDeleteAction,SIGNAL(triggered()),this,SLOT(commonUseDeleteActionTriggerSlot()));
- if(setting->contains(desktopfn) && setting->value(desktopfn).toInt()==0)
+ setting->beginGroup("lockapplication");
+ if(setting->contains(desktopfn))
{
QLayoutItem* item=CuDeleteWid->layout()->itemAt(0);
QWidget* wid=item->widget();
@@ -236,6 +238,7 @@ void RightClickMenu::addCommonUseAppBtnAction()
label->setStyleSheet("QLabel{background:transparent;border:0px;color:#4Dffffff;font-size:14px;}");
CuDeleteAction->setDisabled(true);
}
+ setting->endGroup();
cuappbtnmenu->addSeparator();
@@ -243,6 +246,7 @@ void RightClickMenu::addCommonUseAppBtnAction()
CuDeleteAllAction->setDefaultWidget(CuDeleteAllWid);
cuappbtnmenu->addAction(CuDeleteAllAction);
connect(CuDeleteAllAction,SIGNAL(triggered()),this,SLOT(commonUseDeleteAllActionTriggerSlot()));
+ setting->beginGroup("application");
QStringList keys=setting->childKeys();
int count;
for(count=0;count<keys.count();count++)
@@ -258,6 +262,7 @@ void RightClickMenu::addCommonUseAppBtnAction()
label->setStyleSheet("QLabel{background:transparent;border:0px;color:#4Dffffff;font-size:14px;}");
CuDeleteAllAction->setDisabled(true);
}
+ setting->endGroup();
// cuappbtnmenu->addSeparator();
cuappbtnmenu->addAction(separatorAction_2);
@@ -280,26 +285,22 @@ void RightClickMenu::addCommonUseAppBtnAction()
cuappbtnmenu->setAttribute(Qt::WA_TranslucentBackground);
// cuappbtnmenu->setWindowOpacity(RightClickMenuOpacity);
cuappbtnmenu->setStyleSheet(style);
-
- setting->endGroup();
}
//普通应用按钮右键菜单
void RightClickMenu::addAppBtnAction()
{
-
- setting->beginGroup("application");
+ setting->beginGroup("lockapplication");
QFileInfo fileInfo(desktopfp);
QString desktopfn=fileInfo.fileName();
- if(!setting->contains(desktopfn) || setting->value(desktopfn).toInt()>0)
+ if(!setting->contains(desktopfn))
{
initWidgetAction(Fix2CommonUseWid,":/data/img/mainviewwidget/fixed.svg",tr("Pin to common"));
Fix2CommonUseAction->setDefaultWidget(Fix2CommonUseWid);
appbtnmenu->addAction(Fix2CommonUseAction);
connect(Fix2CommonUseAction, SIGNAL(triggered()),this,SLOT(fixToCommonUseActionTriggerSlot()));
}
-
- if(setting->contains(desktopfn) && setting->value(desktopfn).toInt()==0)
+ else
{
initWidgetAction(Unfixed4CommonUseWid,":/data/img/mainviewwidget/unfixed.svg",tr("Unpin from common"));
Unfixed4CommonUseAction->setDefaultWidget(Unfixed4CommonUseWid);
@@ -499,8 +500,12 @@ void RightClickMenu::fixToCommonUseActionTriggerSlot()
action_number=1;
QFileInfo fileInfo(desktopfp);
QString desktopfn=fileInfo.fileName();
+ setting->beginGroup("lockapplication");
+ setting->setValue(desktopfn,setting->allKeys().size());
+ setting->sync();
+ setting->endGroup();
setting->beginGroup("application");
- setting->setValue(desktopfn,0);
+ setting->remove(desktopfn);
setting->sync();
setting->endGroup();
setting->beginGroup("datetime");
@@ -514,6 +519,17 @@ void RightClickMenu::unfixedFromCommonUseActionTriggerSlot()
action_number=2;
QFileInfo fileInfo(desktopfp);
QString desktopfn=fileInfo.fileName();
+ setting->beginGroup("lockapplication");
+ Q_FOREACH(QString desktop,setting->allKeys())
+ {
+ if(setting->value(desktop).toInt() > setting->value(desktopfn).toInt())
+ {
+ setting->setValue(desktop,setting->value(desktop).toInt()-1);
+ }
+ }
+ setting->remove(desktopfn);
+ setting->sync();
+ setting->endGroup();
setting->beginGroup("application");
setting->setValue(desktopfn,2);
setting->sync();
@@ -722,5 +738,3 @@ void RightClickMenu::showOtherMenu(QString desktopfp)
addOtherAction();
othermenu->exec(QCursor::pos());
}
-
-
diff --git a/src/RightClickMenu/rightclickmenu.h b/src/RightClickMenu/rightclickmenu.h
index 2e4c62b..2fc790a 100644
--- a/src/RightClickMenu/rightclickmenu.h
+++ b/src/RightClickMenu/rightclickmenu.h
@@ -33,6 +33,7 @@
#include <QFileInfo>
#include <QDBusInterface>
#include <QProcess>
+#include <QEvent>
#include "src/Interface/ukuimenuinterface.h"
#include "src/Style/style.h"
diff --git a/src/SideBarWidget/sidebarwidget.cpp b/src/SideBarWidget/sidebarwidget.cpp
index ca69135..c1e0e61 100644
--- a/src/SideBarWidget/sidebarwidget.cpp
+++ b/src/SideBarWidget/sidebarwidget.cpp
@@ -54,30 +54,6 @@ void SideBarWidget::initWidget()
addSidebarBtn();
loadMinSidebar();
- //全屏侧边栏悬浮动画
-// pEnterAnimation=new QPropertyAnimation;
-// pEnterAnimation->setTargetObject(pMainWidget);
-// pEnterAnimation->setPropertyName("pos");
-// pEnterAnimation->setDuration(500);
-// pAnimation->setStartValue(QRect(390,QApplication::desktop()->availableGeometry().height()-532,390,532));
-// pAnimation->setEndValue(QRect(490,QApplication::desktop()->availableGeometry().height()-532,490,532));
-// pAnimation->setStartValue(QRect(100,0,
-// 60,QApplication::desktop()->availableGeometry().height()));
-// pAnimation->setEndValue(QRect(0,0,
-// 160,QApplication::desktop()->availableGeometry().height()));
-// pEnterAnimation->setStartValue(QPoint(100,0));
-// pEnterAnimation->setEndValue(QPoint(0,0));
-// pEnterAnimation->setEasingCurve(QEasingCurve::Linear);
-// connect(pEnterAnimation,SIGNAL(finished()),this,SLOT(animation_finished_slot()));
-
-// pLeaveAnimation=new QPropertyAnimation;
-// pLeaveAnimation->setTargetObject(pMainWidget);
-// pLeaveAnimation->setPropertyName("pos");
-// pLeaveAnimation->setDuration(500);
-// pLeaveAnimation->setStartValue(QPoint(0,0));
-// pLeaveAnimation->setEndValue(QPoint(100,0));
-// pLeaveAnimation->setEasingCurve(QEasingCurve::Linear);
-
pUkuiMenuInterface=new UkuiMenuInterface;
}
diff --git a/src/UtilityFunction/fullitemdelegate.cpp b/src/UtilityFunction/fullitemdelegate.cpp
index 29de925..ab8ae81 100644
--- a/src/UtilityFunction/fullitemdelegate.cpp
+++ b/src/UtilityFunction/fullitemdelegate.cpp
@@ -93,18 +93,16 @@ void FullItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opti
icon.paint(painter,iconRect);
if(module==0)
{
- setting->beginGroup("application");
+ setting->beginGroup("lockapplication");
QFileInfo fileInfo(desktopfp);
QString desktopfn=fileInfo.fileName();
- if(setting->value(desktopfn).toInt()==0)
+ if(setting->contains(desktopfn))
{
QIcon icon(QString(":/data/img/mainviewwidget/lock-fs.svg"));
icon.paint(painter,QRect(iconRect.topRight().x()-14,iconRect.topRight().y()-2,16,16));
-// painter->drawImage(QRect(iconRect.topRight().x()-8,iconRect.topRight().y(),16,16),
-// icon.pixmap(icon.actualSize(QSize(16, 16))).toImage());
+// icon.paint(painter,QRect(rect.topRight().x()-18,rect.topRight().y()+6,12,12));
}
setting->endGroup();
-
}
painter->setPen(QPen(Qt::white));
@@ -116,10 +114,8 @@ void FullItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opti
rect.height()-iconRect.height()-Style::AppSpaceBetweenIconText);
QFontMetrics fm=painter->fontMetrics();
QString appnameElidedText=fm.elidedText(appname,Qt::ElideRight,rect.width(),Qt::TextShowMnemonic);
-// painter->drawText(textRect,Qt::TextWordWrap |Qt::AlignHCenter | Qt::AlignTop,appname);
painter->drawText(textRect,Qt::AlignHCenter |Qt::AlignTop,appnameElidedText);
-// painter->setRenderHint(QPainter::Antialiasing);
if(option.state & QStyle::State_MouseOver)
{
// painter->setPen(QPen(Qt::NoPen));
diff --git a/src/UtilityFunction/fulllistview.cpp b/src/UtilityFunction/fulllistview.cpp
index 18b77c2..75845c7 100644
--- a/src/UtilityFunction/fulllistview.cpp
+++ b/src/UtilityFunction/fulllistview.cpp
@@ -73,7 +73,6 @@ void FullListView::initWidget()
this->setGridSize(QSize(Style::AppListGridSizeWidth,Style::AppListGridSizeWidth));
connect(this,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(rightClickedSlot()));
connect(this,SIGNAL(clicked(QModelIndex)),this,SLOT(onClicked(QModelIndex)));
- connect(this,SIGNAL(entered(QModelIndex)),this,SLOT(showToolTip(QModelIndex)));
}
void FullListView::addData(QStringList data)
@@ -135,37 +134,49 @@ void FullListView::rightClickedSlot()
}
else{
int ret=menu->showCommonUseAppBtnMenu(desktopfp);
- if(ret==1 || ret==2)
+ if(ret==1)
{
this->setCurrentIndex(index);
+ listmodel->removeRow(index.row());
+ setting->beginGroup("lockapplication");
+ QStandardItem* item=new QStandardItem;
+ item->setData(QVariant::fromValue<QString>(desktopfp),Qt::DisplayRole);
+ listmodel->insertRow(setting->childKeys().size()-1,item);
+ setting->endGroup();
+ Q_EMIT sendUpdateAppListSignal();
+ }
+ if(ret==2)
+ {
+ listmodel->removeRow(index.row());
+ setting->beginGroup("lockapplication");
+ QStandardItem* item=new QStandardItem;
+ item->setData(QVariant::fromValue<QString>(desktopfp),Qt::DisplayRole);
+ listmodel->insertRow(setting->childKeys().size(),item);
+ setting->endGroup();
+ Q_EMIT sendUpdateAppListSignal();
}
if(ret==7)
Q_EMIT sendHideMainWindowSignal();
- if(ret==8 || ret==9)
+ if(ret==8)
{
- QStringList keys;
- keys.clear();
- setting->beginGroup("application");
- keys=setting->childKeys();
- QStringList applist;
- applist.clear();
- for(int i=0;i<keys.count();i++)
- {
- int val=setting->value(keys.at(i)).toInt();
- if(val==2 || val==0)
- applist.append(keys.at(i));
- }
+ listmodel->removeRow(index.row());
+ Q_EMIT sendUpdateAppListSignal();
+ }
- data.clear();
- for(int i=0;i<applist.count();i++)
+ if(ret==9)
+ {
+ setting->beginGroup("lockapplication");
+ for(int i=listmodel->rowCount()-1;i>=0;i--)
{
-// QString desktopfp=pUkuiMenuInterface->getDesktopPathByAppName(applist.at(i));
- QString desktopfp=QString("/usr/share/applications/"+applist.at(i));
- data.append(desktopfp);
+ QVariant var=listmodel->index(i,0).data(Qt::DisplayRole);
+ QString desktopfp=var.value<QString>();
+ QFileInfo fileInfo(desktopfp);
+ QString desktopfn=fileInfo.fileName();
+ if(!setting->contains(desktopfn))
+ listmodel->removeRow(i);
}
- this->updateData(data);
setting->endGroup();
Q_EMIT sendUpdateAppListSignal();
}
@@ -188,39 +199,3 @@ void FullListView::leaveEvent(QEvent *e)
Q_UNUSED(e);
this->verticalScrollBar()->setVisible(false);
}
-
-void FullListView::showToolTip(const QModelIndex &index)
-{
-// qDebug()<<this->y()<<this->visualRect(index).y();
-// if(!index.isValid())
-// return;
-
-// QVariant var=listmodel->data(index, Qt::DisplayRole);
-// QString desktopfp=var.value<QString>();
-// QString appname=pUkuiMenuInterface->getAppName(desktopfp);
-
-//// if(file_name.isEmpty())
-//// return;
-
-// QToolTip::showText(QCursor::pos(), appname,this);
-// QToolTip::hideText();
-}
-
-//bool FullListView::event(QEvent* e)
-//{
-// if (e->type() == QEvent::ToolTip) {
-// QHelpEvent *helpEvent = static_cast<QHelpEvent *>(e);
-// QModelIndex index=this->currentIndex();
-// QVariant var=listmodel->data(index, Qt::DisplayRole);
-// QString desktopfp=var.value<QString>();
-// QString appname=pUkuiMenuInterface->getAppName(desktopfp);
-// if (!appname.isEmpty()) {
-// QToolTip::showText(helpEvent->globalPos(), appname);
-// } else {
-// QToolTip::hideText();
-// e->ignore();
-// }
-// return true;
-// }
-// return QWidget::event(e);
-//}
diff --git a/src/UtilityFunction/fulllistview.h b/src/UtilityFunction/fulllistview.h
index 29862a2..0739694 100644
--- a/src/UtilityFunction/fulllistview.h
+++ b/src/UtilityFunction/fulllistview.h
@@ -38,19 +38,14 @@ public:
void addData(QStringList data);//字母排序模块添加数据
void updateData(QStringList data);
-// void removeRow(QString desktopfp);
-// void insertRow(QString desktopfp);
protected:
void initWidget();
void enterEvent(QEvent* e) Q_DECL_OVERRIDE;
void leaveEvent(QEvent* e) Q_DECL_OVERRIDE;
-// bool event(QEvent* e) Q_DECL_OVERRIDE;
private:
FullItemDelegate* m_delegate=nullptr;
-// FullListModel* listmodel=nullptr;
-// QStringListModel* listmodel=nullptr;
QStandardItemModel* listmodel=nullptr;
int module=0;
@@ -63,7 +58,6 @@ private:
private Q_SLOTS:
void onClicked(QModelIndex index);//点击item
void rightClickedSlot();//右键菜单
- void showToolTip(const QModelIndex &index);
Q_SIGNALS:
void sendItemClickedSignal(QString arg);//向字母排序或功能分类模块发送item点击信号
diff --git a/src/UtilityFunction/itemdelegate.cpp b/src/UtilityFunction/itemdelegate.cpp
index 4f9f0d1..51542b5 100644
--- a/src/UtilityFunction/itemdelegate.cpp
+++ b/src/UtilityFunction/itemdelegate.cpp
@@ -104,7 +104,8 @@ void ItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
else
{
painter->setPen(QPen(Qt::white));
- QRect textRect=QRect(rect.x()+11,rect.y()+(rect.height()-14)/2,strlist.at(0).size()*14,14);
+// QRect textRect=QRect(rect.x()+11,rect.y()+(rect.height()-14)/2,strlist.at(0).size()*14,14);
+ QRect textRect=QRect(rect.x()+11,rect.y(),rect.width(),rect.height());
painter->drawText(textRect,Qt::AlignVCenter,strlist.at(0));
painter->setRenderHint(QPainter::Antialiasing, true);
painter->setPen(QPen(QColor("#FFFFFF"),1));
@@ -115,7 +116,7 @@ void ItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
}
else
{
- setting->beginGroup("application");
+ setting->beginGroup("lockapplication");
QRect iconRect=QRect(rect.left()+11,rect.y()+(rect.height()-32)/2,32,32);
QString iconstr=pUkuiMenuInterface->getAppIcon(strlist.at(0));
iconstr.remove(".png");
@@ -127,10 +128,10 @@ void ItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
QString appname=pUkuiMenuInterface->getAppName(strlist.at(0));
QFileInfo fileInfo(strlist.at(0));
QString desktopfn=fileInfo.fileName();
- if(setting->value(desktopfn).toInt()==0)
+ if(setting->contains(desktopfn))
{
QIcon icon(QString(":/data/img/mainviewwidget/lock.svg"));
- icon.paint(painter,QRect(iconRect.topRight().x()-7,iconRect.topRight().y()-2,12,12));
+ icon.paint(painter,QRect(rect.topRight().x()-22,rect.y()+(rect.height()-16)/2,16,16));
}
painter->setOpacity(1);
painter->setPen(QPen(Qt::white));
diff --git a/src/UtilityFunction/listview.cpp b/src/UtilityFunction/listview.cpp
index a0d4d1c..2b1b58e 100644
--- a/src/UtilityFunction/listview.cpp
+++ b/src/UtilityFunction/listview.cpp
@@ -128,40 +128,49 @@ void ListView::rightClickedSlot()
}
else{
int ret=menu->showCommonUseAppBtnMenu(strlist.at(0));
- if(ret==1 || ret==2)
+ if(ret==1)
{
this->setCurrentIndex(index);
+ listmodel->removeRow(index.row());
+ setting->beginGroup("lockapplication");
+ QStandardItem* item=new QStandardItem;
+ item->setData(QVariant::fromValue<QStringList>(strlist),Qt::DisplayRole);
+ listmodel->insertRow(setting->allKeys().size()-1,item);
+ setting->endGroup();
+ Q_EMIT sendUpdateAppListSignal();
+ }
+ if(ret==2)
+ {
+ listmodel->removeRow(index.row());
+ setting->beginGroup("lockapplication");
+ QStandardItem* item=new QStandardItem;
+ item->setData(QVariant::fromValue<QStringList>(strlist),Qt::DisplayRole);
+ listmodel->insertRow(setting->allKeys().size(),item);
+ setting->endGroup();
+ Q_EMIT sendUpdateAppListSignal();
}
if(ret==7)
Q_EMIT sendHideMainWindowSignal();
- if(ret==8 || ret==9)
+ if(ret==8)
{
- QStringList keys;
- keys.clear();
- setting->beginGroup("application");
- keys=setting->childKeys();
- QStringList applist;
- applist.clear();
- for(int i=0;i<keys.count();i++)
- {
- int val=setting->value(keys.at(i)).toInt();
- if(val==2 || val==0)
- applist.append(keys.at(i));
- }
-
- data.clear();
- for(int i=0;i<applist.count();i++)
+ listmodel->removeRow(index.row());
+ Q_EMIT sendUpdateAppListSignal();
+ }
+ if(ret==9)
+ {
+ setting->beginGroup("lockapplication");
+ for(int i=listmodel->rowCount()-1;i>=0;i--)
{
-// QString desktopfp=pUkuiMenuInterface->getDesktopPathByAppName(applist.at(i));
- QString desktopfp=QString("/usr/share/applications/"+applist.at(i));
- data.append(QStringList()<<desktopfp<<"1");
+ QVariant var=listmodel->index(i,0).data(Qt::DisplayRole);
+ QString desktopfp=var.value<QStringList>().at(0);
+ QFileInfo fileInfo(desktopfp);
+ QString desktopfn=fileInfo.fileName();
+ if(!setting->contains(desktopfn))
+ listmodel->removeRow(i);
}
-
- this->updateData(data);
setting->endGroup();
-
Q_EMIT sendUpdateAppListSignal();
}
--
2.33.0