~ubuntu-branches/ubuntu/wily/sflphone/wily

« back to all changes in this revision

Viewing changes to kde/src/sflphone.cpp

  • Committer: Package Import Robot
  • Author(s): Francois Marier, Francois Marier, Mark Purcell
  • Date: 2014-10-18 15:08:50 UTC
  • mfrom: (1.1.12)
  • mto: This revision was merged to the branch mainline in revision 29.
  • Revision ID: package-import@ubuntu.com-20141018150850-2exfk34ckb15pcwi
Tags: 1.4.1-0.1
[ Francois Marier ]
* Non-maintainer upload
* New upstream release (closes: #759576, #741130)
  - debian/rules +PJPROJECT_VERSION := 2.2.1
  - add upstream patch to fix broken TLS support
  - add patch to fix pjproject regression

[ Mark Purcell ]
* Build-Depends:
  - sflphone-daemon + libavformat-dev, libavcodec-dev, libswscale-dev,
  libavdevice-dev, libavutil-dev
  - sflphone-gnome + libclutter-gtk-1.0-dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
48
48
//sflphone library
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"
63
70
 
64
71
//sflphone
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                       ));
118
125
#undef ICN
119
126
#undef IS_ENABLED
120
127
   }
137
144
   }
138
145
   static bool init = false;
139
146
   if (!init) {
140
 
      Call::setContactBackend(AkonadiBackend::instance());
 
147
 
 
148
      //Start the Akonadi collection backend (contact loader)
 
149
      AkonadiContactCollectionModel::instance();
 
150
      HistoryModel::instance()->addBackend(new MinimalHistoryBackend(this),LoadOptions::FORCE_ENABLED);
 
151
 
 
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);
 
156
 
 
157
         //In case the client is not quitted correctly, save now
 
158
         ConfigurationSkeleton::self()->writeConfig();
 
159
      }
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();
146
167
      #endif
147
168
      init = true;
 
169
 
 
170
      PresenceItemBackendModelExtension* ext = new PresenceItemBackendModelExtension(this);
 
171
      ContactModel::instance()->backendModel()->addExtension(ext);
148
172
   }
149
173
 
150
174
   //Belong to setupActions(), but is needed now
161
185
   m_pCentralDW = new QDockWidget(this);
162
186
   m_pCentralDW->setSizePolicy  ( QSizePolicy::Expanding,QSizePolicy::Expanding );
163
187
   m_pCentralDW->setWidget      ( m_pView                                       );
164
 
   m_pCentralDW->setWindowTitle ( i18n("Call")                                  );
 
188
   m_pCentralDW->setWindowTitle ( i18nc("Call tab","Call")                                  );
165
189
   m_pCentralDW->setFeatures    ( QDockWidget::NoDockWidgetFeatures             );
166
190
   m_pView->setSizePolicy       ( QSizePolicy::Expanding,QSizePolicy::Expanding );
167
191
   m_pCentralDW->setStyleSheet  ( "\
186
210
   //System tray
187
211
   m_pTrayIcon        = new SFLPhoneTray ( this->windowIcon(), this );
188
212
 
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 );
193
217
 
194
218
   tabifyDockWidget(m_pCentralDW,m_pHistoryDW );
195
219
   tabifyDockWidget(m_pCentralDW,m_pContactCD );
243
267
 
244
268
   move(QCursor::pos().x() - geometry().width()/2, QCursor::pos().y() - geometry().height()/2);
245
269
 
246
 
   if (AccountListModel::instance()->size() <= 1)
 
270
   if (AccountListModel::instance()->size() <= 1 && ConfigurationSkeleton::displayAccountWizard())
247
271
      (new AccountWizard())->show();
248
272
 
249
273
   m_pInitialized = true ;
262
286
 
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)));
271
297
 
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);
336
362
   delete m_pPresent         ;
337
363
   delete m_pPresenceDock    ;
338
364
 
339
 
   delete AkonadiBackend::instance();
340
365
   delete CallModel::instance();
 
366
   delete ContactModel::instance();
341
367
   //saveState();
342
368
}
343
369
 
492
518
   }
493
519
}
494
520
 
 
521
///Hide or show the statusbar presence widget
 
522
void SFLPhone::slotPresenceEnabled(bool state)
 
523
{
 
524
   m_pPresent->setVisible(state && AccountListModel::instance()->isPresencePublishSupported());
 
525
}
 
526
 
495
527
///Change current account
496
528
void SFLPhone::currentAccountIndexChanged(int newIndex)
497
529
{
558
590
{
559
591
   if (!m_pVideoDW) {
560
592
      m_pVideoDW = new VideoDock(this);
 
593
      addDockWidget( Qt::TopDockWidgetArea, m_pVideoDW  );
 
594
      m_pVideoDW->setFloating(true);
561
595
   }
562
596
   m_pVideoDW->addRenderer(r);
563
597
   m_pVideoDW->show();