add tab to accountdetails managing banned contacts

implements banned account, add a tab at the end of account details
that shows a list of banned contacts, and on click displays a pannel
with detailed contact informations, providing the option to deban
this contact.

Change-Id: Icc2a0e315830bc3f7beb23797bedf12ecfd9a074
Reviewed-by: Anthony Léonard <anthony.leonard@savoirfairelinux.com>
diff --git a/bannedcontactswidget.h b/bannedcontactswidget.h
new file mode 100644
index 0000000..41786d7
--- /dev/null
+++ b/bannedcontactswidget.h
@@ -0,0 +1,79 @@
+/**************************************************************************
+* Copyright (C) 2015-2017 by Savoir-faire Linux                           *
+* Author: Olivier Soldano <olivier.soldano@savoirfairelinux.com>          *
+*                                                                         *
+* This program is free software; you can redistribute it and/or modify    *
+* it under the terms of the GNU General Public License as published by    *
+* the Free Software Foundation; either version 3 of the License, or       *
+* (at your option) any later version.                                     *
+*                                                                         *
+* This program 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 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 BANNEDCONTACTSWIDGET_H
+#define BANNEDCONTACTSWIDGET_H
+
+#include <QWidget>
+#include <QAbstractItemModel>
+#include <QObject>
+#include <QItemDelegate>
+
+// LRC
+#include "account.h"
+#include "contactmethod.h"
+
+/* item delegate */
+
+class BannedContactItemDelegate : public QItemDelegate
+{
+public:
+    BannedContactItemDelegate(QObject* parent = 0);
+
+protected:
+    void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const;
+    QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const;
+
+private:
+    constexpr static int cellHeight_ = 60;
+    constexpr static int sizeImage_ = 48;
+    constexpr static int dxImage_ = 16;
+    constexpr static int dyImage_ = 6;
+
+    constexpr static int dxText_ = dxImage_;
+    constexpr static int dyText_ = cellHeight_/2;
+
+    constexpr static int separatorYPadding_ = 20;
+};
+
+/* widget */
+namespace Ui {
+class BannedContactsWidget;
+}
+
+class BannedContactsWidget : public QWidget
+{
+    Q_OBJECT
+
+public:
+    explicit BannedContactsWidget(QWidget *parent = 0);
+    ~BannedContactsWidget();
+    void setAccount(Account *ac);
+
+private slots:
+    void setCurrentContact(const QModelIndex index);
+    void debanContact();
+
+private:
+    Account* account_ {};
+    BannedContactItemDelegate* bannedItemDelegate_;
+    ContactMethod* bannedContact_;
+    Ui::BannedContactsWidget *ui;
+};
+#endif // BANNEDCONTACTSWIDGET_H