From d8528fa24e0d220a9b5eb2dd58a1a969e46000ca Mon Sep 17 00:00:00 2001
From: Edric Milaret <edric.ladent-milaret@savoirfairelinux.com>
Date: Tue, 7 Jul 2015 14:13:51 -0400
Subject: [PATCH] call: add cancel button for dialing call

Refs #76414

Change-Id: I5d9c160f64c93205be275ad09a3e08b055de0380
---
 callwidget.cpp | 12 +++++++++---
 callwidget.h   |  2 ++
 callwidget.ui  | 33 ++++++++++++++++++++++++++-------
 3 files changed, 37 insertions(+), 10 deletions(-)

diff --git a/callwidget.cpp b/callwidget.cpp
index 398433b..fdf245d 100644
--- a/callwidget.cpp
+++ b/callwidget.cpp
@@ -49,7 +49,7 @@ CallWidget::CallWidget(QWidget *parent) :
     connect(ui->videoWidget, SIGNAL(setChatVisibility(bool)),
             ui->instantMessagingWidget, SLOT(setVisible(bool)));
 
-    ui->spinnerLabel->hide();
+    ui->spinnerWidget->hide();
     spinner_ = new QMovie(":/images/spinner.gif");
     if (spinner_->isValid()) {
         ui->spinnerLabel->setMovie(spinner_);
@@ -262,7 +262,7 @@ CallWidget::callStateChanged(Call* call, Call::State previousState)
         ui->videoWidget->hide();
         displaySpinner(false);
         auto onHoldCall = callModel_->getActiveCalls().first();
-        if (onHoldCall != nullptr) {
+        if (onHoldCall != nullptr && onHoldCall->state() == Call::State::HOLD) {
             setActualCall(onHoldCall);
             onHoldCall->performAction(Call::Action::HOLD);
         }
@@ -349,7 +349,13 @@ CallWidget::on_sortComboBox_currentIndexChanged(int index)
 void
 CallWidget::displaySpinner(bool display)
 {
-    display ? ui->spinnerLabel->show() : ui->spinnerLabel->hide();
+    display ? ui->spinnerWidget->show() : ui->spinnerWidget->hide();
     if (ui->spinnerLabel->movie())
         display ? ui->spinnerLabel->movie()->start() : ui->spinnerLabel->movie()->stop();
 }
+
+void CallWidget::on_cancelButton_clicked()
+{
+    if (actualCall_)
+        actualCall_->performAction(Call::Action::REFUSE);
+}
diff --git a/callwidget.h b/callwidget.h
index 55fdf19..81f5022 100644
--- a/callwidget.h
+++ b/callwidget.h
@@ -66,6 +66,8 @@ private slots:
     void findRingAccount(QModelIndex idx1, QModelIndex idx2, QVector<int> vec);
     void checkRegistrationState(Account* account,Account::RegistrationState state);
 
+    void on_cancelButton_clicked();
+
 private:
     Ui::CallWidget *ui;
     Call* actualCall_;
diff --git a/callwidget.ui b/callwidget.ui
index 221ebd6..a90c3ad 100644
--- a/callwidget.ui
+++ b/callwidget.ui
@@ -51,13 +51,32 @@
           <widget class="VideoView" name="videoWidget" native="true"/>
          </item>
          <item>
-          <widget class="QLabel" name="spinnerLabel">
-           <property name="text">
-            <string/>
-           </property>
-           <property name="alignment">
-            <set>Qt::AlignCenter</set>
-           </property>
+          <widget class="QWidget" name="spinnerWidget" native="true">
+           <layout class="QVBoxLayout" name="spinnerLayout">
+            <item>
+             <widget class="QLabel" name="spinnerLabel">
+              <property name="text">
+               <string/>
+              </property>
+              <property name="alignment">
+               <set>Qt::AlignCenter</set>
+              </property>
+             </widget>
+            </item>
+            <item alignment="Qt::AlignHCenter">
+             <widget class="QPushButton" name="cancelButton">
+              <property name="maximumSize">
+               <size>
+                <width>100</width>
+                <height>16777215</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>Cancel</string>
+              </property>
+             </widget>
+            </item>
+           </layout>
           </widget>
          </item>
          <item alignment="Qt::AlignHCenter|Qt::AlignVCenter">
-- 
GitLab