From 6b6ee5ff82bcf748e5394e2cfcfb2e38b3900498 Mon Sep 17 00:00:00 2001
From: Emmanuel Lepage <emmanuel.lepage@savoirfairelinux.com>
Date: Fri, 16 Dec 2011 11:48:05 -0500
Subject: [PATCH] [ #7901 ] Partial rewrite of the drag and drop event, does
 not really work

---
 src/Call.h        |  2 +-
 src/CallModel.h   | 14 ++++++++------
 src/CallModel.hpp | 19 +++++++++++++++++++
 3 files changed, 28 insertions(+), 7 deletions(-)

diff --git a/src/Call.h b/src/Call.h
index 76f31180..8e475dbc 100644
--- a/src/Call.h
+++ b/src/Call.h
@@ -162,7 +162,7 @@ public:
    void setTransferNumber(const QString& number);
    void setCallNumber(const QString& number);
    
-   //Mutotors
+   //Mutators
    void appendText(const QString& str);
    void backspaceItemText();
    void changeCurrentState(call_state newState);
diff --git a/src/CallModel.h b/src/CallModel.h
index 44f76fd3..608af376 100644
--- a/src/CallModel.h
+++ b/src/CallModel.h
@@ -101,12 +101,14 @@ class LIB_EXPORT CallModel : public CallModelBase {
       virtual void initContact ( ContactBackend* be );
 
       //Call related
-      virtual Call*  addCall         ( Call* call                , Call* parent =0    );
-      Call*          addDialingCall  ( const QString& peerName="", QString account="" );
-      Call*          addIncomingCall ( const QString& callId                          );
-      Call*          addRingingCall  ( const QString& callId                          );
-      static QString generateCallId  (                                                );
-      void           removeCall      ( Call* call                                     );
+      virtual Call*  addCall          ( Call* call                , Call* parent =0    );
+      Call*          addDialingCall   ( const QString& peerName="", QString account="" );
+      Call*          addIncomingCall  ( const QString& callId                          );
+      Call*          addRingingCall   ( const QString& callId                          );
+      static QString generateCallId   (                                                );
+      void           removeCall       ( Call* call                                     );
+      void           attendedTransfer ( Call* toTransfer           , Call* target      );
+      void           transfer         ( Call* toTransfer           , QString target    );
       
       virtual bool selectItem(Call* item) { Q_UNUSED(item); return false;}
 
diff --git a/src/CallModel.hpp b/src/CallModel.hpp
index 11e51f83..f7dd95f0 100644
--- a/src/CallModel.hpp
+++ b/src/CallModel.hpp
@@ -263,6 +263,25 @@ template<typename CallWidget, typename Index> void CallModel<CallWidget,Index>::
    }
 }
 
+///Transfer "toTransfer" to "target" and wait to see it it succeeded
+template<typename CallWidget, typename Index> void CallModel<CallWidget,Index>::attendedTransfer(Call* toTransfer, Call* target)
+{
+   CallManagerInterface& callManager = CallManagerInterfaceSingleton::getInstance();
+   callManager.attendedTransfer(toTransfer->getCallId(),target->getCallId());
+
+   //TODO [Daemon] Implement this correctly
+   toTransfer->changeCurrentState(CALL_STATE_OVER);
+   target->changeCurrentState(CALL_STATE_OVER);
+}
+
+///Transfer this call to  "target" number
+template<typename CallWidget, typename Index> void CallModel<CallWidget,Index>::transfer(Call* toTransfer, QString target)
+{
+   qDebug() << "Transferring call " << target;
+   toTransfer->setTransferNumber(target);
+   toTransfer->actionPerformed(CALL_ACTION_ACCEPT);
+   toTransfer->changeCurrentState(CALL_STATE_OVER);
+}
 
 /*****************************************************************************
  *                                                                           *
-- 
GitLab