49
49
#include "lib/sflphone_const.h"
50
50
#include "lib/dbus/instancemanager.h"
51
#include "lib/dbus/configurationmanager.h"
52
51
#include "lib/contact.h"
53
52
#include "lib/accountlistmodel.h"
54
53
#include "lib/instantmessagingmodel.h"
55
54
#include "lib/numbercategorymodel.h"
55
#include "lib/legacyhistorybackend.h"
56
#include "klib/minimalhistorybackend.h"
56
57
#include "lib/visitors/numbercategoryvisitor.h"
57
58
#include "klib/macromodel.h"
58
59
#include "klib/akonadibackend.h"
59
60
#include "klib/kcfg_settings.h"
61
#include "klib/akonadicontactcollectionmodel.h"
60
62
#include "lib/presencestatusmodel.h"
61
#include "lib/videomodel.h"
63
#include "lib/video/videomodel.h"
62
64
#include "lib/phonenumber.h"
65
#include "lib/contactmodel.h"
66
#include "lib/itembackendmodel.h"
67
#include "lib/visitors/itemmodelstateserializationvisitor.h"
68
#include "klib/itemmodelserialization.h"
69
#include "lib/extensions/presenceitembackendmodelextension.h"
65
72
#include "accountwizard.h"
100
107
const bool isEmpty = !list.size();
101
108
#define IS_ENABLED(name) (list.indexOf(name) != -1) || isEmpty
102
109
#define ICN(name) new QPixmap(KStandardDirs::locate("data" , QString("sflphone-client-kde/mini/%1.png").arg(name)))
103
model->addCategory("Home" ,ICN("home") , KABC::PhoneNumber::Home ,IS_ENABLED( KABC::PhoneNumber::Home ));
104
model->addCategory("Work" ,ICN("work") , KABC::PhoneNumber::Work ,IS_ENABLED( KABC::PhoneNumber::Work ));
105
model->addCategory("Msg" ,ICN("mail") , KABC::PhoneNumber::Msg ,IS_ENABLED( KABC::PhoneNumber::Msg ));
106
model->addCategory("Pref" ,ICN("call") , KABC::PhoneNumber::Pref ,IS_ENABLED( KABC::PhoneNumber::Pref ));
107
model->addCategory("Voice" ,ICN("video") , KABC::PhoneNumber::Voice,IS_ENABLED( KABC::PhoneNumber::Voice ));
108
model->addCategory("Fax" ,ICN("call") , KABC::PhoneNumber::Fax ,IS_ENABLED( KABC::PhoneNumber::Fax ));
109
model->addCategory("Cell" ,ICN("mobile") , KABC::PhoneNumber::Cell ,IS_ENABLED( KABC::PhoneNumber::Cell ));
110
model->addCategory("Video" ,ICN("call") , KABC::PhoneNumber::Video,IS_ENABLED( KABC::PhoneNumber::Video ));
111
model->addCategory("Bbs" ,ICN("call") , KABC::PhoneNumber::Bbs ,IS_ENABLED( KABC::PhoneNumber::Bbs ));
112
model->addCategory("Modem" ,ICN("call") , KABC::PhoneNumber::Modem,IS_ENABLED( KABC::PhoneNumber::Modem ));
113
model->addCategory("Car" ,ICN("car") , KABC::PhoneNumber::Car ,IS_ENABLED( KABC::PhoneNumber::Car ));
114
model->addCategory("Isdn" ,ICN("call") , KABC::PhoneNumber::Isdn ,IS_ENABLED( KABC::PhoneNumber::Isdn ));
115
model->addCategory("Pcs" ,ICN("call") , KABC::PhoneNumber::Pcs ,IS_ENABLED( KABC::PhoneNumber::Pcs ));
116
model->addCategory("Pager" ,ICN("pager") , KABC::PhoneNumber::Pager,IS_ENABLED( KABC::PhoneNumber::Pager ));
117
model->addCategory("Preferred",ICN("preferred"), 10000 ,IS_ENABLED( 10000 ));
110
model->addCategory(i18n("Home") ,ICN("home") , KABC::PhoneNumber::Home ,IS_ENABLED( KABC::PhoneNumber::Home ));
111
model->addCategory(i18n("Work") ,ICN("work") , KABC::PhoneNumber::Work ,IS_ENABLED( KABC::PhoneNumber::Work ));
112
model->addCategory(i18n("Msg") ,ICN("mail") , KABC::PhoneNumber::Msg ,IS_ENABLED( KABC::PhoneNumber::Msg ));
113
model->addCategory(i18n("Pref") ,ICN("call") , KABC::PhoneNumber::Pref ,IS_ENABLED( KABC::PhoneNumber::Pref ));
114
model->addCategory(i18n("Voice") ,ICN("video") , KABC::PhoneNumber::Voice,IS_ENABLED( KABC::PhoneNumber::Voice ));
115
model->addCategory(i18n("Fax") ,ICN("call") , KABC::PhoneNumber::Fax ,IS_ENABLED( KABC::PhoneNumber::Fax ));
116
model->addCategory(i18n("Cell") ,ICN("mobile") , KABC::PhoneNumber::Cell ,IS_ENABLED( KABC::PhoneNumber::Cell ));
117
model->addCategory(i18n("Video") ,ICN("call") , KABC::PhoneNumber::Video,IS_ENABLED( KABC::PhoneNumber::Video ));
118
model->addCategory(i18n("Bbs") ,ICN("call") , KABC::PhoneNumber::Bbs ,IS_ENABLED( KABC::PhoneNumber::Bbs ));
119
model->addCategory(i18n("Modem") ,ICN("call") , KABC::PhoneNumber::Modem,IS_ENABLED( KABC::PhoneNumber::Modem ));
120
model->addCategory(i18n("Car") ,ICN("car") , KABC::PhoneNumber::Car ,IS_ENABLED( KABC::PhoneNumber::Car ));
121
model->addCategory(i18n("Isdn") ,ICN("call") , KABC::PhoneNumber::Isdn ,IS_ENABLED( KABC::PhoneNumber::Isdn ));
122
model->addCategory(i18n("Pcs") ,ICN("call") , KABC::PhoneNumber::Pcs ,IS_ENABLED( KABC::PhoneNumber::Pcs ));
123
model->addCategory(i18n("Pager") ,ICN("pager") , KABC::PhoneNumber::Pager,IS_ENABLED( KABC::PhoneNumber::Pager ));
124
model->addCategory(i18n("Preferred"),ICN("preferred"), 10000 ,IS_ENABLED( 10000 ));
119
126
#undef IS_ENABLED
138
145
static bool init = false;
140
Call::setContactBackend(AkonadiBackend::instance());
148
//Start the Akonadi collection backend (contact loader)
149
AkonadiContactCollectionModel::instance();
150
HistoryModel::instance()->addBackend(new MinimalHistoryBackend(this),LoadOptions::FORCE_ENABLED);
152
// Import all calls from the legacy backend
153
if (ConfigurationSkeleton::requireLegacyHistoryImport()) {
154
HistoryModel::instance()->addBackend(new LegacyHistoryBackend(this),LoadOptions::FORCE_ENABLED);
155
ConfigurationSkeleton::setRequireLegacyHistoryImport(false);
157
//In case the client is not quitted correctly, save now
158
ConfigurationSkeleton::self()->writeConfig();
141
160
NumberCategoryModel::instance()->setVisitor(new ConcreteNumberCategoryVisitor());
161
ItemModelStateSerializationVisitor::setInstance(new ItemModelStateSerialization());
162
ContactModel::instance()->backendModel()->load();
142
163
InstantMessagingModelManager::init();
143
164
AccountListModel::instance()->setDefaultAccount(AccountListModel::instance()->getAccountById(ConfigurationSkeleton::defaultAccountId()));
144
165
#ifdef ENABLE_VIDEO
145
166
VideoModel::instance();
170
PresenceItemBackendModelExtension* ext = new PresenceItemBackendModelExtension(this);
171
ContactModel::instance()->backendModel()->addExtension(ext);
150
174
//Belong to setupActions(), but is needed now
187
211
m_pTrayIcon = new SFLPhoneTray ( this->windowIcon(), this );
189
addDockWidget( Qt::TopDockWidgetArea, m_pCentralDW );
190
addDockWidget( Qt::TopDockWidgetArea, m_pContactCD );
191
addDockWidget( Qt::TopDockWidgetArea, m_pHistoryDW );
192
addDockWidget( Qt::TopDockWidgetArea, m_pBookmarkDW );
213
addDockWidget( Qt::BottomDockWidgetArea, m_pCentralDW );
214
addDockWidget( Qt::BottomDockWidgetArea, m_pContactCD );
215
addDockWidget( Qt::BottomDockWidgetArea, m_pHistoryDW );
216
addDockWidget( Qt::BottomDockWidgetArea, m_pBookmarkDW );
194
218
tabifyDockWidget(m_pCentralDW,m_pHistoryDW );
195
219
tabifyDockWidget(m_pCentralDW,m_pContactCD );
263
287
m_pPresent = new QToolButton(bar);
264
288
m_pPresent->setAutoRaise(true);
265
m_pPresent->setText("Online");
289
m_pPresent->setText(i18nc("The presence state is \"Online\"","Online"));
266
290
m_pPresent->setCheckable(true);
291
m_pPresent->setVisible(AccountListModel::instance()->isPresenceEnabled() && AccountListModel::instance()->isPresencePublishSupported());
267
292
// m_pPresent->setStyleSheet("background-color:red;");
268
293
bar->addWidget(m_pPresent);
269
294
connect(PresenceStatusModel::instance(),SIGNAL(currentNameChanged(QString)),this,SLOT(updatePresence(QString)));
270
295
connect(PresenceStatusModel::instance(),SIGNAL(currentNameChanged(QString)),this,SLOT(hidePresenceDock()));
296
connect(AccountListModel::instance(),SIGNAL(presenceEnabledChanged(bool)),this,SLOT(slotPresenceEnabled(bool)));
272
298
m_pPresenceDock = new QDockWidget(this);
273
299
m_pPresenceDock->setObjectName("presence-dock");
274
300
m_pPresenceDock->setWidget(new Presence(m_pPresenceDock));
275
m_pPresenceDock->setAllowedAreas(Qt::BottomDockWidgetArea);
301
m_pPresenceDock->setAllowedAreas(Qt::TopDockWidgetArea);
276
302
m_pPresenceDock->setFeatures(QDockWidget::NoDockWidgetFeatures);
277
addDockWidget( Qt::BottomDockWidgetArea, m_pPresenceDock );
303
addDockWidget( Qt::TopDockWidgetArea, m_pPresenceDock );
278
304
m_pPresenceDock->setVisible(false);
279
305
if (m_pPresenceDock->titleBarWidget())
280
306
m_pPresenceDock->titleBarWidget()->setVisible(false);