void Configuration::save() { KConfigGroup configuration = m_applet->config(); QStringList arrangement; closeActionEditors(); for (int i = 0; i < m_arrangementUi.currentEntriesListWidget->count(); ++i) { QListWidgetItem *item = m_arrangementUi.currentEntriesListWidget->item(i); if (!item->toolTip().isEmpty()) { if (arrangement.contains(item->toolTip())) { continue; } arrangement.append(item->toolTip()); const KUrl url(item->toolTip()); Launcher *launcher = new Launcher(url, m_applet); if (m_rules.contains(item->toolTip()) && !launcher->isMenu()) { launcher->setRules(m_rules[item->toolTip()].first); launcher->setExcluded(m_rules[item->toolTip()].second); } m_applet->changeLauncher(launcher, url, true); launcher->deleteLater(); } else if (item->text() == i18n("--- tasks area ---")) { arrangement.append("tasks"); } else if (item->text() == i18n("--- jobs area ---")) { arrangement.append("jobs"); } else { arrangement.append("separator"); } } configuration.deleteGroup("Actions"); KConfigGroup actionsConfiguration = configuration.group("Actions"); for (int i = 0; i < m_actionsUi.actionsTableWidget->rowCount(); ++i) { QTableWidgetItem *actionItem = m_actionsUi.actionsTableWidget->item(i, 0); QTableWidgetItem *triggerItem = m_actionsUi.actionsTableWidget->item(i, 1); if (triggerItem->data(Qt::EditRole).toString().isEmpty() || actionItem->data(Qt::EditRole).toInt() == 0) { continue; } actionsConfiguration.writeEntry(triggerItem->data(Qt::EditRole).toString(), actionItem->data(Qt::EditRole).toInt()); } configuration.writeEntry("moveAnimation", m_appearanceUi.moveAnimation->itemData(m_appearanceUi.moveAnimation->currentIndex()).toInt()); configuration.writeEntry("parabolicMoveAnimation", m_appearanceUi.parabolicMoveAnimation->isChecked()); configuration.writeEntry("demandsAttentionAnimation", m_appearanceUi.demandsAttentionAnimation->itemData(m_appearanceUi.demandsAttentionAnimation->currentIndex()).toInt()); configuration.writeEntry("startupAnimation", m_appearanceUi.startupAnimation->itemData(m_appearanceUi.startupAnimation->currentIndex()).toInt()); configuration.writeEntry("activeIconIndication", m_appearanceUi.activeIconIndication->itemData(m_appearanceUi.activeIconIndication->currentIndex()).toInt()); configuration.writeEntry("titleLabelMode", m_appearanceUi.titleLabelMode->itemData(m_appearanceUi.titleLabelMode->currentIndex()).toInt()); configuration.writeEntry("customBackgroundImage", (m_appearanceUi.customBackgroundImage->url().isValid()?m_appearanceUi.customBackgroundImage->url().path():QString())); configuration.writeEntry("showOnlyCurrentDesktop", m_generalUi.showOnlyCurrentDesktop->isChecked()); configuration.writeEntry("showOnlyCurrentActivity", m_generalUi.showOnlyCurrentActivity->isChecked()); configuration.writeEntry("showOnlyCurrentScreen", m_generalUi.showOnlyCurrentScreen->isChecked()); configuration.writeEntry("showOnlyMinimized", m_generalUi.showOnlyMinimized->isChecked()); configuration.writeEntry("showOnlyTasksWithLaunchers", m_generalUi.showOnlyTasksWithLaunchers->isChecked()); configuration.writeEntry("connectJobsWithTasks", m_generalUi.connectJobsWithTasks->isChecked()); configuration.writeEntry("groupJobs", m_generalUi.groupJobs->isChecked()); configuration.writeEntry("groupingStrategy", m_generalUi.groupingStrategy->itemData(m_generalUi.groupingStrategy->currentIndex()).toInt()); configuration.writeEntry("sortingStrategy", m_generalUi.sortingStrategy->itemData(m_generalUi.sortingStrategy->currentIndex()).toInt()); configuration.writeEntry("jobCloseMode", m_generalUi.jobCloseMode->itemData(m_generalUi.jobCloseMode->currentIndex()).toInt()); configuration.writeEntry("arrangement", arrangement); static_cast<KConfigDialog*>(parent())->enableButtonApply(false); emit accepted(); }