controlpanelui/src/cpapplication/src/cpmainview.cpp
changeset 33 0cfa53de576f
parent 21 2883a5458389
child 41 ab0490982943
equal deleted inserted replaced
29:313976a11e23 33:0cfa53de576f
    20 #include <QList>
    20 #include <QList>
    21 #include <hbmainwindow.h>
    21 #include <hbmainwindow.h>
    22 #include <hbdataform.h>
    22 #include <hbdataform.h>
    23 #include <cpitemdatahelper.h>
    23 #include <cpitemdatahelper.h>
    24 #include <cplogger.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"
    25 
    31 
    26 //CpMainView implementation
    32 //CpMainView implementation
    27 CpMainView::CpMainView(HbMainWindow *mainWindow/*= 0*/)
    33 CpMainView::CpMainView(HbMainWindow *mainWindow/*= 0*/)
    28 : CpBaseSettingView(0,0), 
    34 : CpBaseSettingView(0,0), 
    29   mMainModel(0), 
    35   mMainModel(0), 
    30   mItemDataHelper(0), 
    36   mItemDataHelper(0), 
    31   mMainWindow(mainWindow)
    37   mMainWindow(mainWindow),
       
    38   mActivityManager(0)
    32 { 
    39 { 
    33     //delay loading
    40     //delay loading
    34     connect(mMainWindow,SIGNAL(viewReady()),this,SLOT(initializeMainModel()));
    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()));
    35 }
    47 }
    36 
    48 
    37 CpMainView::~CpMainView()
    49 CpMainView::~CpMainView()
    38 {
    50 {
    39     delete mMainModel;
    51     delete mMainModel;
    54         if (!mMainModel) {  
    66         if (!mMainModel) {  
    55             mItemDataHelper = new CpItemDataHelper(form);
    67             mItemDataHelper = new CpItemDataHelper(form);
    56             mMainModel = new CpMainModel;
    68             mMainModel = new CpMainModel;
    57             mMainModel->initialize(*mItemDataHelper);
    69             mMainModel->initialize(*mItemDataHelper);
    58             form->setModel(mMainModel);
    70             form->setModel(mMainModel);
       
    71             connect(form, SIGNAL(activated(QModelIndex)), this, SLOT(onDataFormItemActivated(QModelIndex)));
    59             
    72             
    60             connect(form,SIGNAL(activated(QModelIndex)),this,SLOT(onDataFormItemActivated(QModelIndex)));
    73             connect(mMainWindow, SIGNAL(aboutToChangeView(HbView *, HbView *)), this, SLOT(onAboutToChangeView(HbView *, HbView *)));
    61         }
    74         }
    62     }   
    75     }   
       
    76     loadActivity();
    63 }
    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 
    64 // End of File
   159 // End of File