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