diff --git a/0003-Fixed-right-click-exception-popover-problem.patch b/0003-Fixed-right-click-exception-popover-problem.patch new file mode 100644 index 0000000..7850e22 --- /dev/null +++ b/0003-Fixed-right-click-exception-popover-problem.patch @@ -0,0 +1,1011 @@ +From b4ae3b3b79baab4d8b449d46ceb79ed84ac31a4b Mon Sep 17 00:00:00 2001 +From: liuhao-startmenu +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 @@ +- +- +- +- +-画板 1 +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++彩色 +\ 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 @@ +- +- +- +- +-画板 1 +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++单色 +\ 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;ivalue(keys.at(i)).toInt(); +- if(val==2 || val==0) +- applist.append(keys.at(i)); +- } +- +- data.clear(); +- for(int i=0;igetDesktopPathByAppName(applist.at(i)); +- QString desktopfp=QString("/usr/share/applications/"+applist.at(i)); +- data.append(QStringList()<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;ivalue(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;ichildKeys()) + { +- 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;igetDesktopPathByAppName(applist.at(i)); +- QString desktopfp=QString("/usr/share/applications/"+applist.at(i)); ++ QString desktopfp=QString("/usr/share/applications/"+desktopfn); ++ data.append(QStringList()<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;ivalue(keys.at(i)).toInt(); +- if(val==2 || val==0) +- applist.append(keys.at(i)); +- } +- +- data.clear(); +- for(int i=0;igetDesktopPathByAppName(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;ivalue(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;ichildKeys()) + { +- 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;igetDesktopPathByAppName(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 @@ + + 0 + 0 +- 400 +- 300 ++ 800 ++ 600 + + + + MainWindow + +- +- +- +- +- 0 +- 0 +- 400 +- 29 +- +- +- +- +- +- TopToolBarArea +- +- +- false +- +- +- ++ ++ ++ + +- + + + +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;countsetStyleSheet("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 + #include + #include ++#include + #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(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(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;ivalue(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;ibeginGroup("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(); ++ 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()<y()<visualRect(index).y(); +-// if(!index.isValid()) +-// return; +- +-// QVariant var=listmodel->data(index, Qt::DisplayRole); +-// QString desktopfp=var.value(); +-// 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(e); +-// QModelIndex index=this->currentIndex(); +-// QVariant var=listmodel->data(index, Qt::DisplayRole); +-// QString desktopfp=var.value(); +-// 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(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(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;ivalue(keys.at(i)).toInt(); +- if(val==2 || val==0) +- applist.append(keys.at(i)); +- } +- +- data.clear(); +- for(int i=0;iremoveRow(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()<index(i,0).data(Qt::DisplayRole); ++ QString desktopfp=var.value().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 + diff --git a/ukui-menu.spec b/ukui-menu.spec index 88f288a..55d08bf 100644 --- a/ukui-menu.spec +++ b/ukui-menu.spec @@ -2,13 +2,14 @@ Name: ukui-menu Version: 3.0.2 -Release: 9 +Release: 10 Summary: Advanced ukui menu License: GPL-3.0-or-later URL: http://www.ukui.org Source0: %{name}-%{version}.tar.gz Patch0: 0001-Fixed-size-problem-with-multiple-screens.patch Patch1: 0002-Optimize-the-interaction-strategy-with-the-taskbar.patch +Patch2: 0003-Fixed-right-click-exception-popover-problem.patch BuildRequires: qt5-qtbase-devel BuildRequires: libqtxdg-devel @@ -43,6 +44,7 @@ Requires: accountsservice %setup -q %patch0 -p1 %patch1 -p1 +%patch2 -p1 %build mkdir build && cd build @@ -64,6 +66,9 @@ rm -rf $RPM_BUILD_ROOT ##%{_datadir}/ukui-menu/translations/ %changelog +* Wed Aug 8 2022 huayadong - 3.0.2-9 +- Fixed right click exception popover problem + * Wed Aug 8 2022 huayadong - 3.0.2-9 - add optimize the interaction strategy with the taskbar