aboutsummaryrefslogtreecommitdiff
path: root/src-qt5
diff options
context:
space:
mode:
authorKen Moore <ken@ixsystems.com>2017-01-12 14:39:53 -0500
committerKen Moore <ken@ixsystems.com>2017-01-12 14:39:53 -0500
commit3617d61c7648abb5e5ff3502435c485cb6db72b2 (patch)
treef72de7dc8670a0d08bd3d195b18a1c03fcf60be6 /src-qt5
parentAdd add the option to watch a "/tmp/.autofs_change" file which will prompt fo... (diff)
downloadlumina-3617d61c7648abb5e5ff3502435c485cb6db72b2.tar.gz
lumina-3617d61c7648abb5e5ff3502435c485cb6db72b2.tar.bz2
lumina-3617d61c7648abb5e5ff3502435c485cb6db72b2.zip
Add support to lumina-config to show all applications which register themselves under the "Settings" cateory on the system. These will all be put under the "system settings" category, and will launch the external tool on demand.
Diffstat (limited to 'src-qt5')
-rw-r--r--src-qt5/core-utils/lumina-config/pages/getPage.h12
-rw-r--r--src-qt5/core-utils/lumina-config/pages/page_main.cpp35
-rw-r--r--src-qt5/core-utils/lumina-config/pages/page_main.h2
3 files changed, 35 insertions, 14 deletions
diff --git a/src-qt5/core-utils/lumina-config/pages/getPage.h b/src-qt5/core-utils/lumina-config/pages/getPage.h
index 99aab9a0..c820283e 100644
--- a/src-qt5/core-utils/lumina-config/pages/getPage.h
+++ b/src-qt5/core-utils/lumina-config/pages/getPage.h
@@ -46,17 +46,7 @@ static QList<PAGEINFO> KnownPages(){
// list << PageInfo("mouse-settings", QObject::tr("TrueOS Mouse Settings"), QObject::tr("TrueOS Mouse Settings"), "preferences-desktop-mouse",QObject::tr("Adjust mouse devices"), "user", QStringList(), QStringList() << "user"<<"speed"<<"accel"<<"mouse");
// list << PageInfo("bluetooth-settings", QObject::tr("TrueOS Bluetooth Settings"), QObject::tr("TrueOS Bluetooth Settings"), "preferences-desktop-bluetooth",QObject::tr("Setup Bluetooth devices"), "user", QStringList(), QStringList() << "user"<<"bluetooth"<<"audio");
- //Now sort the items according to the translated name
- QStringList names;
- for(int i=0; i<list.length(); i++){ names << list[i].name; }
- names.sort(Qt::CaseInsensitive);
- QList<PAGEINFO> sorted;
- for(int i=0; i<names.length(); i++){
- for(int j=0; j<list.length(); j++){
- if(list[j].name==names[i]){ sorted << list.takeAt(j); break; }
- }
- }
- return sorted;
+ return list;
}
//Add any sub-pages here
diff --git a/src-qt5/core-utils/lumina-config/pages/page_main.cpp b/src-qt5/core-utils/lumina-config/pages/page_main.cpp
index c7aa76ff..6d9177f7 100644
--- a/src-qt5/core-utils/lumina-config/pages/page_main.cpp
+++ b/src-qt5/core-utils/lumina-config/pages/page_main.cpp
@@ -8,6 +8,8 @@
#include "ui_page_main.h"
#include "getPage.h"
+extern XDGDesktopList* APPSLIST;
+
//==========
// PUBLIC
//==========
@@ -20,6 +22,7 @@ page_main::page_main(QWidget *parent) : PageWidget(parent), ui(new Ui::page_main
connect(ui->treeWidget, SIGNAL(itemPressed(QTreeWidgetItem*,int)), this, SLOT(itemTriggered(QTreeWidgetItem*, int)) );
connect(ui->lineEdit, SIGNAL(textChanged(QString)), this, SLOT(searchChanged(QString)) );
+ connect(APPSLIST, SIGNAL(appsUpdated()), this, SLOT(LoadSettings()) );
}
page_main::~page_main(){
@@ -64,6 +67,10 @@ void page_main::UpdateItems(QString search){
user->setIcon(0, LXDG::findIcon("preferences-desktop-user",""));
user->setText(0, tr("User Settings"));
user->setFirstColumnSpanned(true);
+ QTreeWidgetItem *system = new QTreeWidgetItem();
+ system->setIcon(0, LXDG::findIcon("preferences-system",""));
+ system->setText(0, tr("System Settings"));
+ system->setFirstColumnSpanned(true);
//Now go through and add in the known pages for each category
QStringList SL = search.split(" "); //search list
for(int i=0; i<INFO.length(); i++){
@@ -88,6 +95,8 @@ void page_main::UpdateItems(QString search){
if( session->child( session->childCount()-1)->text(1).isEmpty() ){ lastIt = session->child(session->childCount()-1); }
}else if(INFO[i].category=="user" && user->childCount()>0 ){
if( user->child( user->childCount()-1)->text(1).isEmpty() ){ lastIt = user->child(user->childCount()-1); }
+ }else if(INFO[i].category=="system" && system->childCount()>0 ){
+ if( system->child( system->childCount()-1)->text(1).isEmpty() ){ lastIt = system->child(system->childCount()-1); }
}
if(lastIt==0){ lastIt = new QTreeWidgetItem(); col = 0;}
else{ col = 1; }
@@ -101,6 +110,7 @@ void page_main::UpdateItems(QString search){
else if(INFO[i].category=="appearance"){ appearance->addChild(lastIt); }
else if(INFO[i].category=="session"){ session->addChild(lastIt); }
else if(INFO[i].category=="user"){ user->addChild(lastIt); }
+ else if(INFO[i].category=="system"){ system->addChild(lastIt); }
else{ ui->treeWidget->addTopLevelItem(lastIt); }
}
}
@@ -109,6 +119,7 @@ void page_main::UpdateItems(QString search){
if(appearance->childCount()>0){ ui->treeWidget->addTopLevelItem(appearance); appearance->setExpanded(true); }
if(session->childCount()>0){ ui->treeWidget->addTopLevelItem(session); session->setExpanded(true); }
if(user->childCount()>0){ ui->treeWidget->addTopLevelItem(user); user->setExpanded(true); }
+ if(system->childCount()>0){ ui->treeWidget->addTopLevelItem(system); system->setExpanded(true); }
ui->treeWidget->sortItems(0, Qt::AscendingOrder);
ui->treeWidget->resizeColumnToContents(0);
ui->treeWidget->resizeColumnToContents(1);
@@ -134,7 +145,25 @@ void page_main::LoadSettings(int){
emit ChangePageTitle( tr("Desktop Settings") );
INFO.clear();
INFO = KnownPages();
- UpdateItems("");
+ //Also add known system setting applications to the INFO list
+ QList<XDGDesktop*> apps = APPSLIST->apps(false,false); //only valid, non-hidden files
+ qDebug() << "Found Apps:" << apps.length();
+ for(int i=0; i<apps.length(); i++){
+ if( !apps[i]->catList.contains("Settings") || apps[i]->filePath.endsWith("lumina-config.desktop") ){ continue; }
+ INFO << PageInfo(apps[i]->filePath, apps[i]->name, apps[i]->genericName, apps[i]->icon, apps[i]->comment, "system", QStringList(), apps[i]->keyList);
+ }
+ //Now sort the items according to the translated name
+ QStringList names;
+ for(int i=0; i<INFO.length(); i++){ names << INFO[i].name; }
+ names.sort(Qt::CaseInsensitive);
+ QList<PAGEINFO> sorted;
+ for(int i=0; i<names.length(); i++){
+ for(int j=0; j<INFO.length(); j++){
+ if(INFO[j].name==names[i]){ sorted << INFO.takeAt(j); break; }
+ }
+ }
+ INFO = sorted; //replace the internal list with the sorted version
+ UpdateItems(ui->lineEdit->text());
ui->lineEdit->setFocus();
}
@@ -155,7 +184,9 @@ void page_main::itemTriggered(QTreeWidgetItem *it, int col){
it->setExpanded( !it->isExpanded() );
it->setSelected(false);
}else if(!it->whatsThis(col).isEmpty()){
- emit ChangePage(it->whatsThis(col));
+ QString id = it->whatsThis(col);
+ if(id.endsWith(".desktop")){ QProcess::startDetached("lumina-open \""+id+"\""); } //external setting utility
+ else{ emit ChangePage(it->whatsThis(col)); } //internal page
}else{
it->setSelected(false);
}
diff --git a/src-qt5/core-utils/lumina-config/pages/page_main.h b/src-qt5/core-utils/lumina-config/pages/page_main.h
index 095815e9..9c359c63 100644
--- a/src-qt5/core-utils/lumina-config/pages/page_main.h
+++ b/src-qt5/core-utils/lumina-config/pages/page_main.h
@@ -24,7 +24,7 @@ public:
public slots:
void SaveSettings();
- void LoadSettings(int screennum);
+ void LoadSettings(int screennum = -1);
void updateIcons();
private:
bgstack15