static void writeSetting (CCSContext *context, CCSSetting *setting) { char *keyName; IniPrivData *data; data = findPrivFromContext (context); if (!data) return; if (setting->isScreen) asprintf (&keyName, "s%d_%s", setting->screenNum, setting->name); else asprintf (&keyName, "as_%s", setting->name); if (setting->isDefault) { ccsIniRemoveEntry (data->iniFile, setting->parent->name, keyName); free (keyName); return; } switch (setting->type) { case TypeString: { char *value; if (ccsGetString (setting, &value)) ccsIniSetString (data->iniFile, setting->parent->name, keyName, value); } break; case TypeMatch: { char *value; if (ccsGetMatch (setting, &value)) ccsIniSetString (data->iniFile, setting->parent->name, keyName, value); } break; case TypeInt: { int value; if (ccsGetInt (setting, &value)) ccsIniSetInt (data->iniFile, setting->parent->name, keyName, value); } break; case TypeFloat: { float value; if (ccsGetFloat (setting, &value)) ccsIniSetFloat (data->iniFile, setting->parent->name, keyName, value); } break; case TypeBool: { Bool value; if (ccsGetBool (setting, &value)) ccsIniSetBool (data->iniFile, setting->parent->name, keyName, value); } break; case TypeColor: { CCSSettingColorValue value; if (ccsGetColor (setting, &value)) ccsIniSetColor (data->iniFile, setting->parent->name, keyName, value); } break; case TypeKey: { CCSSettingKeyValue value; if (ccsGetKey (setting, &value)) ccsIniSetKey (data->iniFile, setting->parent->name, keyName, value); } break; case TypeButton: { CCSSettingButtonValue value; if (ccsGetButton (setting, &value)) ccsIniSetButton (data->iniFile, setting->parent->name, keyName, value); } break; case TypeEdge: { unsigned int value; if (ccsGetEdge (setting, &value)) ccsIniSetEdge (data->iniFile, setting->parent->name, keyName, value); } break; case TypeBell: { Bool value; if (ccsGetBell (setting, &value)) ccsIniSetBell (data->iniFile, setting->parent->name, keyName, value); } break; case TypeList: { CCSSettingValueList value; if (ccsGetList (setting, &value)) ccsIniSetList (data->iniFile, setting->parent->name, keyName, value, setting->info.forList.listType); } break; default: break; } if (keyName) free (keyName); }
static void writeSetting (CCSBackend *backend, CCSContext *context, CCSSetting *setting) { char *keyName; IniPrivData *data; data = (IniPrivData *) ccsObjectGetPrivate (backend); if (!data) return; if (asprintf (&keyName, "s%d_%s", ccsContextGetScreenNum (context), ccsSettingGetName (setting)) == -1) return; if (ccsSettingGetIsDefault (setting)) { ccsIniRemoveEntry (data->iniFile, ccsPluginGetName (ccsSettingGetParent (setting)), keyName); free (keyName); return; } switch (ccsSettingGetType (setting)) { case TypeString: { char *value; if (ccsGetString (setting, (const char **) &value)) ccsIniSetString (data->iniFile, ccsPluginGetName (ccsSettingGetParent (setting)), keyName, value); } break; case TypeMatch: { char *value; if (ccsGetMatch (setting, (const char **) &value)) ccsIniSetString (data->iniFile, ccsPluginGetName (ccsSettingGetParent (setting)), keyName, value); } break; case TypeInt: { int value; if (ccsGetInt (setting, &value)) ccsIniSetInt (data->iniFile, ccsPluginGetName (ccsSettingGetParent (setting)), keyName, value); } break; case TypeFloat: { float value; if (ccsGetFloat (setting, &value)) ccsIniSetFloat (data->iniFile, ccsPluginGetName (ccsSettingGetParent (setting)), keyName, value); } break; case TypeBool: { Bool value; if (ccsGetBool (setting, &value)) ccsIniSetBool (data->iniFile, ccsPluginGetName (ccsSettingGetParent (setting)), keyName, value); } break; case TypeColor: { CCSSettingColorValue value; if (ccsGetColor (setting, &value)) ccsIniSetColor (data->iniFile, ccsPluginGetName (ccsSettingGetParent (setting)), keyName, value); } break; case TypeKey: { CCSSettingKeyValue value; if (ccsGetKey (setting, &value)) ccsIniSetKey (data->iniFile, ccsPluginGetName (ccsSettingGetParent (setting)), keyName, value); } break; case TypeButton: { CCSSettingButtonValue value; if (ccsGetButton (setting, &value)) ccsIniSetButton (data->iniFile, ccsPluginGetName (ccsSettingGetParent (setting)), keyName, value); } break; case TypeEdge: { unsigned int value; if (ccsGetEdge (setting, &value)) ccsIniSetEdge (data->iniFile, ccsPluginGetName (ccsSettingGetParent (setting)), keyName, value); } break; case TypeBell: { Bool value; if (ccsGetBell (setting, &value)) ccsIniSetBell (data->iniFile, ccsPluginGetName (ccsSettingGetParent (setting)), keyName, value); } break; case TypeList: { CCSSettingValueList value; if (ccsGetList (setting, &value)) ccsIniSetList (data->iniFile, ccsPluginGetName (ccsSettingGetParent (setting)), keyName, value, ccsSettingGetInfo (setting)->forList.listType); } break; default: break; } if (keyName) free (keyName); }
static void readIntegratedOption (CCSSetting *setting, KConfigGroup *mcg) { int option = 0; KConfigGroup g; for (unsigned int i = 0; i < N_SOPTIONS; i++) { if (setting->name == specialOptions[i].settingName && QString (setting->parent->name) == specialOptions[i].pluginName) { option = i; break; } } switch (specialOptions[option].type) { case OptionInt: KdeIntToCCS (setting, option); break; case OptionBool: KdeBoolToCCS (setting, option); break; case OptionKey: KdeKeyToCCS (setting, option); break; case OptionSpecial: if (specialOptions[option].settingName == "command11") { ccsSetString (setting, "xkill"); } else if (specialOptions[option].settingName == "unmaximize_window_key" || specialOptions[option].settingName == "maximize_window_key" || specialOptions[option].settingName == "maximize_window_horizontally_key" || specialOptions[option].settingName == "maximize_window_vertically_key") { CCSSettingKeyValue keyVal; if (!ccsGetKey (setting, &keyVal) ) break; keyVal.keysym = 0; keyVal.keyModMask = 0; ccsSetKey (setting, keyVal); } else if (specialOptions[option].settingName == "click_to_focus") { Bool val = (cFiles->kwin->group ("Windows"). readEntry ("FocusPolicy") == "ClickToFocus") ? TRUE : FALSE; ccsSetBool (setting, val); } else if (specialOptions[option].settingName == "mode" && specialOptions[option].pluginName == "resize") { QString mode = cFiles->kwin->group ("Windows"). readEntry ("ResizeMode"); int imode = -1; int result = 0; if (mcg->hasKey (specialOptions[option].settingName + " (Integrated)")) imode = mcg->readEntry (specialOptions[option].settingName + " (Integrated)", int (0)); if (mode == "Opaque") { result = 0; if (imode == 3) result = 3; } else if (mode == "Transparent") { result = 1; if (imode == 2) result = 2; } ccsSetInt (setting, result); } else if (specialOptions[option].settingName == "snap_type") { static int intList[2] = {0, 1}; CCSSettingValueList list = ccsGetValueListFromIntArray (intList, 2, setting); ccsSetList (setting, list); ccsSettingValueListFree (list, TRUE); } else if (specialOptions[option].settingName == "resistance_distance" || specialOptions[option].settingName == "attraction_distance") { int val1 = cFiles->kwin->group ("Windows"). readEntry ("WindowSnapZone", int (0)); int val2 = cFiles->kwin->group ("Windows"). readEntry ("BorderSnapZone", int (0)); int result = qMax (val1, val2); if (result == 0) result = mcg->readEntry ("snap_distance (Integrated)", int (0)); if (result > 0) ccsSetInt (setting, result); } else if (specialOptions[option].settingName == "edges_categories") { int val1 = cFiles->kwin->group ("Windows"). readEntry ("WindowSnapZone", int (0)); int val2 = cFiles->kwin->group ("Windows"). readEntry ("BorderSnapZone", int (0)); int intList[2] = {0, 0}; int num = 0; if (val2 > 0) num++; if (val1 > 0) { intList[num] = 1; num++; } CCSSettingValueList list = ccsGetValueListFromIntArray (intList, num, setting); ccsSetList (setting, list); ccsSettingValueListFree (list, TRUE); } else if (specialOptions[option].settingName == "edge_flip_window" || specialOptions[option].settingName == "edgeflip_move") { int val = cFiles->kwin->group ("Windows"). readEntry ("ElectricBorders", int (0)); if (val > 0) ccsSetBool (setting, TRUE); else ccsSetBool (setting, FALSE); } else if (specialOptions[option].settingName == "edge_flip_pointer" || specialOptions[option].settingName == "edgeflip_pointer") { int val = cFiles->kwin->group ("Windows"). readEntry ("ElectricBorders", int (0)); if (val > 1) ccsSetBool (setting, TRUE); else ccsSetBool (setting, FALSE); } else if (specialOptions[option].settingName == "mode" && specialOptions[option].pluginName == "place") { QString mode = cFiles->kwin->group ("Windows"). readEntry ("Placement"); int result = 0; if (mode == "Smart") result = 2; else if (mode == "Maximizing") result = 3; else if (mode == "Cascade") result = 0; else if (mode == "Random") result = 4; else if (mode == "Centered") result = 1; ccsSetInt (setting, result); } break; default: break; } }