Added "anchoring" to screen edges for zoompanel and indicatorbutton
authorlampehe-local <henri.lampela@ixonos.com>
Thu, 29 Jul 2010 12:17:21 +0000 (15:17 +0300)
committerlampehe-local <henri.lampela@ixonos.com>
Thu, 29 Jul 2010 12:17:21 +0000 (15:17 +0300)
Reviewed by: Pekka Nissinen

src/common.h
src/ui/indicatorbutton.cpp
src/ui/zoombuttonpanel.cpp

index 6e54c44..9cb5680 100644 (file)
@@ -39,9 +39,9 @@ const QString USER_UNSEND_MESSAGE = "UNSEND_MESSAGE_CONTENT";
 const QString USER_UNSEND_MESSAGE_PUBLISH = "UNSEND_MESSAGE_PUBLISH_POLICITY";
 
 // Misc values
-const int DEFAULT_SCREEN_WIDTH = 800;    ///< Default N900 screen width
-const int DEFAULT_SCREEN_HEIGHT = 480;   ///< Default N900 screen height
-const int SCREEN_HEIGHT_DIFFERENCE = 56; ///< Difference between fullscreen height and non fs
+const int DEFAULT_SCREEN_WIDTH = 800;           ///< Default N900 screen width
+const int DEFAULT_SCREEN_HEIGHT = 480;          ///< Default N900 screen height
+const int DEFAULT_NON_FULLSCREEN_HEIGHT = 424;  ///< Default M900 non-fullscreen height
 
 const QColor COLOR_GRAY = QColor(152, 152, 152);                        ///< Gray color
 const QFont NOKIA_FONT_NORMAL = QFont("Nokia Sans", 18, QFont::Normal); ///< Normal font
index 1bd3b22..d6b1a9d 100644 (file)
@@ -48,9 +48,16 @@ IndicatorButton::IndicatorButton(QWidget *parent)
     setFixedSize(BUTTON_WIDTH, BUTTON_HEIGHT);
 
     QSettings settings(DIRECTORY_NAME, FILE_NAME);
-    move(settings.value(DIRECTION_INDICATOR_BUTTON_POSITION,
-                        QPoint(DIRECTION_INDICATOR_POSITION_X,
-                               DIRECTION_INDICATOR_POSITION_Y)).toPoint());
+    QPoint savedLocation = settings.value(DIRECTION_INDICATOR_BUTTON_POSITION,
+                                          QPoint(DIRECTION_INDICATOR_POSITION_X,
+                                                 DIRECTION_INDICATOR_POSITION_Y)).toPoint();
+
+    if(savedLocation.x() > DEFAULT_SCREEN_WIDTH || savedLocation.y() > DEFAULT_SCREEN_HEIGHT) {
+        savedLocation.rx() = DIRECTION_INDICATOR_POSITION_X;
+        savedLocation.ry() = DIRECTION_INDICATOR_POSITION_Y;
+    }
+
+    move(savedLocation);
 
     // Normal background
     m_normalColor = new QColor(Qt::black);
@@ -178,16 +185,36 @@ void IndicatorButton::screenResized(const QSize &newSize)
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    m_screenSize = newSize;
+    int oldHeight = 0;
+    int oldWidth = 0;
 
-    QPoint resizedPosition = pos();
+    if(m_screenSize.height() < 0)
+        oldHeight = DEFAULT_NON_FULLSCREEN_HEIGHT;
+    else
+        oldHeight = m_screenSize.height();
 
-#ifdef Q_WS_MAEMO_5
-    if(newSize.height() < DEFAULT_SCREEN_HEIGHT)
-        resizedPosition.ry() -= SCREEN_HEIGHT_DIFFERENCE;
+    if(m_screenSize.width() < 0)
+        oldWidth = DEFAULT_SCREEN_WIDTH;
     else
-        resizedPosition.ry() += SCREEN_HEIGHT_DIFFERENCE;
-#endif // Q_WS_MAEMO_5
+        oldWidth = m_screenSize.width();
+
+    m_screenSize = newSize;
+
+    QPoint resizedPosition = pos();
+    if(resizedPosition.x() > (newSize.width() - rect().width()))
+        resizedPosition.rx() = newSize.width() - rect().width();
+    else if (resizedPosition.x() < SIDEBAR_WIDTH)
+        resizedPosition.rx() = SIDEBAR_WIDTH;
+    if(resizedPosition.y() > (newSize.height() - rect().height()))
+        resizedPosition.ry() = newSize.height() - rect().height();
+    else if (resizedPosition.y() < 0)
+        resizedPosition.ry() = 0;
+
+    if((pos().y() + rect().center().y()) > (oldHeight/2))
+        resizedPosition.ry() = newSize.height() - (oldHeight - pos().y());
+
+    if((pos().x() + rect().center().x()) > (oldWidth/2))
+        resizedPosition.rx() = newSize.width() - (oldWidth - pos().x());
 
     move(resizedPosition);
 }
index 46e6310..919888e 100644 (file)
@@ -53,9 +53,16 @@ ZoomButtonPanel::ZoomButtonPanel(QWidget *parent)
     m_panelLayout.addWidget(m_zoomOutButton, 1, 0);
 
     QSettings settings(DIRECTORY_NAME, FILE_NAME);
-    move(settings.value(ZOOMPANEL_POSITION,
-                        QPoint(ZOOM_BUTTON_PANEL_POSITION_X,
-                               ZOOM_BUTTON_PANEL_POSITION_Y)).toPoint());
+    QPoint savedLocation = settings.value(ZOOMPANEL_POSITION,
+                                          QPoint(ZOOM_BUTTON_PANEL_POSITION_X,
+                                                 ZOOM_BUTTON_PANEL_POSITION_Y)).toPoint();
+
+    if(savedLocation.x() > DEFAULT_SCREEN_WIDTH || savedLocation.y() > DEFAULT_SCREEN_HEIGHT) {
+        savedLocation.rx() = ZOOM_BUTTON_PANEL_POSITION_X;
+        savedLocation.ry() = ZOOM_BUTTON_PANEL_POSITION_Y;
+    }
+
+    move(savedLocation);
 
     m_dragStartTimer = new QTimer(this);
     m_dragStartTimer->setSingleShot(true);
@@ -228,20 +235,37 @@ void ZoomButtonPanel::screenResized(const QSize &newSize)
 {
     qDebug() << __PRETTY_FUNCTION__;
 
+    int oldHeight = 0;
+    int oldWidth = 0;
+
+    if(m_screenSize.height() < 0)
+        oldHeight = DEFAULT_NON_FULLSCREEN_HEIGHT;
+    else
+        oldHeight = m_screenSize.height();
+
+    if(m_screenSize.width() < 0)
+        oldWidth = DEFAULT_SCREEN_WIDTH;
+    else
+        oldWidth = m_screenSize.width();
+
     m_screenSize = newSize;
 
     QPoint resizedPosition = pos();
-
-    if (resizedPosition.x() < SIDEBAR_WIDTH)
-        resizedPosition.rx() = SIDEBAR_WIDTH;
-    else if(resizedPosition.x() > (newSize.width() - rect().width()))
+    if(resizedPosition.x() > (newSize.width() - rect().width()))
         resizedPosition.rx() = newSize.width() - rect().width();
-
+    else if (resizedPosition.x() < SIDEBAR_WIDTH)
+        resizedPosition.rx() = SIDEBAR_WIDTH;
     if(resizedPosition.y() > (newSize.height() - rect().height()))
         resizedPosition.ry() = newSize.height() - rect().height();
     else if (resizedPosition.y() < 0)
         resizedPosition.ry() = 0;
 
+    if((pos().y() + rect().center().y()) > (oldHeight/2))
+        resizedPosition.ry() = newSize.height() - (oldHeight - pos().y());
+
+    if((pos().x() + rect().center().x()) > (oldWidth/2))
+        resizedPosition.rx() = newSize.width() - (oldWidth - pos().x());
+
     move(resizedPosition);
 }