aboutsummaryrefslogtreecommitdiff
path: root/src-qt5/core
diff options
context:
space:
mode:
Diffstat (limited to 'src-qt5/core')
-rw-r--r--src-qt5/core/libLumina/LuminaXDG.cpp9
-rw-r--r--src-qt5/core/libLumina/LuminaXDG.h2
-rw-r--r--src-qt5/core/lumina-desktop/AppMenu.cpp5
3 files changed, 13 insertions, 3 deletions
diff --git a/src-qt5/core/libLumina/LuminaXDG.cpp b/src-qt5/core/libLumina/LuminaXDG.cpp
index a714aa83..fc346f34 100644
--- a/src-qt5/core/libLumina/LuminaXDG.cpp
+++ b/src-qt5/core/libLumina/LuminaXDG.cpp
@@ -8,6 +8,7 @@
#include "LuminaOS.h"
#include "LuminaUtils.h"
#include <QObject>
+#include <QTimer>
#include <QMediaPlayer>
#include <QSvgRenderer>
@@ -18,8 +19,8 @@ static qint64 mimechecktime;
XDGDesktopList::XDGDesktopList(QObject *parent, bool watchdirs) : QObject(parent){
if(watchdirs){
watcher = new QFileSystemWatcher(this);
- connect(watcher, SIGNAL(fileChanged(const QString&)), this, SLOT(updateList()) );
- connect(watcher, SIGNAL(directoryChanged(const QString&)), this, SLOT(updateList()) );
+ connect(watcher, SIGNAL(fileChanged(const QString&)), this, SLOT(watcherChanged()) );
+ connect(watcher, SIGNAL(directoryChanged(const QString&)), this, SLOT(watcherChanged()) );
}else{
watcher = 0;
}
@@ -29,6 +30,9 @@ XDGDesktopList::~XDGDesktopList(){
//nothing special to do here
}
+void XDGDesktopList::watcherChanged(){
+ QTimer::singleShot(1000, this, SLOT(updateList()) ); //1 second delay before check kicks off
+}
void XDGDesktopList::updateList(){
//run the check routine
QStringList appDirs = LXDG::systemApplicationDirs(); //get all system directories
@@ -70,6 +74,7 @@ void XDGDesktopList::updateList(){
}
//If this class is automatically managing the lists, update the watched files/dirs and send out notifications
if(watcher!=0){
+ qDebug() << "App List Updated:" << lastCheck << appschanged << newfiles << oldkeys;
watcher->removePaths(QStringList() << watcher->files() << watcher->directories());
watcher->addPaths(appDirs);
if(appschanged){ emit appsUpdated(); }
diff --git a/src-qt5/core/libLumina/LuminaXDG.h b/src-qt5/core/libLumina/LuminaXDG.h
index 887aa920..5765b2b1 100644
--- a/src-qt5/core/libLumina/LuminaXDG.h
+++ b/src-qt5/core/libLumina/LuminaXDG.h
@@ -92,6 +92,8 @@ public slots:
private:
QFileSystemWatcher *watcher;
+private slots:
+ void watcherChanged();
signals:
void appsUpdated();
};
diff --git a/src-qt5/core/lumina-desktop/AppMenu.cpp b/src-qt5/core/lumina-desktop/AppMenu.cpp
index b239610a..cbf71e62 100644
--- a/src-qt5/core/lumina-desktop/AppMenu.cpp
+++ b/src-qt5/core/lumina-desktop/AppMenu.cpp
@@ -56,10 +56,13 @@ void AppMenu::updateAppList(){
//Remove any old symlinks first
QString filename = tmp[i].section("/",-1);
//qDebug() << "Check for symlink:" << filename;
- if(QFile::exists(desktop+filename) && QFileInfo(desktop+filename).isSymLink() ){ QFile::remove(desktop+filename); }
+ if( QFileInfo(desktop+filename).isSymLink() ){ QFile::remove(desktop+filename); }
}
tmp = sysApps->newApps;
for(int i=0; i<tmp.length() && !desktop.isEmpty(); i++){
+ XDGDesktop desk = sysApps->files.value(tmp[i]);
+ if(desk.isHidden || !LXDG::checkValidity(desk, false) ){ continue; } //skip this one
+ //qDebug() << "New App: " << tmp[i] << desk.filePath << "Hidden:" << desk.isHidden;
//Create a new symlink for this file if one does not exist
QString filename = tmp[i].section("/",-1);
//qDebug() << "Check for symlink:" << filename;
bgstack15