[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [sflphone-kde] src: [ #30839 ] Better handling of KeyExchnage categories
From:       Emmanuel Lepage Vallee <emmanuel.lepage () savoirfairelinux ! com>
Date:       2013-09-30 19:50:51
Message-ID: E1VQjUZ-0006P3-IV () scm ! kde ! org
[Download RAW message or body]

Git commit 255047f94652ea4fe87aa671f8c0d242068e571a by Emmanuel Lepage Vallee.
Committed on 30/09/2013 at 16:35.
Pushed by lepagevalleeemmanuel into branch 'master'.

[ #30839 ] Better handling of KeyExchnage categories

This helped discover a serious bug in security handling. It cannot
be explpoited because the feature is downright broken. Will be fixed
next.

M  +6    -6    src/accountwizard.cpp
M  +36   -33   src/conf/dlgaccounts.cpp
M  +0    -15   src/conf/dlgaccountsbase.ui
M  +2    -0    src/lib/CMakeLists.txt
M  +54   -51   src/lib/account.cpp
M  +36   -35   src/lib/account.h
M  +6    -6    src/lib/accountlistmodel.cpp
M  +1    -1    src/lib/call.cpp
A  +77   -0    src/lib/keyexchangemodel.cpp     [License: LGPL (v2.1+)]
A  +65   -0    src/lib/keyexchangemodel.h     [License: LGPL (v2.1+)]
M  +2    -2    src/lib/sflphone_const.h
M  +5    -5    src/sflphoneview.cpp
M  +2    -2    src/widgets/bookmarkdock.cpp

http://commits.kde.org/sflphone-kde/255047f94652ea4fe87aa671f8c0d242068e571a

diff --git a/src/accountwizard.cpp b/src/accountwizard.cpp
index b457eb5..63de55b 100644
--- a/src/accountwizard.cpp
+++ b/src/accountwizard.cpp
@@ -302,12 +302,12 @@ void AccountWizard::accept()
       }
 
       if(field(FIELD_ZRTP_ENABLED).toBool()) {
-         srtp_enabled          = QString( REGISTRATION_ENABLED_TRUE  );
-         key_exchange          = QString( ZRTP                       );
-         zrtp_display_sas      = QString( REGISTRATION_ENABLED_TRUE  );
-         zrtp_not_supp_warning = QString( REGISTRATION_ENABLED_TRUE  );
-         zrtp_hello_hash       = QString( REGISTRATION_ENABLED_TRUE  );
-         display_sas_once      = QString( REGISTRATION_ENABLED_FALSE );
+         srtp_enabled          = QString( REGISTRATION_ENABLED_TRUE       );
+         key_exchange          = QString( KeyExchangeModel::Name::ZRTP );
+         zrtp_display_sas      = QString( REGISTRATION_ENABLED_TRUE       );
+         zrtp_not_supp_warning = QString( REGISTRATION_ENABLED_TRUE       );
+         zrtp_hello_hash       = QString( REGISTRATION_ENABLED_TRUE       );
+         display_sas_once      = QString( REGISTRATION_ENABLED_FALSE      );
       }
 
       QStringList ifaceList = configurationManager.getAllIpInterface();
diff --git a/src/conf/dlgaccounts.cpp b/src/conf/dlgaccounts.cpp
index a2ab4ad..ce72f36 100644
--- a/src/conf/dlgaccounts.cpp
+++ b/src/conf/dlgaccounts.cpp
@@ -42,6 +42,7 @@
 #include "lib/credentialmodel.h"
 #include "lib/audiocodecmodel.h"
 #include "lib/accountlistmodel.h"
+#include "lib/keyexchangemodel.h"
 
 //OS
 #ifdef Q_WS_WIN // MS Windows version
@@ -80,6 +81,8 @@ DlgAccounts::DlgAccounts(KConfigDialog* parent)
    loadAccountList();
    accountListHasChanged = false;
 
+   combo_security_STRP->setModel(KeyExchangeModel::instance());
+
    //SLOTS
    //                     SENDER                            SIGNAL                       RECEIVER        \
SLOT                          /  /**/connect(edit1_alias,                       \
SIGNAL(textEdited(QString))            , this   , SLOT(changedAccountList())              ); @@ -194,24 \
+197,24 @@ void DlgAccounts::saveAccount(QModelIndex item)  return;
    }
    m_IsLoading++;
-   
+
    if (!m_pProxyCK->isChecked()) {
       m_pProxyLE->setText("");
    }
-   
+
    QString protocolsTab[] = ACCOUNT_TYPES_TAB;
-   
+
    //ACCOUNT DETAILS
    //                                                                     WIDGET VALUE                   \
                /
-   /**/account->setAccountType                 ( protocolsTab[edit2_protocol->currentIndex()]            \
); +   /**/account->setType                        ( protocolsTab[edit2_protocol->currentIndex()]         \
);  /**/account->setAlias                       ( edit1_alias->text()                                     \
);  /**/account->setHostname                    ( edit3_server->text()                                    \
);  /**/account->setUsername                    ( edit4_user->text()                                      \
                );
-   /**/account->setAccountPassword             ( edit5_password->text()                                  \
); +   /**/account->setPassword                    ( edit5_password->text()                               \
);  /**/account->setMailbox                     ( edit6_mailbox->text()                                   \
);  /**/account->setProxy                       ( m_pProxyLE->text()                                      \
);  /**/account->setEnabled                     ( item.data(Qt::CheckStateRole).toBool()                  \
                );
-   /**/account->setAccountRegistrationExpire   ( spinbox_regExpire->value()                              \
); +   /**/account->setRegistrationExpire          ( spinbox_regExpire->value()                           \
);  /**/                                                                                                  \
/**/  /*                                            Security                                              \
*/  /**/account->setTlsPassword                 ( edit_tls_private_key_password->text()                   \
); @@ -219,7 +222,7 @@ void DlgAccounts::saveAccount(QModelIndex item)
    /**/account->setTlsCaListFile               ( file_tls_authority->text()                              \
);  /**/account->setTlsCertificateFile          ( file_tls_endpoint->text()                               \
);  /**/account->setTlsPrivateKeyFile           ( file_tls_private_key->text()                            \
                );
-   /**/account->setTlsMethod                   ( combo_tls_method->currentIndex()                        \
); +   /**/account->setTlsMethod                   ( \
static_cast<KeyExchangeModel::Type>(combo_tls_method->currentIndex())   );  /**/account->setTlsCiphers    \
( edit_tls_cipher->text()                                                  );  \
/**/account->setTlsServerName               ( edit_tls_outgoing->text()                                   \
);  /**/account->setTlsNegotiationTimeoutSec    ( spinbox_tls_timeout_sec->value()                        \
); @@ -229,14 +232,14 @@ void DlgAccounts::saveAccount(QModelIndex item)
    /**/account->setTlsVerifyClient             ( check_tls_answer->isChecked()                           \
);  /**/account->setTlsRequireClientCertificate ( check_tls_requier_cert->isChecked()                     \
);  /**/account->setTlsEnable                   ( group_security_tls->isChecked()                         \
                );
-   /**/account->setAccountDisplaySasOnce       ( checkbox_ZRTP_Ask_user->isChecked()                     \
                );
-   /**/account->setAccountSrtpRtpFallback      ( checkbox_SDES_fallback_rtp->isChecked()                 \
                );
-   /**/account->setAccountZrtpDisplaySas       ( checkbox_ZRTP_display_SAS->isChecked()                  \
                );
-   /**/account->setAccountZrtpNotSuppWarning   ( checkbox_ZRTP_warn_supported->isChecked()               \
                );
-   /**/account->setAccountZrtpHelloHash        ( checkbox_ZTRP_send_hello->isChecked()                   \
                );
-   /**/account->setAccountSipStunEnabled       ( checkbox_stun->isChecked()                              \
); +   /**/account->setDisplaySasOnce              ( checkbox_ZRTP_Ask_user->isChecked()                  \
); +   /**/account->setSrtpRtpFallback             ( checkbox_SDES_fallback_rtp->isChecked()              \
); +   /**/account->setZrtpDisplaySas              ( checkbox_ZRTP_display_SAS->isChecked()               \
); +   /**/account->setZrtpNotSuppWarning          ( checkbox_ZRTP_warn_supported->isChecked()            \
); +   /**/account->setZrtpHelloHash               ( checkbox_ZTRP_send_hello->isChecked()                \
); +   /**/account->setSipStunEnabled              ( checkbox_stun->isChecked()                           \
);  /**/account->setPublishedSameAsLocal        ( radioButton_pa_same_as_local->isChecked()               \
                );
-   /**/account->setAccountSipStunServer        ( line_stun->text()                                       \
); +   /**/account->setSipStunServer               ( line_stun->text()                                    \
);  /**/account->setPublishedPort               ( spinBox_pa_published_port->value()                      \
);  /**/account->setPublishedAddress            ( lineEdit_pa_published_address ->text()                  \
);  /**/account->setLocalPort                   ( spinBox_pa_published_port->value()                      \
); @@ -299,8 +302,8 @@ void DlgAccounts::loadAccount(QModelIndex item)
       protocolsList->append(protocolsTab[i]);
    }
 
-   const QString accountName = account->accountType();
-   int protocolIndex = protocolsList->indexOf(accountName);
+   const QString accountType = account->type();
+   const int protocolIndex = protocolsList->indexOf(accountType);
    delete protocolsList;
 
 
@@ -317,21 +320,21 @@ void DlgAccounts::loadAccount(QModelIndex item)
    connect(account,SIGNAL(aliasChanged(QString)),this,SLOT(aliasChanged(QString)));
 
    switch (account->tlsMethod()) {
-      case 0: //KEY_EXCHANGE_NONE
+      case KeyExchangeModel::Type::NONE:
          checkbox_SDES_fallback_rtp->setVisible   ( false );
          checkbox_ZRTP_Ask_user->setVisible       ( false );
          checkbox_ZRTP_display_SAS->setVisible    ( false );
          checkbox_ZRTP_warn_supported->setVisible ( false );
          checkbox_ZTRP_send_hello->setVisible     ( false );
          break;
-      case 1: //ZRTP
+      case KeyExchangeModel::Type::ZRTP:
          checkbox_SDES_fallback_rtp->setVisible   ( false );
          checkbox_ZRTP_Ask_user->setVisible       ( true  );
          checkbox_ZRTP_display_SAS->setVisible    ( true  );
          checkbox_ZRTP_warn_supported->setVisible ( true  );
          checkbox_ZTRP_send_hello->setVisible     ( true  );
          break;
-      case 2: //SDES
+      case KeyExchangeModel::Type::SDES:
          checkbox_SDES_fallback_rtp->setVisible   ( true  );
          checkbox_ZRTP_Ask_user->setVisible       ( false );
          checkbox_ZRTP_display_SAS->setVisible    ( false );
@@ -346,14 +349,14 @@ void DlgAccounts::loadAccount(QModelIndex item)
    /**/edit4_user->setText                      (  account->username                       ());
    /**/edit6_mailbox->setText                   (  account->mailbox                        ());
    /**/m_pProxyLE->setText                      (  account->proxy                          ());
-   /**/checkbox_ZRTP_Ask_user->setChecked       (  account->isAccountDisplaySasOnce        ());
-   /**/checkbox_SDES_fallback_rtp->setChecked   (  account->isAccountSrtpRtpFallback       ());
-   /**/checkbox_ZRTP_display_SAS->setChecked    (  account->isAccountZrtpDisplaySas        ());
-   /**/checkbox_ZRTP_warn_supported->setChecked (  account->isAccountZrtpNotSuppWarning    ());
-   /**/checkbox_ZTRP_send_hello->setChecked     (  account->isAccountZrtpHelloHash         ());
-   /**/checkbox_stun->setChecked                (  account->isAccountSipStunEnabled        ());
-   /**/line_stun->setText                       (  account->accountSipStunServer           ());
-   /**/spinbox_regExpire->setValue              (  account->accountRegistrationExpire      ());
+   /**/checkbox_ZRTP_Ask_user->setChecked       (  account->isDisplaySasOnce               ());
+   /**/checkbox_SDES_fallback_rtp->setChecked   (  account->isSrtpRtpFallback              ());
+   /**/checkbox_ZRTP_display_SAS->setChecked    (  account->isZrtpDisplaySas               ());
+   /**/checkbox_ZRTP_warn_supported->setChecked (  account->isZrtpNotSuppWarning           ());
+   /**/checkbox_ZTRP_send_hello->setChecked     (  account->isZrtpHelloHash                ());
+   /**/checkbox_stun->setChecked                (  account->isSipStunEnabled               ());
+   /**/line_stun->setText                       (  account->sipStunServer                  ());
+   /**/spinbox_regExpire->setValue              (  account->registrationExpire             ());
    /**/radioButton_pa_same_as_local->setChecked (  account->isPublishedSameAsLocal         ());
    /**/radioButton_pa_custom->setChecked        ( !account->isPublishedSameAsLocal         ());
    /**/lineEdit_pa_published_address->setText   (  account->publishedAddress               ());
@@ -372,8 +375,8 @@ void DlgAccounts::loadAccount(QModelIndex item)
    /**/check_tls_answer->setChecked             (  account->isTlsVerifyClient              ());
    /**/check_tls_requier_cert->setChecked       (  account->isTlsRequireClientCertificate  ());
    /**/group_security_tls->setChecked           (  account->isTlsEnable                    ());
-   /**/combo_security_STRP->setCurrentIndex     (  account->tlsMethod                      ());
    /**/m_pAutoAnswer->setChecked                (  account->isAutoAnswer                   ());
+   /**/combo_security_STRP->setCurrentIndex     (  \
KeyExchangeModel::instance()->toIndex(account->tlsMethod()).row());  /*                                   \
*/  
    m_pDTMFOverRTP->setChecked(account->DTMFType()==DtmfType::OverRtp);
@@ -435,7 +438,7 @@ void DlgAccounts::loadAccount(QModelIndex item)
    m_pRingTonePath->setUrl( ringtonePath );
 
 
-   combo_tls_method->setCurrentIndex( account->tlsMethod() );
+   combo_tls_method->setCurrentIndex( KeyExchangeModel::instance()->toIndex(account->tlsMethod()).row() \
);  ConfigurationManagerInterface& configurationManager = DBus::ConfigurationManager::instance();
 
    m_pRingtoneListLW->clear();
@@ -480,8 +483,8 @@ void DlgAccounts::loadAccount(QModelIndex item)
       comboBox_ni_local_address->setCurrentIndex(0);
 
    if(protocolIndex == 0 || account->isNew()) { // if sip selected
-      checkbox_stun->setChecked(account->isAccountSipStunEnabled());
-      line_stun->setText( account->accountSipStunServer() );
+      checkbox_stun->setChecked(account->isSipStunEnabled());
+      line_stun->setText( account->sipStunServer() );
       //checkbox_zrtp->setChecked(account->accountDetail(ACCOUNT_SRTP_ENABLED) == \
REGISTRATION_ENABLED_TRUE);  
       tab_advanced->                setEnabled ( true                       );
@@ -492,7 +495,7 @@ void DlgAccounts::loadAccount(QModelIndex item)
    else {
       checkbox_stun->setChecked(false);
       tab_advanced->setEnabled (false);
-      line_stun->setText( account->accountSipStunServer() );
+      line_stun->setText( account->sipStunServer() );
       //checkbox_zrtp->setChecked(false);
    }
 
@@ -719,7 +722,7 @@ void DlgAccounts::updateStatusLabel(Account* account)
 {
    if(!account || AccountListModel::instance()->getAccountByModelIndex(listView_accountList->currentIndex()) \
!= account)  return;
-   const QString status = account->accountRegistrationStatus();
+   const QString status = account->registrationStatus();
    edit7_state->setText( "<FONT COLOR=\"" + account->stateColorName() + "\">" + status + "</FONT>" );
 }
 
diff --git a/src/conf/dlgaccountsbase.ui b/src/conf/dlgaccountsbase.ui
index 22541b0..3206bbf 100644
--- a/src/conf/dlgaccountsbase.ui
+++ b/src/conf/dlgaccountsbase.ui
@@ -1322,21 +1322,6 @@
                      <verstretch>0</verstretch>
                     </sizepolicy>
                    </property>
-                   <item>
-                    <property name="text">
-                     <string comment="Disabled security">Disabled</string>
-                    </property>
-                   </item>
-                   <item>
-                    <property name="text">
-                     <string>ZRTP</string>
-                    </property>
-                   </item>
-                   <item>
-                    <property name="text">
-                     <string>SDES</string>
-                    </property>
-                   </item>
                   </widget>
                  </item>
                  <item>
diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt
index 465d437..6447521 100644
--- a/src/lib/CMakeLists.txt
+++ b/src/lib/CMakeLists.txt
@@ -65,6 +65,7 @@ set( qtsflphone_LIB_SRCS
   phonedirectorymodel.cpp
   historytimecategorymodel.cpp
   numbercategorymodel.cpp
+  keyexchangemodel.cpp
 
   #Communication
   dbus/configurationmanager.cpp
@@ -106,6 +107,7 @@ set( qtsflphone_LIB_HDRS
   historytimecategorymodel.h
   numbercategorymodel.h
   videocodec.h
+  keyexchangemodel.h
 )
 
 set( qtsflphone_extra_LIB_HDRS
diff --git a/src/lib/account.cpp b/src/lib/account.cpp
index ea70795..3c2f8a1 100644
--- a/src/lib/account.cpp
+++ b/src/lib/account.cpp
@@ -233,9 +233,9 @@ QModelIndex Account::index()
 ///Return status color name
 QString Account::stateColorName() const
 {
-   if(accountRegistrationStatus() == Account::State::UNREGISTERED)
+   if(registrationStatus() == Account::State::UNREGISTERED)
       return "black";
-   if(accountRegistrationStatus() == Account::State::REGISTERED || accountRegistrationStatus() == \
Account::State::READY) +   if(registrationStatus() == Account::State::REGISTERED || registrationStatus() \
== Account::State::READY)  return "darkGreen";
    return "red";
 }
@@ -318,49 +318,49 @@ QString Account::proxy() const
 }
 
 ///
-bool Account::isAccountDisplaySasOnce() const
+bool Account::isDisplaySasOnce() const
 { 
    return (accountDetail(ACCOUNT_DISPLAY_SAS_ONCE)  == "true")?1:0 ;
 }
 
 ///Return the account security fallback
-bool Account::isAccountSrtpRtpFallback() const
+bool Account::isSrtpRtpFallback() const
 {
    return (accountDetail(ACCOUNT_SRTP_RTP_FALLBACK)  == "true")?1:0 ;
 }
 
 ///
-bool Account::isAccountZrtpDisplaySas         () const
+bool Account::isZrtpDisplaySas         () const
 {
    return (accountDetail(ACCOUNT_ZRTP_DISPLAY_SAS)  == "true")?1:0 ;
 }
 
 ///Return if the other side support warning
-bool Account::isAccountZrtpNotSuppWarning() const
+bool Account::isZrtpNotSuppWarning() const
 {
    return (accountDetail(ACCOUNT_ZRTP_NOT_SUPP_WARNING) == "true")?1:0 ;
 }
 
 ///
-bool Account::isAccountZrtpHelloHash() const
+bool Account::isZrtpHelloHash() const
 {
    return (accountDetail(ACCOUNT_ZRTP_HELLO_HASH)  == "true")?1:0 ;
 }
 
 ///Return if the account is using a STUN server
-bool Account::isAccountSipStunEnabled() const
+bool Account::isSipStunEnabled() const
 {
    return (accountDetail(ACCOUNT_SIP_STUN_ENABLED)  == "true")?1:0 ;
 }
 
 ///Return the account STUN server
-QString Account::accountSipStunServer() const
+QString Account::sipStunServer() const
 {
    return accountDetail(ACCOUNT_SIP_STUN_SERVER);
 }
 
 ///Return when the account expire (require renewal)
-int Account::accountRegistrationExpire() const
+int Account::registrationExpire() const
 {
    return accountDetail(Account::MapField::Registration::EXPIRE).toInt();
 }
@@ -462,9 +462,10 @@ bool Account::isTlsEnable() const
 }
 
 ///Return the account the TLS encryption method
-int Account::tlsMethod() const
+KeyExchangeModel::Type Account::tlsMethod() const
 {
-   return accountDetail(TLS_METHOD).toInt();
+   const int value = accountDetail(TLS_METHOD).toInt();
+   return value<=2?static_cast<KeyExchangeModel::Type>(value):KeyExchangeModel::Type::NONE;
 }
 
 ///Return if the ringtone are enabled
@@ -492,13 +493,13 @@ QString Account::localInterface() const
 }
 
 ///Return the account registration status
-QString Account::accountRegistrationStatus() const
+QString Account::registrationStatus() const
 {
    return accountDetail(Account::MapField::Registration::STATUS);
 }
 
 ///Return the account type
-QString Account::accountType() const
+QString Account::type() const
 {
    return accountDetail(Account::MapField::TYPE);
 }
@@ -527,7 +528,7 @@ QVariant Account::roleData(int role) const
       case Account::Role::Alias:
          return alias();
       case Account::Role::Type:
-         return accountType();
+         return type();
       case Account::Role::Hostname:
          return hostname();
       case Account::Role::Username:
@@ -551,7 +552,7 @@ QVariant Account::roleData(int role) const
       case Account::Role::TlsServerName:
          return tlsServerName();
       case Account::Role::SipStunServer:
-         return accountSipStunServer();
+         return sipStunServer();
       case Account::Role::PublishedAddress:
          return publishedAddress();
       case Account::Role::LocalInterface:
@@ -559,9 +560,9 @@ QVariant Account::roleData(int role) const
       case Account::Role::RingtonePath:
          return ringtonePath();
       case Account::Role::TlsMethod:
-         return tlsMethod();
-      case Account::Role::AccountRegistrationExpire:
-         return accountRegistrationExpire();
+         return static_cast<int>(tlsMethod());
+      case Account::Role::RegistrationExpire:
+         return registrationExpire();
       case Account::Role::TlsNegotiationTimeoutSec:
          return tlsNegotiationTimeoutSec();
       case Account::Role::TlsNegotiationTimeoutMsec:
@@ -585,17 +586,17 @@ QVariant Account::roleData(int role) const
       case Account::Role::TlsEnable:
          return isTlsEnable();
       case Account::Role::DisplaySasOnce:
-         return isAccountDisplaySasOnce();
+         return isDisplaySasOnce();
       case Account::Role::SrtpRtpFallback:
-         return isAccountSrtpRtpFallback();
+         return isSrtpRtpFallback();
       case Account::Role::ZrtpDisplaySas:
-         return isAccountZrtpDisplaySas();
+         return isZrtpDisplaySas();
       case Account::Role::ZrtpNotSuppWarning:
-         return isAccountZrtpNotSuppWarning();
+         return isZrtpNotSuppWarning();
       case Account::Role::ZrtpHelloHash:
-         return isAccountZrtpHelloHash();
+         return isZrtpHelloHash();
       case Account::Role::SipStunEnabled:
-         return isAccountSipStunEnabled();
+         return isSipStunEnabled();
       case Account::Role::PublishedSameAsLocal:
          return isPublishedSameAsLocal();
       case Account::Role::RingtoneEnabled:
@@ -610,7 +611,7 @@ QVariant Account::roleData(int role) const
          return var;
       }
       case Account::Role::TypeName:
-         return accountType();
+         return type();
       case Account::Role::PresenceStatus:
          return PresenceStatusModel::instance()->currentStatus();
       case Account::Role::PresenceMessage:
@@ -668,7 +669,7 @@ void Account::setId(const QString& id)
 }
 
 ///Set the account type, SIP or IAX
-void Account::setAccountType(const QString& detail)
+void Account::setType(const QString& detail)
 {
    setAccountDetail(Account::MapField::TYPE ,detail);
 }
@@ -701,7 +702,7 @@ void Account::setProxy(const QString& detail)
 }
 
 ///Set the main credential password
-void Account::setAccountPassword(const QString& detail)
+void Account::setPassword(const QString& detail)
 {
    setAccountDetail(Account::MapField::PASSWORD, detail);
 }
@@ -743,7 +744,7 @@ void Account::setTlsServerName(const QString& detail)
 }
 
 ///Set the stun server
-void Account::setAccountSipStunServer(const QString& detail)
+void Account::setSipStunServer(const QString& detail)
 {
    setAccountDetail(ACCOUNT_SIP_STUN_SERVER, detail);
 }
@@ -767,13 +768,13 @@ void Account::setRingtonePath(const QString& detail)
 }
 
 ///Set the Tls method
-void Account::setTlsMethod(int detail)
+void Account::setTlsMethod(KeyExchangeModel::Type detail)
 {
-   setAccountDetail(TLS_METHOD ,QString::number(detail));
+   setAccountDetail(TLS_METHOD ,QString::number(static_cast<int>(detail)));
 }
 
 ///Set the account timeout, it will be renegotiated when that timeout occur
-void Account::setAccountRegistrationExpire(int detail)
+void Account::setRegistrationExpire(int detail)
 {
    setAccountDetail(Account::MapField::Registration::EXPIRE, QString::number(detail));
 }
@@ -844,32 +845,32 @@ void Account::setTlsEnable(bool detail)
    setAccountDetail(TLS_ENABLE ,detail?"true":"false");
 }
 
-void Account::setAccountDisplaySasOnce(bool detail)
+void Account::setDisplaySasOnce(bool detail)
 {
    setAccountDetail(ACCOUNT_DISPLAY_SAS_ONCE, detail?"true":"false");
 }
 
-void Account::setAccountSrtpRtpFallback(bool detail)
+void Account::setSrtpRtpFallback(bool detail)
 {
    setAccountDetail(ACCOUNT_SRTP_RTP_FALLBACK, detail?"true":"false");
 }
 
-void Account::setAccountZrtpDisplaySas(bool detail)
+void Account::setZrtpDisplaySas(bool detail)
 {
    setAccountDetail(ACCOUNT_ZRTP_DISPLAY_SAS, detail?"true":"false");
 }
 
-void Account::setAccountZrtpNotSuppWarning(bool detail)
+void Account::setZrtpNotSuppWarning(bool detail)
 {
    setAccountDetail(ACCOUNT_ZRTP_NOT_SUPP_WARNING, detail?"true":"false");
 }
 
-void Account::setAccountZrtpHelloHash(bool detail)
+void Account::setZrtpHelloHash(bool detail)
 {
    setAccountDetail(ACCOUNT_ZRTP_HELLO_HASH, detail?"true":"false");
 }
 
-void Account::setAccountSipStunEnabled(bool detail)
+void Account::setSipStunEnabled(bool detail)
 {
    setAccountDetail(ACCOUNT_SIP_STUN_ENABLED, detail?"true":"false");
 }
@@ -897,7 +898,7 @@ void Account::setRoleData(int role, const QVariant& value)
       case Account::Role::Alias:
          setAlias(value.toString());
       case Account::Role::Type:
-         setAccountType(value.toString());
+         setType(value.toString());
       case Account::Role::Hostname:
          setHostname(value.toString());
       case Account::Role::Username:
@@ -921,17 +922,19 @@ void Account::setRoleData(int role, const QVariant& value)
       case Account::Role::TlsServerName:
          setTlsServerName(value.toString());
       case Account::Role::SipStunServer:
-         setAccountSipStunServer(value.toString());
+         setSipStunServer(value.toString());
       case Account::Role::PublishedAddress:
          setPublishedAddress(value.toString());
       case Account::Role::LocalInterface:
          setLocalInterface(value.toString());
       case Account::Role::RingtonePath:
          setRingtonePath(value.toString());
-      case Account::Role::TlsMethod:
-         setTlsMethod(value.toInt());
-      case Account::Role::AccountRegistrationExpire:
-         setAccountRegistrationExpire(value.toInt());
+      case Account::Role::TlsMethod: {
+         const int method = value.toInt();
+         setTlsMethod(method<=2?static_cast<KeyExchangeModel::Type>(method):KeyExchangeModel::Type::NONE);
 +      }
+      case Account::Role::RegistrationExpire:
+         setRegistrationExpire(value.toInt());
       case Account::Role::TlsNegotiationTimeoutSec:
          setTlsNegotiationTimeoutSec(value.toInt());
       case Account::Role::TlsNegotiationTimeoutMsec:
@@ -955,17 +958,17 @@ void Account::setRoleData(int role, const QVariant& value)
       case Account::Role::TlsEnable:
          setTlsEnable(value.toBool());
       case Account::Role::DisplaySasOnce:
-         setAccountDisplaySasOnce(value.toBool());
+         setDisplaySasOnce(value.toBool());
       case Account::Role::SrtpRtpFallback:
-         setAccountSrtpRtpFallback(value.toBool());
+         setSrtpRtpFallback(value.toBool());
       case Account::Role::ZrtpDisplaySas:
-         setAccountZrtpDisplaySas(value.toBool());
+         setZrtpDisplaySas(value.toBool());
       case Account::Role::ZrtpNotSuppWarning:
-         setAccountZrtpNotSuppWarning(value.toBool());
+         setZrtpNotSuppWarning(value.toBool());
       case Account::Role::ZrtpHelloHash:
-         setAccountZrtpHelloHash(value.toBool());
+         setZrtpHelloHash(value.toBool());
       case Account::Role::SipStunEnabled:
-         setAccountSipStunEnabled(value.toBool());
+         setSipStunEnabled(value.toBool());
       case Account::Role::PublishedSameAsLocal:
          setPublishedSameAsLocal(value.toBool());
       case Account::Role::RingtoneEnabled:
@@ -1005,7 +1008,7 @@ bool Account::updateState()
       ConfigurationManagerInterface & configurationManager = DBus::ConfigurationManager::instance();
       const MapStringString details       = configurationManager.getAccountDetails(id()).value();
       const QString         status        = details[Account::MapField::Registration::STATUS];
-      const QString         currentStatus = accountRegistrationStatus();
+      const QString         currentStatus = registrationStatus();
       setAccountDetail(Account::MapField::Registration::STATUS, status); //Update -internal- object \
state  return status == currentStatus;
    }
diff --git a/src/lib/account.h b/src/lib/account.h
index d83c0d3..63331c6 100644
--- a/src/lib/account.h
+++ b/src/lib/account.h
@@ -27,6 +27,7 @@ class QString;
 
 //SFLPhone
 #include "videocodecmodel.h"
+#include "keyexchangemodel.h"
 #include "sflphone_const.h"
 #include "typedefs.h"
 // #include "dbus/metatypes.h"
@@ -54,7 +55,7 @@ class LIB_EXPORT Account : public QObject {
 
    //Properties
    Q_PROPERTY(QString        alias                        READ alias                         WRITE \
                setAlias                       )
-   Q_PROPERTY(QString        type                         READ accountType                   WRITE \
setAccountType                 ) +   Q_PROPERTY(QString        type                         READ type     \
WRITE setType                        )  Q_PROPERTY(QString        hostname                     READ \
hostname                      WRITE setHostname                    )  Q_PROPERTY(QString        username  \
READ username                      WRITE setUsername                    )  Q_PROPERTY(QString        \
mailbox                      READ mailbox                       WRITE setMailbox                     ) @@ \
-65,12 +66,12 @@ class LIB_EXPORT Account : public QObject {  Q_PROPERTY(QString        tlsPrivateKeyFile \
READ tlsPrivateKeyFile             WRITE setTlsPrivateKeyFile           )  Q_PROPERTY(QString        \
tlsCiphers                   READ tlsCiphers                    WRITE setTlsCiphers                  )  \
Q_PROPERTY(QString        tlsServerName                READ tlsServerName                 WRITE \
                setTlsServerName               )
-   Q_PROPERTY(QString        sipStunServer                READ accountSipStunServer          WRITE \
setAccountSipStunServer        ) +   Q_PROPERTY(QString        sipStunServer                READ \
sipStunServer                 WRITE setSipStunServer               )  Q_PROPERTY(QString        \
publishedAddress             READ publishedAddress              WRITE setPublishedAddress            )  \
Q_PROPERTY(QString        localInterface               READ localInterface                WRITE \
setLocalInterface              )  Q_PROPERTY(QString        ringtonePath                 READ \
                ringtonePath                  WRITE setRingtonePath                )
-   Q_PROPERTY(int            tlsMethod                    READ tlsMethod                     WRITE \
                setTlsMethod                   )
-   Q_PROPERTY(int            accountRegistrationExpire    READ accountRegistrationExpire     WRITE \
setAccountRegistrationExpire   ) +   Q_PROPERTY(KeyExchangeModel::Type tlsMethod         READ tlsMethod   \
WRITE setTlsMethod                   ) +   Q_PROPERTY(int            registrationExpire           READ \
registrationExpire            WRITE setRegistrationExpire   )  Q_PROPERTY(int            \
tlsNegotiationTimeoutSec     READ tlsNegotiationTimeoutSec      WRITE setTlsNegotiationTimeoutSec    )  \
Q_PROPERTY(int            tlsNegotiationTimeoutMsec    READ tlsNegotiationTimeoutMsec     WRITE \
setTlsNegotiationTimeoutMsec   )  Q_PROPERTY(int            localPort                    READ localPort   \
WRITE setLocalPort                   ) @@ -82,16 +83,16 @@ class LIB_EXPORT Account : public QObject {
    Q_PROPERTY(bool           tlsVerifyClient              READ isTlsVerifyClient             WRITE \
setTlsVerifyClient             )  Q_PROPERTY(bool           tlsRequireClientCertificate  READ \
isTlsRequireClientCertificate WRITE setTlsRequireClientCertificate )  Q_PROPERTY(bool           tlsEnable \
                READ isTlsEnable                   WRITE setTlsEnable                   )
-   Q_PROPERTY(bool           displaySasOnce               READ isAccountDisplaySasOnce       WRITE \
                setAccountDisplaySasOnce       )
-   Q_PROPERTY(bool           srtpRtpFallback              READ isAccountSrtpRtpFallback      WRITE \
                setAccountSrtpRtpFallback      )
-   Q_PROPERTY(bool           zrtpDisplaySas               READ isAccountZrtpDisplaySas       WRITE \
                setAccountZrtpDisplaySas       )
-   Q_PROPERTY(bool           zrtpNotSuppWarning           READ isAccountZrtpNotSuppWarning   WRITE \
                setAccountZrtpNotSuppWarning   )
-   Q_PROPERTY(bool           zrtpHelloHash                READ isAccountZrtpHelloHash        WRITE \
                setAccountZrtpHelloHash        )
-   Q_PROPERTY(bool           sipStunEnabled               READ isAccountSipStunEnabled       WRITE \
setAccountSipStunEnabled       ) +   Q_PROPERTY(bool           displaySasOnce               READ \
isDisplaySasOnce              WRITE setDisplaySasOnce              ) +   Q_PROPERTY(bool           \
srtpRtpFallback              READ isSrtpRtpFallback             WRITE setSrtpRtpFallback             ) +  \
Q_PROPERTY(bool           zrtpDisplaySas               READ isZrtpDisplaySas              WRITE \
setZrtpDisplaySas              ) +   Q_PROPERTY(bool           zrtpNotSuppWarning           READ \
isZrtpNotSuppWarning          WRITE setZrtpNotSuppWarning          ) +   Q_PROPERTY(bool           \
zrtpHelloHash                READ isZrtpHelloHash               WRITE setZrtpHelloHash               ) +  \
Q_PROPERTY(bool           sipStunEnabled               READ isSipStunEnabled              WRITE \
setSipStunEnabled              )  Q_PROPERTY(bool           publishedSameAsLocal         READ \
isPublishedSameAsLocal        WRITE setPublishedSameAsLocal        )  Q_PROPERTY(bool           \
ringtoneEnabled              READ isRingtoneEnabled             WRITE setRingtoneEnabled             )  \
Q_PROPERTY(DtmfType       dTMFType                     READ DTMFType                      WRITE \
                setDTMFType                    )
-   Q_PROPERTY(QString        typeName                     READ accountType                   WRITE \
setAccountType                 ) +   Q_PROPERTY(QString        typeName                     READ type     \
WRITE setType                        )  Q_PROPERTY(bool           presenceStatus               READ \
presenceStatus                                                     )  Q_PROPERTY(QString        \
presenceMessage              READ presenceMessage                                                    )  
@@ -154,7 +155,7 @@ class LIB_EXPORT Account : public QObject {
          LocalInterface              = 115,
          RingtonePath                = 116,
          TlsMethod                   = 117,
-         AccountRegistrationExpire   = 118,
+         RegistrationExpire   = 118,
          TlsNegotiationTimeoutSec    = 119,
          TlsNegotiationTimeoutMsec   = 120,
          LocalPort                   = 121,
@@ -248,14 +249,14 @@ class LIB_EXPORT Account : public QObject {
       QString username                     () const;
       QString mailbox                      () const;
       QString proxy                        () const;
-      bool    isAccountDisplaySasOnce      () const;
-      bool    isAccountSrtpRtpFallback     () const;
-      bool    isAccountZrtpDisplaySas      () const;
-      bool    isAccountZrtpNotSuppWarning  () const;
-      bool    isAccountZrtpHelloHash       () const;
-      bool    isAccountSipStunEnabled      () const;
-      QString accountSipStunServer         () const;
-      int     accountRegistrationExpire    () const;
+      bool    isDisplaySasOnce             () const;
+      bool    isSrtpRtpFallback            () const;
+      bool    isZrtpDisplaySas             () const;
+      bool    isZrtpNotSuppWarning         () const;
+      bool    isZrtpHelloHash              () const;
+      bool    isSipStunEnabled             () const;
+      QString sipStunServer                () const;
+      int     registrationExpire           () const;
       bool    isPublishedSameAsLocal       () const;
       QString publishedAddress             () const;
       int     publishedPort                () const;
@@ -272,39 +273,39 @@ class LIB_EXPORT Account : public QObject {
       bool    isTlsVerifyClient            () const;
       bool    isTlsRequireClientCertificate() const;
       bool    isTlsEnable                  () const;
-      int     tlsMethod                    () const;
       bool    isRingtoneEnabled            () const;
       QString ringtonePath                 () const;
       int     localPort                    () const;
       QString localInterface               () const;
-      QString accountRegistrationStatus    () const;
-      QString accountType                  () const;
+      QString registrationStatus           () const;
+      QString type                         () const;
       DtmfType DTMFType                    () const;
       bool    presenceStatus               () const;
       QString presenceMessage              () const;
+      KeyExchangeModel::Type tlsMethod  () const;
       QVariant roleData            (int role) const;
 
       //Setters
       void setId      (const QString& id);
       void setAlias                         (const QString& detail);
-      void setAccountType                   (const QString& detail);
+      void setType                          (const QString& detail);
       void setHostname                      (const QString& detail);
       void setUsername                      (const QString& detail);
       void setMailbox                       (const QString& detail);
       void setProxy                         (const QString& detail);
-      void setAccountPassword               (const QString& detail);
+      void setPassword                      (const QString& detail);
       void setTlsPassword                   (const QString& detail);
       void setTlsCaListFile                 (const QString& detail);
       void setTlsCertificateFile            (const QString& detail);
       void setTlsPrivateKeyFile             (const QString& detail);
       void setTlsCiphers                    (const QString& detail);
       void setTlsServerName                 (const QString& detail);
-      void setAccountSipStunServer          (const QString& detail);
+      void setSipStunServer                 (const QString& detail);
       void setPublishedAddress              (const QString& detail);
       void setLocalInterface                (const QString& detail);
       void setRingtonePath                  (const QString& detail);
-      void setTlsMethod                     (int  detail);
-      void setAccountRegistrationExpire     (int  detail);
+      void setTlsMethod                     (KeyExchangeModel::Type detail);
+      void setRegistrationExpire            (int  detail);
       void setTlsNegotiationTimeoutSec      (int  detail);
       void setTlsNegotiationTimeoutMsec     (int  detail);
       void setLocalPort                     (unsigned short detail);
@@ -315,15 +316,15 @@ class LIB_EXPORT Account : public QObject {
       void setTlsVerifyClient               (bool detail);
       void setTlsRequireClientCertificate   (bool detail);
       void setTlsEnable                     (bool detail);
-      void setAccountDisplaySasOnce         (bool detail);
-      void setAccountSrtpRtpFallback        (bool detail);
-      void setAccountZrtpDisplaySas         (bool detail);
-      void setAccountZrtpNotSuppWarning     (bool detail);
-      void setAccountZrtpHelloHash          (bool detail);
-      void setAccountSipStunEnabled         (bool detail);
+      void setDisplaySasOnce                (bool detail);
+      void setSrtpRtpFallback               (bool detail);
+      void setZrtpDisplaySas                (bool detail);
+      void setZrtpNotSuppWarning            (bool detail);
+      void setZrtpHelloHash                 (bool detail);
+      void setSipStunEnabled                (bool detail);
       void setPublishedSameAsLocal          (bool detail);
       void setRingtoneEnabled               (bool detail);
-      void setDTMFType                      (DtmfType type );
+      void setDTMFType                      (DtmfType type);
 
       void setRoleData(int role, const QVariant& value);
 
diff --git a/src/lib/accountlistmodel.cpp b/src/lib/accountlistmodel.cpp
index 6b0e307..a2b3c90 100644
--- a/src/lib/accountlistmodel.cpp
+++ b/src/lib/accountlistmodel.cpp
@@ -103,7 +103,7 @@ void AccountListModel::setupRoleName()
    roles.insert(Account::Role::LocalInterface           ,QByteArray("localInterface"                ));
    roles.insert(Account::Role::RingtonePath             ,QByteArray("ringtonePath"                  ));
    roles.insert(Account::Role::TlsMethod                ,QByteArray("tlsMethod"                     ));
-   roles.insert(Account::Role::AccountRegistrationExpire,QByteArray("accountRegistrationExpire"     ));
+   roles.insert(Account::Role::RegistrationExpire       ,QByteArray("registrationExpire"            ));
    roles.insert(Account::Role::TlsNegotiationTimeoutSec ,QByteArray("tlsNegotiationTimeoutSec"      ));
    roles.insert(Account::Role::TlsNegotiationTimeoutMsec,QByteArray("tlsNegotiationTimeoutMsec"     ));
    roles.insert(Account::Role::LocalPort                ,QByteArray("localPort"                     ));
@@ -360,7 +360,7 @@ QVector<Account*> AccountListModel::getAccountsByState(const QString& state)
 {
    QVector<Account *> v;
    for (int i = 0; i < m_lAccounts.size(); ++i) {
-      if (m_lAccounts[i]->accountRegistrationStatus() == state)
+      if (m_lAccounts[i]->registrationStatus() == state)
          v += m_lAccounts[i];
    }
    return v;
@@ -374,7 +374,7 @@ QVector<Account*> AccountListModel::registeredAccounts() const
    Account* current;
    for (int i = 0; i < m_lAccounts.count(); ++i) {
       current = m_lAccounts[i];
-      if(current->accountRegistrationStatus() == Account::State::REGISTERED) {
+      if(current->registrationStatus() == Account::State::REGISTERED) {
          qDebug() << current->alias() << " : " << current;
          registeredAccountsVector.append(current);
       }
@@ -388,9 +388,9 @@ Account* AccountListModel::firstRegisteredAccount() const
    Account* current;
    for (int i = 0; i < m_lAccounts.count(); ++i) {
       current = m_lAccounts[i];
-      if(current && current->accountRegistrationStatus() == Account::State::REGISTERED && \
current->isEnabled()) +      if(current && current->registrationStatus() == Account::State::REGISTERED && \
current->isEnabled())  return current;
-      else if (current && (current->accountRegistrationStatus() == Account::State::READY) && \
m_lAccounts.count() == 1) +      else if (current && (current->registrationStatus() == \
Account::State::READY) && m_lAccounts.count() == 1)  return current;
 //       else if (current && !(current->accountRegistrationStatus()() == ACCOUNT_STATE_READY)) {
 //          qDebug() << "Account " << ((current)?current->accountId():"") << " is not registered ("
@@ -411,7 +411,7 @@ int AccountListModel::size() const
 Account* AccountListModel::currentAccount()
 {
    Account* priorAccount = m_spPriorAccount;
-   if(priorAccount && priorAccount->accountRegistrationStatus() == Account::State::REGISTERED && \
priorAccount->isEnabled() ) { +   if(priorAccount && priorAccount->registrationStatus() == \
Account::State::REGISTERED && priorAccount->isEnabled() ) {  return priorAccount;
    }
    else {
diff --git a/src/lib/call.cpp b/src/lib/call.cpp
index 2177ebc..e0a08f8 100644
--- a/src/lib/call.cpp
+++ b/src/lib/call.cpp
@@ -604,7 +604,7 @@ bool Call::isSecure() const {
       return false;
    }
 
-   return m_Account && ((m_Account->isTlsEnable()) || (m_Account->tlsMethod()));
+   return m_Account && ((m_Account->isTlsEnable()) || (m_Account->tlsMethod() != \
KeyExchangeModel::Type::NONE));  } //isSecure
 
 ///Return the renderer associated with this call or nullptr
diff --git a/src/lib/keyexchangemodel.cpp b/src/lib/keyexchangemodel.cpp
new file mode 100644
index 0000000..67938ae
--- /dev/null
+++ b/src/lib/keyexchangemodel.cpp
@@ -0,0 +1,77 @@
+/****************************************************************************
+ *   Copyright (C) 2013 by Savoir-Faire Linux                               *
+ *   Author : Emmanuel Lepage Vallee <emmanuel.lepage@savoirfairelinux.com> *
+ *                                                                          *
+ *   This library is free software; you can redistribute it and/or          *
+ *   modify it under the terms of the GNU Lesser General Public             *
+ *   License as published by the Free Software Foundation; either           *
+ *   version 2.1 of the License, or (at your option) any later version.     *
+ *                                                                          *
+ *   This library is distributed in the hope that it will be useful,        *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of         *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU      *
+ *   Lesser General Public License for more details.                        *
+ *                                                                          *
+ *   You should have received a copy of the GNU General Public License      *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.  *
+ ***************************************************************************/
+#include "keyexchangemodel.h"
+
+#include <QtCore/QCoreApplication>
+
+KeyExchangeModel* KeyExchangeModel::m_spInstance = nullptr;
+
+KeyExchangeModel::KeyExchangeModel() : QAbstractListModel(QCoreApplication::instance()) {}
+
+//Model functions
+QVariant KeyExchangeModel::data( const QModelIndex& index, int role) const
+{
+   if (!index.isValid()) return QVariant();
+   KeyExchangeModel::Type mathod = static_cast<KeyExchangeModel::Type>(index.row());
+   if (role == Qt::DisplayRole) {
+      switch (mathod) {
+         case KeyExchangeModel::Type::NONE:
+            return KeyExchangeModel::Name::NONE;
+            break;
+         case KeyExchangeModel::Type::ZRTP:
+            return KeyExchangeModel::Name::ZRTP;
+            break;
+         case KeyExchangeModel::Type::SDES:
+            return KeyExchangeModel::Name::SDES;
+            break;
+      };
+   }
+   return QVariant();
+}
+
+int KeyExchangeModel::rowCount( const QModelIndex& parent ) const
+{
+   return parent.isValid()?0:3;
+}
+
+Qt::ItemFlags KeyExchangeModel::flags( const QModelIndex& index ) const
+{
+   if (!index.isValid()) return Qt::NoItemFlags;
+   return Qt::ItemIsEnabled|Qt::ItemIsSelectable;
+}
+
+bool KeyExchangeModel::setData( const QModelIndex& index, const QVariant &value, int role)
+{
+   Q_UNUSED(index)
+   Q_UNUSED(value)
+   Q_UNUSED(role )
+   return false;
+}
+
+KeyExchangeModel* KeyExchangeModel::instance()
+{
+   if (!m_spInstance)
+      m_spInstance = new KeyExchangeModel();
+   return m_spInstance;
+}
+
+///Translate enum type to QModelIndex
+QModelIndex KeyExchangeModel::toIndex(KeyExchangeModel::Type type)
+{
+   return index(static_cast<int>(type),0,QModelIndex());
+}
diff --git a/src/lib/keyexchangemodel.h b/src/lib/keyexchangemodel.h
new file mode 100644
index 0000000..2cf9e06
--- /dev/null
+++ b/src/lib/keyexchangemodel.h
@@ -0,0 +1,65 @@
+/****************************************************************************
+ *   Copyright (C) 2013 by Savoir-Faire Linux                               *
+ *   Author : Emmanuel Lepage Vallee <emmanuel.lepage@savoirfairelinux.com> *
+ *                                                                          *
+ *   This library is free software; you can redistribute it and/or          *
+ *   modify it under the terms of the GNU Lesser General Public             *
+ *   License as published by the Free Software Foundation; either           *
+ *   version 2.1 of the License, or (at your option) any later version.     *
+ *                                                                          *
+ *   This library is distributed in the hope that it will be useful,        *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of         *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU      *
+ *   Lesser General Public License for more details.                        *
+ *                                                                          *
+ *   You should have received a copy of the GNU General Public License      *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.  *
+ ***************************************************************************/
+#ifndef KEYEXCHANGEMODEL_H
+#define KEYEXCHANGEMODEL_H
+
+#include "typedefs.h"
+#include <QtCore/QAbstractListModel>
+
+///Static model for handling encryption types
+class LIB_EXPORT KeyExchangeModel : public QAbstractListModel {
+   #pragma GCC diagnostic push
+   #pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant"
+   Q_OBJECT
+   #pragma GCC diagnostic pop
+
+public:
+   ///@enum Type Every supported encryption types
+   enum class Type {
+      NONE = 0,
+      ZRTP = 1,
+      SDES = 2,
+   };
+
+   class Name {
+   public:
+      constexpr static const char* NONE = "none";
+      constexpr static const char* ZRTP = "zrtp";
+      constexpr static const char* SDES = "sdes";
+   };
+
+   //Private constructor, can only be called by 'Account'
+   explicit KeyExchangeModel();
+
+   //Model functions
+   QVariant      data     ( const QModelIndex& index, int role = Qt::DisplayRole     ) const;
+   int           rowCount ( const QModelIndex& parent = QModelIndex()                ) const;
+   Qt::ItemFlags flags    ( const QModelIndex& index                                 ) const;
+   virtual bool  setData  ( const QModelIndex& index, const QVariant &value, int role)      ;
+
+   //Getters
+   QModelIndex   toIndex  (KeyExchangeModel::Type type);
+
+   //Singleton
+   static KeyExchangeModel* instance();
+
+private:
+   static KeyExchangeModel* m_spInstance;
+};
+Q_DECLARE_METATYPE(KeyExchangeModel*)
+#endif
diff --git a/src/lib/sflphone_const.h b/src/lib/sflphone_const.h
index 7865df3..2289dd1 100644
--- a/src/lib/sflphone_const.h
+++ b/src/lib/sflphone_const.h
@@ -88,8 +88,8 @@
 #define ACCOUNT_ZRTP_HELLO_HASH            "ZRTP.helloHashEnable"
 #define ACCOUNT_DISPLAY_SAS_ONCE           "ZRTP.displaySasOnce"
 #define KEY_EXCHANGE_NONE                  "none"
-#define ZRTP                               "zrtp"
-#define SDES                               "sdes"
+// #define ZRTP                               "zrtp"
+// #define SDES                               "sdes"
 
 
 
diff --git a/src/sflphoneview.cpp b/src/sflphoneview.cpp
index 32ee0d1..b235ad9 100644
--- a/src/sflphoneview.cpp
+++ b/src/sflphoneview.cpp
@@ -117,12 +117,12 @@ public:
    }
 
    virtual QVariant getColor(const Account* a) {
-      if(a->accountRegistrationStatus() == Account::State::UNREGISTERED || !a->isEnabled())
+      if(a->registrationStatus() == Account::State::UNREGISTERED || !a->isEnabled())
          return m_Pal.color(QPalette::Base);
-      if(a->accountRegistrationStatus() == Account::State::REGISTERED || a->accountRegistrationStatus() \
== Account::State::READY) { +      if(a->registrationStatus() == Account::State::REGISTERED || \
a->registrationStatus() == Account::State::READY) {  return m_Green;
       }
-      if(a->accountRegistrationStatus() == Account::State::TRYING)
+      if(a->registrationStatus() == Account::State::TRYING)
          return m_Yellow;
       return m_Red;
    }
@@ -900,14 +900,14 @@ void SFLPhoneView::updateDialpad()
 ///Change the statusbar message
 void SFLPhoneView::updateStatusMessage()
 {
-   Account * account = AccountListModel::currentAccount();
+   const Account* account = AccountListModel::currentAccount();
 
    if(!account) {
       emit statusMessageChangeAsked(i18n("No registered accounts"));
    }
    else {
       emit statusMessageChangeAsked(i18n("Using account \'%1\' (%2)",
-         account->alias(), account->accountRegistrationStatus()));
+         account->alias(), account->registrationStatus()));
    }
 }
 
diff --git a/src/widgets/bookmarkdock.cpp b/src/widgets/bookmarkdock.cpp
index 2557210..97251da 100644
--- a/src/widgets/bookmarkdock.cpp
+++ b/src/widgets/bookmarkdock.cpp
@@ -77,7 +77,7 @@ BookmarkDock::BookmarkDock(QWidget* parent) : QDockWidget(parent)
 
    m_pFilterLE->setPlaceholderText(i18n("Filter"));
 
-   m_pMostUsedCK->setChecked(ConfigurationSkeleton::displayContactCallHistory());
+   m_pMostUsedCK->setChecked(ConfigurationSkeleton::displayPopularAsBookmark());
 
    setWidget(mainWidget);
 
@@ -113,7 +113,7 @@ BookmarkDock::~BookmarkDock()
 ///Show the most popular items
 void BookmarkDock::reload()
 {
-   ConfigurationSkeleton::setDisplayContactCallHistory(m_pMostUsedCK->isChecked());
+   ConfigurationSkeleton::setDisplayPopularAsBookmark(m_pMostUsedCK->isChecked());
    BookmarkModel::instance()->reloadCategories();
 } //reload
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic