~ubuntu-branches/ubuntu/wily/sflphone/wily

« back to all changes in this revision

Viewing changes to kde/src/delegates/autocompletiondelegate.cpp

  • Committer: Package Import Robot
  • Author(s): Mark Purcell
  • Date: 2014-01-28 18:23:36 UTC
  • mfrom: (1.1.11)
  • mto: This revision was merged to the branch mainline in revision 24.
  • Revision ID: package-import@ubuntu.com-20140128182336-3xenud1kbnwmf3mz
* New upstream release 
  - Fixes "New Upstream Release" (Closes: #735846)
  - Fixes "Ringtone does not stop" (Closes: #727164)
  - Fixes "[sflphone-kde] crash on startup" (Closes: #718178)
  - Fixes "sflphone GUI crashes when call is hung up" (Closes: #736583)
* Build-Depends: ensure GnuTLS 2.6
  - libucommon-dev (>= 6.0.7-1.1), libccrtp-dev (>= 2.0.6-3)
  - Fixes "FTBFS Build-Depends libgnutls{26,28}-dev" (Closes: #722040)
* Fix "boost 1.49 is going away" unversioned Build-Depends: (Closes: #736746)
* Add Build-Depends: libsndfile-dev, nepomuk-core-dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/****************************************************************************
 
2
 *   Copyright (C) 2013-2014 by Savoir-Faire Linux                          *
 
3
 *   Author : Emmanuel Lepage Vallee <emmanuel.lepage@savoirfairelinux.com> *
 
4
 *                                                                          *
 
5
 *   This library is free software; you can redistribute it and/or          *
 
6
 *   modify it under the terms of the GNU Lesser General Public             *
 
7
 *   License as published by the Free Software Foundation; either           *
 
8
 *   version 2.1 of the License, or (at your option) any later version.     *
 
9
 *                                                                          *
 
10
 *   This library is distributed in the hope that it will be useful,        *
 
11
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of         *
 
12
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU      *
 
13
 *   Lesser General Public License for more details.                        *
 
14
 *                                                                          *
 
15
 *   You should have received a copy of the GNU General Public License      *
 
16
 *   along with this program.  If not, see <http://www.gnu.org/licenses/>.  *
 
17
 ***************************************************************************/
 
18
#include "autocompletiondelegate.h"
 
19
 
 
20
#include <QtGui/QPainter>
 
21
#include <QtGui/QFontMetrics>
 
22
#include <QtGui/QApplication>
 
23
 
 
24
#include <lib/numbercompletionmodel.h>
 
25
 
 
26
static const int RIGHT_MARGIN = 2;
 
27
 
 
28
AutoCompletionDelegate::AutoCompletionDelegate() : QStyledItemDelegate()
 
29
{
 
30
   
 
31
}
 
32
 
 
33
void AutoCompletionDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
 
34
{
 
35
   QStyledItemDelegate::paint(painter,option,index);
 
36
   const QString tag = index.data(Qt::UserRole).toString();
 
37
   if (!tag.isEmpty()) {
 
38
      painter->save();
 
39
      painter->setRenderHint(QPainter::Antialiasing, true);
 
40
      painter->setClipRect(option.rect);
 
41
      static bool init = false;
 
42
      static QFont f;
 
43
      static QLinearGradient g;
 
44
      if (!init) {
 
45
         f = painter->font();
 
46
         f.setBold(true);
 
47
         f.setPointSize(f.pointSize()-1);
 
48
         g = QLinearGradient(QPointF(0, 0), QPointF(0, option.rect.height()-4));
 
49
         QColor col = QApplication::palette().color(QPalette::Highlight);
 
50
         col.setAlpha(125);
 
51
         g.setColorAt(0, col);
 
52
         col.setAlpha(175);
 
53
         g.setColorAt(1, col);
 
54
         init = true;
 
55
      }
 
56
      static QFontMetrics m(f);
 
57
      static int height    = m.height();
 
58
      static int topMargin = 2;
 
59
      painter->setFont(f);
 
60
      const int width = m.width(tag);
 
61
      const int x = option.rect.x()+option.rect.width()-width-RIGHT_MARGIN-option.rect.height()/2;
 
62
      painter->setBrush(g);
 
63
      painter->setPen(Qt::NoPen);
 
64
      painter->drawRect(QRect(x-option.rect.height()/2+option.rect.height()/2,option.rect.y()+2,width,option.rect.height()-4));
 
65
      painter->setClipRect(x-option.rect.height()/2,option.rect.y()+2,option.rect.height()/2,option.rect.height()-4);
 
66
      painter->drawEllipse(QRect(x-option.rect.height()/2,option.rect.y()+2,option.rect.height()-4,option.rect.height()-4));
 
67
      painter->setClipRect(x+width,option.rect.y()+2,option.rect.height()-4,option.rect.height()-4);
 
68
      painter->drawEllipse(QRect(x+width-option.rect.height()/2,option.rect.y()+2,option.rect.height()-4,option.rect.height()-4));
 
69
      painter->setPen(QApplication::palette().base().color());
 
70
      painter->setClipping(false);
 
71
      painter->drawText(x,option.rect.y()+height-topMargin,tag);
 
72
      painter->restore();
 
73
   }
 
74
}