kdecore Library API Documentation

kglobalsettings.cpp

00001 /* This file is part of the KDE libraries 00002 Copyright (C) 2000 David Faure <faure@kde.org> 00003 00004 This library is free software; you can redistribute it and/or 00005 modify it under the terms of the GNU Library General Public 00006 License version 2 as published by the Free Software Foundation. 00007 00008 This library is distributed in the hope that it will be useful, 00009 but WITHOUT ANY WARRANTY; without even the implied warranty of 00010 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00011 Library General Public License for more details. 00012 00013 You should have received a copy of the GNU Library General Public License 00014 along with this library; see the file COPYING.LIB. If not, write to 00015 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00016 Boston, MA 02111-1307, USA. 00017 */ 00018 #include "config.h" 00019 #include "kglobalsettings.h" 00020 00021 #include <qdir.h> 00022 #include <qpixmap.h> 00023 #include <qfontdatabase.h> 00024 #include <qcursor.h> 00025 00026 #include <kconfig.h> 00027 #include <ksimpleconfig.h> 00028 #include <kapplication.h> 00029 00030 #include <kipc.h> 00031 00032 #ifdef Q_WS_WIN 00033 #include <windows.h> 00034 #include "qt_windows.h" 00035 static QRgb qt_colorref2qrgb(COLORREF col) 00036 { 00037 return qRgb(GetRValue(col),GetGValue(col),GetBValue(col)); 00038 } 00039 #endif 00040 00041 #include <kdebug.h> 00042 #include <kglobal.h> 00043 #include <kshortcut.h> 00044 #include <kstandarddirs.h> 00045 #include <kcharsets.h> 00046 #include <kaccel.h> 00047 #include <klocale.h> 00048 #include <qfontinfo.h> 00049 #include <stdlib.h> 00050 #include <kprotocolinfo.h> 00051 00052 #ifdef Q_WS_X11 00053 #include <X11/Xlib.h> 00054 #endif 00055 00056 QString* KGlobalSettings::s_desktopPath = 0; 00057 QString* KGlobalSettings::s_autostartPath = 0; 00058 QString* KGlobalSettings::s_trashPath = 0; 00059 QString* KGlobalSettings::s_documentPath = 0; 00060 QFont *KGlobalSettings::_generalFont = 0; 00061 QFont *KGlobalSettings::_fixedFont = 0; 00062 QFont *KGlobalSettings::_toolBarFont = 0; 00063 QFont *KGlobalSettings::_menuFont = 0; 00064 QFont *KGlobalSettings::_windowTitleFont = 0; 00065 QFont *KGlobalSettings::_taskbarFont = 0; 00066 QFont *KGlobalSettings::_largeFont = 0; 00067 QColor *KGlobalSettings::_kde34Blue = 0; 00068 QColor *KGlobalSettings::_inactiveBackground = 0; 00069 QColor *KGlobalSettings::_inactiveForeground = 0; 00070 QColor *KGlobalSettings::_activeBackground = 0; 00071 QColor *KGlobalSettings::_buttonBackground = 0; 00072 QColor *KGlobalSettings::_selectBackground = 0; 00073 QColor *KGlobalSettings::_linkColor = 0; 00074 QColor *KGlobalSettings::_visitedLinkColor = 0; 00075 QColor *KGlobalSettings::alternateColor = 0; 00076 00077 KGlobalSettings::KMouseSettings *KGlobalSettings::s_mouseSettings = 0; 00078 00079 int KGlobalSettings::dndEventDelay() 00080 { 00081 KConfigGroup g( KGlobal::config(), "General" ); 00082 return g.readNumEntry("StartDragDist", QApplication::startDragDistance()); 00083 } 00084 00085 bool KGlobalSettings::singleClick() 00086 { 00087 KConfigGroup g( KGlobal::config(), "KDE" ); 00088 return g.readBoolEntry("SingleClick", KDE_DEFAULT_SINGLECLICK); 00089 } 00090 00091 KGlobalSettings::TearOffHandle KGlobalSettings::insertTearOffHandle() 00092 { 00093 int tearoff; 00094 bool effectsenabled; 00095 KConfigGroup g( KGlobal::config(), "KDE" ); 00096 effectsenabled = g.readBoolEntry( "EffectsEnabled", true); 00097 tearoff = g.readNumEntry("InsertTearOffHandle", KDE_DEFAULT_INSERTTEAROFFHANDLES); 00098 return effectsenabled ? (TearOffHandle) tearoff : Disable; 00099 } 00100 00101 bool KGlobalSettings::changeCursorOverIcon() 00102 { 00103 KConfigGroup g( KGlobal::config(), "KDE" ); 00104 return g.readBoolEntry("ChangeCursor", KDE_DEFAULT_CHANGECURSOR); 00105 } 00106 00107 bool KGlobalSettings::visualActivate() 00108 { 00109 KConfigGroup g( KGlobal::config(), "KDE" ); 00110 return g.readBoolEntry("VisualActivate", KDE_DEFAULT_VISUAL_ACTIVATE); 00111 } 00112 00113 unsigned int KGlobalSettings::visualActivateSpeed() 00114 { 00115 KConfigGroup g( KGlobal::config(), "KDE" ); 00116 return 00117 g.readNumEntry( 00118 "VisualActivateSpeed", 00119 KDE_DEFAULT_VISUAL_ACTIVATE_SPEED 00120 ); 00121 } 00122 00123 00124 00125 int KGlobalSettings::autoSelectDelay() 00126 { 00127 KConfigGroup g( KGlobal::config(), "KDE" ); 00128 return g.readNumEntry("AutoSelectDelay", KDE_DEFAULT_AUTOSELECTDELAY); 00129 } 00130 00131 KGlobalSettings::Completion KGlobalSettings::completionMode() 00132 { 00133 int completion; 00134 KConfigGroup g( KGlobal::config(), "General" ); 00135 completion = g.readNumEntry("completionMode", -1); 00136 if ((completion < (int) CompletionNone) || 00137 (completion > (int) CompletionPopupAuto)) 00138 { 00139 completion = (int) CompletionPopup; // Default 00140 } 00141 return (Completion) completion; 00142 } 00143 00144 bool KGlobalSettings::showContextMenusOnPress () 00145 { 00146 KConfigGroup g(KGlobal::config(), "ContextMenus"); 00147 return g.readBoolEntry("ShowOnPress", true); 00148 } 00149 00150 int KGlobalSettings::contextMenuKey () 00151 { 00152 KConfigGroup g(KGlobal::config(), "Shortcuts"); 00153 KShortcut cut (g.readEntry ("PopupMenuContext", "Menu")); 00154 return cut.keyCodeQt(); 00155 } 00156 00157 QColor KGlobalSettings::toolBarHighlightColor() 00158 { 00159 initColors(); 00160 KConfigGroup g( KGlobal::config(), "Toolbar style" ); 00161 return g.readColorEntry("HighlightColor", _kde34Blue); 00162 } 00163 00164 QColor KGlobalSettings::inactiveTitleColor() 00165 { 00166 #ifdef Q_WS_WIN 00167 return qt_colorref2qrgb(GetSysColor(COLOR_INACTIVECAPTION)); 00168 #else 00169 if (!_inactiveBackground) 00170 _inactiveBackground = new QColor(237, 237, 237); 00171 KConfigGroup g( KGlobal::config(), "WM" ); 00172 return g.readColorEntry( "inactiveBackground", _inactiveBackground ); 00173 #endif 00174 } 00175 00176 QColor KGlobalSettings::inactiveTextColor() 00177 { 00178 #ifdef Q_WS_WIN 00179 return qt_colorref2qrgb(GetSysColor(COLOR_INACTIVECAPTIONTEXT)); 00180 #else 00181 if (!_inactiveForeground) 00182 _inactiveForeground = new QColor(221,221,221); 00183 KConfigGroup g( KGlobal::config(), "WM" ); 00184 return g.readColorEntry( "inactiveForeground", _inactiveForeground ); 00185 #endif 00186 } 00187 00188 QColor KGlobalSettings::activeTitleColor() 00189 { 00190 #ifdef Q_WS_WIN 00191 return qt_colorref2qrgb(GetSysColor(COLOR_ACTIVECAPTION)); 00192 #else 00193 initColors(); 00194 if (!_activeBackground) 00195 _activeBackground = new QColor(65,142,220); 00196 KConfigGroup g( KGlobal::config(), "WM" ); 00197 return g.readColorEntry( "activeBackground", _activeBackground); 00198 #endif 00199 } 00200 00201 QColor KGlobalSettings::activeTextColor() 00202 { 00203 #ifdef Q_WS_WIN 00204 return qt_colorref2qrgb(GetSysColor(COLOR_CAPTIONTEXT)); 00205 #else 00206 KConfigGroup g( KGlobal::config(), "WM" ); 00207 return g.readColorEntry( "activeForeground", &Qt::white ); 00208 #endif 00209 } 00210 00211 int KGlobalSettings::contrast() 00212 { 00213 KConfigGroup g( KGlobal::config(), "KDE" ); 00214 return g.readNumEntry( "contrast", 7 ); 00215 } 00216 00217 QColor KGlobalSettings::buttonBackground() 00218 { 00219 if (!_buttonBackground) 00220 _buttonBackground = new QColor(221,223,228); 00221 KConfigGroup g( KGlobal::config(), "General" ); 00222 return g.readColorEntry( "buttonBackground", _buttonBackground ); 00223 } 00224 00225 QColor KGlobalSettings::buttonTextColor() 00226 { 00227 KConfigGroup g( KGlobal::config(), "General" ); 00228 return g.readColorEntry( "buttonForeground", &Qt::black ); 00229 } 00230 00231 // IMPORTANT: 00232 // This function should be get in sync with 00233 // KApplication::kdisplaySetPalette() 00234 QColor KGlobalSettings::baseColor() 00235 { 00236 KConfigGroup g( KGlobal::config(), "General" ); 00237 return g.readColorEntry( "windowBackground", &Qt::white ); 00238 } 00239 00240 // IMPORTANT: 00241 // This function should be get in sync with 00242 // KApplication::kdisplaySetPalette() 00243 QColor KGlobalSettings::textColor() 00244 { 00245 KConfigGroup g( KGlobal::config(), "General" ); 00246 return g.readColorEntry( "windowForeground", &Qt::black ); 00247 } 00248 00249 // IMPORTANT: 00250 // This function should be get in sync with 00251 // KApplication::kdisplaySetPalette() 00252 QColor KGlobalSettings::highlightedTextColor() 00253 { 00254 KConfigGroup g( KGlobal::config(), "General" ); 00255 return g.readColorEntry( "selectForeground", &Qt::white ); 00256 } 00257 00258 // IMPORTANT: 00259 // This function should be get in sync with 00260 // KApplication::kdisplaySetPalette() 00261 QColor KGlobalSettings::highlightColor() 00262 { 00263 initColors(); 00264 if (!_selectBackground) 00265 _selectBackground = new QColor(103,141,178); 00266 KConfigGroup g( KGlobal::config(), "General" ); 00267 return g.readColorEntry( "selectBackground", _selectBackground ); 00268 } 00269 00270 QColor KGlobalSettings::alternateBackgroundColor() 00271 { 00272 initColors(); 00273 KConfigGroup g( KGlobal::config(), "General" ); 00274 *alternateColor = calculateAlternateBackgroundColor( baseColor() ); 00275 return g.readColorEntry( "alternateBackground", alternateColor ); 00276 } 00277 00278 QColor KGlobalSettings::calculateAlternateBackgroundColor(const QColor& base) 00279 { 00280 if (base == Qt::white) 00281 return QColor(238,246,255); 00282 else 00283 { 00284 int h, s, v; 00285 base.hsv( &h, &s, &v ); 00286 if (v > 128) 00287 return base.dark(106); 00288 else if (base != Qt::black) 00289 return base.light(110); 00290 00291 return QColor(32,32,32); 00292 } 00293 } 00294 00295 bool KGlobalSettings::shadeSortColumn() 00296 { 00297 KConfigGroup g( KGlobal::config(), "General" ); 00298 return g.readBoolEntry( "shadeSortColumn", KDE_DEFAULT_SHADE_SORT_COLUMN ); 00299 } 00300 00301 QColor KGlobalSettings::linkColor() 00302 { 00303 initColors(); 00304 if (!_linkColor) 00305 _linkColor = new QColor(0,0,238); 00306 KConfigGroup g( KGlobal::config(), "General" ); 00307 return g.readColorEntry( "linkColor", _linkColor ); 00308 } 00309 00310 QColor KGlobalSettings::visitedLinkColor() 00311 { 00312 if (!_visitedLinkColor) 00313 _visitedLinkColor = new QColor(82,24,139); 00314 KConfigGroup g( KGlobal::config(), "General" ); 00315 return g.readColorEntry( "visitedLinkColor", _visitedLinkColor ); 00316 } 00317 00318 QFont KGlobalSettings::generalFont() 00319 { 00320 if (_generalFont) 00321 return *_generalFont; 00322 00323 // Sync default with kdebase/kcontrol/fonts/fonts.cpp 00324 _generalFont = new QFont("Sans", 10); 00325 _generalFont->setPointSize(10); 00326 _generalFont->setStyleHint(QFont::SansSerif); 00327 00328 KConfigGroup g( KGlobal::config(), "General" ); 00329 *_generalFont = g.readFontEntry("font", _generalFont); 00330 00331 return *_generalFont; 00332 } 00333 00334 QFont KGlobalSettings::fixedFont() 00335 { 00336 if (_fixedFont) 00337 return *_fixedFont; 00338 00339 // Sync default with kdebase/kcontrol/fonts/fonts.cpp 00340 _fixedFont = new QFont("Monospace", 10); 00341 _fixedFont->setPointSize(10); 00342 _fixedFont->setStyleHint(QFont::TypeWriter); 00343 00344 KConfigGroup g( KGlobal::config(), "General" ); 00345 *_fixedFont = g.readFontEntry("fixed", _fixedFont); 00346 00347 return *_fixedFont; 00348 } 00349 00350 QFont KGlobalSettings::toolBarFont() 00351 { 00352 if(_toolBarFont) 00353 return *_toolBarFont; 00354 00355 // Sync default with kdebase/kcontrol/fonts/fonts.cpp 00356 _toolBarFont = new QFont("Sans", 10); 00357 _toolBarFont->setPointSize(10); 00358 _toolBarFont->setStyleHint(QFont::SansSerif); 00359 00360 KConfigGroup g( KGlobal::config(), "General" ); 00361 *_toolBarFont = g.readFontEntry("toolBarFont", _toolBarFont); 00362 00363 return *_toolBarFont; 00364 } 00365 00366 QFont KGlobalSettings::menuFont() 00367 { 00368 if(_menuFont) 00369 return *_menuFont; 00370 00371 // Sync default with kdebase/kcontrol/fonts/fonts.cpp 00372 _menuFont = new QFont("Sans", 10); 00373 _menuFont->setPointSize(10); 00374 _menuFont->setStyleHint(QFont::SansSerif); 00375 00376 KConfigGroup g( KGlobal::config(), "General" ); 00377 *_menuFont = g.readFontEntry("menuFont", _menuFont); 00378 00379 return *_menuFont; 00380 } 00381 00382 QFont KGlobalSettings::windowTitleFont() 00383 { 00384 if(_windowTitleFont) 00385 return *_windowTitleFont; 00386 00387 // Sync default with kdebase/kcontrol/fonts/fonts.cpp 00388 _windowTitleFont = new QFont("Sans", 10, QFont::Bold); 00389 _windowTitleFont->setPointSize(10); 00390 _windowTitleFont->setStyleHint(QFont::SansSerif); 00391 00392 KConfigGroup g( KGlobal::config(), "WM" ); 00393 *_windowTitleFont = g.readFontEntry("activeFont", _windowTitleFont); // inconsistency 00394 00395 return *_windowTitleFont; 00396 } 00397 00398 QFont KGlobalSettings::taskbarFont() 00399 { 00400 if(_taskbarFont) 00401 return *_taskbarFont; 00402 00403 // Sync default with kdebase/kcontrol/fonts/fonts.cpp 00404 _taskbarFont = new QFont("Sans", 11); 00405 _taskbarFont->setPointSize(11); 00406 _taskbarFont->setStyleHint(QFont::SansSerif); 00407 00408 KConfigGroup g( KGlobal::config(), "General" ); 00409 *_taskbarFont = g.readFontEntry("taskbarFont", _taskbarFont); 00410 00411 return *_taskbarFont; 00412 } 00413 00414 00415 QFont KGlobalSettings::largeFont(const QString &text) 00416 { 00417 QFontDatabase db; 00418 QStringList fam = db.families(); 00419 00420 // Move a bunch of preferred fonts to the front. 00421 if (fam.remove("Arial")) 00422 fam.prepend("Arial"); 00423 if (fam.remove("Verdana")) 00424 fam.prepend("Verdana"); 00425 if (fam.remove("Tahoma")) 00426 fam.prepend("Tahoma"); 00427 if (fam.remove("Lucida Sans")) 00428 fam.prepend("Lucida Sans"); 00429 if (fam.remove("Lucidux Sans")) 00430 fam.prepend("Lucidux Sans"); 00431 if (fam.remove("Nimbus Sans")) 00432 fam.prepend("Nimbus Sans"); 00433 if (fam.remove("Gothic I")) 00434 fam.prepend("Gothic I"); 00435 00436 if (_largeFont) 00437 fam.prepend(_largeFont->family()); 00438 00439 for(QStringList::ConstIterator it = fam.begin(); 00440 it != fam.end(); ++it) 00441 { 00442 if (db.isSmoothlyScalable(*it) && !db.isFixedPitch(*it)) 00443 { 00444 QFont font(*it); 00445 font.setPixelSize(75); 00446 QFontMetrics metrics(font); 00447 int h = metrics.height(); 00448 if ((h < 60) || ( h > 90)) 00449 continue; 00450 00451 bool ok = true; 00452 for(unsigned int i = 0; i < text.length(); i++) 00453 { 00454 if (!metrics.inFont(text[i])) 00455 { 00456 ok = false; 00457 break; 00458 } 00459 } 00460 if (!ok) 00461 continue; 00462 00463 font.setPointSize(48); 00464 _largeFont = new QFont(font); 00465 return *_largeFont; 00466 } 00467 } 00468 _largeFont = new QFont(KGlobalSettings::generalFont()); 00469 _largeFont->setPointSize(48); 00470 return *_largeFont; 00471 } 00472 00473 void KGlobalSettings::initStatic() // should be called initPaths(). Don't put anything else here. 00474 { 00475 if ( s_desktopPath != 0 ) 00476 return; 00477 00478 s_desktopPath = new QString(); 00479 s_autostartPath = new QString(); 00480 s_trashPath = new QString(); 00481 s_documentPath = new QString(); 00482 00483 KConfigGroup g( KGlobal::config(), "Paths" ); 00484 00485 // Desktop Path 00486 *s_desktopPath = QDir::homeDirPath() + "/Desktop/"; 00487 *s_desktopPath = g.readPathEntry( "Desktop", *s_desktopPath); 00488 *s_desktopPath = QDir::cleanDirPath( *s_desktopPath ); 00489 if ( !s_desktopPath->endsWith("/") ) 00490 s_desktopPath->append('/'); 00491 00492 // Trash Path - TODO remove in KDE4 (kio_trash can't use it for interoperability reasons) 00493 *s_trashPath = *s_desktopPath + i18n("Trash") + "/"; 00494 *s_trashPath = g.readPathEntry( "Trash" , *s_trashPath); 00495 *s_trashPath = QDir::cleanDirPath( *s_trashPath ); 00496 if ( !s_trashPath->endsWith("/") ) 00497 s_trashPath->append('/'); 00498 // We need to save it in any case, in case the language changes later on, 00499 if ( !g.hasKey( "Trash" ) ) 00500 { 00501 g.writePathEntry( "Trash", *s_trashPath, true, true ); 00502 g.sync(); 00503 } 00504 00505 // Autostart Path 00506 *s_autostartPath = KGlobal::dirs()->localkdedir() + "Autostart/"; 00507 *s_autostartPath = g.readPathEntry( "Autostart" , *s_autostartPath); 00508 *s_autostartPath = QDir::cleanDirPath( *s_autostartPath ); 00509 if ( !s_autostartPath->endsWith("/") ) 00510 s_autostartPath->append('/'); 00511 00512 // Document Path 00513 *s_documentPath = g.readPathEntry( "Documents", (QDir::homeDirPath()+"/Documents/") ); 00514 *s_documentPath = QDir::cleanDirPath( *s_documentPath ); 00515 if ( !s_documentPath->endsWith("/")) 00516 s_documentPath->append('/'); 00517 00518 // Make sure this app gets the notifications about those paths 00519 if (kapp) 00520 kapp->addKipcEventMask(KIPC::SettingsChanged); 00521 } 00522 00523 void KGlobalSettings::initColors() 00524 { 00525 if (!_kde34Blue) { 00526 if (QPixmap::defaultDepth() > 8) 00527 _kde34Blue = new QColor(33, 68, 156); 00528 else 00529 _kde34Blue = new QColor(0, 0, 192); 00530 } 00531 if (!alternateColor) 00532 alternateColor = new QColor(237, 244, 249); 00533 } 00534 00535 void KGlobalSettings::rereadFontSettings() 00536 { 00537 delete _generalFont; 00538 _generalFont = 0L; 00539 delete _fixedFont; 00540 _fixedFont = 0L; 00541 delete _menuFont; 00542 _menuFont = 0L; 00543 delete _toolBarFont; 00544 _toolBarFont = 0L; 00545 delete _windowTitleFont; 00546 _windowTitleFont = 0L; 00547 delete _taskbarFont; 00548 _taskbarFont = 0L; 00549 } 00550 00551 void KGlobalSettings::rereadPathSettings() 00552 { 00553 kdDebug() << "KGlobalSettings::rereadPathSettings" << endl; 00554 delete s_autostartPath; 00555 s_autostartPath = 0L; 00556 delete s_trashPath; 00557 s_trashPath = 0L; 00558 delete s_desktopPath; 00559 s_desktopPath = 0L; 00560 delete s_documentPath; 00561 s_documentPath = 0L; 00562 } 00563 00564 KGlobalSettings::KMouseSettings & KGlobalSettings::mouseSettings() 00565 { 00566 if ( ! s_mouseSettings ) 00567 { 00568 s_mouseSettings = new KMouseSettings; 00569 KMouseSettings & s = *s_mouseSettings; // for convenience 00570 00571 #ifndef Q_WS_WIN 00572 KConfigGroup g( KGlobal::config(), "Mouse" ); 00573 QString setting = g.readEntry("MouseButtonMapping"); 00574 if (setting == "RightHanded") 00575 s.handed = KMouseSettings::RightHanded; 00576 else if (setting == "LeftHanded") 00577 s.handed = KMouseSettings::LeftHanded; 00578 else 00579 { 00580 #ifdef Q_WS_X11 00581 // get settings from X server 00582 // This is a simplified version of the code in input/mouse.cpp 00583 // Keep in sync ! 00584 s.handed = KMouseSettings::RightHanded; 00585 unsigned char map[20]; 00586 int num_buttons = XGetPointerMapping(kapp->getDisplay(), map, 20); 00587 if( num_buttons == 2 ) 00588 { 00589 if ( (int)map[0] == 1 && (int)map[1] == 2 ) 00590 s.handed = KMouseSettings::RightHanded; 00591 else if ( (int)map[0] == 2 && (int)map[1] == 1 ) 00592 s.handed = KMouseSettings::LeftHanded; 00593 } 00594 else if( num_buttons >= 3 ) 00595 { 00596 if ( (int)map[0] == 1 && (int)map[2] == 3 ) 00597 s.handed = KMouseSettings::RightHanded; 00598 else if ( (int)map[0] == 3 && (int)map[2] == 1 ) 00599 s.handed = KMouseSettings::LeftHanded; 00600 } 00601 #else 00602 // FIXME(E): Implement in Qt Embedded 00603 #endif 00604 } 00605 #endif //Q_WS_WIN 00606 } 00607 #ifdef Q_WS_WIN 00608 //not cached 00609 s_mouseSettings->handed = (GetSystemMetrics(SM_SWAPBUTTON) ? KMouseSettings::LeftHanded : KMouseSettings::RightHanded); 00610 #endif 00611 return *s_mouseSettings; 00612 } 00613 00614 void KGlobalSettings::rereadMouseSettings() 00615 { 00616 #ifndef Q_WS_WIN 00617 delete s_mouseSettings; 00618 s_mouseSettings = 0L; 00619 #endif 00620 } 00621 00622 bool KGlobalSettings::isMultiHead() 00623 { 00624 #ifdef Q_WS_WIN 00625 return GetSystemMetrics(SM_CMONITORS) > 1; 00626 #else 00627 QCString multiHead = getenv("KDE_MULTIHEAD"); 00628 if (!multiHead.isEmpty()) { 00629 return (multiHead.lower() == "true"); 00630 } 00631 return false; 00632 #endif 00633 } 00634 00635 bool KGlobalSettings::wheelMouseZooms() 00636 { 00637 KConfigGroup g( KGlobal::config(), "KDE" ); 00638 return g.readBoolEntry( "WheelMouseZooms", KDE_DEFAULT_WHEEL_ZOOM ); 00639 } 00640 00641 QRect KGlobalSettings::splashScreenDesktopGeometry() 00642 { 00643 QDesktopWidget *dw = QApplication::desktop(); 00644 00645 if (dw->isVirtualDesktop()) { 00646 KConfigGroup group(KGlobal::config(), "Windows"); 00647 int scr = group.readNumEntry("Unmanaged", -3); 00648 if (group.readBoolEntry("XineramaEnabled", true) && scr != -2) { 00649 if (scr == -3) 00650 scr = dw->screenNumber(QCursor::pos()); 00651 return dw->screenGeometry(scr); 00652 } else { 00653 return dw->geometry(); 00654 } 00655 } else { 00656 return dw->geometry(); 00657 } 00658 } 00659 00660 QRect KGlobalSettings::desktopGeometry(const QPoint& point) 00661 { 00662 QDesktopWidget *dw = QApplication::desktop(); 00663 00664 if (dw->isVirtualDesktop()) { 00665 KConfigGroup group(KGlobal::config(), "Windows"); 00666 if (group.readBoolEntry("XineramaEnabled", true) && 00667 group.readBoolEntry("XineramaPlacementEnabled", true)) { 00668 return dw->screenGeometry(dw->screenNumber(point)); 00669 } else { 00670 return dw->geometry(); 00671 } 00672 } else { 00673 return dw->geometry(); 00674 } 00675 } 00676 00677 QRect KGlobalSettings::desktopGeometry(QWidget* w) 00678 { 00679 QDesktopWidget *dw = QApplication::desktop(); 00680 00681 if (dw->isVirtualDesktop()) { 00682 KConfigGroup group(KGlobal::config(), "Windows"); 00683 if (group.readBoolEntry("XineramaEnabled", true) && 00684 group.readBoolEntry("XineramaPlacementEnabled", true)) { 00685 if (w) 00686 return dw->screenGeometry(dw->screenNumber(w)); 00687 else return dw->screenGeometry(-1); 00688 } else { 00689 return dw->geometry(); 00690 } 00691 } else { 00692 return dw->geometry(); 00693 } 00694 } 00695 00696 bool KGlobalSettings::showIconsOnPushButtons() 00697 { 00698 KConfigGroup g( KGlobal::config(), "KDE" ); 00699 return g.readBoolEntry("ShowIconsOnPushButtons", 00700 KDE_DEFAULT_ICON_ON_PUSHBUTTON); 00701 } 00702 00703 bool KGlobalSettings::showFilePreview(const KURL &url) 00704 { 00705 KConfigGroup g(KGlobal::config(), "PreviewSettings"); 00706 QString protocol = url.protocol(); 00707 bool defaultSetting = KProtocolInfo::showFilePreview( protocol ); 00708 return g.readBoolEntry(protocol, defaultSetting ); 00709 } 00710 00711 bool KGlobalSettings::opaqueResize() 00712 { 00713 KConfigGroup g( KGlobal::config(), "KDE" ); 00714 return g.readBoolEntry("OpaqueResize", 00715 KDE_DEFAULT_OPAQUE_RESIZE); 00716 } 00717 00718 int KGlobalSettings::buttonLayout() 00719 { 00720 KConfigGroup g( KGlobal::config(), "KDE" ); 00721 return g.readNumEntry("ButtonLayout", 00722 KDE_DEFAULT_BUTTON_LAYOUT); 00723 }
KDE Logo
This file is part of the documentation for kdecore Library Version 3.4.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Thu Apr 14 00:03:29 2005 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003