aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--port-files/FreeBSD/x11/lumina-core/pkg-plist10
-rw-r--r--src-qt5/core/libLumina/LIconCache.cpp26
-rw-r--r--src-qt5/core/libLumina/LIconCache.h3
-rw-r--r--src-qt5/core/libLumina/LuminaXDG.cpp18
4 files changed, 49 insertions, 8 deletions
diff --git a/port-files/FreeBSD/x11/lumina-core/pkg-plist b/port-files/FreeBSD/x11/lumina-core/pkg-plist
index 58828828..dbb933ec 100644
--- a/port-files/FreeBSD/x11/lumina-core/pkg-plist
+++ b/port-files/FreeBSD/x11/lumina-core/pkg-plist
@@ -1,11 +1,15 @@
+bin/lthemeengine
bin/lumina-desktop
bin/lumina-info
bin/lumina-open
bin/start-lumina-desktop
etc/luminaDesktop.conf.dist
+lib/qt5/plugins/platformthemes/liblthemeengine.so
+lib/qt5/plugins/styles/liblthemeengine-style.so
man/man1/lumina-open.1.gz
man/man8/lumina-desktop.8.gz
man/man8/start-lumina-desktop.8.gz
+share/application/lthemeengine.desktop
share/applications/lumina-info.desktop
share/applications/lumina-support.desktop
share/icons/material-design-dark/LICENSE
@@ -1634,6 +1638,12 @@ share/icons/material-design-light/scalable/status/weather-showers.svg
share/icons/material-design-light/scalable/status/weather-snow.svg
share/icons/material-design-light/scalable/status/weather-storm.svg
share/icons/material-design-light/scalable/status/weather-windy.svg
+share/lthemeengine/colors/airy.conf
+share/lthemeengine/colors/darker.conf
+share/lthemeengine/colors/dusk.conf
+share/lthemeengine/colors/sand.conf
+share/lthemeengine/colors/simple.conf
+share/lthemeengine/colors/waves.conf
share/lumina-desktop/Login.ogg
share/lumina-desktop/Logout.ogg
share/lumina-desktop/colors/Black.qss.colors
diff --git a/src-qt5/core/libLumina/LIconCache.cpp b/src-qt5/core/libLumina/LIconCache.cpp
index 38367cef..9d122df7 100644
--- a/src-qt5/core/libLumina/LIconCache.cpp
+++ b/src-qt5/core/libLumina/LIconCache.cpp
@@ -80,7 +80,7 @@ QString LIconCache::findFile(QString icon){
fall << getChildIconDirs(paths[i]+"hicolor"); //XDG fallback (apps add to this)
}
//Now load all the icon theme dependencies in order (Theme1 -> Theme2 -> Theme3 -> Fallback)
-
+
//fall << LOS::AppPrefix()+"share/pixmaps"; //always use this as well as a final fallback
QDir::setSearchPaths("icontheme", theme);
QDir::setSearchPaths("default", oxy);
@@ -121,6 +121,10 @@ QString LIconCache::findFile(QString icon){
void LIconCache::loadIcon(QAbstractButton *button, QString icon, bool noThumb){
if(icon.isEmpty()){ return; }
+ if(isThemeIcon(icon)){
+ button->setIcon( iconFromTheme(icon));
+ return ;
+ }
//See if the icon has already been loaded into the HASH
bool needload = !HASH.contains(icon);
if(!needload){
@@ -138,6 +142,10 @@ void LIconCache::loadIcon(QAbstractButton *button, QString icon, bool noThumb){
void LIconCache::loadIcon(QAction *action, QString icon, bool noThumb){
if(icon.isEmpty()){ return; }
+ if(isThemeIcon(icon)){
+ action->setIcon( iconFromTheme(icon));
+ return ;
+ }
//See if the icon has already been loaded into the HASH
bool needload = !HASH.contains(icon);
if(!needload){
@@ -155,6 +163,10 @@ void LIconCache::loadIcon(QAction *action, QString icon, bool noThumb){
void LIconCache::loadIcon(QLabel *label, QString icon, bool noThumb){
if(icon.isEmpty()){ return; }
+ if(isThemeIcon(icon)){
+ label->setPixmap( iconFromTheme(icon).pixmap(label->sizeHint()) );
+ return ;
+ }
//See if the icon has already been loaded into the HASH
bool needload = !HASH.contains(icon);
if(!needload){
@@ -164,7 +176,7 @@ void LIconCache::loadIcon(QLabel *label, QString icon, bool noThumb){
//Need to load the icon
icon_data idata;
if(HASH.contains(icon)){ idata = HASH.value(icon); }
- else { idata = createData(icon);
+ else { idata = createData(icon);
if(idata.fullpath.isEmpty()){ return; } //nothing to do
}
idata.pendingLabels << QPointer<QLabel>(label); //save this QLabel for later
@@ -183,6 +195,8 @@ void LIconCache::clearIconTheme(){
QIcon LIconCache::loadIcon(QString icon, bool noThumb){
if(icon.isEmpty()){ return QIcon(); }
+ if(isThemeIcon(icon)){ return iconFromTheme(icon); }
+
if(HASH.contains(icon)){
if(!HASH[icon].icon.isNull()){ return HASH[icon].icon; }
else if(!HASH[icon].thumbnail.isNull() && !noThumb){ return HASH[icon].thumbnail; }
@@ -290,6 +304,14 @@ void LIconCache::ReadFile(LIconCache *obj, QString id, QString path){
obj->emit InternalIconLoaded(id, cdt, BA);
}
+bool LIconCache::isThemeIcon(QString id){
+ return (!id.contains("/") && !id.contains(".") );
+}
+
+QIcon LIconCache::iconFromTheme(QString id){
+ return QIcon::fromTheme(id);
+}
+
// === PRIVATE SLOTS ===
void LIconCache::IconLoaded(QString id, QDateTime sync, QByteArray *data){
//qDebug() << "Icon Loaded:" << id << HASH.contains(id);
diff --git a/src-qt5/core/libLumina/LIconCache.h b/src-qt5/core/libLumina/LIconCache.h
index f58a5510..428ffcab 100644
--- a/src-qt5/core/libLumina/LIconCache.h
+++ b/src-qt5/core/libLumina/LIconCache.h
@@ -67,6 +67,9 @@ private:
void startReadFile(QString id, QString path);
void ReadFile(LIconCache *obj, QString id, QString path);
+ bool isThemeIcon(QString id);
+ QIcon iconFromTheme(QString id);
+
private slots:
void IconLoaded(QString id, QDateTime sync, QByteArray *data);
diff --git a/src-qt5/core/libLumina/LuminaXDG.cpp b/src-qt5/core/libLumina/LuminaXDG.cpp
index 8da39564..fed998a2 100644
--- a/src-qt5/core/libLumina/LuminaXDG.cpp
+++ b/src-qt5/core/libLumina/LuminaXDG.cpp
@@ -723,7 +723,7 @@ QList<XDGDesktop*> LXDG::sortDesktopNames(QList<XDGDesktop*> apps){
//Sort the list by name of the application
QHash<QString, XDGDesktop*> sorter;
for(int i=0; i<apps.length(); i++){
- sorter.insert(apps[i]->name.toLower(), apps[i]);
+ sorter.insert(apps[i]->name.toLower(), apps[i]);
}
QStringList keys = sorter.keys();
keys.sort();
@@ -746,16 +746,22 @@ void LXDG::setEnvironmentVars(){
}
QIcon LXDG::findIcon(QString iconName, QString fallback){
+ //With the addition of the Lumina theme engine (8/3/17), switch back to using the Qt icon from theme method for apps
+ QIcon tmp = QIcon::fromTheme(iconName);
+ if(tmp.isNull()){ tmp = QIcon::fromTheme(fallback); }
+ return tmp;
+
+
//NOTE: This was re-written on 11/10/15 to avoid using the QIcon::fromTheme() framework
// -- Too many issues with SVG files and/or search paths with the built-in system
-
+
//Check if the icon is an absolute path and exists
bool DEBUG =false;
if(DEBUG){ qDebug() << "[LXDG] Find icon for:" << iconName; }
if(QFile::exists(iconName) && iconName.startsWith("/")){ return QIcon(iconName); }
else if(iconName.startsWith("/")){ iconName.section("/",-1); } //Invalid absolute path, just look for the icon
//Check if the icon is actually given
- if(iconName.isEmpty()){
+ if(iconName.isEmpty()){
if(fallback.isEmpty()){ return QIcon(); }
else{ return LXDG::findIcon(fallback, ""); }
}
@@ -763,9 +769,9 @@ QIcon LXDG::findIcon(QString iconName, QString fallback){
if(DEBUG){ qDebug() << "[LXDG] Start search for icon"; }
//Get the currently-set theme
QString cTheme = QIcon::themeName();
- if(cTheme.isEmpty()){
- QIcon::setThemeName("material-design-light");
- cTheme = "material-design-light";
+ if(cTheme.isEmpty()){
+ QIcon::setThemeName("material-design-light");
+ cTheme = "material-design-light";
}
//Make sure the current search paths correspond to this theme
if( QDir::searchPaths("icontheme").filter("/"+cTheme+"/").isEmpty() ){
bgstack15