ganeswidgets/tsrc/fute/HgWidgetTest/src/hgitemsizedialog.cpp
changeset 1 e48454f237ca
child 6 1cdcc61142d2
equal deleted inserted replaced
0:89c329efa980 1:e48454f237ca
       
     1 /*
       
     2 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Another view for test application.
       
    15 *
       
    16 */
       
    17 #include "hgitemsizedialog.h"
       
    18 
       
    19 #include <qgraphicslinearlayout.h>
       
    20 #include <qgraphicssceneresizeevent>
       
    21 #include <hbslider>
       
    22 #include <hbpushbutton>
       
    23 
       
    24 #include "trace.h"
       
    25 
       
    26 
       
    27 
       
    28 HgItemSizeDialog::HgItemSizeDialog(QSizeF size, QSizeF spacing, HbWidget *parent) : HbDialog(parent),
       
    29 mSize(size),
       
    30 mSpacing(spacing)
       
    31 {    
       
    32 
       
    33     this->setAttribute(Qt::WA_DeleteOnClose);
       
    34     this->setFlag(QGraphicsItem::ItemIsMovable);
       
    35     this->setModal(false);
       
    36     this->setBackgroundFaded(false);
       
    37     this->setDismissPolicy(HbPopup::TapOutside);
       
    38     this->setTimeout(5000);
       
    39     this->setMinimumSize(QSizeF(200, 200));
       
    40     
       
    41     QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical);
       
    42     
       
    43     QSizeF itemSize = mSize;
       
    44     QSizeF itemSpacing = mSpacing;
       
    45 
       
    46     int maxVal = 500;
       
    47     if (parent)
       
    48         maxVal = qMax(parent->size().width(), parent->size().height());
       
    49             
       
    50     
       
    51     HbSlider* slider1 = new HbSlider(Qt::Horizontal);
       
    52     slider1->setMinimum(1);
       
    53     slider1->setMaximum(maxVal);
       
    54     slider1->setValue(itemSize.width());
       
    55     mSizeXSlider = slider1;
       
    56     
       
    57     HbSlider* slider2 = new HbSlider(Qt::Horizontal);
       
    58     slider2->setMinimum(1);
       
    59     slider2->setMaximum(maxVal);
       
    60     slider2->setValue(itemSize.height());
       
    61     mSizeYSlider = slider2;
       
    62 
       
    63     HbSlider* slider3 = new HbSlider(Qt::Horizontal);
       
    64     slider3->setMinimum(0);
       
    65     slider3->setMaximum(maxVal);
       
    66     slider3->setValue(itemSpacing.width());
       
    67     mSpacingXSlider = slider3;
       
    68 
       
    69     HbSlider* slider4 = new HbSlider(Qt::Horizontal);
       
    70     slider4->setMinimum(0);
       
    71     slider4->setMaximum(maxVal);
       
    72     slider4->setValue(itemSpacing.height());
       
    73     mSpacingYSlider = slider4;
       
    74 
       
    75     mSizeXLabel = new HbLabel();
       
    76     mSizeYLabel = new HbLabel();
       
    77     mSpacingXLabel = new HbLabel();
       
    78     mSpacingYLabel = new HbLabel();
       
    79     
       
    80     layout->addItem(mSizeXLabel);
       
    81     layout->addItem(slider1);
       
    82     layout->addItem(mSizeYLabel);
       
    83     layout->addItem(slider2);
       
    84     layout->addItem(mSpacingXLabel);
       
    85     layout->addItem(slider3);
       
    86     layout->addItem(mSpacingYLabel);
       
    87     layout->addItem(slider4);
       
    88     
       
    89     mSizeXLabel->setNumber(itemSize.width());
       
    90     mSizeYLabel->setNumber(itemSize.height());
       
    91     mSpacingXLabel->setNumber(itemSpacing.width());
       
    92     mSpacingYLabel->setNumber(itemSpacing.height());
       
    93     
       
    94     QObject::connect(slider1, SIGNAL(valueChanged(int)), this, SLOT(itemSizeXChanged(int)));
       
    95     QObject::connect(slider2, SIGNAL(valueChanged(int)), this, SLOT(itemSizeYChanged(int)));
       
    96     QObject::connect(slider3, SIGNAL(valueChanged(int)), this, SLOT(itemSpacingXChanged(int)));
       
    97     QObject::connect(slider4, SIGNAL(valueChanged(int)), this, SLOT(itemSpacingYChanged(int)));
       
    98 
       
    99     HbPushButton* button = new HbPushButton("Close");
       
   100     QObject::connect(button, SIGNAL(clicked(bool)), this, SLOT(buttonClosed(bool)));
       
   101     layout->addItem(button);
       
   102 
       
   103     this->setLayout(layout);
       
   104         
       
   105 }
       
   106 
       
   107 void HgItemSizeDialog::itemSizeXChanged(int value)
       
   108 {
       
   109     QSizeF s = mSize;
       
   110     mSize = QSizeF(value, s.height());
       
   111     mSizeXLabel->setNumber(value);
       
   112     emit updateItemSizeAndSpacing();
       
   113 }
       
   114 
       
   115 void HgItemSizeDialog::itemSizeYChanged(int value)
       
   116 {
       
   117     QSizeF s = mSize;
       
   118     mSize = QSizeF(s.width(), value);
       
   119     mSizeYLabel->setNumber(value);
       
   120     emit updateItemSizeAndSpacing();
       
   121 }
       
   122 
       
   123 void HgItemSizeDialog::itemSpacingXChanged(int value)
       
   124 {
       
   125     QSizeF s = mSpacing;
       
   126     mSpacing = QSizeF(value, s.height());
       
   127     mSpacingXLabel->setNumber(value);
       
   128     emit updateItemSizeAndSpacing();
       
   129 }
       
   130 
       
   131 void HgItemSizeDialog::itemSpacingYChanged(int value)
       
   132 {
       
   133     QSizeF s = mSpacing;
       
   134     mSpacing = QSizeF(s.width(), value);
       
   135     mSpacingYLabel->setNumber(value);
       
   136     emit updateItemSizeAndSpacing();
       
   137 }
       
   138 
       
   139 void HgItemSizeDialog::buttonClosed(bool)
       
   140 {
       
   141     close();
       
   142     emit closed();
       
   143 }
       
   144 
       
   145 QSizeF HgItemSizeDialog::itemSize() const
       
   146 {
       
   147     return mSize;
       
   148 }
       
   149 
       
   150 QSizeF HgItemSizeDialog::itemSpacing() const
       
   151 {
       
   152     return mSpacing;
       
   153 }
       
   154 
       
   155 static void setSliderScale(HbSlider* slider, int min, int max)
       
   156 {
       
   157     slider->setMinimum(min);
       
   158     slider->setMaximum(max);
       
   159 }
       
   160 
       
   161 
       
   162 void HgItemSizeDialog::setSliderLimits(int min, int max)
       
   163 {
       
   164     setSliderScale(mSizeXSlider, min, max);
       
   165     setSliderScale(mSizeYSlider, min, max);
       
   166     setSliderScale(mSpacingXSlider, min, max);
       
   167     setSliderScale(mSpacingYSlider, min, max);
       
   168 }