aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwi <william.os4y@gmail.com>2015-04-20 21:53:25 +0200
committerwi <william.os4y@gmail.com>2015-04-20 21:53:25 +0200
commita33566d53dab6f5bf3d4b6663014b6b548446525 (patch)
tree6e57deaa6afc289cb6a51a523e2fb1530830bd9c
parentThis is a complete adaptation of lumina-fileinfo. (diff)
parentAdd a special flag to prevent the lumina-open crash handler from starting up ... (diff)
downloadlumina-a33566d53dab6f5bf3d4b6663014b6b548446525.tar.gz
lumina-a33566d53dab6f5bf3d4b6663014b6b548446525.tar.bz2
lumina-a33566d53dab6f5bf3d4b6663014b6b548446525.zip
Merge remote-tracking branch 'upstream/master' into deskEditor
-rw-r--r--debian/changelog12
-rw-r--r--debian/control5
-rwxr-xr-xdebian/rules2
-rw-r--r--libLumina/LuminaOS-Debian.cpp10
-rw-r--r--libLumina/LuminaOS-DragonFly.cpp10
-rw-r--r--libLumina/LuminaOS-FreeBSD.cpp24
-rw-r--r--libLumina/LuminaOS-Linux.cpp10
-rw-r--r--libLumina/LuminaOS-OpenBSD.cpp10
-rw-r--r--libLumina/LuminaOS-kFreeBSD.cpp10
-rw-r--r--libLumina/LuminaOS-template.cpp10
-rw-r--r--libLumina/LuminaOS.h5
-rw-r--r--libLumina/LuminaX11.cpp14
-rw-r--r--libLumina/LuminaX11.h2
-rw-r--r--libLumina/libLumina.pro19
-rw-r--r--lumina-config/mainUI.cpp34
-rw-r--r--lumina-config/mainUI.ui158
-rw-r--r--lumina-desktop/LSession.cpp5
-rw-r--r--lumina-desktop/SystemWindow.cpp12
-rw-r--r--lumina-desktop/SystemWindow.h4
-rw-r--r--lumina-desktop/SystemWindow.ui65
-rw-r--r--lumina-desktop/panel-plugins/clock/LClock.cpp21
-rw-r--r--lumina-desktop/panel-plugins/clock/LClock.h2
-rw-r--r--lumina-desktop/panel-plugins/systemdashboard/SysMenuQuick.cpp7
-rw-r--r--lumina-desktop/panel-plugins/systemtray/TrayIcon.cpp15
-rw-r--r--lumina-desktop/panel-plugins/systemtray/TrayIcon.h14
-rw-r--r--lumina-fm/BackgroundWorker.cpp10
-rw-r--r--lumina-fm/BackgroundWorker.h2
-rw-r--r--lumina-fm/MainUI.cpp10
-rw-r--r--lumina-fm/MainUI.h2
-rw-r--r--lumina-open/main.cpp18
-rw-r--r--lumina-search/ConfigUI.cpp5
31 files changed, 373 insertions, 154 deletions
diff --git a/debian/changelog b/debian/changelog
index b12b8d20..e9ce4488 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,15 @@
+lumina-desktop (0.8.4.475-1nano) unstable; urgency=low
+
+ * New git snapshot
+ * add runtime depencies for lumina-desktop:
+ - gstreamer1.0-plugins-base
+ - phonon4qt5-backend-gstreamer
+ - pavucontrol
+ - alsa-utils
+ - acpi
+
+ -- Christopher Roy Bratusek <nano@jpberlin.de> Sat, 18 Apr 2015 20:21:00 +0200
+
lumina-desktop (0.8.3.440-1nano) unstable; urgency=low
* New git snapshot
diff --git a/debian/control b/debian/control
index 2ef40b6a..da781d4a 100644
--- a/debian/control
+++ b/debian/control
@@ -17,8 +17,9 @@ Replaces: lumina-core (<< 0.8.3.372)
Depends: ${misc:Depends}, ${shlibs:Depends}, libluminautils1 (= ${binary:Version}),
libluminautils1, lumina-config, lumina-fm, oxygen-icon-theme,
lumina-open, lumina-screenshot, lumina-search, lumina-info,
- lxpolkit, lumina-data, fluxbox, numlockx, xbacklight, xscreensaver,
- usbmount
+ lumina-xconfig, lxpolkit, lumina-data, fluxbox, numlockx, xbacklight,
+ xscreensaver, usbmount, gstreamer1.0-plugins-base,
+ phonon4qt5-backend-gstreamer, alsa-utils, acpi, pavucontrol
Recommends: qt5-configuration-tool
Description: Lightweight Qt5-based desktop environment
Metapackage depending on all other lumina packages.
diff --git a/debian/rules b/debian/rules
index 877c4cbb..e1e14d53 100755
--- a/debian/rules
+++ b/debian/rules
@@ -30,14 +30,12 @@ QMAKE_EXTRA_DIRS = libLumina \
dh $@ --parallel
override_dh_auto_configure:
- sed -e 's/LuminaOS-Linux/LuminaOS-Debian/g' -i libLumina/libLumina.pro
$(QMAKE) $(USER_QMAKE_FLAGS)
for d in $(QMAKE_EXTRA_DIRS) ; do (cd $$d && $(QMAKE) $(USER_QMAKE_FLAGS)); done
override_dh_auto_clean:
dh_auto_clean
-find $(CURDIR) -name *.qm -delete
- -sed -e 's/LuminaOS-Debian/LuminaOS-Linux/g' -i libLumina/libLumina.pro
override_dh_install:
dh_install --list-missing
diff --git a/libLumina/LuminaOS-Debian.cpp b/libLumina/LuminaOS-Debian.cpp
index 7ce8250f..a7be653c 100644
--- a/libLumina/LuminaOS-Debian.cpp
+++ b/libLumina/LuminaOS-Debian.cpp
@@ -152,6 +152,16 @@ void LOS::systemRestart(){ //start reboot sequence
QProcess::startDetached("shutdown -r now");
}
+//Check for suspend support
+bool LOS::systemCanSuspend(){
+ return false;
+}
+
+//Put the system into the suspend state
+void LOS::systemSuspend(){
+
+}
+
//Battery Availability
bool LOS::hasBattery(){
QString my_status = LUtils::getCmdOutput("acpi -b").join("");
diff --git a/libLumina/LuminaOS-DragonFly.cpp b/libLumina/LuminaOS-DragonFly.cpp
index b9ba58a2..57ff1b2a 100644
--- a/libLumina/LuminaOS-DragonFly.cpp
+++ b/libLumina/LuminaOS-DragonFly.cpp
@@ -148,6 +148,16 @@ void LOS::systemRestart(){ //start reboot sequence
QProcess::startDetached("shutdown -r now");
}
+//Check for suspend support
+bool LOS::systemCanSuspend(){
+ return false;
+}
+
+//Put the system into the suspend state
+void LOS::systemSuspend(){
+
+}
+
//Battery Availability
bool LOS::hasBattery(){
int val = LUtils::getCmdOutput("apm -l").join("").toInt();
diff --git a/libLumina/LuminaOS-FreeBSD.cpp b/libLumina/LuminaOS-FreeBSD.cpp
index 73637048..c9874605 100644
--- a/libLumina/LuminaOS-FreeBSD.cpp
+++ b/libLumina/LuminaOS-FreeBSD.cpp
@@ -8,6 +8,7 @@
#include "LuminaOS.h"
#include <unistd.h>
+#include <QDebug>
//can't read xbrightness settings - assume invalid until set
static int screenbrightness = -1;
@@ -71,17 +72,18 @@ void LOS::setScreenBrightness(int percent){
//ensure bounds
if(percent<0){percent=0;}
else if(percent>100){ percent=100; }
- float pf = percent/100.0; //convert to a decimel
//Run the command(s)
bool success = false;
// - try hardware setting first (PC-BSD only)
if(QFile::exists("/usr/local/bin/pc-sysconfig")){
- QString ret = LUtils::getCmdOutput("pc-sysconfig \"setscreenbrightness "+QString::number(percent)+"\"").join("");
- success = (ret.simplified() == "[SUCCESS]");
+ QString ret = LUtils::getCmdOutput("pc-sysconfig", QStringList() <<"setscreenbrightness "+QString::number(percent)).join("");
+ success = ret.toLower().contains("success");
+ qDebug() << "Set hardware brightness:" << percent << success;
}
// - if hardware brightness does not work, use software brightness
if(!success){
QString cmd = "xbrightness %1";
+ float pf = percent/100.0; //convert to a decimel
cmd = cmd.arg( QString::number( int(65535*pf) ) );
success = (0 == LUtils::runCmd(cmd) );
}
@@ -169,6 +171,22 @@ void LOS::systemRestart(){ //start reboot sequence
QProcess::startDetached("shutdown -ro now");
}
+//Check for suspend support
+bool LOS::systemCanSuspend(){
+ //This will only function on PC-BSD
+ //(permissions issues on standard FreeBSD unless setup a special way)
+ bool ok = QFile::exists("/usr/local/bin/pc-sysconfig");
+ if(ok){
+ ok = LUtils::getCmdOutput("pc-sysconfig systemcansuspend").join("").toLower().contains("true");
+ }
+ return ok;
+}
+
+//Put the system into the suspend state
+void LOS::systemSuspend(){
+ QProcess::startDetached("pc-sysconfig suspendsystem");
+}
+
//Battery Availability
bool LOS::hasBattery(){
int val = LUtils::getCmdOutput("apm -l").join("").toInt();
diff --git a/libLumina/LuminaOS-Linux.cpp b/libLumina/LuminaOS-Linux.cpp
index 46a6371a..6929c9c3 100644
--- a/libLumina/LuminaOS-Linux.cpp
+++ b/libLumina/LuminaOS-Linux.cpp
@@ -149,6 +149,16 @@ void LOS::systemRestart(){ //start reboot sequence
QProcess::startDetached("shutdown -r now");
}
+//Check for suspend support
+bool LOS::systemCanSuspend(){
+ return false;
+}
+
+//Put the system into the suspend state
+void LOS::systemSuspend(){
+
+}
+
//Battery Availability
bool LOS::hasBattery(){
QString my_status = LUtils::getCmdOutput("acpi -b").join("");
diff --git a/libLumina/LuminaOS-OpenBSD.cpp b/libLumina/LuminaOS-OpenBSD.cpp
index df6ddeba..5fda4866 100644
--- a/libLumina/LuminaOS-OpenBSD.cpp
+++ b/libLumina/LuminaOS-OpenBSD.cpp
@@ -166,6 +166,16 @@ void LOS::systemRestart(){ //start reboot sequence
QProcess::startDetached("shutdown -r now");
}
+//Check for suspend support
+bool LOS::systemCanSuspend(){
+ return false;
+}
+
+//Put the system into the suspend state
+void LOS::systemSuspend(){
+
+}
+
//Battery Availability
bool LOS::hasBattery(){
int val = LUtils::getCmdOutput("apm -b").join("").toInt();
diff --git a/libLumina/LuminaOS-kFreeBSD.cpp b/libLumina/LuminaOS-kFreeBSD.cpp
index 2b24ce51..dee5a6c8 100644
--- a/libLumina/LuminaOS-kFreeBSD.cpp
+++ b/libLumina/LuminaOS-kFreeBSD.cpp
@@ -133,6 +133,16 @@ void LOS::systemRestart(){ //start reboot sequence
QProcess::startDetached("shutdown -r now");
}
+//Check for suspend support
+bool LOS::systemCanSuspend(){
+ return false;
+}
+
+//Put the system into the suspend state
+void LOS::systemSuspend(){
+
+}
+
//Battery Availability
bool LOS::hasBattery(){
return false;
diff --git a/libLumina/LuminaOS-template.cpp b/libLumina/LuminaOS-template.cpp
index dfb9d850..aabd7da3 100644
--- a/libLumina/LuminaOS-template.cpp
+++ b/libLumina/LuminaOS-template.cpp
@@ -81,6 +81,16 @@ void LOS::systemRestart(){ //start reboot sequence
QProcess::startDetached("shutdown -r now");
}
+//Check for suspend support
+bool LOS::systemCanSuspend(){
+ return false;
+}
+
+//Put the system into the suspend state
+void LOS::systemSuspend(){
+
+}
+
//Battery Availability
bool LOS::hasBattery(){
return false; //not implemented yet
diff --git a/libLumina/LuminaOS.h b/libLumina/LuminaOS.h
index 091a8d96..eb0e2eb6 100644
--- a/libLumina/LuminaOS.h
+++ b/libLumina/LuminaOS.h
@@ -71,6 +71,11 @@ public:
static void systemShutdown(); //start poweroff sequence
//System Restart
static void systemRestart(); //start reboot sequence
+ //Check for suspend support
+ static bool systemCanSuspend();
+ //Put the system into the suspend state
+ static void systemSuspend();
+
//Battery Availability
static bool hasBattery();
diff --git a/libLumina/LuminaX11.cpp b/libLumina/LuminaX11.cpp
index 05a03631..89c138ca 100644
--- a/libLumina/LuminaX11.cpp
+++ b/libLumina/LuminaX11.cpp
@@ -27,6 +27,7 @@
#include <xcb/xcb_icccm.h>
#include <xcb/xcb_image.h>
#include <xcb/composite.h>
+#include <xcb/damage.h>
//===== WindowList() ========
@@ -1357,15 +1358,16 @@ void LXCB::MoveResizeWindow(WId win, QRect geom){
}
// === EmbedWindow() ===
-bool LXCB::EmbedWindow(WId win, WId container){
- if(win==0 || container==0){ return false; }
+uint LXCB::EmbedWindow(WId win, WId container){
+ //This returns the damage control ID number (or 0 for a failure)
+ if(win==0 || container==0){ return 0; }
//qDebug() << "Embed Window:" << win << container;
//Initialize any atoms that will be needed
xcb_intern_atom_cookie_t ecookie = xcb_intern_atom_unchecked(QX11Info::connection(), 0, 7, "_XEMBED");
xcb_intern_atom_reply_t *ereply = xcb_intern_atom_reply(QX11Info::connection(), ecookie, NULL);
- if(ereply==0){ return false; } //unable to initialize the atom
+ if(ereply==0){ return 0; } //unable to initialize the atom
xcb_atom_t emb = ereply->atom;
free(ereply); //done with this structure
@@ -1399,8 +1401,12 @@ bool LXCB::EmbedWindow(WId win, WId container){
//Now map the window (will be a transparent child of the container)
xcb_map_window(QX11Info::connection(), win);
+ //Now create/register the damage handler
+ xcb_damage_damage_t dmgID = xcb_generate_id(QX11Info::connection()); //This is a typedef for a 32-bit unsigned integer
+ xcb_damage_create(QX11Info::connection(), dmgID, win, XCB_DAMAGE_REPORT_LEVEL_RAW_RECTANGLES);
+
//qDebug() << " - Done";
- return true;
+ return ( (uint) dmgID );
}
// === Unembed Window() ===
diff --git a/libLumina/LuminaX11.h b/libLumina/LuminaX11.h
index 4ce279f4..0a950d63 100644
--- a/libLumina/LuminaX11.h
+++ b/libLumina/LuminaX11.h
@@ -153,7 +153,7 @@ public:
void MoveResizeWindow(WId win, QRect geom);
//Window Embedding/Detaching (for system tray)
- bool EmbedWindow(WId win, WId container);
+ uint EmbedWindow(WId win, WId container); //returns the damage ID (or 0 for an error)
bool UnembedWindow(WId win);
};
diff --git a/libLumina/libLumina.pro b/libLumina/libLumina.pro
index 1b78367a..ef30bd20 100644
--- a/libLumina/libLumina.pro
+++ b/libLumina/libLumina.pro
@@ -36,13 +36,28 @@ SOURCES += LuminaXDG.cpp \
LuminaOS-FreeBSD.cpp \
LuminaOS-DragonFly.cpp \
LuminaOS-OpenBSD.cpp \
- LuminaOS-Linux.cpp \
LuminaOS-kFreeBSD.cpp
# new OS support can be added here
+# check linux distribution and use specific
+# LuminaOS support functions (or fall back to
+# generic one
+
+exists(/bin/lsb_release){
+ LINUX_DISTRIBUTION = $$system(lsb_release -si)
+}
+
+equals(LINUX_DISTRIBUTION, "Debian"): {
+ SOURCES += LuminaOS-Debian.cpp
+} else {
+ SOURCES += LuminaOS-Linux.cpp
+}
+
+
+
INCLUDEPATH += $$PREFIX/include
-LIBS += -lX11 -lXrender -lXcomposite -lxcb -lxcb-ewmh -lxcb-icccm -lxcb-image -lxcb-composite
+LIBS += -lX11 -lXrender -lXcomposite -lxcb -lxcb-ewmh -lxcb-icccm -lxcb-image -lxcb-composite -lxcb-damage
include.path=$$PREFIX/include/
include.files=LuminaXDG.h \
diff --git a/lumina-config/mainUI.cpp b/lumina-config/mainUI.cpp
index 744d4bdf..b1a8e797 100644
--- a/lumina-config/mainUI.cpp
+++ b/lumina-config/mainUI.cpp
@@ -237,6 +237,7 @@ void MainUI::setupConnections(){
connect(ui->line_session_time, SIGNAL(textChanged(QString)), this, SLOT(sessionLoadTimeSample()) );
connect(ui->line_session_date, SIGNAL(textChanged(QString)), this, SLOT(sessionLoadDateSample()) );
connect(ui->combo_session_timezone, SIGNAL(currentIndexChanged(int)), this, SLOT(sessionoptchanged()) );
+ connect(ui->combo_session_datetimeorder, SIGNAL(currentIndexChanged(int)), this, SLOT(sessionoptchanged()) );
}
void MainUI::setupMenus(){
@@ -275,6 +276,13 @@ void MainUI::setupMenus(){
ui->combo_session_wtheme->addItem(fbstyles[i], fbdir.absoluteFilePath(fbstyles[i]));
}
+ //Display formats for panel clock
+ ui->combo_session_datetimeorder->clear();
+ ui->combo_session_datetimeorder->addItem( tr("Time (Date as tooltip)"), "timeonly");
+ ui->combo_session_datetimeorder->addItem( tr("Date (Time as tooltip)"), "dateonly");
+ ui->combo_session_datetimeorder->addItem( tr("Time first then Date"), "timedate");
+ ui->combo_session_datetimeorder->addItem( tr("Date first then Time"), "datetime");
+
//Available Time zones
ui->combo_session_timezone->clear();
QList<QByteArray> TZList = QTimeZone::availableTimeZoneIds();
@@ -440,7 +448,7 @@ void MainUI::slotChangePage(bool enabled){
}
ui->group_screen->setVisible(showScreen && (ui->spin_screen->maximum()>1) );
//Hide the save button for particular pages
- ui->push_save->setVisible(!ui->actionDefaults->isChecked()); //hide on the default page
+ ui->push_save->setVisible(!ui->actionDefaults->isChecked() || moddesk || modpan || modmenu || modshort || moddef || modses); //hide on the default page if nothing waiting to be saved
//Special functions for particular pages
if(ui->page_panels->isVisible()){ checkpanels(); }
@@ -557,11 +565,21 @@ void MainUI::loadCurrentSettings(bool screenonly){
ui->list_panel2_plugins->clear();
for(int i=0; i<plugs.length(); i++){
QString pid = plugs[i].section("---",0,0);
- LPI info = PINFO->panelPluginInfo(pid);
- if(!info.ID.isEmpty()){
- QListWidgetItem *it = new QListWidgetItem( LXDG::findIcon(info.icon,""), info.name );
+ if(pid.startsWith("applauncher")){
+ bool ok = false;
+ XDGDesktop desk = LXDG::loadDesktopFile(pid.section("::",1,1),ok);
+ if(ok){
+ QListWidgetItem *it = new QListWidgetItem( LXDG::findIcon(desk.icon,""), desk.name );
it->setWhatsThis(plugs[i]); //make sure to preserve the entire plugin ID (is the unique version)
- ui->list_panel2_plugins->addItem(it);
+ ui->list_panel2_plugins->addItem(it);
+ }
+ }else{
+ LPI info = PINFO->panelPluginInfo(pid);
+ if(!info.ID.isEmpty()){
+ QListWidgetItem *it = new QListWidgetItem( LXDG::findIcon(info.icon,""), info.name );
+ it->setWhatsThis(plugs[i]); //make sure to preserve the entire plugin ID (is the unique version)
+ ui->list_panel2_plugins->addItem(it);
+ }
}
}
QString color = settings->value(PPrefix+"color","rgba(255,255,255,160)").toString();
@@ -730,6 +748,7 @@ void MainUI::saveCurrentSettings(bool screenonly){
moddesk = modpan = false;
if(!screenonly){ modmenu = modshort = moddef = modses = false; }
ui->push_save->setEnabled(modmenu || modshort || moddef || modses); //wait for new changes
+ ui->push_save->setVisible(!ui->actionDefaults->isChecked() || modmenu || modshort || moddef || modses);
}
@@ -1802,11 +1821,13 @@ void MainUI::loadSessionSettings(){
ui->push_session_setUserIcon->setIcon( LXDG::findIcon(QDir::homePath()+"/.loginIcon.png", "user-identity") );
ui->line_session_time->setText( sessionsettings->value("TimeFormat","").toString() );
ui->line_session_date->setText( sessionsettings->value("DateFormat","").toString() );
+ index = ui->combo_session_datetimeorder->findData( sessionsettings->value("DateTimeOrder").toString() );
+ ui->combo_session_datetimeorder->setCurrentIndex(index);
if( !sessionsettings->value("CustomTimeZone", false).toBool() ){
//System Time selected
ui->combo_session_timezone->setCurrentIndex(0);
}else{
- int index = ui->combo_session_timezone->findData( sessionsettings->value("TimeZoneByteCode",QByteArray()).toByteArray() );
+ index = ui->combo_session_timezone->findData( sessionsettings->value("TimeZoneByteCode",QByteArray()).toByteArray() );
if(index>0){ ui->combo_session_timezone->setCurrentIndex(index); }
else{ ui->combo_session_timezone->setCurrentIndex(0); }
}
@@ -1902,6 +1923,7 @@ void MainUI::saveSessionSettings(){
sessionsettings->setValue("PlayLogoutAudio", ui->check_session_playlogoutaudio->isChecked());
sessionsettings->setValue("TimeFormat", ui->line_session_time->text());
sessionsettings->setValue("DateFormat", ui->line_session_date->text());
+ sessionsettings->setValue("DateTimeOrder", ui->combo_session_datetimeorder->currentData().toString());
if( ui->combo_session_timezone->currentIndex()==0){
//System Time selected
sessionsettings->setValue("CustomTimeZone", false);
diff --git a/lumina-config/mainUI.ui b/lumina-config/mainUI.ui
index 07abacab..6061cae4 100644
--- a/lumina-config/mainUI.ui
+++ b/lumina-config/mainUI.ui
@@ -602,8 +602,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>233</width>
- <height>150</height>
+ <width>263</width>
+ <height>178</height>
</rect>
</property>
<attribute name="label">
@@ -701,7 +701,7 @@
<rect>
<x>0</x>
<y>0</y>
- <width>197</width>
+ <width>198</width>
<height>117</height>
</rect>
</property>
@@ -799,8 +799,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>233</width>
- <height>150</height>
+ <width>263</width>
+ <height>178</height>
</rect>
</property>
<attribute name="label">
@@ -898,7 +898,7 @@
<rect>
<x>0</x>
<y>0</y>
- <width>197</width>
+ <width>198</width>
<height>117</height>
</rect>
</property>
@@ -1467,19 +1467,6 @@
<string>General Options</string>
</attribute>
<layout class="QGridLayout" name="gridLayout">
- <item row="5" column="0">
- <spacer name="verticalSpacer_2">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>128</height>
- </size>
- </property>
- </spacer>
- </item>
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
@@ -1535,7 +1522,62 @@
</item>
</layout>
</item>
- <item row="0" column="1">
+ <item row="6" column="0" colspan="2">
+ <widget class="QGroupBox" name="groupBox_2">
+ <property name="font">
+ <font>
+ <weight>50</weight>
+ <bold>false</bold>
+ </font>
+ </property>
+ <property name="title">
+ <string>Reset Desktop Settings</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_20">
+ <item>
+ <spacer name="horizontalSpacer_18">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="push_session_resetSysDefaults">
+ <property name="text">
+ <string>Return to system defaults</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="push_session_resetLuminaDefaults">
+ <property name="text">
+ <string>Return to Lumina defaults</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_17">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="0" column="1" rowspan="2">
<layout class="QFormLayout" name="formLayout_3">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
@@ -1654,62 +1696,30 @@
</property>
</widget>
</item>
+ <item row="5" column="1">
+ <widget class="QComboBox" name="combo_session_datetimeorder"/>
+ </item>
+ <item row="5" column="0">
+ <widget class="QLabel" name="label_27">
+ <property name="text">
+ <string>Display Format</string>
+ </property>
+ </widget>
+ </item>
</layout>
</item>
- <item row="6" column="0" colspan="2">
- <widget class="QGroupBox" name="groupBox_2">
- <property name="font">
- <font>
- <weight>50</weight>
- <bold>false</bold>
- </font>
+ <item row="1" column="0">
+ <spacer name="verticalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
</property>
- <property name="title">
- <string>Reset Desktop Settings</string>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>128</height>
+ </size>
</property>
- <layout class="QHBoxLayout" name="horizontalLayout_20">
- <item>
- <spacer name="horizontalSpacer_18">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QPushButton" name="push_session_resetSysDefaults">
- <property name="text">
- <string>Return to system defaults</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="push_session_resetLuminaDefaults">
- <property name="text">
- <string>Return to Lumina defaults</string>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="horizontalSpacer_17">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </widget>
+ </spacer>
</item>
</layout>
</widget>
@@ -1791,8 +1801,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>128</width>
- <height>28</height>
+ <width>510</width>
+ <height>107</height>
</rect>
</property>
<property name="sizePolicy">
diff --git a/lumina-desktop/LSession.cpp b/lumina-desktop/LSession.cpp
index e076210f..0fea2fa1 100644
--- a/lumina-desktop/LSession.cpp
+++ b/lumina-desktop/LSession.cpp
@@ -75,6 +75,7 @@ LSession::~LSession(){
void LSession::setupSession(){
qDebug() << "Initializing Session";
+ if(QFile::exists("/tmp/.luminastopping")){ QFile::remove("/tmp/.luminastopping"); }
QTime* timer = 0;
if(DEBUG){ timer = new QTime(); timer->start(); qDebug() << " - Init srand:" << timer->elapsed();}
//Seed random number generator (if needed)
@@ -134,6 +135,8 @@ void LSession::CleanupSession(){
LSession::processEvents();
QDateTime time = QDateTime::currentDateTime();
qDebug() << "Start closing down the session: " << time.toString( Qt::SystemLocaleShortDate);
+ //Create a temporary flag to prevent crash dialogs from opening during cleanup
+ LUtils::writeFile("/tmp/.luminastopping",QStringList() << "yes", true);
//Start the logout chimes (if necessary)
bool playaudio = sessionsettings->value("PlayLogoutAudio",true).toBool();
if( playaudio ){ playAudioFile(LOS::LuminaShare()+"Logout.ogg"); }
@@ -184,6 +187,8 @@ void LSession::CleanupSession(){
}else{
for(int i=0; i<20; i++){ LSession::processEvents(); usleep(25000); } //1/2 second pause
}
+ //Clean up the temporary flag
+ if(QFile::exists("/tmp/.luminastopping")){ QFile::remove("/tmp/.luminastopping"); }
//if(audioThread!=0){ audioThread->exit(0); }
}
diff --git a/lumina-desktop/SystemWindow.cpp b/lumina-desktop/SystemWindow.cpp
index 0540a5d9..02de54b9 100644
--- a/lumina-desktop/SystemWindow.cpp
+++ b/lumina-desktop/SystemWindow.cpp
@@ -17,19 +17,23 @@ SystemWindow::SystemWindow() : QDialog(), ui(new Ui::SystemWindow){
ui->tool_logout->setIcon( LXDG::findIcon("system-log-out","") );
ui->tool_restart->setIcon( LXDG::findIcon("system-reboot","") );
ui->tool_shutdown->setIcon( LXDG::findIcon("system-shutdown","") );
+ ui->tool_suspend->setIcon( LXDG::findIcon("system-suspend","") );
ui->push_cancel->setIcon( LXDG::findIcon("dialog-cancel","") );
ui->push_lock->setIcon( LXDG::findIcon("system-lock-screen","") );
//Connect the signals/slots
connect(ui->tool_logout, SIGNAL(clicked()), this, SLOT(sysLogout()) );
connect(ui->tool_restart, SIGNAL(clicked()), this, SLOT(sysRestart()) );
connect(ui->tool_shutdown, SIGNAL(clicked()), this, SLOT(sysShutdown()) );
+ connect(ui->tool_suspend, SIGNAL(clicked()), this, SLOT(sysSuspend()) );
connect(ui->push_cancel, SIGNAL(clicked()), this, SLOT(sysCancel()) );
connect(ui->push_lock, SIGNAL(clicked()), this, SLOT(sysLock()) );
//Disable the shutdown/restart buttons if necessary
if( !LOS::userHasShutdownAccess() ){
ui->tool_restart->setEnabled(false);
ui->tool_shutdown->setEnabled(false);
+
}
+ ui->tool_suspend->setVisible(LOS::systemCanSuspend());
//Center this window on the screen
QPoint center = QApplication::desktop()->screenGeometry(QCursor::pos()).center(); //get the center of the current screen
this->move(center.x() - this->width()/2, center.y() - this->height()/2);
@@ -55,6 +59,14 @@ void SystemWindow::sysShutdown(){
this->close();
}
+void SystemWindow::sysSuspend(){
+ //Make sure to lock the system first (otherwise anybody can access it again)
+ LUtils::runCmd("xscreensaver-command -lock");
+ //Now suspend the system
+ LOS::systemSuspend();
+ this->close();
+}
+
void SystemWindow::sysLock(){
qDebug() << "Locking the desktop...";
QProcess::startDetached("xscreensaver-command -lock");
diff --git a/lumina-desktop/SystemWindow.h b/lumina-desktop/SystemWindow.h
index 211de5fd..4b1fab44 100644
--- a/lumina-desktop/SystemWindow.h
+++ b/lumina-desktop/SystemWindow.h
@@ -38,6 +38,8 @@ private slots:
void sysShutdown();
+ void sysSuspend();
+
void sysCancel(){
this->close();
}
@@ -45,4 +47,4 @@ private slots:
void sysLock();
};
-#endif \ No newline at end of file
+#endif
diff --git a/lumina-desktop/SystemWindow.ui b/lumina-desktop/SystemWindow.ui
index b03039f5..9e25509b 100644
--- a/lumina-desktop/SystemWindow.ui
+++ b/lumina-desktop/SystemWindow.ui
@@ -14,8 +14,17 @@
<string>System Options</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
- <property name="margin">
- <number>0</number>
+ <property name="leftMargin">
+ <number>2</number>
+ </property>
+ <property name="topMargin">
+ <number>2</number>
+ </property>
+ <property name="rightMargin">
+ <number>2</number>
+ </property>
+ <property name="bottomMargin">
+ <number>2</number>
</property>
<item>
<widget class="QFrame" name="frame">
@@ -47,8 +56,8 @@
</property>
<property name="iconSize">
<size>
- <width>60</width>
- <height>60</height>
+ <width>64</width>
+ <height>64</height>
</size>
</property>
<property name="toolButtonStyle">
@@ -63,8 +72,8 @@
</property>
<property name="iconSize">
<size>
- <width>60</width>
- <height>60</height>
+ <width>64</width>
+ <height>64</height>
</size>
</property>
<property name="toolButtonStyle">
@@ -79,8 +88,8 @@
</property>
<property name="iconSize">
<size>
- <width>60</width>
- <height>60</height>
+ <width>64</width>
+ <height>64</height>
</size>
</property>
<property name="toolButtonStyle">
@@ -113,10 +122,19 @@
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
- <widget class="QPushButton" name="push_cancel">
+ <widget class="QToolButton" name="push_cancel">
<property name="text">
<string>Cancel</string>
</property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ <property name="toolButtonStyle">
+ <enum>Qt::ToolButtonTextUnderIcon</enum>
+ </property>
</widget>
</item>
<item>
@@ -133,9 +151,34 @@
</spacer>
</item>
<item>
- <widget class="QPushButton" name="push_lock">
+ <widget class="QToolButton" name="push_lock">
<property name="text">
- <string>Lock Screen</string>
+ <string>Lock</string>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ <property name="toolButtonStyle">
+ <enum>Qt::ToolButtonTextUnderIcon</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="tool_suspend">
+ <property name="text">
+ <string>Suspend</string>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>32</width>
+ <height>32</height>
+ </size>
+ </property>
+ <property name="toolButtonStyle">
+ <enum>Qt::ToolButtonTextUnderIcon</enum>
</property>
</widget>
</item>
diff --git a/lumina-desktop/panel-plugins/clock/LClock.cpp b/lumina-desktop/panel-plugins/clock/LClock.cpp
index 79cae84b..c3eb1451 100644
--- a/lumina-desktop/panel-plugins/clock/LClock.cpp
+++ b/lumina-desktop/panel-plugins/clock/LClock.cpp
@@ -38,10 +38,22 @@ void LClock::updateTime(){
if(useTZ){ CT = CT.toTimeZone(TZ); }
//Now update the display
QString label;
- if(deftime){ label = CT.time().toString(Qt::SystemLocaleShortDate) ; }
- else{ label=CT.toString(timefmt); }
- if(defdate){ labelWidget->setToolTip(CT.date().toString(Qt::SystemLocaleLongDate)); }
- else{ labelWidget->setToolTip(CT.toString(datefmt)); }
+ QString timelabel;
+ QString datelabel;
+ if(deftime){ timelabel = CT.time().toString(Qt::SystemLocaleShortDate) ; }
+ else{ timelabel=CT.toString(timefmt); }
+ if(defdate){ datelabel = CT.date().toString(Qt::SystemLocaleLongDate); }
+ else{ datelabel = CT.toString(datefmt); }
+ if(datetimeorder == "dateonly"){
+ label = datelabel;
+ labelWidget->setToolTip(timelabel);
+ }else if(datetimeorder == "timedate"){
+ label = timelabel + " " + datelabel;
+ }else if(datetimeorder == "datetime"){
+ label = datelabel + " " + timelabel;
+ }else{ label = timelabel;
+ labelWidget->setToolTip(datelabel);
+ }
if( this->layout()->direction() == QBoxLayout::TopToBottom ){
//different routine for vertical text (need newlines instead of spaces)
label.replace(" ","\n");
@@ -54,6 +66,7 @@ void LClock::updateFormats(){
datefmt = LSession::handle()->sessionSettings()->value("DateFormat","").toString();
deftime = timefmt.simplified().isEmpty();
defdate = datefmt.simplified().isEmpty();
+ datetimeorder = LSession::handle()->sessionSettings()->value("DateTimeOrder", "timeonly").toString();
useTZ = LSession::handle()->sessionSettings()->value("CustomTimeZone",false).toBool();
if(useTZ){ TZ = QTimeZone( LSession::handle()->sessionSettings()->value("TimeZoneByteCode", QByteArray()).toByteArray() ); }
diff --git a/lumina-desktop/panel-plugins/clock/LClock.h b/lumina-desktop/panel-plugins/clock/LClock.h
index 8156e7d8..31bf13d6 100644
--- a/lumina-desktop/panel-plugins/clock/LClock.h
+++ b/lumina-desktop/panel-plugins/clock/LClock.h
@@ -26,7 +26,7 @@ public:
private:
QTimer *timer;
QLabel *labelWidget;
- QString timefmt, datefmt;
+ QString timefmt, datefmt, datetimeorder;
bool deftime, defdate, useTZ;
QTimeZone TZ;
diff --git a/lumina-desktop/panel-plugins/systemdashboard/SysMenuQuick.cpp b/lumina-desktop/panel-plugins/systemdashboard/SysMenuQuick.cpp
index 08ab49d0..b470f191 100644
--- a/lumina-desktop/panel-plugins/systemdashboard/SysMenuQuick.cpp
+++ b/lumina-desktop/panel-plugins/systemdashboard/SysMenuQuick.cpp
@@ -15,7 +15,7 @@ LSysMenuQuick::LSysMenuQuick(QWidget *parent) : QWidget(parent), ui(new Ui::LSys
settings = new QSettings("panel-plugins","systemdashboard");
brighttimer = new QTimer(this);
brighttimer->setSingleShot(true);
- brighttimer->setInterval(100); //100ms delay in setting the new value
+ brighttimer->setInterval(50); //50ms delay in setting the new value
//Now reset the initial saved settings (if any)
LOS::setScreenBrightness( settings->value("screenbrightness",100).toInt() ); //default to 100%
LOS::setAudioVolume( settings->value("audiovolume", 100).toInt() ); //default to 100%
@@ -121,6 +121,11 @@ void LSysMenuQuick::brightSliderChanged(){
//Brightness controls cannot operate extremely quickly - combine calls as necessary
if(brighttimer->isActive()){ brighttimer->stop(); }
brighttimer->start();
+ //*DO* update the label right away
+ int val = ui->slider_brightness->value();
+ QString txt = QString::number(val)+"%";
+ if(val<100){ txt.prepend(" "); } //make sure no widget resizing
+ ui->label_bright_text->setText( txt );
}
void LSysMenuQuick::setCurrentBrightness(){
diff --git a/lumina-desktop/panel-plugins/systemtray/TrayIcon.cpp b/lumina-desktop/panel-plugins/systemtray/TrayIcon.cpp
index 8d0cacb3..a35db4d7 100644
--- a/lumina-desktop/panel-plugins/systemtray/TrayIcon.cpp
+++ b/lumina-desktop/panel-plugins/systemtray/TrayIcon.cpp
@@ -8,19 +8,20 @@
//#include <X11/Xlib.h>
//#include <X11/Xutil.h>
-#include <X11/extensions/Xdamage.h>
+//#include <X11/extensions/Xdamage.h>
//#include <xcb/damage.h>
//static xcb_damage_damage_t dmgID;
#include <LSession.h>
#include <QScreen>
-
-static int dmgID = 0;
+#include <LuminaX11.h>
+//static int dmgID = 0;
TrayIcon::TrayIcon(QWidget *parent) : QWidget(parent){
AID = 0; //nothing yet
IID = 0;
+ dmgID = 0;
}
TrayIcon::~TrayIcon(){
@@ -38,12 +39,10 @@ void TrayIcon::attachApp(WId id){
else if(AID!=0){ qWarning() << "Tray Icon is already attached to a window!"; return; }
AID = id;
IID = this->winId(); //embed directly into this widget
- //IID = LX11::CreateWindow( this->winId(), this->rect() ); //Create an intermediate window to be the parent
- if( LSession::handle()->XCB->EmbedWindow(AID, IID) ){
+ dmgID = LSession::handle()->XCB->EmbedWindow(AID, IID);
+ if( dmgID != 0 ){
LX11::RestoreWindow(AID); //make it visible
- //XSelectInput(QX11Info::display(), AID, StructureNotifyMask);
- //xcb_damage_create(QX11Info::connection(), dmgID, AID, XCB_DAMAGE_REPORT_LEVEL_RAW_RECTANGLES);
- dmgID = XDamageCreate( QX11Info::display(), AID, XDamageReportRawRectangles );
+ //dmgID = XDamageCreate( QX11Info::display(), AID, XDamageReportRawRectangles );
qDebug() << "New System Tray App:" << AID;
QTimer::singleShot(1000, this, SLOT(updateIcon()) );
}else{
diff --git a/lumina-desktop/panel-plugins/systemtray/TrayIcon.h b/lumina-desktop/panel-plugins/systemtray/TrayIcon.h
index a3cbac31..18c51a66 100644
--- a/lumina-desktop/panel-plugins/systemtray/TrayIcon.h
+++ b/lumina-desktop/panel-plugins/systemtray/TrayIcon.h
@@ -22,9 +22,7 @@
#include <QImage>
// libLumina includes
-#include <LuminaX11.h>
-
-//Local includes
+//#include <LuminaX11.h>
class TrayIcon : public QWidget{
Q_OBJECT
@@ -42,19 +40,11 @@ public slots:
private:
WId IID, AID; //icon ID and app ID
-
-//private slots:
- //void slotAttach(); //so that the attachment can be done in a new thread
-
+ uint dmgID;
protected:
void paintEvent(QPaintEvent *event);
- //void moveEvent(QMoveEvent *event);
void resizeEvent(QResizeEvent *event);
- //bool x11Event(XEvent *event);
-//signals:
- //void AppClosed();
- //void AppAttached();
};
#endif \ No newline at end of file
diff --git a/lumina-fm/BackgroundWorker.cpp b/lumina-fm/BackgroundWorker.cpp
index 125e0e1c..02d2f02e 100644
--- a/lumina-fm/BackgroundWorker.cpp
+++ b/lumina-fm/BackgroundWorker.cpp
@@ -88,14 +88,19 @@ void BackgroundWorker::startDirChecks(QString path){
}
-void BackgroundWorker::createStatusBarMsg(QFileInfoList fileList, QString path, QString message){
+void BackgroundWorker::createStatusBarMsg(QFileInfoList fileList, QString path, QString messageFolders, QString messageFiles){
+
//collect some statistics of dir and display them in statusbar
//Get the total size of the items
double totalSizes = 0;
+ int numberFolders = 0;
+ int numberFiles = 0;
for(int i=0; i<fileList.length(); i++){
if(!fileList[i].isDir()){
+ numberFiles++;
totalSizes += fileList[i].size(); //in Bytes
}
+ else { numberFolders++; }
}
//Convert the size into display units
static QStringList units = QStringList() << tr("B") << tr("KB") << tr("MB") << tr("GB") << tr("TB");
@@ -105,7 +110,8 @@ void BackgroundWorker::createStatusBarMsg(QFileInfoList fileList, QString path,
totalSizes = totalSizes/1024;
}
//Assemble the message
- QString msgStatusBar = QString(tr("%1: %2")).arg(message).arg(fileList.length());
+ QString msgStatusBar = QString(tr("%1: %2 / %3: %4")).arg(messageFolders).arg(numberFolders).arg(messageFiles).arg(numberFiles);
+
if(totalSizes > 0){
totalSizes = qRound(totalSizes*100)/100.0; //round to 2 decimel places
msgStatusBar += " "+QString(tr("Total size: %1 %2")).arg(QString::number(totalSizes), units[cunit]);
diff --git a/lumina-fm/BackgroundWorker.h b/lumina-fm/BackgroundWorker.h
index d50612fa..72060cad 100644
--- a/lumina-fm/BackgroundWorker.h
+++ b/lumina-fm/BackgroundWorker.h
@@ -34,7 +34,7 @@ public slots:
//Kickoff processes with these slots
// and then listen for the appropriate signals when finished
void startDirChecks(QString path);
- void createStatusBarMsg(QFileInfoList fileList, QString path, QString message);
+ void createStatusBarMsg(QFileInfoList fileList, QString path, QString messageFolders, QString messageFiles);
signals:
void ImagesAvailable(QStringList files);
diff --git a/lumina-fm/MainUI.cpp b/lumina-fm/MainUI.cpp
index 604e4c9c..0c38ae34 100644
--- a/lumina-fm/MainUI.cpp
+++ b/lumina-fm/MainUI.cpp
@@ -219,7 +219,7 @@ void MainUI::setupConnections(){
connect(worker, SIGNAL(SnapshotsAvailable(QString, QStringList)), this, SLOT(AvailableBackups(QString, QStringList)) );
//Background worker class for statusbar
- connect(this, SIGNAL(Si_AdaptStatusBar(QFileInfoList, QString, QString)), worker, SLOT(createStatusBarMsg(QFileInfoList, QString, QString)) );
+ connect(this, SIGNAL(Si_AdaptStatusBar(QFileInfoList, QString, QString, QString)), worker, SLOT(createStatusBarMsg(QFileInfoList, QString, QString, QString)) );
connect(worker, SIGNAL(Si_DisplayStatusBar(QString)), this, SLOT(DisplayStatusBar(QString)) );
//Action buttons on browser page
@@ -850,7 +850,7 @@ void MainUI::currentDirectoryLoaded(){
ui->tool_goToRestore->setVisible(false);
ui->tool_goToImages->setVisible(false);
emit DirChanged(getCurrentDir());
- emit Si_AdaptStatusBar(fsmod->rootDirectory().entryInfoList(), getCurrentDir(), tr("Items"));
+ emit Si_AdaptStatusBar(fsmod->rootDirectory().entryInfoList(), getCurrentDir(), tr("Folders"), tr("Files"));
ItemSelectionChanged();
}
@@ -983,9 +983,9 @@ void MainUI::ItemSelectionChanged(){
QFileInfoList sel = getSelectedItems();
//display info related to files selected.
//TO CHECK: impact if filesystem is very slow
- if(sel.size()>0){ emit Si_AdaptStatusBar(sel, "", tr("Items selected")); }
- else{ emit Si_AdaptStatusBar(fsmod->rootDirectory().entryInfoList(), getCurrentDir(), tr("Items")); }
-
+ if(sel.size()>0){ emit Si_AdaptStatusBar(sel, "", tr("Selected Folders"), tr("Files"));}
+ else{ emit Si_AdaptStatusBar(fsmod->rootDirectory().entryInfoList(), getCurrentDir(), tr("Folders"), tr("Files")); }
+
ui->tool_act_run->setEnabled(sel.length()==1);
ui->tool_act_runwith->setEnabled(sel.length()==1);
ui->tool_act_rm->setEnabled(!sel.isEmpty() && isUserWritable);
diff --git a/lumina-fm/MainUI.h b/lumina-fm/MainUI.h
index d88492d6..58f03ee8 100644
--- a/lumina-fm/MainUI.h
+++ b/lumina-fm/MainUI.h
@@ -225,7 +225,7 @@ private slots:
signals:
void DirChanged(QString path);
- void Si_AdaptStatusBar(QFileInfoList fileList, QString path, QString message);
+ void Si_AdaptStatusBar(QFileInfoList fileList, QString path, QString messageFolders, QString messageFiles);
protected:
void resizeEvent(QResizeEvent*);
diff --git a/lumina-open/main.cpp b/lumina-open/main.cpp
index de7d137b..d0d2ced1 100644
--- a/lumina-open/main.cpp
+++ b/lumina-open/main.cpp
@@ -325,19 +325,19 @@ int main(int argc, char **argv){
}
retcode = p->exitCode();
//qDebug() << "[lumina-open] Finished Cmd:" << cmd << retcode << p->exitStatus();
-
+ if( QFile::exists("/tmp/.luminastopping") ){ watch = false; } //closing down session - ignore "crashes" (app could have been killed during cleanup)
if( (p->exitStatus() == QProcess::CrashExit || retcode > 0) && watch){
qDebug() << "[lumina-open] Application Error:" << retcode;
QString err = QString(p->readAllStandardError());
if(err.isEmpty()){ err = QString(p->readAllStandardOutput()); }
- //Setup the application
- QApplication App(argc, argv);
- LuminaThemeEngine theme(&App);
- LUtils::LoadTranslation(&App,"lumina-open");
- QMessageBox dlg(QMessageBox::Critical, QObject::tr("Application Error"), QObject::tr("The following application experienced an error and needed to close:")+"\n\n"+cmd );
- if(!err.isEmpty()){ dlg.setDetailedText(err); }
- dlg.exec();
- }
+ //Setup the application
+ QApplication App(argc, argv);
+ LuminaThemeEngine theme(&App);
+ LUtils::LoadTranslation(&App,"lumina-open");
+ QMessageBox dlg(QMessageBox::Critical, QObject::tr("Application Error"), QObject::tr("The following application experienced an error and needed to close:")+"\n\n"+cmd );
+ if(!err.isEmpty()){ dlg.setDetailedText(err); }
+ dlg.exec();
+ }
}
return retcode;
}
diff --git a/lumina-search/ConfigUI.cpp b/lumina-search/ConfigUI.cpp
index 25c12246..ada82946 100644
--- a/lumina-search/ConfigUI.cpp
+++ b/lumina-search/ConfigUI.cpp
@@ -59,10 +59,7 @@ void ConfigUI::on_tool_adddirs_clicked(){
}
void ConfigUI::on_tool_rmdir_clicked(){
- QList<QListWidgetItem*> sel = ui->list_excludes->selectedItems();
- for(int i=0; i<sel.length(); i++){
- ui->list_excludes->removeItemWidget(sel[i]);
- }
+ qDeleteAll(ui->list_excludes->selectedItems());
}
void ConfigUI::on_list_excludes_itemSelectionChanged(){
bgstack15