homescreenapp/hsutils/inc/hswidgetpositioningonwidgetadd.h
changeset 69 87476091b3f5
parent 36 cdae8c6c3876
equal deleted inserted replaced
67:474929a40a0f 69:87476091b3f5
     1 /*
     1 /*
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
     2 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
     3 * All rights reserved.
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     4 * This component and the accompanying materials are made available
     5 * under the terms of "Eclipse Public License v1.0"
     5 * under the terms of "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
    18 #ifndef HSWIDGETPOSITIONINGONWIDGETADD_H
    18 #ifndef HSWIDGETPOSITIONINGONWIDGETADD_H
    19 #define HSWIDGETPOSITIONINGONWIDGETADD_H
    19 #define HSWIDGETPOSITIONINGONWIDGETADD_H
    20 
    20 
    21 #include <QList>
    21 #include <QList>
    22 #include <QRectF>
    22 #include <QRectF>
       
    23 #include <QPointF>
    23 #include "hsutils_global.h"
    24 #include "hsutils_global.h"
       
    25 
       
    26 class HsWidgetHost;
    24 
    27 
    25 class HSUTILS_EXPORT HsWidgetPositioningOnWidgetAdd
    28 class HSUTILS_EXPORT HsWidgetPositioningOnWidgetAdd
    26 {
    29 {
    27 public:
    30 public:
    28     virtual ~HsWidgetPositioningOnWidgetAdd() {}
    31     virtual ~HsWidgetPositioningOnWidgetAdd() {}
    29     
    32     
    30     virtual QList<QRectF> convert(const QRectF &contentArea,
    33     virtual QList<QRectF> convert(const QRectF &contentArea,
    31                                   const QList<QRectF> &rects, 
    34                                   const QList<QRectF> &existingRects,
       
    35                                   const QList<QRectF> &newRects,
    32                                   const QPointF &startPoint) = 0;
    36                                   const QPointF &startPoint) = 0;
    33    
    37    
    34     static void setInstance(HsWidgetPositioningOnWidgetAdd *instance);
    38     static void setInstance(HsWidgetPositioningOnWidgetAdd *instance);
    35     static HsWidgetPositioningOnWidgetAdd *instance();
    39     static HsWidgetPositioningOnWidgetAdd *instance();
    36 
    40 
    40 
    44 
    41 class HSUTILS_EXPORT HsAnchorPointInBottomRight : public HsWidgetPositioningOnWidgetAdd
    45 class HSUTILS_EXPORT HsAnchorPointInBottomRight : public HsWidgetPositioningOnWidgetAdd
    42 {
    46 {
    43 public:
    47 public:
    44     QList<QRectF> convert(const QRectF &contentArea,
    48     QList<QRectF> convert(const QRectF &contentArea,
    45                           const QList<QRectF> &rects,
    49                           const QList<QRectF> &existingRects,
       
    50                           const QList<QRectF> &newRects,
    46                           const QPointF &startPoint);
    51                           const QPointF &startPoint);
    47  
    52  
    48 };
    53 };
    49 
    54 
    50 class HSUTILS_EXPORT HsAnchorPointInCenter : public HsWidgetPositioningOnWidgetAdd
    55 class HSUTILS_EXPORT HsAnchorPointInCenter : public HsWidgetPositioningOnWidgetAdd
    51 {
    56 {
    52 public:
    57 public:
    53     QList<QRectF> convert(const QRectF &contentArea,
    58     QList<QRectF> convert(const QRectF &contentArea,
    54                           const QList<QRectF> &rects,
    59                           const QList<QRectF> &existingRects,
       
    60                           const QList<QRectF> &newRects,
    55                           const QPointF &startPoint);
    61                           const QPointF &startPoint);
    56  };
    62  };
    57 
    63 
       
    64 class HSUTILS_EXPORT HsWidgetOrganizer : public HsWidgetPositioningOnWidgetAdd
       
    65 {
       
    66 public:
       
    67     QList<QRectF> convert(const QRectF &contentArea,
       
    68                           const QList<QRectF> &existingRects,
       
    69                           const QList<QRectF> &newRects,
       
    70                           const QPointF &startPoint);
       
    71 
       
    72 private:
       
    73     bool initAnchors(const QSizeF &areaSize);
       
    74     bool getAnchorPoint(const QSizeF &contentSize);
       
    75     bool searchWidthSpace(const QSizeF &contentSize);
       
    76     bool searchHeightSpace(int contentHeight);
       
    77     bool markReservedAnchors();
       
    78     QPointF getAnchorCoordinates(int index);
       
    79     int getIndexForCoordinate(QPointF position);
       
    80     int lenghtInAnchorPoints(QVariant length);
       
    81 
       
    82 private:
       
    83     int mAnchorColumns;
       
    84     int mAnchorRows;
       
    85     int mAnchorDistance;
       
    86     QPointF mStartWidthAnchorPoint;
       
    87     QPointF mEndWidthAnchorPoint;
       
    88     QPointF mEndHeightAnchorPoint;
       
    89     // TODO: is there better way to store anchor points, perhaps with pointers?
       
    90     QList<bool> mAnchors;
       
    91 
       
    92 };
       
    93 
    58 
    94 
    59 #endif // HSWIDGETPOSITIONINGONWIDGETADD_H
    95 #endif // HSWIDGETPOSITIONINGONWIDGETADD_H