diff options
Diffstat (limited to 'src-qt5/core/lumina-desktop/LSession.cpp')
-rw-r--r-- | src-qt5/core/lumina-desktop/LSession.cpp | 66 |
1 files changed, 63 insertions, 3 deletions
diff --git a/src-qt5/core/lumina-desktop/LSession.cpp b/src-qt5/core/lumina-desktop/LSession.cpp index fe399e40..1e686e51 100644 --- a/src-qt5/core/lumina-desktop/LSession.cpp +++ b/src-qt5/core/lumina-desktop/LSession.cpp @@ -95,6 +95,64 @@ LSession::~LSession(){ } } +//Static function so everything can get the same icon name +QString LSession::batteryIconName(int charge, bool charging){ + int icon = -1; + if (charge > 90) { icon = 4; } + else if (charge > 70) { icon = 3; } + else if (charge > 20) { icon = 2; } + else if (charge > 5) { icon = 1; } + else if (charge > 0 ) { icon = 0; } + if(charging){ icon = icon+10; } + QStringList iconList; + switch (icon) { + case 0: + iconList << "battery-20" << "battery-020" << "battery-empty" << "battery-caution"; + break; + case 1: + iconList << "battery-40" << "battery-040" << "battery-low" << "battery-caution"; + break; + case 2: + iconList << "battery-60" << "battery-060" << "battery-good"; + break; + case 3: + iconList << "battery-80" << "battery-080" << "battery-good"; + break; + case 4: + iconList << "battery-100" << "battery-full"; + break; + case 10: + iconList << "battery-20-charging" << "battery-020-charging" << "battery-empty-charging" << "battery-caution-charging" + << "battery-charging-20" << "battery-charging-020" << "battery-charging-empty" << "battery-charging-caution"; + break; + case 11: + iconList << "battery-40-charging" << "battery-040-charging" << "battery-low-charging" << "battery-caution-charging" + << "battery-charging-40" << "battery-charging-040" << "battery-charging-low" << "battery-charging-caution"; + break; + case 12: + iconList << "battery-60-charging" << "battery-060-charging" << "battery-good-charging" + << "battery-charging-60" << "battery-charging-060" << "battery-charging-good"; + break; + case 13: + iconList << "battery-80-charging" << "battery-080-charging" << "battery-good-charging" + << "battery-charging-80" << "battery-charging-080" << "battery-charging-good"; + break; + case 14: + if(charge==100){ iconList << "battery-full-charged"; } + iconList << "battery-100-charging" << "battery-full-charging" + << "battery-charging-100" << "battery-charging-full"; + break; + default: + iconList << "battery-unknown" << "battery-missing"; + break; + } + iconList << "battery"; //generic battery icon + for(int i=0; i<iconList.length(); i++){ + if( QIcon::hasThemeIcon(iconList[i]) ){ return iconList[i]; } + } + return ""; //no icon found +} + void LSession::setupSession(){ //Seed random number generator (if needed) qsrand( QTime::currentTime().msec() ); @@ -205,7 +263,8 @@ void LSession::CleanupSession(){ if(vol>=0){ sessionsettings->setValue("last_session_state/audio_volume", vol); } bool playaudio = sessionsettings->value("PlayLogoutAudio",true).toBool(); if( playaudio ){ - QString sfile = sessionsettings->value("audiofiles/logout", LOS::LuminaShare()+"Logout.ogg").toString(); + QString sfile = sessionsettings->value("audiofiles/logout", "").toString(); + if(sfile.isEmpty() || !QFile::exists(sfile)){ sfile = LOS::LuminaShare()+"Logout.ogg"; } playAudioFile(sfile); } //Stop the background system tray (detaching/closing apps as necessary) @@ -242,7 +301,7 @@ void LSession::CleanupSession(){ // this will leave the wallpapers up for a few moments (preventing black screens) } //Now wait a moment for things to close down before quitting - if(playaudio){ + if(playaudio && mediaObj!=0){ //wait a max of 5 seconds for audio to finish bool waitmore = true; for(int i=0; i<100 && waitmore; i++){ @@ -312,7 +371,8 @@ void LSession::launchStartupApps(){ //Now play the login music since we are finished if(sessionsettings->value("PlayStartupAudio",true).toBool()){ - QString sfile = sessionsettings->value("audiofiles/login", LOS::LuminaShare()+"Login.ogg").toString(); + QString sfile = sessionsettings->value("audiofiles/login", "").toString(); + if(sfile.isEmpty() || !QFile::exists(sfile)){ sfile = LOS::LuminaShare()+"Login.ogg"; } playAudioFile(sfile); } //qDebug() << "[DESKTOP INIT FINISHED]"; |