23#include "kcmakonadicontactactions.h"
25#include "contactactionssettings.h"
29#include <kaboutdata.h>
30#include <kcomponentdata.h>
31#include <kconfigdialogmanager.h>
32#include <kpluginfactory.h>
33#include <klocalizedstring.h>
35Q_DECLARE_METATYPE(ContactActionsSettings::EnumDialPhoneNumberAction)
37K_PLUGIN_FACTORY(KCMAkonadiContactActionsFactory, registerPlugin<KCMAkonadiContactActions>();)
38K_EXPORT_PLUGIN(KCMAkonadiContactActionsFactory(
"kcm_akonadicontact_actions"))
40KCMAkonadiContactActions::KCMAkonadiContactActions(QWidget *parent, const QVariantList &args)
41 : KCModule(KCMAkonadiContactActionsFactory::componentData(), parent)
43 KAboutData *about =
new KAboutData(I18N_NOOP(
"kcmakonadicontactactions"), 0,
44 ki18n(
"Contact Actions Settings"),
45 0, KLocalizedString(), KAboutData::License_LGPL,
46 ki18n(
"(c) 2009 Tobias Koenig"));
48 about->addAuthor(ki18n(
"Tobias Koenig"), KLocalizedString(),
"tokoe@kde.org");
52 QVBoxLayout *layout =
new QVBoxLayout(
this);
53 QWidget *wdg =
new QWidget;
54 layout->addWidget(wdg);
58 mConfigManager = addConfig(ContactActionsSettings::self(), wdg);
60 ui.DialPhoneNumberAction->addItem(i18n(
"Skype"), ContactActionsSettings::UseSkype);
61 ui.DialPhoneNumberAction->addItem(i18n(
"Ekiga"), ContactActionsSettings::UseEkiga);
62 ui.DialPhoneNumberAction->addItem(i18n(
"SflPhone"), ContactActionsSettings::UseSflPhone);
63 ui.DialPhoneNumberAction->addItem(i18n(
"External Application"), ContactActionsSettings::UseExternalPhoneApplication);
65 connect(ui.DialPhoneNumberAction, SIGNAL(currentIndexChanged(
int)), SLOT(slotDialPhoneNumberActionChanged(
int)));
67 ui.SendSmsAction->addItem(i18n(
"Skype"), ContactActionsSettings::UseSkypeSms);
68 ui.SendSmsAction->addItem(i18n(
"SflPhone"), ContactActionsSettings::UseSflPhoneSms);
69 ui.SendSmsAction->addItem(i18n(
"External Application"), ContactActionsSettings::UseExternalSmsApplication);
70 connect(ui.SendSmsAction, SIGNAL(currentIndexChanged(
int)), SLOT(slotSmsPhoneNumberActionChanged(
int)));
72 ui.ShowAddressAction->addItem(i18n(
"Web Browser"), ContactActionsSettings::UseBrowser);
73 ui.ShowAddressAction->addItem(i18n(
"External Application"), ContactActionsSettings::UseExternalAddressApplication);
74 ui.ShowAddressAction->addItem(i18n(
"Google map"), ContactActionsSettings::UseGooglemap);
75 ui.ShowAddressAction->addItem(i18n(
"Map quest"), ContactActionsSettings::UseMapquest);
77 connect(ui.ShowAddressAction, SIGNAL(currentIndexChanged(
int)), SLOT(slotShowAddressActionChanged(
int)));
82void KCMAkonadiContactActions::slotShowAddressActionChanged(
int value)
84 ContactActionsSettings::EnumShowAddressAction enumValue =
static_cast<ContactActionsSettings::EnumShowAddressAction
>(ui.ShowAddressAction->itemData(value).toInt());
85 if (enumValue == ContactActionsSettings::UseBrowser) {
86 ui.stackedWidget->setCurrentIndex(0);
87 }
else if (enumValue == ContactActionsSettings::UseExternalAddressApplication) {
88 ui.stackedWidget->setCurrentIndex(1);
90 ui.stackedWidget->setCurrentIndex(2);
95void KCMAkonadiContactActions::slotSmsPhoneNumberActionChanged(
int value)
97 ContactActionsSettings::EnumSendSmsAction enumValue =
static_cast<ContactActionsSettings::EnumSendSmsAction
>(ui.SendSmsAction->itemData(value).toInt());
98 if (enumValue == ContactActionsSettings::UseExternalSmsApplication) {
99 ui.stackedWidget_3->setCurrentIndex(1);
101 ui.stackedWidget_3->setCurrentIndex(0);
106void KCMAkonadiContactActions::slotDialPhoneNumberActionChanged(
int value)
108 ContactActionsSettings::EnumDialPhoneNumberAction enumValue =
static_cast<ContactActionsSettings::EnumDialPhoneNumberAction
>(ui.DialPhoneNumberAction->itemData(value).toInt());
109 if (enumValue == ContactActionsSettings::UseExternalPhoneApplication) {
110 ui.stackedWidget_2->setCurrentIndex(1);
112 ui.stackedWidget_2->setCurrentIndex(0);
117void KCMAkonadiContactActions::load()
119 mConfigManager->updateWidgets();
121 ContactActionsSettings::EnumShowAddressAction enumValueAddress =
static_cast<ContactActionsSettings::EnumShowAddressAction
>(ContactActionsSettings::self()->showAddressAction());
122 const int indexAddress = ui.ShowAddressAction->findData(enumValueAddress);
123 ui.ShowAddressAction->setCurrentIndex(indexAddress);
125 ContactActionsSettings::EnumDialPhoneNumberAction enumValue =
static_cast<ContactActionsSettings::EnumDialPhoneNumberAction
>(ContactActionsSettings::self()->dialPhoneNumberAction());
126 const int index = ui.DialPhoneNumberAction->findData(enumValue);
127 ui.DialPhoneNumberAction->setCurrentIndex(index);
129 ContactActionsSettings::EnumSendSmsAction enumValueSms =
static_cast<ContactActionsSettings::EnumSendSmsAction
>(ContactActionsSettings::self()->sendSmsAction());
130 const int indexSms = ui.SendSmsAction->findData(enumValueSms);
131 ui.SendSmsAction->setCurrentIndex(indexSms);
135void KCMAkonadiContactActions::save()
137 mConfigManager->updateSettings();
138 ContactActionsSettings::EnumShowAddressAction enumValueAddress =
static_cast<ContactActionsSettings::EnumShowAddressAction
>(ui.ShowAddressAction->itemData(ui.ShowAddressAction->currentIndex()).toInt());
139 ContactActionsSettings::self()->setShowAddressAction(enumValueAddress);
141 ContactActionsSettings::EnumDialPhoneNumberAction enumValue =
static_cast<ContactActionsSettings::EnumDialPhoneNumberAction
>(ui.DialPhoneNumberAction->itemData(ui.DialPhoneNumberAction->currentIndex()).toInt());
142 ContactActionsSettings::self()->setDialPhoneNumberAction(enumValue);
144 ContactActionsSettings::EnumSendSmsAction enumValueSms =
static_cast<ContactActionsSettings::EnumSendSmsAction
>(ui.SendSmsAction->itemData(ui.SendSmsAction->currentIndex()).toInt());
145 ContactActionsSettings::self()->setSendSmsAction(enumValueSms);
146 ContactActionsSettings::self()->writeConfig();
149void KCMAkonadiContactActions::defaults()
151 mConfigManager->updateWidgetsDefault();
152 const bool bUseDefaults = ContactActionsSettings::self()->useDefaults(
true);
153 ui.DialPhoneNumberAction->setCurrentIndex(ContactActionsSettings::self()->dialPhoneNumberAction());
154 ui.SendSmsAction->setCurrentIndex(ContactActionsSettings::self()->sendSmsAction());
155 ui.ShowAddressAction->setCurrentIndex(ContactActionsSettings::self()->showAddressAction());
156 ContactActionsSettings::self()->useDefaults(bUseDefaults);