bool Settings::load(const char* settingsFile) { GKeyFile* keyfile; GKeyFileFlags flags; GError* error = 0; keyfile = g_key_file_new(); if(!keyfile) return false; flags = GKeyFileFlags( G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS); if( !g_key_file_load_from_file( keyfile, settingsFile, flags, &error ) ) { g_key_file_free( keyfile ); if (error) g_error_free(error); return false; } KEY_BOOLEAN("Debug","turnOnNovacomAtStart",m_turnNovacomOnAtStartup); KEY_BOOLEAN("Debug","saveLastBackedUpTempDb",m_saveLastBackedUpTempDb); KEY_BOOLEAN("Debug","saveLastRestoredTempDb",m_saveLastRestoredTempDb); KEY_STRING("Debug","logLevel",m_logLevel); KEY_BOOLEAN("ImageService","useComPalmImage2",m_useComPalmImage2); KEY_STRING("ImageService","comPalmImage2Binary",m_comPalmImage2BinaryFile); KEY_INTEGER("General", "schemaValidationOption", schemaValidationOption); g_key_file_free( keyfile ); return true; }
static void findIconThemesInDir(QHash<QString, QString>& iconThemes, QString dirName) { QDir dir(dirName); const QStringList subDirs = dir.entryList(QDir::AllDirs); GKeyFile* kf = g_key_file_new(); for(const QString& subDir : subDirs) { QString indexFile = dirName + QLatin1Char('/') + subDir + QStringLiteral("/index.theme"); if(g_key_file_load_from_file(kf, indexFile.toLocal8Bit().constData(), GKeyFileFlags(0), nullptr)) { // FIXME: skip hidden ones // icon theme must have this key, so it has icons if it has this key // otherwise, it might be a cursor theme or any other kind of theme. if(g_key_file_has_key(kf, "Icon Theme", "Directories", nullptr)) { char* dispName = g_key_file_get_locale_string(kf, "Icon Theme", "Name", nullptr, nullptr); // char* comment = g_key_file_get_locale_string(kf, "Icon Theme", "Comment", nullptr, nullptr); iconThemes[subDir] = QString::fromUtf8(dispName); g_free(dispName); } } } g_key_file_free(kf); }
void Settings::load(const char* settingsFile) { GKeyFile* keyfile; GKeyFileFlags flags; GError* error = 0; keyfile = g_key_file_new(); if(!keyfile) return; flags = GKeyFileFlags( G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS); if( !g_key_file_load_from_file( keyfile, settingsFile, flags, &error ) ) { g_key_file_free( keyfile ); if (error) g_error_free(error); return ; } // Fill in with the macros above. KEY_STRING("General","ApplicationPath", lunaAppsPath ); // apps path can now be multiple paths, separated by : (setenv PATH style) KEY_STRING("General","AppInstallBase", appInstallBase); // due to all the churn surrounding moving of apps around, this is now a conf option KEY_STRING("General","AppInstallRelative", appInstallRelative); // due to all the churn surrounding moving of apps around, this is now a conf option // KEY_STRING("General","PackageInstallBase", packageInstallBase); KEY_STRING("General","PackageInstallRelative", packageInstallRelative); KEY_STRING("General","DownloadPathMedia",downloadPathMedia); //validate path, reset to default if necessary if (!validateDownloadPath(downloadPathMedia)) { downloadPathMedia = "/media/internal/downloads"; } KEY_STRING("General","AppInstallTemp",appInstallerTmp); KEY_STRING("General","SystemPath", lunaSystemPath ); KEY_STRING("General","AppLauncherPath", lunaAppLauncherPath ); KEY_STRING("General","SystemResourcesPath", lunaSystemResourcesPath ); KEY_STRING("General","SystemLocalePath", lunaSystemLocalePath ); KEY_STRING("General","PresetLaunchPointsPath",lunaPresetLaunchPointsPath); KEY_STRING("General","LaunchPointsPath", lunaLaunchPointsPath); KEY_STRING("General", "PreferencesPath", lunaPrefsPath); KEY_STRING("General","UiComponentsPath", lunaQmlUiComponentsPath ); KEY_BOOLEAN("General", "ShowReticle", showReticle); KEY_INTEGER("General", "NotificationSoundDuration", notificationSoundDuration); KEY_INTEGER( "CoreNavi", "ThrobberBrightnessInLight", ledPulseMaxBrightness); KEY_INTEGER( "CoreNavi", "ThrobberBrightnessInDark", ledPulseDarkBrightness); KEY_BOOLEAN( "CoreNavi", "EnableLightBar", lightbarEnabled); KEY_INTEGER( "CoreNavi", "CoreNaviBrightnessScaler", coreNaviScaler); KEY_INTEGER( "CoreNavi", "GestureAnimationSpeedInMs", gestureAnimationSpeed); KEY_INTEGER( "CoreNavi", "HomeDoubleClickDuration", homeDoubleClickDuration); KEY_INTEGER( "Display", "BrightnessOutdoorScale", backlightOutdoorScale); KEY_INTEGER( "Display", "BrightnessDimScale", backlightDimScale); KEY_INTEGER( "Display", "BrightnessDarkScale", backlightDarkScale); KEY_BOOLEAN( "Display", "EnableALS", enableAls); KEY_BOOLEAN( "Display", "TurnOffAccelerometerWhenDimmed", turnOffAccelWhenDimmed); KEY_BOOLEAN( "Display", "DisableLocking", disableLocking); KEY_INTEGER( "Display", "LockScreenTimeoutMs", lockScreenTimeout); KEY_INTEGER( "Memory", "CardLimit", cardLimit ); KEY_INTEGER( "General","DisplayWidth",displayWidth); KEY_INTEGER( "General","DisplayHeight",displayHeight); KEY_INTEGER( "General","DisplayNumBuffers", displayNumBuffers); KEY_INTEGER("General", "MaxPenMoveFreq", maxPenMoveFreq); KEY_INTEGER("General", "MaxPaintLoad", maxPaintLoad); KEY_INTEGER("General", "MaxGestureChangeFreq", maxGestureChangeFreq); KEY_INTEGER("General", "MaxTouchChangeFreq", maxTouchChangeFreq); KEY_BOOLEAN( "Debug", "WatchPenEvents", debug_trackInputEvents ); KEY_BOOLEAN( "Debug", "EnableDebugModeByDefault", debug_enabled ); KEY_BOOLEAN( "Debug", "PiranhaDrawColoredOutlines", debug_piranhaDrawColoredOutlines); KEY_BOOLEAN( "Debug", "PiranhaDisplayFps", debug_piranhaDisplayFps); KEY_BOOLEAN( "Debug", "ShowGestures", debug_showGestures); KEY_BOOLEAN( "Debug", "DoVerboseCrashLogging", debug_doVerboseCrashLogging); KEY_BOOLEAN( "Debug", "LoopInCrashHandler", debug_loopInCrashHandler); KEY_INTEGER( "Debug", "AppInstallerCleaner",debug_appInstallerCleaner ); KEY_STRING( "General", "CmdResourceHandlers", lunaCmdHandlerPath ); KEY_STRING( "General", "CmdResourceHandlersActiveCopy", lunaCmdHandlerSavedPath); KEY_STRING( "Fonts", "Banner", fontBanner ); KEY_STRING( "Fonts", "ActiveBanner", fontActiveBanner ); KEY_STRING( "Fonts", "LockWindow", fontLockWindow ); KEY_STRING( "Fonts", "DockMode", fontDockMode ); KEY_STRING( "Fonts", "Quicklaunch", fontQuicklaunch ); KEY_STRING( "Fonts", "StatusBar", fontStatusBar ); KEY_STRING( "Fonts", "KeyboardKeys", fontKeyboardKeys ); KEY_STRING( "Fonts", "StatusBar", fontStatusBar ); KEY_INTEGER("TouchEvents", "TapRadiusMax", tapRadius); KEY_INTEGER("TouchEvents", "TapRadiusMin", tapRadiusMin); KEY_INTEGER("TouchEvents", "TapRadiusShrinkPerc", tapRadiusShrinkPercent); KEY_INTEGER("TouchEvents", "TapRadiusShrinkGranMs", tapRadiusShrinkGranMs); KEY_BOOLEAN("TouchEvents", "EnableForWebApps", enableTouchEventsForWebApps); tapRadiusSquared = tapRadius * tapRadius; KEY_INTEGER("TouchEvents", "DoubleClickDuration", tapDoubleClickDuration); // Clamp to sensible values if (tapDoubleClickDuration < 50) tapDoubleClickDuration = 50; else if (tapDoubleClickDuration > 2000) tapDoubleClickDuration = 2000; KEY_INTEGER("VTrackBall", "PixelsPerMoveH", h_trackball_pixels_per_move ); KEY_INTEGER("VTrackBall", "PixelsPerMoveV", v_trackball_pixels_per_move ); KEY_INTEGER("VTrackBall", "AccelRateH1", h_accel_rate1 ); KEY_INTEGER("VTrackBall", "AccelRateV1", v_accel_rate1 ); KEY_INTEGER("VTrackBall", "AccelConstH1", h_accel_const1 ); KEY_INTEGER("VTrackBall", "AccelConstV1", v_accel_const1 ); KEY_INTEGER("VTrackBall", "AccelRateH2", h_accel_rate2 ); KEY_INTEGER("VTrackBall", "AccelRateV2", v_accel_rate2 ); KEY_INTEGER("VTrackBall", "AccelConstH2", h_accel_const2 ); KEY_INTEGER("VTrackBall", "AccelConstV2", v_accel_const2 ); KEY_STRING("General", "QuickLaunchDefaultPositions", quicklaunchDefaultPositions ); #if defined(TARGET_DESKTOP) //If we don't have a home directory, we'll set it to /tmp. Otherwise, this does nothing. setenv("HOME", "/tmp", 0); const std::string homeFolder = getenv("HOME"); quicklaunchUserPositions = homeFolder + "/.user-dock-positions.json"; #endif KEY_STRING("General", "QuickLaunchUserPositions", quicklaunchUserPositions ); KEY_INTEGER( "General", "StatusBarTitleMaxWidth", statusBarTitleMaxWidth); KEY_BOOLEAN( "DockMode", "DockModePrelaunchAllApps", dockModePrelaunchAllApps); KEY_BOOLEAN( "DockMode", "DockModeCloseAppOnMinimize", dockModeCloseOnMinimize); KEY_BOOLEAN( "DockMode", "DockModeCloseAppsOnExit", dockModeCloseOnExit); KEY_INTEGER( "DockMode", "DockModeMaxApps", dockModeMaxApps); KEY_INTEGER( "DockMode", "DockModeNightBrightness", dockModeNightBrightness); KEY_INTEGER( "DockMode", "DockModeMenuHeight", dockModeMenuHeight); KEY_STRING("DockMode", "DockModeDefaultPositions", quicklaunchDefaultPositions ); #if defined(TARGET_DESKTOP) dockModeUserPositions = homeFolder + "/.user-dock-mode-launcher-positions.json"; #endif KEY_STRING("DockMode", "DockModeUserPositions", quicklaunchUserPositions ); KEY_BOOLEAN( "VirtualKeyboard", "VirtualKeyboardEnabled", virtualKeyboardEnabled); KEY_BOOLEAN( "VirtualCoreNavi", "VirtualCoreNaviEnabled", virtualCoreNaviEnabled); KEY_INTEGER( "VirtualCoreNavi", "VirtualCoreNaviHeight", virtualCoreNaviHeight); KEY_DOUBLE("Launcher", "CardSideScrollSwipeThreshold", launcherSideSwipeThreshold); KEY_BOOLEAN("Launcher", "UseOGLHardwareAntialias", launcherUsesHwAA); KEY_INTEGER("Launcher", "LauncherItemRowSpacingAdjust",launcherRowSpacingAdjust); KEY_INTEGER("Launcher", "LauncherLabelWidthAdjust",launcherLabelWidthAdjust); KEY_INTEGER("Launcher", "LauncherLabelXPadding",launcherLabelXPadding); KEY_DOUBLE("Launcher","LauncherIconReorderPositionThreshold",launcherIconReorderPositionThreshold); KEY_BOOLEAN("UI", "DisplayUiRotates", displayUiRotates); KEY_BOOLEAN("UI", "TabletUi", tabletUi); KEY_INTEGER("UI", "HomeButtonOrientationAngle", homeButtonOrientationAngle); KEY_INTEGER("UI", "EmuModeOrientationAngle", emuModeOrientationAngle); KEY_INTEGER("UI", "PositiveSpaceTopPadding", positiveSpaceTopPadding); KEY_INTEGER("UI", "PositiveSpaceBottomPadding", positiveSpaceBottomPadding); KEY_DOUBLE("UI", "MaximumNegativeSpaceHeightRatio", maximumNegativeSpaceHeightRatio); KEY_DOUBLE("UI", "ActiveCardWindowRatio", activeCardWindowRatio); KEY_DOUBLE("UI", "NonActiveCardWindowRatio", nonActiveCardWindowRatio); KEY_DOUBLE("UI", "GhostCardFinalRatio", ghostCardFinalRatio); KEY_INTEGER("UI", "CardGroupRotFactor", cardGroupRotFactor); KEY_INTEGER("UI", "GapBetweenCardGroups", gapBetweenCardGroups); KEY_INTEGER("UI", "OverlayNotificationsHeight", overlayNotificationsHeight); KEY_INTEGER("UI", "SplashIconSize", splashIconSize); KEY_BOOLEAN("UI", "EnableSplashBackgrounds", enableSplashBackgrounds); KEY_BOOLEAN("UI", "AtlasEnabled", atlasEnabled); KEY_INTEGER("UI", "EmulatedCardWidth", emulatedCardWidth); KEY_INTEGER("UI", "EmulatedCardHeight", emulatedCardHeight); KEY_INTEGER("UI", "ModalWindowWidth", modalWindowWidth); KEY_INTEGER("UI", "ModalWindowHeight", modalWindowHeight); KEY_DOUBLE("UI", "CardGroupingXDistanceFactor", cardGroupingXDistanceFactor); KEY_DOUBLE("UI", "CardDimmPercentage", cardDimmPercentage); KEY_INTEGER("UI", "AtlasMemThreshold", atlasMemThreshold); KEY_BOOLEAN("Debug", "LauncherAtlasStatistics", launcherAtlasStatistics); KEY_BOOLEAN("Debug", "DumpLauncherAtlas", launcherDumpAtlas); if (forceSoftwareRendering) { atlasEnabled = false; launcherAtlasStatistics = false; } else if (atlasEnabled && atlasMemThreshold > 0 && MeasureTotalRAM() < atlasMemThreshold * 1024) { g_message("Atlas disabled because physical memory below %dMB threshold\n", atlasMemThreshold); atlasEnabled = false; } KEY_INTEGER("DownloadManager", "MaxQueueLength", maxDownloadManagerQueueLength); KEY_INTEGER("DownloadManager", "MaxConcurrent", maxDownloadManagerConcurrent); KEY_INTEGER("DownloadManager", "MaxRecvSpeed", maxDownloadManagerRecvSpeed); KEY_STRING( "Demo", "GestureRepeaterIp", cesGestureRepeaterIp ); KEY_INTEGER( "Demo", "GestureRepeaterPort", cesGestureRepeaterPort ); KEY_BOOLEAN( "Demo", "EnableGestureRepeater", enableGestureRepeater ); KEY_BOOLEAN( "Demo", "DemoMode", demoMode ); KEY_BOOLEAN( "Debug", "ShowAppStats", showAppStats ); KEY_BOOLEAN( "General", "CollectUseStats", collectUseStats ); KEY_BOOLEAN( "General" , "UsePartialKeywordMatchForAppSearch",usePartialKeywordAppSearch); KEY_BOOLEAN( "General" , "ScanCalculatesAppSizes",scanCalculatesAppSizes); KEY_INTEGER("KeepAlive", "MaxParked", maxNumParkedApps ); KEY_INTEGER("CpuShare", "UiMainLow", uiMainCpuShareLow); KEY_INTEGER("CpuShare", "UiOtherLow", uiOtherCpuShareLow); KEY_INTEGER("CpuShare", "JavaLow", javaCpuShareLow); KEY_INTEGER("CpuShare", "WebLow", webCpuShareLow); KEY_INTEGER("CpuShare", "GameLow", gameCpuShareLow); KEY_INTEGER("CpuShare", "Default", cpuShareDefault); KEY_BOOLEAN("AllowTurboMode", "General", allowTurboMode); KEY_STRING( "General", "WifiInterfaceName", wifiInterfaceName ); KEY_STRING( "General", "WanInterfaceName", wanInterfaceName ); KEY_BOOLEAN( "Memory", "CanRestartHeadlessApps", canRestartHeadlessApps ); KEY_BOOLEAN( "Debug", "PerformanceLogs", perfTesting); KEY_INTEGER("General", "schemaValidationOption", schemaValidationOption); // apps to launch at boot time gchar** appsToLaunchAtBootStr = g_key_file_get_string_list(keyfile, "LaunchAtBoot", "Applications", NULL, NULL); if (appsToLaunchAtBootStr) { int index = 0; appsToLaunchAtBoot.clear(); while (appsToLaunchAtBootStr[index]) { appsToLaunchAtBoot.insert(appsToLaunchAtBootStr[index]); SETTINGS_TRACE("App to launch at boot time: %s\n", appsToLaunchAtBootStr[index]); ++index; } g_strfreev(appsToLaunchAtBootStr); } // apps to keep alive gchar** appsToKeepAliveStr = g_key_file_get_string_list(keyfile, "KeepAlive", "Applications", NULL, NULL); if (appsToKeepAliveStr) { int index = 0; appsToKeepAlive.clear(); while (appsToKeepAliveStr[index]) { appsToKeepAlive.insert(appsToKeepAliveStr[index]); SETTINGS_TRACE("App to keep alive: %s\n", appsToKeepAliveStr[index]); ++index; } g_strfreev(appsToKeepAliveStr); } // apps to keep alive forever (pinned) gchar** appsToKeepAliveForeverStr = g_key_file_get_string_list(keyfile, "KeepAliveUntilMemPressure", "Applications", NULL, NULL); if (appsToKeepAliveForeverStr) { int index = 0; appsToKeepAliveUntilMemPressure.clear(); while (appsToKeepAliveForeverStr[index]) { appsToKeepAliveUntilMemPressure.insert(appsToKeepAliveForeverStr[index]); SETTINGS_TRACE("App to keep alive until memory pressure: %s\n", appsToKeepAliveForeverStr[index]); ++index; } g_strfreev(appsToKeepAliveForeverStr); } // apps to allow under low memory conditions gchar** appsToAllowInLowMemoryStr = g_key_file_get_string_list(keyfile, "Memory", "AppsToAllowInLowMemory", NULL, NULL); if (appsToAllowInLowMemoryStr) { int index = 0; appsToAllowInLowMemory.clear(); while (appsToAllowInLowMemoryStr[index]) { appsToAllowInLowMemory.insert(appsToAllowInLowMemoryStr[index]); g_message("App to allow in Low memory: %s", appsToAllowInLowMemoryStr[index]); ++index; } g_strfreev(appsToAllowInLowMemoryStr); } // apps with accelerated compositing disabled gchar** appsToDisableAccelCompositingStr = g_key_file_get_string_list(keyfile, "AccelCompositingDisabled", "Applications", NULL, NULL); if (appsToDisableAccelCompositingStr) { int index = 0; appsToDisableAccelCompositing.clear(); while (appsToDisableAccelCompositingStr[index]) { appsToDisableAccelCompositing.insert(appsToDisableAccelCompositingStr[index]); SETTINGS_TRACE("App with accelerated compositing disabled: %s\n", appsToDisableAccelCompositingStr[index]); ++index; } g_strfreev(appsToDisableAccelCompositingStr); } // SUC apps that have special launch privs gchar** sucAppsList = g_key_file_get_string_list(keyfile, "SUCApps", "Applications", NULL, NULL); if (sucAppsList) { int index = 0; sucApps.clear(); while (sucAppsList[index]) { sucApps.insert(sucAppsList[index]); SETTINGS_TRACE("SUC App with special launch priviledge: %s\n", sucAppsList[index]); ++index; } g_strfreev(sucAppsList); } // ... g_key_file_free( keyfile ); // sanity check on the homeButtonOrientationAngle value: if(homeButtonOrientationAngle >= 360) homeButtonOrientationAngle = homeButtonOrientationAngle%360; if(homeButtonOrientationAngle < -90) homeButtonOrientationAngle += 360; if((homeButtonOrientationAngle != 0) && (homeButtonOrientationAngle != 90) && (homeButtonOrientationAngle != 180) && (homeButtonOrientationAngle != 270) && (homeButtonOrientationAngle != -90)) homeButtonOrientationAngle = 0; // sanity check on the emuModeOrientationAngle value: if(emuModeOrientationAngle >= 360) emuModeOrientationAngle = emuModeOrientationAngle%360; if(emuModeOrientationAngle < -90) emuModeOrientationAngle += 360; if((emuModeOrientationAngle != 0) && (emuModeOrientationAngle != 90) && (emuModeOrientationAngle != 180) && (emuModeOrientationAngle != 270) && (emuModeOrientationAngle != -90)) emuModeOrientationAngle = 0; }
void LayoutSettings::load(const char* settingsFile) { GKeyFile* keyfile; GKeyFileFlags flags; GError* error = 0; keyfile = g_key_file_new(); if(!keyfile) return; flags = GKeyFileFlags( G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS); if( !g_key_file_load_from_file( keyfile, settingsFile, flags, &error ) ) { g_key_file_free( keyfile ); if (error) g_error_free(error); return ; } KEYS_SIZEF("Main", "launcherWidthPctScreenRelative","launcherHeighPctScreenRelative",launcherSizePctScreenRelative); KEY_INTEGER("Main","centerUiVerticalOffset",centerUiVerticalOffset); KEY_INTEGER("Main","searchPillWidth",searchPillWidth); KEY_INTEGER("Main","searchPillInnerIconRightOffset",searchPillInnerIconRightOffset); KEY_INTEGER("Main","searchPillTopOffsetFromStatusBar",searchPillTopOffsetFromStatusBar); KEYS_POINT("Main","searchPillInnerTextHorizAdjust","searchPillInnerTextVertAdjust",searchPillInnerTextAdjust); KEY_BOOLEAN("Main","openglHatesOddNumbers",openglHatesOddNumbers); KEY_BOOLEAN("Tabs","tabBarUseAbsoluteSize",tabBarUseAbsoluteSize); KEYS_SIZEF("Tabs", "tabBarWidthPctLauncherRelative","tabBarHeightPctLauncherRelative",tabBarSizePctLauncherRelative); KEY_INTEGER("Tabs","tabBarHeightAbsolute",tabBarHeightAbsolute); KEY_INTEGER("Tabs","tabBarTabFontSizePx",tabBarTabFontSizePx); KEY_BOOLEAN("Tabs","tabBarTabFontEmbolden",tabBarTabFontEmbolden); KEY_COLOR("Tabs","tabBarSelectedTabFontColor",tabBarSelectedTabFontColor); KEY_COLOR("Tabs","tabBarUnSelectedTabFontColor",tabBarUnSelectedTabFontColor); KEY_INTEGER("Tabs","tabTextVerticalPosAdjust",tabTextVerticalPosAdjust); KEY_INTEGER("DoneButton","doneButtonFontSizePx",doneButtonFontSizePx); KEY_BOOLEAN("DoneButton","doneButtonFontEmbolden",doneButtonFontEmbolden); KEY_COLOR("DoneButton","doneButtonFontColor",doneButtonFontColor); KEY_INTEGER("DoneButton","doneButtonTextVerticalPosAdjust",doneButtonTextVerticalPosAdjust); KEYS_POINT("DoneButton", "doneButtonHorizontalPositionAdjustPx", "doneButtonVerticalPositionAdjustPx", doneButtonPositionAdjust); KEYS_SIZEF("Pages","pageWidthPctLauncherRelative","pageHeightPctLauncherRelative",pageSizePctLauncherRelative); KEY_BOOLEAN("Pages","autoPageSize",autoPageSize); KEYS_SIZE("Pages","pageLeftBorderActivationSizePx","pageRightBorderActivationSizePx",pageHorizontalBorderActivationAreaSizePx); KEYS_SIZE("Pages","pageTopActivationSizePx","pageBottomActivationSizePx",pageVerticalBorderActivationAreaSizePx); KEY_INTEGER("Pages","pageTopBorderActivationTimeoutMs",pageTopBorderActivationTimeoutMs); KEY_INTEGER("Pages","pageBottomBorderActivationTimeoutMs",pageBottomBorderActivationTimeoutMs); KEY_INTEGER("Pages","pageLeftBorderActivationTimeoutMs",pageLeftBorderActivationTimeoutMs); KEY_INTEGER("Pages","pageRightBorderActivationTimeoutMs",pageRightBorderActivationTimeoutMs); KEY_BOOLEAN("QuickLaunch","quickLaunchBarUseAbsoluteSize",quickLaunchBarUseAbsoluteSize); KEYS_SIZEF("QuickLaunch","quickLaunchBarWidthPctScreenRelative","quickLaunchBarHeightPctScreenRelative",quickLaunchBarSizePctScreenRelative); KEY_INTEGER("QuickLaunch","quickLaunchBarHeightAbsolute",quickLaunchBarHeightAbsolute); KEYS_POINT("QuickLaunch","quickLaunchBarLauncherAccessButtonHorizontalOffsetPx", "quickLaunchBarLauncherAccessButtonVerticalOffsetPx", quickLaunchBarLauncherAccessButtonOffsetPx); KEYS_POINT("QuickLaunch","quickLaunchItemAreaHorizontalOffsetPx", "quickLaunchItemAreaVerticalOffsetPx", quickLaunchItemAreaOffsetPx); KEY_INTEGER("QuickLaunch","quickLaunchMaxItems",quickLaunchMaxItems); KEYS_POINT("Icons","iconVisibleLocationHorizontalOffsetPx","iconVisibleLocationVerticalOffsetPx",iconVisibleLocationOffsetPx); g_key_file_free( keyfile ); }