homescreenapp/hsdomainmodel/src/hspage.cpp
changeset 81 7dd137878ff8
parent 69 87476091b3f5
child 86 e4f038c420f7
equal deleted inserted replaced
76:3916af29624a 81:7dd137878ff8
    13 *
    13 *
    14 * Description:
    14 * Description:
    15 *
    15 *
    16 */
    16 */
    17 
    17 
       
    18 #include <QHash>
       
    19 
    18 #include <HbInstance>
    20 #include <HbInstance>
    19 
    21 
    20 #include "hsdomainmodeldatastructures.h"
    22 #include "hsdomainmodeldatastructures.h"
    21 #include "hspage.h"
    23 #include "hspage.h"
    22 #include "hspagevisual.h"
    24 #include "hspagevisual.h"
   496 */
   498 */
   497 void HsPage::updateZValues()
   499 void HsPage::updateZValues()
   498 {
   500 {
   499     int z = 0;
   501     int z = 0;
   500 
   502 
       
   503     QHash<int, qreal> widgetZValues;
       
   504 
   501     if (!mWidgets.isEmpty()) {
   505     if (!mWidgets.isEmpty()) {
   502         QMultiMap<qreal, HsWidgetHost *> map;
   506         QMultiMap<qreal, HsWidgetHost *> map;
   503         foreach (HsWidgetHost *widget, mWidgets) {
   507         foreach (HsWidgetHost *widget, mWidgets) {
   504             map.insert(widget->visual()->zValue(), widget);
   508             map.insert(widget->visual()->zValue(), widget);
   505         }
   509         }
   511             sortedWidgets.removeOne(activeWidget);
   515             sortedWidgets.removeOne(activeWidget);
   512             sortedWidgets.append(activeWidget);
   516             sortedWidgets.append(activeWidget);
   513         }
   517         }
   514 
   518 
   515         foreach (HsWidgetHost *widget, sortedWidgets) {
   519         foreach (HsWidgetHost *widget, sortedWidgets) {
       
   520             widgetZValues.insert(widget->databaseId(), z);
   516             widget->visual()->setZValue(z++);
   521             widget->visual()->setZValue(z++);
   517             widget->savePresentation();
       
   518         }
   522         }
   519     }
   523     }
   520 
   524 
   521     if (!mNewWidgets.isEmpty()) {
   525     if (!mNewWidgets.isEmpty()) {
   522         foreach (HsWidgetHost *widget, mNewWidgets) {
   526         foreach (HsWidgetHost *widget, mNewWidgets) {
       
   527             widgetZValues.insert(widget->databaseId(), z);
   523             widget->visual()->setZValue(z++);
   528             widget->visual()->setZValue(z++);
   524             widget->savePresentation();
   529         }
   525         }
   530     }
       
   531 
       
   532     if (!widgetZValues.isEmpty()) {
       
   533         HsDatabase::instance()->updateWidgetZValues(
       
   534             widgetZValues, HsGui::instance()->orientation());
   526     }
   535     }
   527 }
   536 }
   528 /*!
   537 /*!
   529     Return this page's index.
   538     Return this page's index.
   530 */
   539 */
   557 void HsPage::disconnectWidget(HsWidgetHost *widget)
   566 void HsPage::disconnectWidget(HsWidgetHost *widget)
   558 {
   567 {
   559     widget->visual()->disconnect(this);
   568     widget->visual()->disconnect(this);
   560     widget->disconnect(this);
   569     widget->disconnect(this);
   561 }
   570 }
       
   571 
   562 /*!
   572 /*!
   563     Disconnect and remove widget
   573     Disconnect and remove widget
   564 */
   574 */
   565 void HsPage::onWidgetFinished()
   575 void HsPage::onWidgetFinished()
   566 {
   576 {
   575         HsWidgetHostVisual *visual = widget->visual();
   585         HsWidgetHostVisual *visual = widget->visual();
   576         visual->setParentItem(0);
   586         visual->setParentItem(0);
   577         if (visual->scene()) {
   587         if (visual->scene()) {
   578             visual->scene()->removeItem(visual);
   588             visual->scene()->removeItem(visual);
   579         }
   589         }
   580     }
   590         disconnectWidget(widget);
   581     
   591         widget->remove();
   582 
   592     }
   583     disconnectWidget(widget);
   593 }
   584     widget->remove();
   594 
   585 }
       
   586 /*!
   595 /*!
   587     Remove widget if it faulted
   596     Remove widget if it faulted
   588 */
   597 */
   589 void HsPage::onWidgetFaulted()
   598 void HsPage::onWidgetFaulted()
   590 {
   599 {