You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
251 lines
9.5 KiB
251 lines
9.5 KiB
// |
|
// C++ Implementation: komposesettings |
|
// |
|
// Description: |
|
// |
|
// |
|
// Author: Hans Oischinger <hans.oischinger@kde-mail.net>, (C) 2004 |
|
// |
|
// Copyright: See COPYING file that comes with this distribution |
|
// |
|
// |
|
#include "komposesettings.h" |
|
|
|
#include "komposeviewmanager.h" |
|
#include "komposetaskmanager.h" |
|
#include "komposepreferences.h" |
|
|
|
#include <tqcolor.h> |
|
|
|
#include <kglobalaccel.h> |
|
#include <tdeapplication.h> |
|
#include <tdeconfig.h> |
|
#include <tdeglobal.h> |
|
#include <kiconloader.h> |
|
#include <kdebug.h> |
|
|
|
static KomposeSettings* settingsInstance = 0; |
|
|
|
|
|
/* |
|
* KomposeSettings is a singleton |
|
*/ |
|
KomposeSettings* KomposeSettings::instance() |
|
{ |
|
if ( !settingsInstance ) |
|
{ |
|
// kdDebug() << "KomposeSettings::instance() - Creating Singleton instance"); // FIXME: How can this apper multiple times?? |
|
settingsInstance = new KomposeSettings(); |
|
} |
|
return settingsInstance; |
|
} |
|
|
|
|
|
KomposeSettings::KomposeSettings(TQObject *parent, const char *name) |
|
: TQObject(parent, name), |
|
dialogOpen(0), |
|
windowTitleFontMetrics(0) |
|
{ |
|
|
|
// Init global shortcut object |
|
globalAccel = new TDEGlobalAccel( this ); |
|
globalAccel->insert( "showDefaultView", i18n("Show Komposé (default view)"), |
|
i18n("Displays the view you have configured as default"), |
|
KKey::QtWIN+Key_Tab, KKey::QtWIN+CTRL+SHIFT+Key_Tab, |
|
KomposeViewManager::instance(), SLOT(createDefaultView()) ); |
|
globalAccel->insert( "showWorldView", i18n("Show Komposé (ungrouped)"), |
|
i18n("Displays all windows unsorted"), |
|
CTRL+SHIFT+Key_J, KKey::QtWIN+CTRL+SHIFT+Key_J, |
|
KomposeViewManager::instance(), SLOT(createWorldView()) ); |
|
globalAccel->insert( "showVirtualDesktopView", i18n("Show Komposé (grouped by virtual desktops)"), |
|
i18n("Displays all windows sorted by virtual desktops"), |
|
CTRL+SHIFT+Key_I, KKey::QtWIN+CTRL+SHIFT+Key_I, |
|
KomposeViewManager::instance(), SLOT(createVirtualDesktopView()) ); |
|
globalAccel->insert( "showCurrentDesktopView", i18n("Show Komposé (current virtual desktop)"), |
|
i18n("Displays all windows on the current desktop"), |
|
CTRL+SHIFT+Key_K, KKey::QtWIN+CTRL+SHIFT+Key_K, |
|
KomposeViewManager::instance(), SLOT(createCurrentDesktopView()) ); |
|
|
|
// read Settings from cfg file |
|
readConfig(); |
|
|
|
settingsInstance = this; |
|
} |
|
|
|
|
|
KomposeSettings::~KomposeSettings() |
|
{ |
|
delete globalAccel; |
|
delete settingsInstance; |
|
} |
|
|
|
|
|
void KomposeSettings::readConfig() |
|
{ |
|
kdDebug() << "KomposeSettings::readConfig()" << endl; |
|
// Read Shortcut Settings from config |
|
globalAccel->readSettings(); |
|
globalAccel->updateConnections(); |
|
|
|
kapp->config()->setGroup("Main window"); |
|
|
|
defaultView = kapp->config()->readNumEntry("defaultView", KOMPOSEDISPLAY_VIRTUALDESKS); |
|
|
|
useComposite = kapp->config()->readBoolEntry("useComposite", false); |
|
|
|
passiveScreenshots = kapp->config()->readBoolEntry("passiveScreenshots", true); |
|
screenshotGrabDelay = kapp->config()->readNumEntry("screenshotGrabDelay", 400000000); |
|
|
|
dynamicVirtDeskLayout = kapp->config()->readBoolEntry("dynamicVirtDeskLayout", true); |
|
|
|
imageEffects = kapp->config()->readBoolEntry("imageEffects", true); |
|
blurBackground = kapp->config()->readBoolEntry("blurBackground", true); |
|
|
|
showIcons = kapp->config()->readBoolEntry("showIcons", true); |
|
iconSize = kapp->config()->readNumEntry("iconSize", 3); |
|
|
|
showWindowTitles = kapp->config()->readBoolEntry("showWindowTitles", true ); |
|
windowTitleFont = kapp->config()->readFontEntry("windowTitleFont", new TQFont( "arial", 11, TQFont::Bold ) ); |
|
windowTitleFontColor = kapp->config()->readColorEntry("windowTitleFontColor", new TQColor(TQt::black) ); |
|
showWindowTitleShadow = kapp->config()->readBoolEntry("showWindowTitleShadow", true ); |
|
windowTitleFontShadowColor = kapp->config()->readColorEntry("windowTitleFontShadowColor", new TQColor(TQt::lightGray) ); |
|
|
|
windowBorderActiveColor = kapp->config()->readColorEntry("windowBorderActiveColor", new TQColor(TQt::gray) ); |
|
windowBorderInactiveColor = kapp->config()->readColorEntry("windowBorderInactiveColor", new TQColor(TQt::black) ); |
|
windowBorderActiveWidth = kapp->config()->readNumEntry("windowBorderActiveWidth", 2 ); |
|
windowBorderInactiveWidth = kapp->config()->readNumEntry("windowBorderInactiveWidth", 1 ); |
|
windowBorderActiveStyle = kapp->config()->readNumEntry("windowBorderActiveStyle", 3 ); // dotted |
|
windowBorderInactiveStyle = kapp->config()->readNumEntry("windowBorderInactiveStyle", 1 ); // solid |
|
|
|
desktopTitleFont = kapp->config()->readFontEntry("desktopTitleFont", new TQFont( "arial", 10 ) ); |
|
desktopTitleFontColor = kapp->config()->readColorEntry("desktopTitleFontColor", new TQColor(TQt::gray) ); |
|
desktopTitleFontHighlightColor = kapp->config()->readColorEntry("desktopTitleFontHighlightColor", new TQColor(TQt::black) ); |
|
|
|
cacheScaledPixmaps = kapp->config()->readBoolEntry("cacheScaledPixmaps", true); |
|
|
|
activateOnTopLeftCorner = kapp->config()->readBoolEntry("activateOnTopLeftCorner", false ); |
|
activateOnTopRightCorner = kapp->config()->readBoolEntry("activateOnTopRightCorner", false ); |
|
activateOnBottomLeftCorner = kapp->config()->readBoolEntry("activateOnBottomLeftCorner", false ); |
|
activateOnBottomRightCorner = kapp->config()->readBoolEntry("activateOnBottomRightCorner", false ); |
|
|
|
activateOnTopEdge = kapp->config()->readBoolEntry("activateOnTopEdge", false ); |
|
activateOnBottomEdge = kapp->config()->readBoolEntry("activateOnBottomEdge", false ); |
|
activateOnLeftEdge = kapp->config()->readBoolEntry("activateOnLeftEdge", false ); |
|
activateOnRightEdge = kapp->config()->readBoolEntry("activateOnRightEdge", false ); |
|
|
|
autoLockDelay = kapp->config()->readNumEntry("autoLockDelay", 1000); |
|
|
|
showDesktopNum = kapp->config()->readBoolEntry("showDesktopNum", false ); |
|
|
|
viewScreen = kapp->config()->readNumEntry("viewScreen", -1); |
|
|
|
calcFontMetrics(); |
|
emit settingsChanged(); |
|
} |
|
|
|
void KomposeSettings::writeConfig() |
|
{ |
|
kdDebug() << "KomposeSettings::writeConfig()" << endl; |
|
|
|
globalAccel->writeSettings(); |
|
globalAccel->updateConnections(); |
|
|
|
// Read from config file |
|
kapp->config()->setGroup("Main window"); |
|
|
|
kapp->config()->writeEntry("defaultView", defaultView ); |
|
|
|
kapp->config()->writeEntry("useComposite", useComposite ); |
|
|
|
kapp->config()->writeEntry("passiveScreenshots", passiveScreenshots ); |
|
kapp->config()->writeEntry("screenshotGrabDelay", screenshotGrabDelay); |
|
|
|
kapp->config()->writeEntry("dynamicVirtDeskLayout", dynamicVirtDeskLayout); |
|
|
|
kapp->config()->writeEntry("imageEffects", imageEffects); |
|
kapp->config()->writeEntry("blurBackground", blurBackground); |
|
|
|
kapp->config()->writeEntry("showIcons", showIcons); |
|
kapp->config()->writeEntry("iconSize", iconSize); |
|
|
|
kapp->config()->writeEntry("showWindowTitles", showWindowTitles); |
|
kapp->config()->writeEntry("windowTitleFont", windowTitleFont); |
|
kapp->config()->writeEntry("windowTitleFontColor", windowTitleFontColor); |
|
kapp->config()->writeEntry("showWindowTitleShadow", showWindowTitleShadow); |
|
kapp->config()->writeEntry("windowTitleFontShadowColor", windowTitleFontShadowColor); |
|
|
|
kapp->config()->writeEntry("windowBorderActiveColor", windowBorderActiveColor); |
|
kapp->config()->writeEntry("windowBorderInactiveColor", windowBorderInactiveColor ); |
|
kapp->config()->writeEntry("windowBorderActiveWidth", windowBorderActiveWidth ); |
|
kapp->config()->writeEntry("windowBorderInactiveWidth", windowBorderInactiveWidth ); |
|
kapp->config()->writeEntry("windowBorderActiveStyle", windowBorderActiveStyle ); |
|
kapp->config()->writeEntry("windowBorderInactiveStyle", windowBorderInactiveStyle ); |
|
|
|
kapp->config()->writeEntry("desktopTitleFont", desktopTitleFont); |
|
kapp->config()->writeEntry("desktopTitleFontColor", desktopTitleFontColor); |
|
kapp->config()->writeEntry("desktopTitleFontHighlightColor", desktopTitleFontHighlightColor); |
|
|
|
kapp->config()->writeEntry("cacheScaledPixmaps", cacheScaledPixmaps); |
|
|
|
kapp->config()->writeEntry("activateOnTopLeftCorner", activateOnTopLeftCorner); |
|
kapp->config()->writeEntry("activateOnTopRightCorner", activateOnTopRightCorner); |
|
kapp->config()->writeEntry("activateOnBottomLeftCorner", activateOnBottomLeftCorner); |
|
kapp->config()->writeEntry("activateOnBottomRightCorner", activateOnBottomRightCorner); |
|
|
|
kapp->config()->writeEntry("activateOnTopEdge", activateOnTopEdge); |
|
kapp->config()->writeEntry("activateOnBottomEdge", activateOnBottomEdge); |
|
kapp->config()->writeEntry("activateOnLeftEdge", activateOnLeftEdge); |
|
kapp->config()->writeEntry("activateOnRightEdge", activateOnRightEdge); |
|
kapp->config()->writeEntry("autoLockDelay", autoLockDelay); |
|
|
|
kapp->config()->writeEntry("showDesktopNum", showDesktopNum); |
|
|
|
kapp->config()->writeEntry("viewScreen", viewScreen); |
|
|
|
kapp->config()->sync(); |
|
|
|
kdDebug() << "KomposeSettings::writeConfig() - Settings saved to cfg file" << endl; |
|
|
|
calcFontMetrics(); |
|
emit settingsChanged(); |
|
} |
|
|
|
|
|
void KomposeSettings::showPreferencesDlg() |
|
{ |
|
dialogOpen = true; |
|
// popup preference dialog |
|
KomposePreferences *dlg = new KomposePreferences(); |
|
|
|
dlg->exec(); |
|
|
|
delete dlg; |
|
dialogOpen = false; |
|
} |
|
|
|
int KomposeSettings::getIconSizePixels() |
|
{ |
|
switch( iconSize ) |
|
{ |
|
case 0: |
|
return 16; |
|
case 1: |
|
return 32; |
|
case 2: |
|
return 64; |
|
case 3: |
|
return -1; |
|
} |
|
return 32; |
|
} |
|
|
|
void KomposeSettings::calcFontMetrics() |
|
{ |
|
if (windowTitleFontMetrics != 0) |
|
delete windowTitleFontMetrics; |
|
windowTitleFontMetrics = new TQFontMetrics( windowTitleFont ); |
|
windowTitleFontAscent = windowTitleFontMetrics->ascent(); |
|
windowTitleFontHeight = windowTitleFontMetrics->height(); |
|
} |
|
|
|
#include "komposesettings.moc"
|
|
|