improve callutilsdialog and qualitydialog

- adds a fancy shape to callutilsdialog/qualitydialog.
- adds few animation.
- keeps the overlay rendered while callutilsdialog/qualitydialog is open.
- adds the file used as mask for the spike.

Change-Id: I51362f986376d57634c9ded2e548043da7da1384
Tuleap: #148
diff --git a/qualitydialog.cpp b/qualitydialog.cpp
index 44ea91f..7859fe3 100644
--- a/qualitydialog.cpp
+++ b/qualitydialog.cpp
@@ -20,24 +20,42 @@
 #include "qualitydialog.h"
 #include "ui_qualitydialog.h"
 
+#include <QSortFilterProxyModel>
+#include <QBitmap>
+#include <QPropertyAnimation>
+#include <QGraphicsOpacityEffect>
+
 #include "callmodel.h"
 #include "account.h"
 #include "codecmodel.h"
 
-#include <QSortFilterProxyModel>
-
 QualityDialog::QualityDialog(QWidget *parent) :
     QDialog(parent),
-    ui(new Ui::QualityDialog)
+    ui(new Ui::QualityDialog),
+    spikeMask_(new QPixmap(":/images/spikeMask.png"))
 {
     ui->setupUi(this);
 
     this->setWindowFlags(Qt::CustomizeWindowHint);
-    this->setWindowFlags(Qt::FramelessWindowHint | Qt::Popup);
+    this->setWindowFlags(Qt::FramelessWindowHint | Qt::Popup | Qt::NoDropShadowWindowHint);
+
+    ui->spike->setMask(spikeMask_->mask());
+
+    effect_ = new QGraphicsOpacityEffect(this);
+    effect_->setOpacity(1.0);
+    setGraphicsEffect(effect_);
+    fadeAnim_ = new QPropertyAnimation(effect_, "opacity");
+    fadeAnim_->setDuration(fadeOverlayTime_);
+    fadeAnim_->setStartValue(0.0);
+    fadeAnim_->setEndValue(1.0);
+    fadeAnim_->setEasingCurve(QEasingCurve::InExpo);
 }
 
 QualityDialog::~QualityDialog()
 {
+    delete effect_;
+    delete spikeMask_;
+    delete fadeAnim_;
     delete ui;
 }
 
@@ -75,6 +93,18 @@
         }
     }
     ui->autoCheckBox->blockSignals(false);
+
+    emit(isVisible(true));
+
+    fadeAnim_->setDirection(QAbstractAnimation::Forward);
+    fadeAnim_->start();
+}
+
+void
+QualityDialog::closeEvent(QCloseEvent* event)
+{
+    Q_UNUSED(event)
+    emit(isVisible(false));
 }
 
 void