homescreenapp/hsdomainmodel/src/hspagenewwidgetlayout.cpp
changeset 60 30f14686fb04
child 61 2b1b11a301d2
equal deleted inserted replaced
55:03646e8da489 60:30f14686fb04
       
     1 /*
       
     2 * Copyright (c) 2009 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:
       
    15 *
       
    16 */
       
    17 
       
    18 #include <QPainter>
       
    19 #include <QRectF>
       
    20 #include <QGraphicsLinearLayout>
       
    21 #include <HbInstance>
       
    22 #include <QGraphicsSceneResizeEvent>
       
    23 #include <QGraphicsAnchorLayout>
       
    24 
       
    25 #include "hsdomainmodeldatastructures.h"
       
    26 #include "hspagenewwidgetlayout.h"
       
    27 #include "hsscene.h"
       
    28 #include "hsdatabase.h"
       
    29 #include "hswidgethost.h"
       
    30 #include "hswallpaper.h"
       
    31 #include "hswidgetpositioningonwidgetadd.h"
       
    32 #include "hswidgetpositioningonorientationchange.h"
       
    33 #include "hsconfiguration.h"
       
    34 
       
    35 
       
    36 /*!
       
    37     \class HsPageNewWidgetLayout
       
    38     \ingroup group_hsdomainmodel
       
    39     \brief Represents a page in the framework.
       
    40     HsPage is a parent for a group of widgets. HsPage can have a wallpaper.
       
    41 */
       
    42 
       
    43 /*!
       
    44     Constructor.
       
    45 
       
    46     \a parent Owner.
       
    47 */
       
    48 HsPageNewWidgetLayout::HsPageNewWidgetLayout(QGraphicsLayoutItem *parent) :
       
    49     QGraphicsLayout(parent)
       
    50 {
       
    51     mSize = HsScene::mainWindow()->layoutRect().size();
       
    52 }
       
    53 
       
    54 /*!
       
    55     Destructor.
       
    56 */
       
    57 HsPageNewWidgetLayout::~HsPageNewWidgetLayout()
       
    58 {
       
    59 }
       
    60 
       
    61 /*!
       
    62     Returns children count.
       
    63 */
       
    64 int HsPageNewWidgetLayout::count() const
       
    65 {
       
    66     return mNewWidgets.count();
       
    67 }
       
    68 
       
    69 /*!
       
    70     Returns item index of \a i.
       
    71 */
       
    72 QGraphicsLayoutItem *HsPageNewWidgetLayout::itemAt(int i) const
       
    73 {
       
    74     return mNewWidgets.at(i);
       
    75 }
       
    76 
       
    77 /*!
       
    78     Removes item \a index.
       
    79 */
       
    80 void HsPageNewWidgetLayout::removeAt(int index)
       
    81 {
       
    82     mNewWidgets.removeAt(index);
       
    83 }
       
    84 
       
    85 /*!
       
    86     Size hint.
       
    87 */
       
    88 QSizeF HsPageNewWidgetLayout::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const
       
    89 {
       
    90      switch (which) {
       
    91      case Qt::MinimumSize:
       
    92      case Qt::PreferredSize:
       
    93          return mSize;
       
    94      case Qt::MaximumSize:
       
    95          return mSize;
       
    96      default:
       
    97          break;
       
    98      }
       
    99      return constraint;
       
   100 }
       
   101 
       
   102 /*!
       
   103     Recalculates children positions.
       
   104 */
       
   105 void HsPageNewWidgetLayout::setGeometry(const QRectF &rect)
       
   106 {
       
   107     QGraphicsLayout::setGeometry(rect);
       
   108    
       
   109     QList<QRectF> rects;
       
   110     foreach (HsWidgetHost *newWidget, mNewWidgets) {
       
   111         rects << QRectF(QPointF(), newWidget->preferredSize());
       
   112     }
       
   113    HsWidgetPositioningOnWidgetAdd *algorithm =
       
   114         HsWidgetPositioningOnWidgetAdd::instance();
       
   115     QRectF pageRect = HsScene::mainWindow()->layoutRect();
       
   116     pageRect.adjust( (qreal)0,(qreal)64,(qreal)0,(qreal)0);
       
   117     QList<QRectF> calculatedRects =
       
   118         algorithm->convert(pageRect, rects, QPointF());
       
   119 
       
   120     for ( int i=0; i<mNewWidgets.count(); i++) {
       
   121         mNewWidgets.at(i)->setGeometry(calculatedRects.at(i));
       
   122     }
       
   123 }
       
   124 
       
   125 /*!
       
   126     Adds item to layout.
       
   127 */
       
   128 void HsPageNewWidgetLayout::addItem(HsWidgetHost *item)
       
   129 {
       
   130     mNewWidgets.append(item);
       
   131 }