ginebra2/ToolbarSnippet.cpp
author hgs
Fri, 06 Aug 2010 17:23:08 -0400
changeset 9 b39122337a00
parent 3 0954f5dd2cd0
permissions -rw-r--r--
201031
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
*
hgs
parents:
diff changeset
     5
* This program is free software: you can redistribute it and/or modify
hgs
parents:
diff changeset
     6
* it under the terms of the GNU Lesser General Public License as published by
hgs
parents:
diff changeset
     7
* the Free Software Foundation, version 2.1 of the License.
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* This program is distributed in the hope that it will be useful,
hgs
parents:
diff changeset
    10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
hgs
parents:
diff changeset
    11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
hgs
parents:
diff changeset
    12
* GNU Lesser General Public License for more details.
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* You should have received a copy of the GNU Lesser General Public License
hgs
parents:
diff changeset
    15
* along with this program.  If not,
hgs
parents:
diff changeset
    16
* see "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html/".
hgs
parents:
diff changeset
    17
*
hgs
parents:
diff changeset
    18
* Description:
hgs
parents:
diff changeset
    19
* This class extends WebChromeContainerSnippet class to hold the
hgs
parents:
diff changeset
    20
* toolbar buttons
hgs
parents:
diff changeset
    21
*
hgs
parents:
diff changeset
    22
*/
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
#include "ToolbarSnippet.h"
hgs
parents:
diff changeset
    25
#include "ActionButtonSnippet.h"
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
#include <QDebug>
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
namespace GVA {
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
  ToolbarSnippet::ToolbarSnippet(const QString& elementId, ChromeWidget * chrome, const QWebElement & element)
hgs
parents:
diff changeset
    33
                       : WebChromeContainerSnippet(elementId, chrome, element)
hgs
parents:
diff changeset
    34
  {
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
      connect(m_chrome,  SIGNAL(chromeComplete()), this, SLOT(onChromeComplete()));
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
  }
hgs
parents:
diff changeset
    39
hgs
parents:
diff changeset
    40
  ToolbarSnippet::~ToolbarSnippet()
hgs
parents:
diff changeset
    41
  {
hgs
parents:
diff changeset
    42
      foreach(ToolbarActions_t * t, m_actionInfo) {
hgs
parents:
diff changeset
    43
          delete t;
hgs
parents:
diff changeset
    44
      }
hgs
parents:
diff changeset
    45
hgs
parents:
diff changeset
    46
  }
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
  void ToolbarSnippet::updateSize(QSize sz) {
hgs
parents:
diff changeset
    49
      //qDebug() << "ToolbarSnippet::updateSize" << sz.width() ;
hgs
parents:
diff changeset
    50
      setLayoutWidth(sz.width());
hgs
parents:
diff changeset
    51
      WebChromeContainerSnippet::updateSize(sz);
hgs
parents:
diff changeset
    52
  }
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
  void ToolbarSnippet::updateOwnerArea() {
hgs
parents:
diff changeset
    55
hgs
parents:
diff changeset
    56
    setLayoutWidth(m_chrome->layout()->size().width());
hgs
parents:
diff changeset
    57
    WebChromeContainerSnippet::updateOwnerArea();
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
  }
hgs
parents:
diff changeset
    60
hgs
parents:
diff changeset
    61
  void ToolbarSnippet::onChromeComplete() {
hgs
parents:
diff changeset
    62
hgs
parents:
diff changeset
    63
      foreach(ToolbarActions_t * t, m_actionInfo) {
hgs
parents:
diff changeset
    64
          setAction(m_chrome->getSnippet(t->id));
hgs
parents:
diff changeset
    65
      }
hgs
parents:
diff changeset
    66
hgs
parents:
diff changeset
    67
  }
hgs
parents:
diff changeset
    68
hgs
parents:
diff changeset
    69
  void ToolbarSnippet::setAction(ChromeSnippet * s) {
hgs
parents:
diff changeset
    70
hgs
parents:
diff changeset
    71
      //qDebug() << "setAction: " << s->elementId() << m_actionInfo.size();
hgs
parents:
diff changeset
    72
     
hgs
parents:
diff changeset
    73
      ActionButtonSnippet * button  = static_cast<ActionButtonSnippet*> (s);
hgs
parents:
diff changeset
    74
      int index = getIndex(s);
hgs
parents:
diff changeset
    75
hgs
parents:
diff changeset
    76
      if (index != -1) {
hgs
parents:
diff changeset
    77
          ToolbarActions_t * t = m_actionInfo.at(index);
hgs
parents:
diff changeset
    78
          button->connectAction(t->actionName, m_type);
hgs
parents:
diff changeset
    79
hgs
parents:
diff changeset
    80
          // Set the button icons if it has not been set for any state (we can do this through Javascript)
hgs
parents:
diff changeset
    81
          //qDebug() << "setAction " << s->elementId() << button->icon().isNull();
hgs
parents:
diff changeset
    82
          if (button->icon().isNull() ) {
hgs
parents:
diff changeset
    83
              button->setIcon(t->normalImg);
hgs
parents:
diff changeset
    84
              button->setDisabledIcon(t->disabledImg);
hgs
parents:
diff changeset
    85
              button->setActiveIcon(t->activeImg);
hgs
parents:
diff changeset
    86
          }
hgs
parents:
diff changeset
    87
hgs
parents:
diff changeset
    88
      }
hgs
parents:
diff changeset
    89
  }
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
  int ToolbarSnippet::getIndex( ChromeSnippet *  s) {
hgs
parents:
diff changeset
    92
      int index = -1;
hgs
parents:
diff changeset
    93
      for (int i = 0; i < m_actionInfo.size() ; i++ ) {
hgs
parents:
diff changeset
    94
hgs
parents:
diff changeset
    95
          ToolbarActions_t * t = m_actionInfo.at(i);
hgs
parents:
diff changeset
    96
          if (t->id == s->elementId()) {
hgs
parents:
diff changeset
    97
              index = i;
hgs
parents:
diff changeset
    98
              break;
hgs
parents:
diff changeset
    99
          }
hgs
parents:
diff changeset
   100
hgs
parents:
diff changeset
   101
      }
hgs
parents:
diff changeset
   102
      return index;
hgs
parents:
diff changeset
   103
hgs
parents:
diff changeset
   104
  }
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
  int ToolbarSnippet::getIndex( int actionId) {
hgs
parents:
diff changeset
   107
      int index = -1;
hgs
parents:
diff changeset
   108
      for (int i = 0; i < m_actionInfo.size() ; i++ ) {
hgs
parents:
diff changeset
   109
hgs
parents:
diff changeset
   110
          ToolbarActions_t * t = m_actionInfo.at(i);
hgs
parents:
diff changeset
   111
          if (t->actionId == actionId ) {
hgs
parents:
diff changeset
   112
              index = i;
hgs
parents:
diff changeset
   113
              break;
hgs
parents:
diff changeset
   114
          }
hgs
parents:
diff changeset
   115
hgs
parents:
diff changeset
   116
      }
hgs
parents:
diff changeset
   117
      return index;
hgs
parents:
diff changeset
   118
hgs
parents:
diff changeset
   119
hgs
parents:
diff changeset
   120
  }
hgs
parents:
diff changeset
   121
hgs
parents:
diff changeset
   122
  ActionButtonSnippet * ToolbarSnippet::getActionButtonSnippet( int  actionId) {
hgs
parents:
diff changeset
   123
hgs
parents:
diff changeset
   124
      int index = getIndex(actionId);
hgs
parents:
diff changeset
   125
      ToolbarActions_t * t = m_actionInfo.at(index);
hgs
parents:
diff changeset
   126
      ActionButtonSnippet * button  = static_cast<ActionButtonSnippet*> ( m_chrome->getSnippet(t->id));
hgs
parents:
diff changeset
   127
      return button;
hgs
parents:
diff changeset
   128
hgs
parents:
diff changeset
   129
  }
hgs
parents:
diff changeset
   130
hgs
parents:
diff changeset
   131
hgs
parents:
diff changeset
   132
} // end of namespace GVA
hgs
parents:
diff changeset
   133
hgs
parents:
diff changeset
   134