--- a/homescreenapp/hsutils/inc/hswidgetpositioningonwidgetadd.h Wed Jul 14 15:53:30 2010 +0300
+++ b/homescreenapp/hsutils/inc/hswidgetpositioningonwidgetadd.h Fri Jul 23 13:47:57 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
@@ -20,15 +20,19 @@
#include <QList>
#include <QRectF>
+#include <QPointF>
#include "hsutils_global.h"
+class HsWidgetHost;
+
class HSUTILS_EXPORT HsWidgetPositioningOnWidgetAdd
{
public:
virtual ~HsWidgetPositioningOnWidgetAdd() {}
virtual QList<QRectF> convert(const QRectF &contentArea,
- const QList<QRectF> &rects,
+ const QList<QRectF> &existingRects,
+ const QList<QRectF> &newRects,
const QPointF &startPoint) = 0;
static void setInstance(HsWidgetPositioningOnWidgetAdd *instance);
@@ -42,7 +46,8 @@
{
public:
QList<QRectF> convert(const QRectF &contentArea,
- const QList<QRectF> &rects,
+ const QList<QRectF> &existingRects,
+ const QList<QRectF> &newRects,
const QPointF &startPoint);
};
@@ -51,9 +56,40 @@
{
public:
QList<QRectF> convert(const QRectF &contentArea,
- const QList<QRectF> &rects,
+ const QList<QRectF> &existingRects,
+ const QList<QRectF> &newRects,
const QPointF &startPoint);
};
+class HSUTILS_EXPORT HsWidgetOrganizer : public HsWidgetPositioningOnWidgetAdd
+{
+public:
+ QList<QRectF> convert(const QRectF &contentArea,
+ const QList<QRectF> &existingRects,
+ const QList<QRectF> &newRects,
+ const QPointF &startPoint);
+
+private:
+ bool initAnchors(const QSizeF &areaSize);
+ bool getAnchorPoint(const QSizeF &contentSize);
+ bool searchWidthSpace(const QSizeF &contentSize);
+ bool searchHeightSpace(int contentHeight);
+ bool markReservedAnchors();
+ QPointF getAnchorCoordinates(int index);
+ int getIndexForCoordinate(QPointF position);
+ int lenghtInAnchorPoints(QVariant length);
+
+private:
+ int mAnchorColumns;
+ int mAnchorRows;
+ int mAnchorDistance;
+ QPointF mStartWidthAnchorPoint;
+ QPointF mEndWidthAnchorPoint;
+ QPointF mEndHeightAnchorPoint;
+ // TODO: is there better way to store anchor points, perhaps with pointers?
+ QList<bool> mAnchors;
+
+};
+
#endif // HSWIDGETPOSITIONINGONWIDGETADD_H