From 012a2b172c6815476b940f34fa0bba2b34947770 Mon Sep 17 00:00:00 2001
From: Emmanuel Lepage Vallee <emmanuel.lepage@savoirfairelinux.com>
Date: Mon, 27 Apr 2015 17:09:45 -0400
Subject: [PATCH] call: Add 'connected' state

Refs #71781
---
 src/call.cpp                     | 14 +++++++++++++-
 src/call.h                       |  1 +
 src/callmodel.cpp                |  1 +
 src/certificate.cpp              | 12 +++++++++---
 src/certificatemodel.cpp         |  6 +++---
 src/private/certificatemodel_p.h |  2 ++
 src/securityevaluationmodel.cpp  |  2 +-
 7 files changed, 30 insertions(+), 8 deletions(-)

diff --git a/src/call.cpp b/src/call.cpp
index 09d977ae..49432e5f 100644
--- a/src/call.cpp
+++ b/src/call.cpp
@@ -93,6 +93,7 @@ const TypedStateMachine< TypedStateMachine< Call::State , Call::Action> , Call::
 /*CONF_HOLD    */  {{Call::State::ERROR         , Call::State::HOLD        , Call::State::TRANSF_HOLD  , Call::State::HOLD         ,  Call::State::HOLD         }},/**/
 /*INIT         */  {{Call::State::INITIALIZATION, Call::State::OVER        , Call::State::ERROR        , Call::State::ERROR        ,  Call::State::ERROR        }},/**/
 /*ABORTED      */  {{Call::State::ERROR         , Call::State::ERROR       , Call::State::ERROR        , Call::State::ERROR        ,  Call::State::ERROR        }},/**/
+/*CONNECTED    */  {{Call::State::ERROR         , Call::State::OVER        , Call::State::ERROR        , Call::State::ERROR        ,  Call::State::ERROR        }},/**/
 }};//                                                                                                                                                                */
 
 #define CP &CallPrivate
@@ -114,7 +115,8 @@ const TypedStateMachine< TypedStateMachine< function , Call::Action > , Call::St
 /*CONF           */  {{CP::nothing    , CP::hangUp   , CP::nothing        , CP::hold        ,  CP::toggleRecord  }},/**/
 /*CONF_HOLD      */  {{CP::nothing    , CP::hangUp   , CP::nothing        , CP::unhold      ,  CP::toggleRecord  }},/**/
 /*INITIALIZATION */  {{CP::call       , CP::cancel   , CP::nothing        , CP::nothing     ,  CP::nothing       }},/**/
-/*ABORTED        */  {{CP::call       , CP::cancel   , CP::nothing        , CP::nothing     ,  CP::nothing       }},/**/
+/*ABORTED        */  {{CP::nothing    , CP::cancel   , CP::nothing        , CP::nothing     ,  CP::nothing       }},/**/
+/*CONNECTED      */  {{CP::nothing    , CP::cancel   , CP::nothing        , CP::nothing     ,  CP::nothing       }},/**/
 }};//                                                                                                                 */
 
 
@@ -137,6 +139,7 @@ const TypedStateMachine< TypedStateMachine< Call::State , CallPrivate::DaemonSta
 /*CONF_HOLD    */ {{Call::State::HOLD        , Call::State::CURRENT    , Call::State::BUSY   , Call::State::HOLD         ,  Call::State::OVER  ,  Call::State::FAILURE  }},/**/
 /*INIT         */ {{Call::State::RINGING     , Call::State::CURRENT    , Call::State::BUSY   , Call::State::HOLD         ,  Call::State::OVER  ,  Call::State::FAILURE  }},/**/
 /*ABORTED      */ {{Call::State::ERROR       , Call::State::ERROR      , Call::State::ERROR  , Call::State::ERROR        ,  Call::State::ERROR ,  Call::State::ERROR    }},/**/
+/*CONNECTED    */ {{Call::State::RINGING     , Call::State::CURRENT    , Call::State::BUSY   , Call::State::HOLD         ,  Call::State::OVER  ,  Call::State::FAILURE  }},/**/
 }};//                                                                                                                                                                        */
 
 const TypedStateMachine< TypedStateMachine< function , CallPrivate::DaemonState > , Call::State > CallPrivate::stateChangedFunctionMap =
@@ -158,6 +161,7 @@ const TypedStateMachine< TypedStateMachine< function , CallPrivate::DaemonState
 /*CONF_HOLD      */  {{CP::nothing    , CP::nothing   , CP::warning        , CP::nothing      ,  CP::stop         , CP::nothing }},/**/
 /*INIT           */  {{CP::nothing    , CP::warning   , CP::warning        , CP::warning      ,  CP::stop         , CP::warning }},/**/
 /*ABORTED        */  {{CP::error      , CP::error     , CP::error          , CP::error        ,  CP::error        , CP::error   }},/**/
+/*CONNECTED      */  {{CP::nothing    , CP::warning   , CP::warning        , CP::warning      ,  CP::stop         , CP::warning }},/**/
 }};//                                                                                                                                */
 #undef CP
 
@@ -180,6 +184,7 @@ const TypedStateMachine< Call::LifeCycleState , Call::State > CallPrivate::metaS
 /*CONF_HOLD      */   Call::LifeCycleState::PROGRESS       ,/**/
 /*INIT           */   Call::LifeCycleState::INITIALIZATION ,/**/
 /*ABORTED        */   Call::LifeCycleState::FINISHED       ,/**/
+/*CONNECTED      */   Call::LifeCycleState::INITIALIZATION ,/**/
 }};/*                                                        **/
 
 const TypedStateMachine< TypedStateMachine< bool , Call::LifeCycleState > , Call::State > CallPrivate::metaStateTransitionValidationMap =
@@ -201,6 +206,7 @@ const TypedStateMachine< TypedStateMachine< bool , Call::LifeCycleState > , Call
 /*CONF_HOLD      */  {{     false    ,     true     ,    false    ,    false }},/**/
 /*INIT           */  {{     true     ,     true     ,    false    ,    false }},/**/
 /*ABORTED        */  {{     true     ,     true     ,    false    ,    false }},/**/
+/*INITIALIZATION */  {{     true     ,     true     ,    false    ,    false }},/**/
 }};/*                                                             **/
 /*^^ A call _can_ be created on hold (conference) and as over (peer hang up before pickup)
  the progress->failure one is an implementation bug*/
@@ -636,6 +642,8 @@ const QString Call::toHumanStateName(const Call::State cur)
          return tr( "Initialization"    );
       case Call::State::ABORTED:
          return tr( "Initialization"    );
+      case Call::State::CONNECTED:
+         return tr( "Connected"    );
       default:
          return QString::number(static_cast<int>(cur));
    }
@@ -1515,6 +1523,7 @@ void CallPrivate::warning()
       case Call::State::BUSY           :
       case Call::State::OVER           :
       case Call::State::ABORTED        :
+      case Call::State::CONNECTED      :
       case Call::State::CONFERENCE     :
       case Call::State::CONFERENCE_HOLD:
       default:
@@ -1548,6 +1557,7 @@ void Call::appendText(const QString& str)
    }
       break;
    case Call::State::INITIALIZATION:
+   case Call::State::CONNECTED:
    case Call::State::INCOMING:
    case Call::State::RINGING:
    case Call::State::CURRENT:
@@ -1600,6 +1610,7 @@ void Call::backspaceItemText()
          }
          break;
       case Call::State::INITIALIZATION:
+      case Call::State::CONNECTED:
       case Call::State::INCOMING:
       case Call::State::RINGING:
       case Call::State::CURRENT:
@@ -1648,6 +1659,7 @@ void Call::reset()
          d_ptr->changeCurrentState( Call::State::NEW );
          break;
       case Call::State::INITIALIZATION   :
+      case Call::State::CONNECTED        :
       case Call::State::INCOMING         :
       case Call::State::RINGING          :
       case Call::State::CURRENT          :
diff --git a/src/call.h b/src/call.h
index 0c054034..75311826 100644
--- a/src/call.h
+++ b/src/call.h
@@ -142,6 +142,7 @@ public:
       CONFERENCE_HOLD = 13,/*!< This call is a conference on hold                                                 */
       INITIALIZATION  = 14,/*!< The call have been placed, but the peer hasn't confirmed yet                      */
       ABORTED         = 15,/*!< The call was dropped before being sent to the daemon                              */
+      CONNECTED       = 16,/*!< The peer has been found, attempting negotiation                                   */
       COUNT__,
    };
    Q_ENUMS(State)
diff --git a/src/callmodel.cpp b/src/callmodel.cpp
index 1fe531ba..5bad310f 100644
--- a/src/callmodel.cpp
+++ b/src/callmodel.cpp
@@ -1227,6 +1227,7 @@ void CallModelPrivate::slotCallChanged(Call* call)
       case Call::State::INCOMING:
       case Call::State::RINGING:
       case Call::State::INITIALIZATION:
+      case Call::State::CONNECTED:
       case Call::State::CURRENT:
       case Call::State::DIALING:
       case Call::State::NEW:
diff --git a/src/certificate.cpp b/src/certificate.cpp
index 7e97eb8c..8f036e58 100644
--- a/src/certificate.cpp
+++ b/src/certificate.cpp
@@ -329,20 +329,26 @@ void CertificatePrivate::loadChecks()
    }
 }
 
-Certificate::Certificate(const QUrl& path, Type type, const QUrl& privateKey) : ItemBase<QObject>(CertificateModel::instance()),d_ptr(new CertificatePrivate(LoadingType::FROM_PATH))
+Certificate::Certificate(const QUrl& path, Type type, const QUrl& privateKey) : ItemBase<QObject>(nullptr),d_ptr(new CertificatePrivate(LoadingType::FROM_PATH))
 {
    Q_UNUSED(privateKey)
+   moveToThread(CertificateModel::instance()->thread());
+   setParent(CertificateModel::instance());
    d_ptr->m_Path = path.path();
    d_ptr->m_Type = type;
 }
 
-Certificate::Certificate(const QString& id) : ItemBase<QObject>(CertificateModel::instance()),d_ptr(new CertificatePrivate(LoadingType::FROM_ID))
+Certificate::Certificate(const QString& id) : ItemBase<QObject>(nullptr),d_ptr(new CertificatePrivate(LoadingType::FROM_ID))
 {
+   moveToThread(CertificateModel::instance()->thread());
+   setParent(CertificateModel::instance());
    d_ptr->m_Id = id.toLatin1();
 }
 
-Certificate::Certificate(const QByteArray& content, Type type): ItemBase<QObject>(CertificateModel::instance()),d_ptr(new CertificatePrivate(LoadingType::FROM_CONTENT))
+Certificate::Certificate(const QByteArray& content, Type type): ItemBase<QObject>(nullptr),d_ptr(new CertificatePrivate(LoadingType::FROM_CONTENT))
 {
+   moveToThread(CertificateModel::instance()->thread());
+   setParent(CertificateModel::instance());
    d_ptr->m_Content = content;
    d_ptr->m_Type    = type;
 }
diff --git a/src/certificatemodel.cpp b/src/certificatemodel.cpp
index 763d78f4..9474080e 100644
--- a/src/certificatemodel.cpp
+++ b/src/certificatemodel.cpp
@@ -132,8 +132,8 @@ CertificateModel::CertificateModel(QObject* parent) : QAbstractItemModel(parent)
    );
 
    //Load the daemon certificate store
-   DaemonCertificateCollection* dcol = addCollection<DaemonCertificateCollection>();
-   dcol->load();
+   d_ptr->m_pDaemonCertificateStore = addCollection<DaemonCertificateCollection>();
+   d_ptr->m_pDaemonCertificateStore->load();
 
    m_pFallbackCollection->load();
 }
@@ -517,7 +517,7 @@ Certificate* CertificateModel::getCertificateFromContent(const QByteArray& rawCo
 
       if (save) {
          //TODO this shouldn't be necessary
-         static_cast< ItemBase<QObject>* >(cert)->save();
+//          static_cast< ItemBase<QObject>* >(cert)->save();
          /*const QUrl path = CertificateSerializationDelegate::instance()->saveCertificate(id,rawContent);
          cert->setPath(path);*/
       }
diff --git a/src/private/certificatemodel_p.h b/src/private/certificatemodel_p.h
index beac98d4..c940a02f 100644
--- a/src/private/certificatemodel_p.h
+++ b/src/private/certificatemodel_p.h
@@ -23,6 +23,7 @@
 struct CertificateNode;
 class Account;
 class Certificate;
+class DaemonCertificateCollection;
 
 class CertificateModelPrivate
 {
@@ -47,6 +48,7 @@ public:
    QHash<const Account*,CertificateNode*> m_hAccToCat  ;
    QHash<const QString&,CertificateNode*> m_hStrToCat  ;
    QHash<const Certificate*,CertificateNode*> m_hNodes ;
+   DaemonCertificateCollection* m_pDaemonCertificateStore;
    static const Matrix1D<Certificate::Status, const char*> m_StatusMap;
 
    //Getters
diff --git a/src/securityevaluationmodel.cpp b/src/securityevaluationmodel.cpp
index 407c8b52..34ed60cd 100644
--- a/src/securityevaluationmodel.cpp
+++ b/src/securityevaluationmodel.cpp
@@ -252,7 +252,7 @@ constexpr const short CombinaisonProxyModel::sizes[];
 
 ///Create a callback map for signals to avoid a large switch(){} in the code
 static const Matrix1D<SecurityEvaluationModel::Severity, void(SecurityEvaluationModel::*)()> m_lSignalMap = {{
-   /* UNSUPPORTED   */ nullptr                 ,
+   /* UNSUPPORTED   */ nullptr                                           ,
    /* INFORMATION   */ &SecurityEvaluationModel::informationCountChanged ,
    /* WARN1NG       */ &SecurityEvaluationModel::warningCountChanged     ,
    /* ISSUE         */ &SecurityEvaluationModel::issueCountChanged       ,
-- 
GitLab