aboutsummaryrefslogtreecommitdiff
path: root/src-qt5/core
diff options
context:
space:
mode:
authorKen Moore <moorekou@gmail.com>2016-06-16 11:41:51 -0400
committerKen Moore <moorekou@gmail.com>2016-06-16 11:41:51 -0400
commit3507d048bef5a1c3565b0f60e329a999a691a4c3 (patch)
tree78f5a0a5d95f19bbf399291bf90bcaa196f6b284 /src-qt5/core
parentAdjust the default keyboard shortcuts a bit to try and avoid conflicts betwee... (diff)
downloadlumina-3507d048bef5a1c3565b0f60e329a999a691a4c3.tar.gz
lumina-3507d048bef5a1c3565b0f60e329a999a691a4c3.tar.bz2
lumina-3507d048bef5a1c3565b0f60e329a999a691a4c3.zip
Another round of small bug fixes/tweaks:
1) Fix up the desktopbar plugin to work with the new file locations for configs. 2) Fix up the replacement of the "~/" prefix on a file path with the users home dir. 3) Add default favorites for the ~/[Documents, Downloads, Pictures, Videos] directories. 4) Add the ability to specify quicklaunch apps within luminaDesktop.conf (almost the same as the favorites options). 5) Another couple tweaks for the Glass theme. 6) Have the non-applauncher desktop plugins fill in from the bottom-right of the screen. This provides automatic separation between the auto-generated launchers and other plugins. 7) Add a second, auto-hidden panel at the top of the primary screen by default with the desktopbar plugin there (for instance access to favorites & ~/Desktop files/dirs)
Diffstat (limited to 'src-qt5/core')
-rw-r--r--src-qt5/core/libLumina/LuminaUtils.cpp28
-rw-r--r--src-qt5/core/libLumina/themes/Glass.qss.template4
-rw-r--r--src-qt5/core/lumina-desktop/LDesktopPluginSpace.cpp4
-rw-r--r--src-qt5/core/lumina-desktop/defaults/luminaDesktop.conf19
-rw-r--r--src-qt5/core/lumina-desktop/panel-plugins/desktopbar/LDeskBar.cpp69
-rw-r--r--src-qt5/core/lumina-desktop/panel-plugins/desktopbar/LDeskBar.h11
6 files changed, 64 insertions, 71 deletions
diff --git a/src-qt5/core/libLumina/LuminaUtils.cpp b/src-qt5/core/libLumina/LuminaUtils.cpp
index 124de66f..3b4b6161 100644
--- a/src-qt5/core/libLumina/LuminaUtils.cpp
+++ b/src-qt5/core/libLumina/LuminaUtils.cpp
@@ -212,6 +212,7 @@ QString LUtils::PathToAbsolute(QString path){
return path;
}
QString LUtils::AppToAbsolute(QString path){
+ if(path.startsWith("~/")){ path = path.replace("~/", QDir::homePath()+"/" ); }
if(path.startsWith("/") || QFile::exists(path)){ return path; }
if(path.endsWith(".desktop")){
//Look in the XDG dirs
@@ -491,11 +492,6 @@ QStringList LUtils::listFavorites(){
fav.removeAll(""); //remove any empty lines
fav.removeDuplicates();
lastRead = cur;
- /*if(fav.isEmpty()){
- //Make sure the favorites dir exists, and create it if necessary
- QDir dir(QDir::homePath()+"/.lumina/favorites");
- if(!dir.exists()){ dir.mkpath(QDir::homePath()+"/.lumina/favorites"); }
- }*/
}
return fav;
@@ -767,7 +763,27 @@ void LUtils::LoadSystemDefaults(bool skipOS){
else if(var=="favorites_add"){ qDebug() << " - Adding:"; LUtils::addFavorite(val); }
else if(var=="favorites_remove"){ qDebug() << " - Removing:"; LUtils::removeFavorite(val); }
}
-
+
+ // -- QUICKLAUNCH --
+ tmp = sysDefaults.filter("quicklaunch_");
+ if(tmp.isEmpty()){ tmp = sysDefaults.filter("quicklaunch."); }
+ QStringList quickL;
+ for(int i=0; i<tmp.length(); i++){
+ if(tmp[i].startsWith("#") || !tmp[i].contains("=") ){ continue; }
+ QString var = tmp[i].section("=",0,0).toLower().simplified();
+ QString val = tmp[i].section("=",1,1).section("#",0,0).simplified();
+ //Change in 0.8.5 - use "_" instead of "." within variables names - need backwards compat for a little while
+ if(var.contains(".")){ var.replace(".","_"); }
+ //Now parse the variable and put the value in the proper file
+ val = AppToAbsolute(val); //turn any relative files into absolute
+ if(var=="quicklaunch_add_ifexists" && QFile::exists(val)){ quickL << val; }
+ else if(var=="quicklaunch_add"){ quickL << val; }
+ }
+ if(!quickL.isEmpty()){
+ if(sesset.isEmpty()){ sesset << "[General]"; } //everything is in this section
+ sesset << "QuicklaunchApps="+quickL.join(", ");
+ }
+
//Now do any theme settings
QStringList themesettings = LTHEME::currentSettings();
//List: [theme path, colorspath, iconsname, font, fontsize]
diff --git a/src-qt5/core/libLumina/themes/Glass.qss.template b/src-qt5/core/libLumina/themes/Glass.qss.template
index f427ac80..f3c25ec4 100644
--- a/src-qt5/core/libLumina/themes/Glass.qss.template
+++ b/src-qt5/core/libLumina/themes/Glass.qss.template
@@ -24,6 +24,10 @@ QStackedWidget .QWidget{
color: %%TEXTCOLOR%%;
border: none;
}
+/* Transparency does not work on main pages within tabwidgets*/
+QTabWidget QStackedWidget .QWidget{
+ background: %%ALTBASECOLOR%%;
+}
QTabWidget{
background: %%ALTBASECOLOR%%;
color: %%TEXTCOLOR%%;
diff --git a/src-qt5/core/lumina-desktop/LDesktopPluginSpace.cpp b/src-qt5/core/lumina-desktop/LDesktopPluginSpace.cpp
index a55f3e31..ff460125 100644
--- a/src-qt5/core/lumina-desktop/LDesktopPluginSpace.cpp
+++ b/src-qt5/core/lumina-desktop/LDesktopPluginSpace.cpp
@@ -113,7 +113,9 @@ void LDesktopPluginSpace::addDesktopPlugin(QString plugID){
//No previous location - need to calculate initial geom
QSize sz = plug->defaultPluginSize(); //in grid coordinates
geom.setSize(sz);
- geom = findOpenSpot(geom.width(), geom.height() );
+ //if an applauncher - add from top-left, otherwise add in from bottom-right
+ if(plugID.startsWith("applauncher")){ geom = findOpenSpot(geom.width(), geom.height() ); }
+ else{ geom = findOpenSpot(geom.width(), geom.height(), RoundUp(this->height()/GRIDSIZE), RoundUp(this->width()/GRIDSIZE), true); }
}else if(!ValidGeometry(plugID, gridToGeom(geom)) ){
//Find a new location for the plugin (saved location is invalid)
geom = findOpenSpot(geom.width(), geom.height(), geom.y(), geom.x(), false); //try to get it within the same general area first
diff --git a/src-qt5/core/lumina-desktop/defaults/luminaDesktop.conf b/src-qt5/core/lumina-desktop/defaults/luminaDesktop.conf
index 4eabfb70..318bb0f9 100644
--- a/src-qt5/core/lumina-desktop/defaults/luminaDesktop.conf
+++ b/src-qt5/core/lumina-desktop/defaults/luminaDesktop.conf
@@ -54,7 +54,7 @@ theme_font=Arial #Name of the font family to use
theme_fontsize=10pt #Default size of the fonts to use on the desktop (can also use a percentage of the screen height (<number>%) )
#DESKTOP SETTINGS (used for the primary screen in multi-screen setups)
-desktop_visiblepanels=1 #[0 - 12] The number of panels visible by default
+desktop_visiblepanels=2 #[0 - 12] The number of panels visible by default
#desktop.backgroundfiles= #list of absolute file paths for image files (disable for Lumina default)
desktop_backgroundrotateminutes=5 #[positive integer] number of minutes between background rotations (if multiple files)
desktop_plugins=rssreader #list of plugins to be shown on the desktop by default
@@ -62,12 +62,19 @@ desktop_generate_icons=true #[true/false] Auto-generate launchers for ~/Desktop
#PANEL SETTINGS (preface with panel1.<setting> or panel2.<setting>, depending on the number of panels you have visible by default)
panel1_location=bottom #[top/bottom/left/right] Screen edge the panel should be on
-panel1_pixelsize=4%H #number of pixels wide/high the panel should be (or <number>%[W/H] for a percentage of the screen width/height)
+panel1_pixelsize=3.5%H #number of pixels wide/high the panel should be (or <number>%[W/H] for a percentage of the screen width/height)
panel1_autohide=false #[true/false] Have the panel become visible on mouse-over
panel1_plugins=systemstart, taskmanager-nogroups, spacer, systemtray, clock #list of plugins for the panel
panel1_pinlocation=center #[left/center/right] Note:[left/right] corresponds to [top/bottom] for vertical panels
panel1_edgepercent=99 #[1->100] percentage of the screen edge to use
+panel2_location=top
+panel2_pixelsize=3%H
+panel2_autohide=true
+panel2_plugins=spacer, desktopbar, spacer
+panel2_pinlocation=center
+panel2_edgepercent=10
+
#MENU SETTINGS (right-click menu)
menu_plugins=terminal, filemanager, applications, line, settings #list of menu plugins to show
@@ -83,3 +90,11 @@ favorites_add_ifexists=trojita.desktop
favorites_add_ifexists=smplayer.desktop
favorites_add_ifexists=vlc.desktop
favorites_add_ifexists=pithos.desktop
+favorites_add_ifexists=~/Documents
+favorites_add_ifexists=~/Downloads
+favorites_add_ifexists=~/Pictures
+favorites_add_ifexists=~/Videos
+
+#QUICKLAUNCH CUSTOMIZATION (requires the use of the "systemstart" panel plugin)
+#quicklaunch_add=<file/dir path> #Create a quicklaunch shortcut for this file/dir
+#quicklaunch_add_ifexists=<file/dir path> #Create a quicklaunch shortcut for this file/dir if the file/dir exists
diff --git a/src-qt5/core/lumina-desktop/panel-plugins/desktopbar/LDeskBar.cpp b/src-qt5/core/lumina-desktop/panel-plugins/desktopbar/LDeskBar.cpp
index 0aa896ce..60329e7e 100644
--- a/src-qt5/core/lumina-desktop/panel-plugins/desktopbar/LDeskBar.cpp
+++ b/src-qt5/core/lumina-desktop/panel-plugins/desktopbar/LDeskBar.cpp
@@ -10,41 +10,21 @@
LDeskBarPlugin::LDeskBarPlugin(QWidget *parent, QString id, bool horizontal) : LPPlugin(parent, id, horizontal){
this->layout()->setContentsMargins(0,0,0,0);
this->setStyleSheet( "QToolButton::menu-indicator{ image: none; } QToolButton{ padding: 0px; }");
- //Find the path to the desktop folder
- if(QFile::exists(QDir::homePath()+"/Desktop")){ desktopPath = QDir::homePath()+"/Desktop"; }
- else if(QFile::exists(QDir::homePath()+"/desktop")){ desktopPath = QDir::homePath()+"/desktop"; }
- else{ desktopPath=""; }
- //Make sure the favorites directory exists
- if(!QFile::exists(QDir::homePath()+"/.lumina/favorites") ){
- QDir dir;
- dir.mkpath(QDir::homePath()+"/.lumina/favorites");
- }
- //Setup the filter lists for the different types of files
- /*audioFilter <<"*.ogg"<<"*.mp3"<<"*.wav"<<"*.aif"<<"*.iff"<<"*.m3u"<<"*.m4a"<<"*.mid"<<"*.mpa"<<"*.ra"<<"*.wma";
- videoFilter <<"*.3g2"<<"*.3gp"<<"*.asf"<<"*.asx"<<"*.avi"<<"*.flv"<<"*.m4v"<<"*.mov"<<"*.mp4"<<"*.mpg"<<"*.rm"<<"*.srt"<<"*.swf"<<"*.vob"<<"*.wmv";
- pictureFilter <<"*.bmp"<<"*.dds"<<"*.gif"<<"*.jpg"<<"*.png"<<"*.psd"<<"*.thm"<<"*.tif"<<"*.tiff"<<"*.ai"<<"*.eps"<<"*.ps"<<"*.svg"<<"*.ico";
- docsFilter << "*.txt"<<"*.rtf"<<"*.doc"<<"*.docx"<<"*.odf"<<"*.pdf";*/
+
//initialize the desktop bar items
initializeDesktop();
//setup the directory watcher
+ QString fav = QString(getenv("XDG_CONFIG_HOME"))+"/lumina-desktop/favorites.list";
+ if(!QFile::exists(fav)){ QProcess::execute("touch \""+fav+"\""); }
watcher = new QFileSystemWatcher(this);
- if(!desktopPath.isEmpty()){
- watcher->addPath(desktopPath);
- watcher->addPath(QDir::homePath()+"/.lumina/favorites");
- }
- connect(watcher, SIGNAL(directoryChanged(QString)), this, SLOT(desktopChanged()) );
- QTimer::singleShot(1,this, SLOT(desktopChanged()) ); //make sure to load it the first time
+ watcher->addPath( fav );
+ connect(watcher, SIGNAL(fileChanged(QString)), this, SLOT(filechanged(QString)) );
+ QTimer::singleShot(1,this, SLOT(updateFiles()) ); //make sure to load it the first time
QTimer::singleShot(0,this, SLOT(OrientationChange()) ); //adjust sizes/layout
- connect(QApplication::instance(), SIGNAL(DesktopFilesChanged()), this, SLOT(desktopChanged()) );
+ connect(QApplication::instance(), SIGNAL(DesktopFilesChanged()), this, SLOT(updateFiles()) );
}
LDeskBarPlugin::~LDeskBarPlugin(){
- if(!desktopPath.isEmpty()){
- watcher->removePath(desktopPath);
- disconnect(watcher);
- }
- delete watcher;
-
}
// =======================
@@ -107,23 +87,6 @@ QAction* LDeskBarPlugin::newAction(QString filepath, QString name, QIcon icon){
return act;
}
-/*void LDeskBarPlugin::updateMenu(QMenu* menu, QFileInfoList files, bool trim){
- menu->clear();
- //re-create the menu (since it is hidden from view)
- QStringList filevals;
- for(int i=0; i<files.length(); i++){
- qDebug() << "New Menu Item:" << files[i].fileName();
- if(trim){ totals.removeAll(files[i]); }
- filevals << files[i].fileName()+"::::"+files[i].canonicalFilePath();
- //menu->addAction( newAction( files[i].canonicalFilePath(), files[i].fileName(), "") );
- }
- //Now sort the list by file name
- filevals.sort();
- for(int i=0; i<filevals.length(); i++){
- menu->addAction( newAction( filevals[i].section("::::",1,1), filevals[i].section("::::",0,0), "") );
- }
-}*/
-
// =======================
// PRIVATE SLOTS
// =======================
@@ -133,14 +96,13 @@ void LDeskBarPlugin::ActionTriggered(QAction* act){
qDebug() << "Open File:" << cmd;
LSession::LaunchApplication(cmd);
}
-
-void LDeskBarPlugin::desktopChanged(){
- QStringList newfavs = LUtils::listFavorites();
- if(lastHomeUpdate.isNull() || (QFileInfo(QDir::homePath()+"/Desktop").lastModified() > lastHomeUpdate) || newfavs!=favs ){
- favs = newfavs;
- homefiles = LSession::handle()->DesktopFiles();
- lastHomeUpdate = QDateTime::currentDateTime();
- QStringList favitems = favs;
+void LDeskBarPlugin::filechanged(QString file){
+ updateFiles();
+ if(!watcher->files().contains(file)){ watcher->addPath(file); } //make sure the file does not get removed from the watcher
+}
+void LDeskBarPlugin::updateFiles(){
+ QFileInfoList homefiles = LSession::handle()->DesktopFiles();
+ QStringList favitems = LUtils::listFavorites();
//Remember for format for favorites: <name>::::[app/dir/<mimetype>]::::<full path>
for(int i=0; i<homefiles.length(); i++){
QString type;
@@ -218,7 +180,6 @@ void LDeskBarPlugin::desktopChanged(){
fileB->setMenu(fileM);
}
connect(fileB->menu(), SIGNAL(aboutToHide()), this, SIGNAL(MenuClosed()));
- } //end of check for if updates are needed
//Setup the visibility of the buttons
appB->setVisible( !appM->isEmpty() );
@@ -244,4 +205,4 @@ void LDeskBarPlugin::updateIcons(){
docM->setIcon( LXDG::findIcon("x-office-document","") );
fileB->setIcon( LXDG::findIcon("document-multiple", "") );
fileB->setToolTip(tr("Favorite Files") );
-} \ No newline at end of file
+}
diff --git a/src-qt5/core/lumina-desktop/panel-plugins/desktopbar/LDeskBar.h b/src-qt5/core/lumina-desktop/panel-plugins/desktopbar/LDeskBar.h
index 57d40e4c..74f41230 100644
--- a/src-qt5/core/lumina-desktop/panel-plugins/desktopbar/LDeskBar.h
+++ b/src-qt5/core/lumina-desktop/panel-plugins/desktopbar/LDeskBar.h
@@ -37,15 +37,10 @@ public:
~LDeskBarPlugin();
private:
- //QHBoxLayout *layout;
- QString desktopPath;
QFileSystemWatcher *watcher;
//Special toolbuttons and menus
QToolButton *appB, *fileB, *dirB;
QMenu *appM, *dirM, *audioM, *videoM, *pictureM, *fileM, *otherM, *docM;
- //QStringList audioFilter, videoFilter, pictureFilter, docsFilter;
- QFileInfoList homefiles;
- QStringList favs;
QList<QToolButton*> APPLIST;
QDateTime lastHomeUpdate;
@@ -60,13 +55,14 @@ private:
private slots:
void ActionTriggered(QAction* act);
- void desktopChanged();
+ void filechanged(QString);
+ void updateFiles();
void updateIcons();
public slots:
void LocaleChange(){
updateIcons();
- desktopChanged();
+ updateFiles();
}
void OrientationChange(){
@@ -90,4 +86,3 @@ public slots:
#endif
-
bgstack15