aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libLumina/LuminaOS-DragonFly.cpp5
-rw-r--r--libLumina/LuminaOS-FreeBSD.cpp7
-rw-r--r--libLumina/LuminaOS-Linux.cpp5
-rw-r--r--libLumina/LuminaOS-OpenBSD.cpp179
-rw-r--r--libLumina/LuminaOS-template.cpp5
-rw-r--r--libLumina/LuminaOS.h5
-rw-r--r--libLumina/LuminaX11.cpp21
-rw-r--r--libLumina/LuminaXDG.cpp5
-rw-r--r--libLumina/libLumina.pro1
-rw-r--r--lumina-config/lumina-config.pro9
-rw-r--r--lumina-desktop/AppMenu.cpp7
-rw-r--r--lumina-desktop/LSession.cpp1
-rw-r--r--lumina-desktop/lumina-desktop.pro7
-rw-r--r--lumina-desktop/panel-plugins/LTBWidget.h2
-rw-r--r--lumina-desktop/panel-plugins/userbutton/UserWidget.cpp30
-rw-r--r--lumina-desktop/panel-plugins/userbutton/UserWidget.h2
-rw-r--r--lumina-fm/MainUI.cpp11
-rw-r--r--lumina-fm/MainUI.h5
-rw-r--r--lumina-fm/lumina-fm.pro9
-rw-r--r--lumina-open/lumina-open.pro8
-rw-r--r--lumina-screenshot/lumina-screenshot.pro9
21 files changed, 302 insertions, 31 deletions
diff --git a/libLumina/LuminaOS-DragonFly.cpp b/libLumina/LuminaOS-DragonFly.cpp
index 64bad97f..990bf9f7 100644
--- a/libLumina/LuminaOS-DragonFly.cpp
+++ b/libLumina/LuminaOS-DragonFly.cpp
@@ -15,6 +15,11 @@ static int screenbrightness = -1;
QString LOS::AppPrefix(){ return "/usr/local/"; } //Prefix for applications
QString LOS::SysPrefix(){ return "/usr/"; } //Prefix for system
+//OS-specific application shortcuts (*.desktop files)
+QString LOS::ControlPanelShortcut(){ return ""; } //system control panel
+QString LOS::AppStoreShortcut(){ return ""; } //graphical app/pkg manager
+QString LOS::QtConfigShortcut(){ return "/usr/local/bin/qtconfig-qt4"; } //qtconfig binary (NOT *.desktop file)
+
// ==== ExternalDevicePaths() ====
QStringList LOS::ExternalDevicePaths(){
//Returns: QStringList[<type>::::<filesystem>::::<path>]
diff --git a/libLumina/LuminaOS-FreeBSD.cpp b/libLumina/LuminaOS-FreeBSD.cpp
index 0e381660..a078687d 100644
--- a/libLumina/LuminaOS-FreeBSD.cpp
+++ b/libLumina/LuminaOS-FreeBSD.cpp
@@ -15,7 +15,12 @@ static int screenbrightness = -1;
//OS-specific prefix(s)
QString LOS::AppPrefix(){ return "/usr/local/"; } //Prefix for applications
QString LOS::SysPrefix(){ return "/usr/"; } //Prefix for system
-
+
+//OS-specific application shortcuts (*.desktop files)
+QString LOS::ControlPanelShortcut(){ return "/usr/local/share/applications/pccontrol.desktop"; } //system control panel
+QString LOS::AppStoreShortcut(){ return "/usr/local/share/applications/softmanager.desktop"; } //graphical app/pkg manager
+QString LOS::QtConfigShortcut(){ return "/usr/local/bin/qtconfig-qt4"; } //qtconfig binary (NOT *.desktop file)
+
// ==== ExternalDevicePaths() ====
QStringList LOS::ExternalDevicePaths(){
//Returns: QStringList[<type>::::<filesystem>::::<path>]
diff --git a/libLumina/LuminaOS-Linux.cpp b/libLumina/LuminaOS-Linux.cpp
index f3ac854e..b7bb3685 100644
--- a/libLumina/LuminaOS-Linux.cpp
+++ b/libLumina/LuminaOS-Linux.cpp
@@ -17,6 +17,11 @@ static int screenbrightness = -1;
QString LOS::AppPrefix(){ return "/usr/"; } //Prefix for applications
QString LOS::SysPrefix(){ return "/usr/"; } //Prefix for system
+//OS-specific application shortcuts (*.desktop files)
+QString LOS::ControlPanelShortcut(){ return ""; } //system control panel
+QString LOS::AppStoreShortcut(){ return ""; } //graphical app/pkg manager
+QString LOS::QtConfigShortcut(){ return "/usr/bin/qtconfig-qt4"; } //qtconfig binary (NOT *.desktop file)
+
// ==== ExternalDevicePaths() ====
QStringList LOS::ExternalDevicePaths(){
//Returns: QStringList[<type>::::<filesystem>::::<path>]
diff --git a/libLumina/LuminaOS-OpenBSD.cpp b/libLumina/LuminaOS-OpenBSD.cpp
new file mode 100644
index 00000000..770e3a3a
--- /dev/null
+++ b/libLumina/LuminaOS-OpenBSD.cpp
@@ -0,0 +1,179 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2014, Ken Moore
+// Copyright (c) 2014, Antoine Jacoutot <ajacoutot@openbsd.org>
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#ifdef __OpenBSD__
+#include "LuminaOS.h"
+#include <unistd.h>
+
+//can't read xbrightness settings - assume invalid until set
+static int screenbrightness = -1;
+
+
+//OS-specific prefix(s)
+QString LOS::AppPrefix(){ return "/usr/local/"; } //Prefix for applications
+QString LOS::SysPrefix(){ return "/usr/"; } //Prefix for system
+
+//OS-specific application shortcuts (*.desktop files)
+QString LOS::ControlPanelShortcut(){ return ""; } //system control panel
+QString LOS::AppStoreShortcut(){ return ""; } //graphical app/pkg manager
+QString LOS::QtConfigShortcut(){ return "/usr/local/bin/qtconfig4"; } //qtconfig binary (NOT *.desktop file)
+
+// ==== ExternalDevicePaths() ====
+QStringList LOS::ExternalDevicePaths(){
+ //Returns: QStringList[<type>::::<filesystem>::::<path>]
+ //Note: <type> = [USB, HDRIVE, DVD, SDCARD, UNKNOWN]
+ QStringList devs = LUtils::getCmdOutput("mount");
+ //Now check the output
+ for(int i=0; i<devs.length(); i++){
+ if(devs[i].startsWith("/dev/")){
+ QString type = devs[i].section(" on ",0,0);
+ type.remove("/dev/");
+ //Determine the type of hardware device based on the dev node
+ if(type.startsWith("sd")||type.startsWith("wd")){ type = "HDRIVE"; }
+ else if(type.startsWith("cd")){ type="DVD"; }
+ else{ type = "UNKNOWN"; }
+ //Now put the device in the proper output format
+ devs[i] = type+"::::"+devs[i].section("(",1,1).section(",",0,0)+"::::"+devs[i].section(" on ",1,50).section("(",0,0).simplified();
+ }else{
+ //invalid device - remove it from the list
+ devs.removeAt(i);
+ i--;
+ }
+ }
+ return devs;
+}
+
+//Read screen brightness information
+int LOS::ScreenBrightness(){
+ //Returns: Screen Brightness as a percentage (0-100, with -1 for errors)
+ if(screenbrightness==-1){
+ if(QFile::exists(QDir::homePath()+"/.lumina/.currentxbrightness")){
+ int val = LUtils::readFile(QDir::homePath()+"/.lumina/.currentxbrightness").join("").simplified().toInt();
+ screenbrightness = val;
+ }
+ }
+ return screenbrightness;
+}
+
+//Set screen brightness
+void LOS::setScreenBrightness(int percent){
+ //ensure bounds
+ if(percent<0){percent=0;}
+ else if(percent>100){ percent=100; }
+ //Run the command
+ QString cmd = "xbacklight -set %1";
+ cmd = cmd.arg( QString::number(percent) );
+ int ret = LUtils::runCmd(cmd);
+ //Save the result for later
+ if(ret!=0){ screenbrightness = -1; }
+ else{ screenbrightness = percent; }
+ LUtils::writeFile(QDir::homePath()+"/.lumina/.currentxbrightness", QStringList() << QString::number(screenbrightness), true);
+}
+
+//Read the current volume
+int LOS::audioVolume(){ //Returns: audio volume as a percentage (0-100, with -1 for errors)
+ QString info = LUtils::getCmdOutput("mixerctl -n outputs.master").join(",").simplified(); //ignores any other lines
+ int out = -1;
+ if(!info.isEmpty()){
+ int L = info.section(",",0,0).toInt();
+ int R = info.section(",",1,1).toInt();
+ L = (L*100)/255; //percent
+ R = (R*100)/255; //percent
+ if(L>R){ out = L; }
+ else{ out = R; }
+ }
+ return out;
+}
+
+//Set the current volume
+void LOS::setAudioVolume(int percent){
+ if(percent<0){percent=0;}
+ else if(percent>100){percent=100;}
+ QString info = LUtils::getCmdOutput("mixerctl -n outputs.master").join(",").simplified(); //ignores any other lines
+ if(!info.isEmpty()){
+ int L = info.section(",",0,0).toInt();
+ int R = info.section(",",1,1).toInt();
+ L = (L*100)/255; //percent
+ R = (R*100)/255; //percent
+ int diff = L-R;
+ if(diff<0){ R=percent; L=percent+diff; } //R Greater
+ else{ L=percent; R=percent-diff; } //L Greater or equal
+ //Check bounds
+ if(L<0){L=0;}else if(L>100){L=100;}
+ if(R<0){R=0;}else if(R>100){R=100;}
+ //Run Command
+ L = (L*255)/100; //0-255
+ R = (R*255)/100; //0-255
+ LUtils::runCmd("mixerctl -q outputs.master="+QString::number(L)+","+QString::number(R));
+ }
+}
+
+//Change the current volume a set amount (+ or -)
+void LOS::changeAudioVolume(int percentdiff){
+ QString info = LUtils::getCmdOutput("mixerctl -n outputs.master").join(",").simplified(); //ignores any other lines
+ if(!info.isEmpty()){
+ int L = info.section(",",0,0).toInt();
+ int R = info.section(",",1,1).toInt();
+ L = (L*100)/255; //percent
+ R = (R*100)/255; //percent
+ L = L + percentdiff;
+ R = R + percentdiff;
+ //Check bounds
+ if(L<0){L=0;}else if(L>100){L=100;}
+ if(R<0){R=0;}else if(R>100){R=100;}
+ //Run Command
+ L = (L*255)/100; //0-255
+ R = (R*255)/100; //0-255
+ LUtils::runCmd("mixerctl -q outputs.master="+QString::number(L)+","+QString::number(R));
+ }
+}
+
+//Check if a graphical audio mixer is installed
+bool LOS::hasMixerUtility(){
+ return false; //not implemented yet for OpenBSD
+}
+
+//Launch the graphical audio mixer utility
+void LOS::startMixerUtility(){
+ //Not implemented yet for OpenBSD
+}
+
+//System Shutdown
+void LOS::systemShutdown(){ //start poweroff sequence
+ QProcess::startDetached("shutdown -hp now");
+}
+
+//System Restart
+void LOS::systemRestart(){ //start reboot sequence
+ QProcess::startDetached("shutdown -r now");
+}
+
+//Battery Availability
+bool LOS::hasBattery(){
+ int val = LUtils::getCmdOutput("apm -l").join("").toInt();
+ return (val >= 0 && val <= 100);
+}
+
+//Battery Charge Level
+int LOS::batteryCharge(){ //Returns: percent charge (0-100), anything outside that range is counted as an error
+ int charge = LUtils::getCmdOutput("apm -l").join("").toInt();
+ if(charge > 100){ charge = -1; } //invalid charge
+ return charge;
+}
+
+//Battery Charging State
+bool LOS::batteryIsCharging(){
+ return (LUtils::getCmdOutput("apm -a").join("").simplified() == "1");
+}
+
+//Battery Time Remaining
+int LOS::batterySecondsLeft(){ //Returns: estimated number of seconds remaining
+ int min = LUtils::getCmdOutput("apm -m").join("").toInt();
+ return (min * 60);
+}
+
+#endif
diff --git a/libLumina/LuminaOS-template.cpp b/libLumina/LuminaOS-template.cpp
index 88d1b72e..0bfac22a 100644
--- a/libLumina/LuminaOS-template.cpp
+++ b/libLumina/LuminaOS-template.cpp
@@ -13,6 +13,11 @@
QString LOS::AppPrefix(){ return "/usr/local/"; } //Prefix for applications
QString LOS::SysPrefix(){ return "/usr/"; } //Prefix for system
+//OS-specific application shortcuts (*.desktop files)
+QString LOS::ControlPanelShortcut(){ return ""; } //system control panel
+QString LOS::AppStoreShortcut(){ return ""; } //graphical app/pkg manager
+QString LOS::QtConfigShortcut(){ return ""; } //qtconfig binary (NOT *.desktop file)
+
// ==== ExternalDevicePaths() ====
QStringList LOS::ExternalDevicePaths(){
//Returns: QStringList[<type>::::<filesystem>::::<path>]
diff --git a/libLumina/LuminaOS.h b/libLumina/LuminaOS.h
index 84bc9806..6b755e03 100644
--- a/libLumina/LuminaOS.h
+++ b/libLumina/LuminaOS.h
@@ -25,6 +25,11 @@ public:
static QString AppPrefix(); //Prefix for applications (/usr/local/ on FreeBSD)
static QString SysPrefix(); //Prefix for system (/usr/ on FreeBSD)
+ //OS-specific application shortcuts (*.desktop files)
+ static QString ControlPanelShortcut();
+ static QString AppStoreShortcut();
+ static QString QtConfigShortcut();
+
//Scan for mounted external devices
static QStringList ExternalDevicePaths(); //Returns: QStringList[<type>::::<filesystem>::::<path>]
//Note: <type> = [USB, HDRIVE, DVD, SDCARD, UNKNOWN]
diff --git a/libLumina/LuminaX11.cpp b/libLumina/LuminaX11.cpp
index 6b847df6..418e041f 100644
--- a/libLumina/LuminaX11.cpp
+++ b/libLumina/LuminaX11.cpp
@@ -551,33 +551,34 @@ int LX11::WindowDesktop(WId win){
LX11::WINDOWSTATE LX11::GetWindowState(WId win){
Display *disp = QX11Info::display();
- Atom SA = XInternAtom(disp, "_NET_WM_STATE", false);
+ Atom SA = XInternAtom(disp, "_NET_WM_STATE", true);
Atom ATTENTION = XInternAtom(disp, "_NET_WM_STATE_DEMANDS_ATTENTION", false);
Atom SKIPP = XInternAtom(disp, "_NET_WM_STATE_SKIP_PAGER", false);
Atom HIDDEN = XInternAtom(disp, "_NET_WM_STATE_HIDDEN", false);
Atom SKIPT = XInternAtom(disp, "_NET_WM_STATE_SKIP_TASKBAR", false);
- Atom MODAL = XInternAtom(disp, "_NET_WM_STATE_MODAL", false);
+ //Atom MODAL = XInternAtom(disp, "_NET_WM_STATE_MODAL", false);
Atom type;
int format;
unsigned long num, bytes;
- unsigned char *data = 0;
+ unsigned long *data = 0;
int status = XGetWindowProperty( disp, win, SA, 0, ~(0L), false, AnyPropertyType,
- &type, &format, &num, &bytes, &data);
+ &type, &format, &num, &bytes, (unsigned char**) &data);
LX11::WINDOWSTATE state = LX11::VISIBLE;
if(status >= Success && data){
- Atom *array = (Atom*) data;
for(unsigned int i=0; i<num; i++){
- if(array[i] == SKIPP || array[i]==SKIPT || array[i]==MODAL ){
+ if(data[i] == SKIPP || data[i]==SKIPT){
state = LX11::IGNORE;
+ //qDebug() << "Ignore Window:" << win;
break;
- }else if(array[i]==HIDDEN){
- qDebug() << "Hidden Window:" << win;
+ }else if(data[i]==HIDDEN){
+ //qDebug() << "Hidden Window:" << win;
state = LX11::INVISIBLE;
- }else if(array[i]==ATTENTION){
- qDebug() << "Attention Window: " << win;
+ }else if(data[i]==ATTENTION){
+ //qDebug() << "Attention Window: " << win;
state = LX11::ATTENTION;
+ break; //This state has priority over others
}
}
XFree(data);
diff --git a/libLumina/LuminaXDG.cpp b/libLumina/LuminaXDG.cpp
index 7934c924..84e9ad90 100644
--- a/libLumina/LuminaXDG.cpp
+++ b/libLumina/LuminaXDG.cpp
@@ -32,8 +32,13 @@ XDGDesktop LXDG::loadDesktopFile(QString filePath, bool& ok){
}
QTextStream os(&file);
//Read in the File
+ bool insection=false;
while(!os.atEnd()){
QString line = os.readLine();
+ //Check that this is the entry portion of the file (not the action/other sections)
+ if(line=="[Desktop Entry]"){ insection=true; continue; }
+ else if(line.startsWith("[")){ insection=false; }
+ if(!insection || line.startsWith("#")){ continue; }
//Now parse out the file
line = line.simplified();
QString var = line.section("=",0,0).simplified();
diff --git a/libLumina/libLumina.pro b/libLumina/libLumina.pro
index 245fe922..b7655bb7 100644
--- a/libLumina/libLumina.pro
+++ b/libLumina/libLumina.pro
@@ -20,6 +20,7 @@ SOURCES += LuminaXDG.cpp \
LuminaX11.cpp \
LuminaOS-FreeBSD.cpp \
LuminaOS-DragonFly.cpp \
+ LuminaOS-OpenBSD.cpp \
LuminaOS-Linux.cpp
# new OS support can be added here
diff --git a/lumina-config/lumina-config.pro b/lumina-config/lumina-config.pro
index 3970a7a9..92b38b0a 100644
--- a/lumina-config/lumina-config.pro
+++ b/lumina-config/lumina-config.pro
@@ -27,6 +27,13 @@ linux-g++-64 {
} else {
LIBS += -L../libLumina -lLuminaUtils -lQtSolutions_SingleApplication-head
}
+
+openbsd-g++4 {
+ LRELEASE = lrelease4
+} else {
+ LRELEASE = lrelease-qt4
+}
+
QMAKE_LIBDIR = ../libLumina
DEPENDPATH += ../libLumina
@@ -94,6 +101,6 @@ TRANSLATIONS = i18n/lumina-config_af.ts \
i18n/lumina-config_zu.ts
dotrans.path=/usr/local/share/Lumina-DE/i18n/
-dotrans.extra=cd i18n && lrelease-qt4 -nounfinished *.ts && cp *.qm $(INSTALL_ROOT)/usr/local/share/Lumina-DE/i18n/
+dotrans.extra=cd i18n && $${LRELEASE} -nounfinished *.ts && cp *.qm $(INSTALL_ROOT)/usr/local/share/Lumina-DE/i18n/
INSTALLS += target dotrans
diff --git a/lumina-desktop/AppMenu.cpp b/lumina-desktop/AppMenu.cpp
index e2e5cede..c2d79c09 100644
--- a/lumina-desktop/AppMenu.cpp
+++ b/lumina-desktop/AppMenu.cpp
@@ -32,7 +32,9 @@ QHash<QString, QList<XDGDesktop> >* AppMenu::currentAppHash(){
void AppMenu::updateAppList(){
this->clear();
APPS.clear();
- APPS = LXDG::sortDesktopCats( LXDG::systemDesktopFiles() );
+ QList<XDGDesktop> allfiles = LXDG::systemDesktopFiles();
+ APPS = LXDG::sortDesktopCats(allfiles);
+ APPS.insert("All", LXDG::sortDesktopNames(allfiles));
//Now fill the menu
bool ok; //for checking inputs
//Add link to the file manager
@@ -54,7 +56,8 @@ void AppMenu::updateAppList(){
for(int i=0; i<cats.length(); i++){
//Make sure they are translated and have the right icons
QString name, icon;
- if(cats[i] == "Multimedia"){ name = tr("Multimedia"); icon = "applications-multimedia"; }
+ if(cats[i]=="All"){continue; } //skip this listing for the menu
+ else if(cats[i] == "Multimedia"){ name = tr("Multimedia"); icon = "applications-multimedia"; }
else if(cats[i] == "Development"){ name = tr("Development"); icon = "applications-development"; }
else if(cats[i] == "Education"){ name = tr("Education"); icon = "applications-education"; }
else if(cats[i] == "Game"){ name = tr("Games"); icon = "applications-games"; }
diff --git a/lumina-desktop/LSession.cpp b/lumina-desktop/LSession.cpp
index 43a7ce79..7897966b 100644
--- a/lumina-desktop/LSession.cpp
+++ b/lumina-desktop/LSession.cpp
@@ -278,6 +278,7 @@ bool LSession::x11EventFilter(XEvent *event){
|| event->xproperty.atom == XInternAtom(QX11Info::display(),"_NET_WM_NAME",false) \
|| event->xproperty.atom == XInternAtom(QX11Info::display(),"_NET_WM_VISIBLE_NAME",false) \
|| event->xproperty.atom == XInternAtom(QX11Info::display(),"_NET_WM_ICON_NAME",false) \
+ || event->xproperty.atom == XInternAtom(QX11Info::display(),"_NET_WM_STATE",false) \
|| event->xproperty.atom == XInternAtom(QX11Info::display(),"_NET_WM_VISIBLE_ICON_NAME",false) ){
LSession::restoreOverrideCursor(); //restore the mouse cursor back to normal (new window opened?)
emit WindowListEvent();
diff --git a/lumina-desktop/lumina-desktop.pro b/lumina-desktop/lumina-desktop.pro
index 885e914c..edc63010 100644
--- a/lumina-desktop/lumina-desktop.pro
+++ b/lumina-desktop/lumina-desktop.pro
@@ -10,6 +10,11 @@ DEPENDPATH += ../libLumina
TEMPLATE = app
+openbsd-g++4 {
+ LRELEASE = lrelease4
+} else {
+ LRELEASE = lrelease-qt4
+}
SOURCES += main.cpp \
WMProcess.cpp \
@@ -170,6 +175,6 @@ TRANSLATIONS = i18n/lumina-desktop_af.ts \
i18n/lumina-desktop_zu.ts
dotrans.path=/usr/local/share/Lumina-DE/i18n/
-dotrans.extra=cd i18n && lrelease-qt4 -nounfinished *.ts && cp *.qm $(INSTALL_ROOT)/usr/local/share/Lumina-DE/i18n/
+dotrans.extra=cd i18n && $${LRELEASE} -nounfinished *.ts && cp *.qm $(INSTALL_ROOT)/usr/local/share/Lumina-DE/i18n/
INSTALLS += target desktop icons wallpapers defaults dotrans
diff --git a/lumina-desktop/panel-plugins/LTBWidget.h b/lumina-desktop/panel-plugins/LTBWidget.h
index 02097039..5252c619 100644
--- a/lumina-desktop/panel-plugins/LTBWidget.h
+++ b/lumina-desktop/panel-plugins/LTBWidget.h
@@ -25,7 +25,7 @@ private:
else if(cstate == Lumina::VISIBLE){ background = "background: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(255, 255, 255, 240), stop:0.505682 rgba(240, 240, 240, 150), stop:1 rgba(210, 210, 210, 55));"; border="border: 1px solid transparent;"; }
else if(cstate == Lumina::INVISIBLE){background = "background: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(215, 215, 215, 240), stop:0.505682 rgba(184, 185, 186, 150), stop:1 rgba(221, 246, 255, 55));"; border="border: 1px solid transparent;"; }
else if(cstate == Lumina::ACTIVE){ background= "background: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(241, 233, 156, 240), stop:0.355682 rgba(255, 243, 127, 150), stop:1 rgba(221, 246, 255, 55));"; border ="border: 1px solid transparent;"; }
- else if(cstate == Lumina::NOTIFICATION){ background= "background: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(252, 187, 127, 240), stop:0.505682 rgba(255, 222, 197, 150), stop:1 rgba(221, 246, 255, 55));"; border="border: 1px solid transparent"; }
+ else if(cstate == Lumina::NOTIFICATION){ background= "background: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(252, 187, 127, 240), stop:0.505682 rgba(255, 222, 197, 150), stop:1 rgba(221, 246, 255, 55));"; border="border: 1px solid transparent;"; }
QString raw = rawstyle;
this->setStyleSheet( raw.replace("%1",background).replace("%2", border) );
}
diff --git a/lumina-desktop/panel-plugins/userbutton/UserWidget.cpp b/lumina-desktop/panel-plugins/userbutton/UserWidget.cpp
index 8b49ed43..1571760b 100644
--- a/lumina-desktop/panel-plugins/userbutton/UserWidget.cpp
+++ b/lumina-desktop/panel-plugins/userbutton/UserWidget.cpp
@@ -75,7 +75,8 @@ UserWidget::UserWidget(QWidget* parent) : QWidget(parent), ui(new Ui::UserWidget
}else{
ui->tool_qtconfig->setVisible(false);
}
-
+ lastUpdate = QDateTime::currentDateTime().addSecs(-30); //make sure it refreshes
+ QTimer::singleShot(10,this, SLOT(UpdateMenu())); //make sure to load this once after initialization
}
UserWidget::~UserWidget(){
@@ -100,15 +101,19 @@ void UserWidget::ClearScrollArea(QScrollArea *area){
// PRIVATE SLOTS
//============
void UserWidget::UpdateMenu(){
- ui->tabWidget->setCurrentWidget(ui->tab_fav);
- ui->tool_fav_apps->setChecked(true);
- ui->tool_fav_dirs->setChecked(false);
- ui->tool_fav_files->setChecked(false);
- cfav = 0; //favorite apps
- updateFavItems();
- updateHome();
- updateAppCategories();
- updateApps();
+ if(QDateTime::currentDateTime() > lastUpdate.addSecs(30)){
+ //Only re-arrange/reload things if not rapidly re-run
+ ui->tabWidget->setCurrentWidget(ui->tab_fav);
+ ui->tool_fav_apps->setChecked(true);
+ ui->tool_fav_dirs->setChecked(false);
+ ui->tool_fav_files->setChecked(false);
+ cfav = 0; //favorite apps
+ updateFavItems();
+ updateHome();
+ updateAppCategories();
+ updateApps();
+ }
+ lastUpdate = QDateTime::currentDateTime();
}
void UserWidget::LaunchItem(QString cmd){
@@ -170,7 +175,8 @@ void UserWidget::updateAppCategories(){
cats.sort();
for(int i=0; i<cats.length(); i++){
QString name, icon;
- if(cats[i] == "Multimedia"){ name = tr("Multimedia"); icon = "applications-multimedia"; }
+ if(cats[i] == "All"){ name = tr("All"); icon = "application-x-executable"; }
+ else if(cats[i] == "Multimedia"){ name = tr("Multimedia"); icon = "applications-multimedia"; }
else if(cats[i] == "Development"){ name = tr("Development"); icon = "applications-development"; }
else if(cats[i] == "Education"){ name = tr("Education"); icon = "applications-education"; }
else if(cats[i] == "Game"){ name = tr("Games"); icon = "applications-games"; }
@@ -180,7 +186,7 @@ void UserWidget::updateAppCategories(){
else if(cats[i] == "Science"){ name = tr("Science"); icon = "applications-science"; }
else if(cats[i] == "Settings"){ name = tr("Settings"); icon = "preferences-system"; }
else if(cats[i] == "System"){ name = tr("System"); icon = "applications-system"; }
- else if(cats[i] == "Utility"){ name = tr("Utility"); icon = "applications-utilities"; }
+ else if(cats[i] == "Utility"){ name = tr("Utilities"); icon = "applications-utilities"; }
else{ name = tr("Unsorted"); icon = "applications-other"; }
ui->combo_app_cats->addItem( LXDG::findIcon(icon,""), name, cats[i] );
}
diff --git a/lumina-desktop/panel-plugins/userbutton/UserWidget.h b/lumina-desktop/panel-plugins/userbutton/UserWidget.h
index b9eaffbe..0b42bff8 100644
--- a/lumina-desktop/panel-plugins/userbutton/UserWidget.h
+++ b/lumina-desktop/panel-plugins/userbutton/UserWidget.h
@@ -15,6 +15,7 @@
#include <QHash>
#include <QVBoxLayout>
#include <QScrollArea>
+#include <QDateTime>
#include <LuminaXDG.h>
#include <LuminaOS.h>
@@ -40,6 +41,7 @@ public:
private:
Ui::UserWidget *ui;
QHash<QString, QList<XDGDesktop> > *sysapps;
+ QDateTime lastUpdate;
int cfav; //current favorite category
void ClearScrollArea(QScrollArea *area);
diff --git a/lumina-fm/MainUI.cpp b/lumina-fm/MainUI.cpp
index ad73b407..5fa0a30d 100644
--- a/lumina-fm/MainUI.cpp
+++ b/lumina-fm/MainUI.cpp
@@ -12,6 +12,11 @@ MainUI::MainUI() : QMainWindow(), ui(new Ui::MainUI){
//Be careful about the QSettings setup, it must match the lumina-desktop setup
QSettings::setPath(QSettings::NativeFormat, QSettings::UserScope, QDir::homePath()+"/.lumina");
settings = new QSettings( QSettings::UserScope, "LuminaDE", "lumina-fm", this);
+ //Reset the UI to the previously used size (if possible)
+ int height = settings->value("geometry/height",-1).toInt();
+ if(height>100 && height <= QApplication::desktop()->availableGeometry(this).height()){ this->resize(this->width(), height); }
+ int width = settings->value("geometry/width",-1).toInt();
+ if(width>100 && width <= QApplication::desktop()->availableGeometry(this).width()){ this->resize(width, this->height() ); }
//initialize the non-ui widgets
tabBar = new QTabBar(this);
tabBar->setTabsClosable(true);
@@ -1222,3 +1227,9 @@ void MainUI::PasteItems(){
}
}
+
+void MainUI::resizeEvent(QResizeEvent *event){
+ //Save the new size internally
+ settings->setValue("geometry/height", event->size().height());
+ settings->setValue("geometry/width", event->size().width());
+}
diff --git a/lumina-fm/MainUI.h b/lumina-fm/MainUI.h
index 5679d4ed..886d3fa7 100644
--- a/lumina-fm/MainUI.h
+++ b/lumina-fm/MainUI.h
@@ -35,6 +35,8 @@
#include <QImageReader>
#include <QScrollBar>
#include <QFileDialog>
+#include <QResizeEvent>
+#include <QDesktopWidget>
//Phonon widgets
#include <Phonon/BackendCapabilities>
@@ -193,6 +195,9 @@ private slots:
void CopyItems();
void PasteItems();
+protected:
+ void resizeEvent(QResizeEvent*);
+
};
#endif \ No newline at end of file
diff --git a/lumina-fm/lumina-fm.pro b/lumina-fm/lumina-fm.pro
index 0895ad58..6b533029 100644
--- a/lumina-fm/lumina-fm.pro
+++ b/lumina-fm/lumina-fm.pro
@@ -29,6 +29,13 @@ linux-g++-64 {
} else {
LIBS += -L../libLumina -lLuminaUtils -lQtSolutions_SingleApplication-head
}
+
+openbsd-g++4 {
+ LRELEASE = lrelease4
+} else {
+ LRELEASE = lrelease-qt4
+}
+
QMAKE_LIBDIR = ../libLumina
DEPENDPATH += ../libLumina
@@ -96,7 +103,7 @@ TRANSLATIONS = i18n/lumina-fm_af.ts \
i18n/lumina-fm_zu.ts
dotrans.path=/usr/local/share/Lumina-DE/i18n/
-dotrans.extra=cd i18n && lrelease-qt4 -nounfinished *.ts && cp *.qm $(INSTALL_ROOT)/usr/local/share/Lumina-DE/i18n/
+dotrans.extra=cd i18n && $${LRELEASE} -nounfinished *.ts && cp *.qm $(INSTALL_ROOT)/usr/local/share/Lumina-DE/i18n/
desktop.files=lumina-fm.desktop
desktop.path=/usr/local/share/applications/
diff --git a/lumina-open/lumina-open.pro b/lumina-open/lumina-open.pro
index 5dd0e608..34e76d54 100644
--- a/lumina-open/lumina-open.pro
+++ b/lumina-open/lumina-open.pro
@@ -20,6 +20,12 @@ LIBS += -L../libLumina -lLuminaUtils
QMAKE_LIBDIR = ../libLumina
DEPENDPATH += ../libLumina
+openbsd-g++4 {
+ LRELEASE = lrelease4
+} else {
+ LRELEASE = lrelease-qt4
+}
+
TRANSLATIONS = i18n/lumina-open_af.ts \
i18n/lumina-open_ar.ts \
i18n/lumina-open_az.ts \
@@ -84,6 +90,6 @@ TRANSLATIONS = i18n/lumina-open_af.ts \
i18n/lumina-open_zu.ts
dotrans.path=/usr/local/share/Lumina-DE/i18n/
-dotrans.extra=cd i18n && lrelease-qt4 -nounfinished *.ts && cp *.qm $(INSTALL_ROOT)/usr/local/share/Lumina-DE/i18n/
+dotrans.extra=cd i18n && $${LRELEASE} -nounfinished *.ts && cp *.qm $(INSTALL_ROOT)/usr/local/share/Lumina-DE/i18n/
INSTALLS += target dotrans
diff --git a/lumina-screenshot/lumina-screenshot.pro b/lumina-screenshot/lumina-screenshot.pro
index 2d046dcd..7f0911c3 100644
--- a/lumina-screenshot/lumina-screenshot.pro
+++ b/lumina-screenshot/lumina-screenshot.pro
@@ -20,6 +20,13 @@ linux-g++-64 {
} else {
LIBS += -L../libLumina -lLuminaUtils -lQtSolutions_SingleApplication-head
}
+
+openbsd-g++4 {
+ LRELEASE = lrelease4
+} else {
+ LRELEASE = lrelease-qt4
+}
+
QMAKE_LIBDIR = ../libLumina
DEPENDPATH += ../libLumina
@@ -87,7 +94,7 @@ TRANSLATIONS = i18n/lumina-screenshot_af.ts \
i18n/lumina-screenshot_zu.ts
dotrans.path=/usr/local/share/Lumina-DE/i18n/
-dotrans.extra=cd i18n && lrelease-qt4 -nounfinished *.ts && cp *.qm $(INSTALL_ROOT)/usr/local/share/Lumina-DE/i18n/
+dotrans.extra=cd i18n && $${LRELEASE} -nounfinished *.ts && cp *.qm $(INSTALL_ROOT)/usr/local/share/Lumina-DE/i18n/
desktop.files=lumina-screenshot.desktop
desktop.path=/usr/local/share/applications/
bgstack15