1
/****************************************************************************
2
* Copyright (C) 2009-2013 by Savoir-Faire Linux *
3
* Author : Jérémy Quentin <jeremy.quentin@savoirfairelinux.com> *
4
* Emmanuel Lepage Vallee <emmanuel.lepage@savoirfairelinux.com> *
6
* This library is free software; you can redistribute it and/or *
7
* modify it under the terms of the GNU Lesser General Public *
8
* License as published by the Free Software Foundation; either *
9
* version 2.1 of the License, or (at your option) any later version. *
11
* This library is distributed in the hope that it will be useful, *
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
14
* Lesser General Public License for more details. *
16
* You should have received a copy of the GNU General Public License *
17
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
18
***************************************************************************/
20
#include "configurationskeleton.h"
22
#include "../lib/configurationmanager_interface_singleton.h"
23
#include "../lib/sflphone_const.h"
28
ConfigurationSkeleton * ConfigurationSkeleton::instance = nullptr;
31
ConfigurationSkeleton::ConfigurationSkeleton()
32
: ConfigurationSkeletonBase()
34
kDebug() << "Building ConfigurationSkeleton";
35
//codecListModel = new CodecListModel();
40
ConfigurationSkeleton::~ConfigurationSkeleton()
45
ConfigurationSkeleton * ConfigurationSkeleton::self()
47
if(instance == nullptr)
48
{ instance = new ConfigurationSkeleton(); }
52
///Read the config and override some variable using daemon defaults
53
void ConfigurationSkeleton::readConfig()
55
//ConfigurationSkeleton::readConfig();
56
kDebug() << "Reading config";
58
ConfigurationManagerInterface& configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
62
//Call history settings
63
//setEnableHistory(true);
64
setHistoryMax(configurationManager.getHistoryLimit());
68
//Notification settings
69
//setNotifOnCalls(true);
70
setNotifOnMessages(configurationManager.getMailNotify());
72
//Window display settings
73
//setDisplayOnStart(true);
74
//setDisplayOnCalls(true);
80
//Audio Interface settings
81
QString audioManager = configurationManager.getAudioManager();
82
kDebug() << "audioManager = " << audioManager;
83
//setInterface(audioManager); //TODO
85
// //ringtones settings
86
// setEnableRingtones(true);
87
// //QString ringtone = "";
88
// if(ringtone().isEmpty()) {
89
// setRingtone(QString(SHARE_INSTALL_PREFIX) + "/sflphone/ringtones/konga.ul");
93
//setActiveCodecList(configurationManager.getActiveCodecList()); //Outdated
95
kDebug() << "configurationManager.getCurrentAudioOutputPlugin() = " << configurationManager.getCurrentAudioOutputPlugin();
96
setAlsaPlugin(configurationManager.getCurrentAudioOutputPlugin());
98
QStringList devices = configurationManager.getCurrentAudioDevicesIndex();
100
if (devices.size() > 1) {
101
kDebug() << "inputDevice = " << devices[1];
102
inputDevice = devices[1].toInt(& ok);
105
kDebug() << "Fatal: Too few audio devices";
108
kDebug() << "inputDevice is not a number";
110
setAlsaInputDevice(inputDevice);
112
//kDebug() << "outputDevice = " << devices[0];
113
//int outputDevice = devices[0].toInt(& ok);
114
//if(!ok) kDebug() << "outputDevice is not a number";
115
//setAlsaOutputDevice(outputDevice);
117
//Address book settings
119
MapStringInt addressBookSettings = configurationManager.getAddressbookSettings().value();
120
setEnableAddressBook(addressBookSettings[ADDRESSBOOK_ENABLE]);
121
//setMaxResults(addressBookSettings[ADDRESSBOOK_MAX_RESULTS]);
122
//setDisplayPhoto(addressBookSettings[ADDRESSBOOK_DISPLAY_CONTACT_PHOTO]);
123
//setBusiness(addressBookSettings[ADDRESSBOOK_DISPLAY_BUSINESS]);
124
//setMobile(addressBookSettings[ADDRESSBOOK_DISPLAY_MOBILE]);
125
//setHome(addressBookSettings[ADDRESSBOOK_DISPLAY_HOME]);
129
MapStringString hooksSettings = configurationManager.getHookSettings().value();
130
setAddPrefix(hooksSettings[HOOKS_ENABLED]=="1");
131
setPrepend(hooksSettings[HOOKS_ADD_PREFIX]);
132
setEnableHooksSIP(hooksSettings[HOOKS_SIP_ENABLED]=="1");
133
setEnableHooksIAX(hooksSettings[HOOKS_IAX2_ENABLED]=="1");
134
setHooksSIPHeader(hooksSettings[HOOKS_SIP_FIELD]);
135
setHooksCommand(hooksSettings[HOOKS_COMMAND]);
137
kDebug() << "Finished to read config";
140
void ConfigurationSkeleton::writeConfig()
142
//ConfigurationSkeleton::writeConfig();
143
kDebug() << "Writing config";
144
ConfigurationManagerInterface & configurationManager = ConfigurationManagerInterfaceSingleton::getInstance();
149
kDebug() << "Writing General settings";
151
//Call history settings
152
//if(enableHistory() != QVariant(configurationManager.getHistoryEnabled()).toBool() ) {
153
//configurationManager.setHistoryEnabled();
155
configurationManager.setHistoryLimit(historyMax());
159
kDebug() << "Writing Display settings";
161
//Notification settings
162
//if(notifOnCalls() != configurationManager.getNotify()) configurationManager.setNotify();
163
// if(notifOnMessages() != configurationManager.getMailNotify()) configurationManager.setMailNotify();
164
//configurationManager.setMailNotify(notifOnMessages());
166
//Window display settings
167
//WARNING états inversés
168
//if(displayOnStart() == configurationManager.isStartHidden()) configurationManager.startHidden();
169
//if(displayOnCalls() != configurationManager.popupMode()) configurationManager.switchPopupMode();
173
kDebug() << "Writing Accounts settings";
175
// saveAccountList();
179
kDebug() << "Writing Audio settings";
181
//Audio Interface settings
182
// int prevManager = configurationManager.getAudioManager();
183
// int newManager = interface();
184
// if(prevManager != newManager) {
185
// configurationManager.setAudioManager(newManager);
189
// if(enableRingtones() != configurationManager.isRingtoneEnabled()) configurationManager.ringtoneEnabled();
190
// configurationManager.setRingtoneChoice(ringtone());
193
//kDebug() << "activeCodecList = " << activeCodecList();
194
//configurationManager.setActiveCodecList(activeCodecList());
198
// if(prevManager == CONST_ALSA && newManager == EnumInterface::ALSA) {
199
// kDebug() << "setting alsa settings";
200
// configurationManager.setOutputAudioPlugin(alsaPlugin());
201
// configurationManager.setAudioInputDevice(alsaInputDevice());
202
// configurationManager.setAudioOutputDevice(alsaOutputDevice());
207
kDebug() << "Writing Record settings";
209
// QString destination = destinationFolder();
210
// configurationManager.setRecordPath(destination);
213
//Address Book settings
215
kDebug() << "Writing Address Book settings";
217
MapStringInt addressBookSettings = MapStringInt();
218
addressBookSettings[ADDRESSBOOK_ENABLE] = enableAddressBook();
219
// addressBookSettings[ADDRESSBOOK_MAX_RESULTS] = maxResults();
220
// addressBookSettings[ADDRESSBOOK_DISPLAY_CONTACT_PHOTO] = displayPhoto();
221
// addressBookSettings[ADDRESSBOOK_DISPLAY_BUSINESS] = business();
222
// addressBookSettings[ADDRESSBOOK_DISPLAY_MOBILE] = mobile();
223
// addressBookSettings[ADDRESSBOOK_DISPLAY_HOME] = home();
224
configurationManager.setAddressbookSettings(addressBookSettings);
228
kDebug() << "Writing Hooks settings";
230
MapStringString hooksSettings = MapStringString();
231
hooksSettings[HOOKS_ENABLED] = addPrefix() ? "1" : "0";
232
hooksSettings[HOOKS_ADD_PREFIX] = prepend();
233
hooksSettings[HOOKS_SIP_ENABLED] = enableHooksSIP() ? "1" : "0";
234
hooksSettings[HOOKS_IAX2_ENABLED] = enableHooksIAX() ? "1" : "0";
235
hooksSettings[HOOKS_SIP_FIELD] = hooksSIPHeader();
236
hooksSettings[HOOKS_COMMAND] = hooksCommand();
237
configurationManager.setHookSettings(hooksSettings);
239
kDebug() << "Finished to write config\n";
240
ConfigurationSkeletonBase::writeConfig();
243
// QStringList ConfigurationSkeleton::activeCodecList() const
245
// return codecListModel->getActiveCodecList();
248
// void ConfigurationSkeleton::setActiveCodecList(const QStringList & v)
250
// codecListModel->setActiveCodecList(v);
253
// void ConfigurationSkeleton::writeConfig()
256
// ConfigurationSkeletonBase::writeConfig();