controlpanelui/src/cpapplication/src/cpmainview.cpp
branchRCL_3
changeset 35 5f281e37a2f5
parent 34 90fe62538f66
child 46 ed95320285d0
equal deleted inserted replaced
34:90fe62538f66 35:5f281e37a2f5
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0""
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  
       
    15 *
       
    16 */
       
    17 
       
    18 #include "cpmainview.h"
       
    19 #include "cpmainmodel.h"
       
    20 #include <QList>
       
    21 #include <hbmainwindow.h>
       
    22 #include <hbdataform.h>
       
    23 #include <cpitemdatahelper.h>
       
    24 #include <cplogger.h>
       
    25 #include <hbactivitymanager.h>
       
    26 #include <hbapplication.h>
       
    27 #include <hbinstance.h>
       
    28 #include <QPixMap>
       
    29 #include <QMetaType>
       
    30 #include "cpcategorysettingformitemdata.h"
       
    31 
       
    32 //CpMainView implementation
       
    33 CpMainView::CpMainView(HbMainWindow *mainWindow/*= 0*/)
       
    34 : CpBaseSettingView(0,0), 
       
    35   mMainModel(0), 
       
    36   mItemDataHelper(0), 
       
    37   mMainWindow(mainWindow),
       
    38   mActivityManager(0)
       
    39 { 
       
    40     //delay loading
       
    41     //connect(mMainWindow,SIGNAL(viewReady()),this,SLOT(initializeMainModel()));
       
    42     // AUTO SAVE ACTIVITY OF CONTROLPANEL
       
    43     HbApplication *app= qobject_cast<HbApplication *>(qApp);
       
    44     mActivityManager = app->activityManager();
       
    45     initializeMainModel();    
       
    46     connect(this, SIGNAL(aboutToClose()),this, SLOT(saveActivity()));
       
    47 }
       
    48 
       
    49 CpMainView::~CpMainView()
       
    50 {
       
    51     delete mMainModel;
       
    52     delete mItemDataHelper;
       
    53 }
       
    54 
       
    55 bool CpMainView::event(QEvent *e)
       
    56 {
       
    57     if (e->type() == QEvent::Show || e->type() == QEvent::ShowToParent) {
       
    58         CPPERF_LOG("CpMainView shown.");
       
    59     }
       
    60     return CpBaseSettingView::event(e);
       
    61 }
       
    62 
       
    63 void CpMainView::initializeMainModel()
       
    64 {
       
    65     if (HbDataForm *form = qobject_cast<HbDataForm *>(widget())) {
       
    66         if (!mMainModel) {  
       
    67             mItemDataHelper = new CpItemDataHelper(form);
       
    68             mMainModel = new CpMainModel;
       
    69             mMainModel->initialize(*mItemDataHelper);
       
    70             form->setModel(mMainModel);
       
    71             connect(form, SIGNAL(activated(QModelIndex)), this, SLOT(onDataFormItemActivated(QModelIndex)));
       
    72             
       
    73             connect(mMainWindow, SIGNAL(aboutToChangeView(HbView *, HbView *)), this, SLOT(onAboutToChangeView(HbView *, HbView *)));
       
    74         }
       
    75     }   
       
    76     loadActivity();
       
    77 }
       
    78 
       
    79 void CpMainView::loadActivity()
       
    80 {
       
    81     if (mMainModel == 0) {
       
    82         return;            
       
    83     } 
       
    84     QVariant data = mActivityManager->activityData(QString("ControlPanelView"));
       
    85     if (data.canConvert<QList<QVariant> >())
       
    86     {
       
    87         QList<QVariant> isExpanded = qvariant_cast<QList<QVariant> >(data);
       
    88         HbDataFormModelItem *root = mMainModel->invisibleRootItem();
       
    89         int groupCount = 0;
       
    90         
       
    91         if (root) {
       
    92          groupCount = root->childCount();
       
    93         }
       
    94         
       
    95         if (groupCount == isExpanded.count()) {
       
    96             for (int i = 0; i < groupCount; i++) {
       
    97                 HbDataFormModelItem *groupItem = root->childAt(i);
       
    98                 QModelIndex index = mMainModel->indexFromItem(groupItem);
       
    99                 HbDataForm *form = qobject_cast<HbDataForm *>(widget());
       
   100                 if (form) {
       
   101                     if (isExpanded.at(i).toBool()) {
       
   102                         onDataFormItemActivated(index);
       
   103                     }
       
   104                     form->setExpanded(index,isExpanded.at(i).toBool());
       
   105                 }
       
   106             }
       
   107         }
       
   108         
       
   109         mActivityManager->removeActivity("ControlPanelView");
       
   110     }
       
   111 }
       
   112 
       
   113 void CpMainView::saveActivity()
       
   114 {
       
   115     HbDataFormModelItem *root = mMainModel->invisibleRootItem();
       
   116     int groupCount = 0;
       
   117     QList<QVariant> isExpanded;
       
   118     if (root) {
       
   119         groupCount = root->childCount();
       
   120     }
       
   121     for (int i = 0; i < groupCount; i++) {
       
   122         HbDataFormModelItem *groupItem = root->childAt(i);
       
   123         QModelIndex index = mMainModel->indexFromItem(groupItem);
       
   124         HbDataForm *form = qobject_cast<HbDataForm *>(widget());    
       
   125         isExpanded << form->isExpanded(index);
       
   126     }
       
   127     
       
   128     HbMainWindow *mainWindow = hbInstance->allMainWindows().first();
       
   129     HbView *view = mainWindow->currentView();
       
   130     if(this == view)
       
   131         {
       
   132         mScreenshot = QPixmap::grabWidget(mainWindow, mainWindow->rect());
       
   133         }
       
   134     
       
   135     QVariantHash metadata;
       
   136     metadata.insert("screenshot", mScreenshot);
       
   137     QVariant data(isExpanded);
       
   138 
       
   139     mActivityManager->addActivity("ControlPanelView", data, metadata);
       
   140 }
       
   141 
       
   142 void CpMainView::onDataFormItemActivated(const QModelIndex &index)
       
   143 {
       
   144     CPFW_LOG("CpMainView::onDataFormItemActivated");
       
   145     CpSettingFormItemData *itemData = static_cast<CpSettingFormItemData *>(mMainModel->itemFromIndex(index));
       
   146 
       
   147     if (CpCategorySettingFormItemData *categoryItemData = qobject_cast<CpCategorySettingFormItemData*>(itemData)) {
       
   148         categoryItemData->initialize(*mItemDataHelper);
       
   149     }    
       
   150 }
       
   151 void CpMainView::onAboutToChangeView(HbView * oldView, HbView *newView)
       
   152 {
       
   153     Q_UNUSED(newView);
       
   154     if (this == oldView) {
       
   155         mScreenshot = QPixmap::grabWidget(mMainWindow, mMainWindow->rect());
       
   156         }
       
   157     }
       
   158 
       
   159 // End of File