ginebra2/ToolbarChromeItem.cpp
author hgs
Fri, 15 Oct 2010 17:30:59 -0400
changeset 16 3c88a81ff781
parent 3 0954f5dd2cd0
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/*
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
3
hgs
parents: 0
diff changeset
     4
*
hgs
parents: 0
diff changeset
     5
* This program is free software: you can redistribute it and/or modify
hgs
parents: 0
diff changeset
     6
* it under the terms of the GNU Lesser General Public License as published by
hgs
parents: 0
diff changeset
     7
* the Free Software Foundation, version 2.1 of the License.
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
*
3
hgs
parents: 0
diff changeset
     9
* This program is distributed in the hope that it will be useful,
hgs
parents: 0
diff changeset
    10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
hgs
parents: 0
diff changeset
    11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
hgs
parents: 0
diff changeset
    12
* GNU Lesser General Public License for more details.
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
*
3
hgs
parents: 0
diff changeset
    14
* You should have received a copy of the GNU Lesser General Public License
hgs
parents: 0
diff changeset
    15
* along with this program.  If not,
hgs
parents: 0
diff changeset
    16
* see "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html/".
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
*
3
hgs
parents: 0
diff changeset
    18
* Description:
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
*
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
*/
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
#include "ToolbarChromeItem.h"
3
hgs
parents: 0
diff changeset
    23
#include "NativeChromeItem.h"
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
#include "GWebContentView.h"
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
#include "WebChromeContainerSnippet.h"
3
hgs
parents: 0
diff changeset
    26
#include "ChromeEffect.h"
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    27
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    28
#include <QDebug>
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    29
16
hgs
parents: 3
diff changeset
    30
#if !defined(Q_WS_MAEMO_5) && !defined(BROWSER_LAYOUT_TENONE)
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
#define TOOLBAR_GRADIENT_START "#2E3B57"
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
#define TOOLBAR_GRADIENT_END "#44587D"
16
hgs
parents: 3
diff changeset
    33
#endif
hgs
parents: 3
diff changeset
    34
hgs
parents: 3
diff changeset
    35
#if defined(Q_WS_MAEMO_5) || defined(BROWSER_LAYOUT_TENONE)
hgs
parents: 3
diff changeset
    36
#define TOOLBAR_BG_OPACITY 1
hgs
parents: 3
diff changeset
    37
#else
hgs
parents: 3
diff changeset
    38
#define TOOLBAR_BG_OPACITY 0.75
hgs
parents: 3
diff changeset
    39
#endif
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    40
#define TOOLBAR_LEFTCORNER_ITEM 0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    41
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    42
namespace GVA {
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    43
3
hgs
parents: 0
diff changeset
    44
  ToolbarChromeItem::ToolbarChromeItem(ChromeSnippet* snippet, QGraphicsItem* parent)
hgs
parents: 0
diff changeset
    45
    : ChromeItem(NULL, parent),
16
hgs
parents: 3
diff changeset
    46
#if defined(Q_WS_MAEMO_5) || defined(BROWSER_LAYOUT_TENONE)
hgs
parents: 3
diff changeset
    47
      m_cornerBackgroundPixmap(""),
hgs
parents: 3
diff changeset
    48
#else
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    49
      m_partialbg(NULL),
16
hgs
parents: 3
diff changeset
    50
#endif
3
hgs
parents: 0
diff changeset
    51
      m_opacity(TOOLBAR_BG_OPACITY)
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    52
  {
3
hgs
parents: 0
diff changeset
    53
      setSnippet(snippet);
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    54
  }
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    55
16
hgs
parents: 3
diff changeset
    56
  ToolbarChromeItem::~ToolbarChromeItem() {
hgs
parents: 3
diff changeset
    57
hgs
parents: 3
diff changeset
    58
#if !defined(Q_WS_MAEMO_5) && !defined(BROWSER_LAYOUT_TENONE)
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    59
    if (m_partialbg) {
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    60
      delete m_partialbg;
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    61
    }
16
hgs
parents: 3
diff changeset
    62
#endif
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    63
  }
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    64
16
hgs
parents: 3
diff changeset
    65
  void ToolbarChromeItem::resizeEvent(QGraphicsSceneResizeEvent * ev) {
hgs
parents: 3
diff changeset
    66
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    67
    Q_UNUSED(ev)
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    68
16
hgs
parents: 3
diff changeset
    69
#if !defined(Q_WS_MAEMO_5) && !defined(BROWSER_LAYOUT_TENONE)
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    70
    addPartialbg();
16
hgs
parents: 3
diff changeset
    71
#endif
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    72
  }
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    73
16
hgs
parents: 3
diff changeset
    74
  void ToolbarChromeItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* opt, QWidget* widget) {
hgs
parents: 3
diff changeset
    75
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    76
    Q_UNUSED(opt)
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    77
    Q_UNUSED(widget)
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    78
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    79
    painter->save();
3
hgs
parents: 0
diff changeset
    80
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    81
    painter->setRenderHint(QPainter::Antialiasing);
3
hgs
parents: 0
diff changeset
    82
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    83
    painter->setPen(m_pen);
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    84
    painter->setOpacity(m_opacity);
3
hgs
parents: 0
diff changeset
    85
16
hgs
parents: 3
diff changeset
    86
    //qDebug() << __PRETTY_FUNCTION__ << boundingRect();
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    87
16
hgs
parents: 3
diff changeset
    88
#if defined(Q_WS_MAEMO_5) || defined(BROWSER_LAYOUT_TENONE)
hgs
parents: 3
diff changeset
    89
    paintCornerBackgrounds(painter);
hgs
parents: 3
diff changeset
    90
#else
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    91
    painter->fillPath(*m_partialbg, QBrush(m_grad));
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    92
    painter->drawPath(*m_partialbg);
16
hgs
parents: 3
diff changeset
    93
#endif
3
hgs
parents: 0
diff changeset
    94
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    95
    // restore painter
3
hgs
parents: 0
diff changeset
    96
    painter->restore();
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    97
3
hgs
parents: 0
diff changeset
    98
    if(!isEnabled()) {
hgs
parents: 0
diff changeset
    99
        // Disabled, apply whitewash.
16
hgs
parents: 3
diff changeset
   100
        //ChromeEffect::paintDisabledRect(painter, opt->exposedRect);
3
hgs
parents: 0
diff changeset
   101
    }
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   102
  }
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   103
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   104
  void ToolbarChromeItem::setProperties() {
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   105
3
hgs
parents: 0
diff changeset
   106
    m_pen.setWidth(m_borderWidth);
hgs
parents: 0
diff changeset
   107
    m_pen.setBrush(QBrush(m_borderColor));
hgs
parents: 0
diff changeset
   108
16
hgs
parents: 3
diff changeset
   109
#if !defined(Q_WS_MAEMO_5) && !defined(BROWSER_LAYOUT_TENONE)
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   110
    m_grad.setColorAt(0, TOOLBAR_GRADIENT_START);
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   111
    m_grad.setColorAt(1, TOOLBAR_GRADIENT_END);
16
hgs
parents: 3
diff changeset
   112
#endif
hgs
parents: 3
diff changeset
   113
  }
hgs
parents: 3
diff changeset
   114
hgs
parents: 3
diff changeset
   115
#if defined(Q_WS_MAEMO_5) || defined(BROWSER_LAYOUT_TENONE)
hgs
parents: 3
diff changeset
   116
  void ToolbarChromeItem::paintCornerBackgrounds(QPainter *painter) {
hgs
parents: 3
diff changeset
   117
hgs
parents: 3
diff changeset
   118
    WebChromeContainerSnippet * s = static_cast<WebChromeContainerSnippet*>(m_snippet);
hgs
parents: 3
diff changeset
   119
    if(!s->layout()->itemAt(TOOLBAR_LEFTCORNER_ITEM))
hgs
parents: 3
diff changeset
   120
        return;
hgs
parents: 3
diff changeset
   121
    QRectF rc = s->layout()->itemAt(TOOLBAR_LEFTCORNER_ITEM)->geometry();
hgs
parents: 3
diff changeset
   122
hgs
parents: 3
diff changeset
   123
    // Left corner background
hgs
parents: 3
diff changeset
   124
    painter->drawPixmap(0, 0, m_cornerBackgroundPixmap);
hgs
parents: 3
diff changeset
   125
hgs
parents: 3
diff changeset
   126
    // Right Corner background
hgs
parents: 3
diff changeset
   127
    qreal x = boundingRect().width()- m_cornerBackgroundPixmap.width();
hgs
parents: 3
diff changeset
   128
hgs
parents: 3
diff changeset
   129
    painter->drawPixmap(x, 0, m_cornerBackgroundPixmap);
hgs
parents: 3
diff changeset
   130
  }
hgs
parents: 3
diff changeset
   131
hgs
parents: 3
diff changeset
   132
  void ToolbarChromeItem::addCornerBackground(){
hgs
parents: 3
diff changeset
   133
      
hgs
parents: 3
diff changeset
   134
      m_cornerBackgroundPixmap = QPixmap(":/toolbar/circle_bg.png");
3
hgs
parents: 0
diff changeset
   135
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   136
  }
16
hgs
parents: 3
diff changeset
   137
#else
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   138
  void ToolbarChromeItem::addPartialbg() {
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   139
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   140
    WebChromeContainerSnippet * s = static_cast<WebChromeContainerSnippet*>(m_snippet);
3
hgs
parents: 0
diff changeset
   141
    if(!s->layout()->itemAt(TOOLBAR_LEFTCORNER_ITEM))
hgs
parents: 0
diff changeset
   142
        return;
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   143
    QRectF rc = s->layout()->itemAt(TOOLBAR_LEFTCORNER_ITEM)->geometry();
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   144
    if (m_partialbg) {
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   145
      delete m_partialbg;
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   146
    }
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   147
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   148
    m_partialbg = new QPainterPath();
3
hgs
parents: 0
diff changeset
   149
    qreal width =  rc.width()-m_padding;
hgs
parents: 0
diff changeset
   150
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   151
    // Add left corner bg
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   152
    m_partialbg->addEllipse(1, 1, width, width);
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   153
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   154
    // Right Corner background
3
hgs
parents: 0
diff changeset
   155
    qreal x = boundingRect().width()- rc.width() + 1;
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   156
    QRectF r(x, 1, width, width);
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   157
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   158
    m_partialbg->addEllipse(r);
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   159
  }
16
hgs
parents: 3
diff changeset
   160
#endif
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   161
3
hgs
parents: 0
diff changeset
   162
  void ToolbarChromeItem::setSnippet(ChromeSnippet* snippet) {
hgs
parents: 0
diff changeset
   163
hgs
parents: 0
diff changeset
   164
    ChromeItem::setSnippet(snippet);
hgs
parents: 0
diff changeset
   165
    QString cssVal = m_snippet->element().styleProperty("border-top-color",
hgs
parents: 0
diff changeset
   166
        QWebElement::ComputedStyle);
hgs
parents: 0
diff changeset
   167
    NativeChromeItem::CSSToQColor(cssVal, m_borderColor);
hgs
parents: 0
diff changeset
   168
hgs
parents: 0
diff changeset
   169
    cssVal = m_snippet->element().styleProperty("padding-top", QWebElement::ComputedStyle);
hgs
parents: 0
diff changeset
   170
    m_padding = cssVal.remove("px").toInt();
hgs
parents: 0
diff changeset
   171
hgs
parents: 0
diff changeset
   172
    cssVal = m_snippet->element().styleProperty("border-top-width", QWebElement::ComputedStyle);
hgs
parents: 0
diff changeset
   173
    m_borderWidth = cssVal.remove("px").toInt();
hgs
parents: 0
diff changeset
   174
    setProperties();
hgs
parents: 0
diff changeset
   175
  }
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   176
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   177
} // end of namespace GVA
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   178
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   179