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 |