ginebra2/DualButtonToolbarSnippet.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 23 Jun 2010 17:59:43 +0300
changeset 5 0f2326c2a325
child 6 1c3b8676e58c
permissions -rw-r--r--
Revision: 201024 Kit: 2010125

/*
 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, version 2.1 of the License.
 *
 * 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 Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not,
 * see "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html/".
 *
 * Description:
 * This class extends ToolbarSnippet class to hold the
 * windows view toolbar buttons
 *
 */

#include "DualButtonToolbarSnippet.h"
#include "ViewStack.h"
#include <QDebug>

namespace GVA {

    DualButtonToolbarSnippet::DualButtonToolbarSnippet(const QString& elementId, ChromeWidget * chrome,
                                                       const QRectF& ownerArea, const QWebElement & element, QGraphicsWidget * widget)
        : ToolbarSnippet(elementId, chrome, ownerArea, element, widget)
    {      
        m_type = "";
    }

    DualButtonToolbarSnippet::~DualButtonToolbarSnippet()
    {
    }

    /*! 
      Update the item spacing based on the new size
    */
    void DualButtonToolbarSnippet::updateSize(QSize size) {
        setChildSpacing(size.width());
        ToolbarSnippet::updateSize(size);
    }

    /*! 
      Update the item spacing based on the chrome width
    */
    void DualButtonToolbarSnippet::updateOwnerArea() {
        setChildSpacing(m_chrome->width());
        ToolbarSnippet::updateOwnerArea();
    }

    void DualButtonToolbarSnippet::setChildSpacing(int width) {
        QGraphicsLinearLayout* l = layout();

        // If all the buttons have been added, set the spacing for the last button
        if (l->count() == DUAL_TOOLBAR_NUM_BUTTONS ) {
            int spacing = width - l->itemAt(0)->geometry().width() -  l->itemAt(l->count()-1)->geometry().width();
            l->setItemSpacing(l->count()-1, spacing);
        }
        ToolbarSnippet::updateOwnerArea();
    }

    void DualButtonToolbarSnippet::onMouseEvent(QEvent::Type type) {

        //qDebug() << "DualButtonToolbarSnippet::onMouseEvent - Type:" << type;
        ActionButton* button  = static_cast<ActionButton*> ( sender());
        ActionButtonSnippet * buttonSnippet =  static_cast<ActionButtonSnippet*>( button->snippet());
 
        if (type == QEvent::GraphicsSceneMousePress ) {
            buttonSnippet->setActive(true);
        }
        else if (type == QEvent::GraphicsSceneMouseRelease ) {
            buttonSnippet->updateButtonState(false);
        }
    }
} // end of namespace GVA