diff -r 3fec62e6e7fc -r 90fe62538f66 controlpanelui/src/cpapplication/src/cpmainview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/controlpanelui/src/cpapplication/src/cpmainview.cpp Tue Aug 31 15:15:28 2010 +0300 @@ -0,0 +1,159 @@ +/* +* Copyright (c) 2009 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"" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#include "cpmainview.h" +#include "cpmainmodel.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "cpcategorysettingformitemdata.h" + +//CpMainView implementation +CpMainView::CpMainView(HbMainWindow *mainWindow/*= 0*/) +: CpBaseSettingView(0,0), + mMainModel(0), + mItemDataHelper(0), + mMainWindow(mainWindow), + mActivityManager(0) +{ + //delay loading + //connect(mMainWindow,SIGNAL(viewReady()),this,SLOT(initializeMainModel())); + // AUTO SAVE ACTIVITY OF CONTROLPANEL + HbApplication *app= qobject_cast(qApp); + mActivityManager = app->activityManager(); + initializeMainModel(); + connect(this, SIGNAL(aboutToClose()),this, SLOT(saveActivity())); +} + +CpMainView::~CpMainView() +{ + delete mMainModel; + delete mItemDataHelper; +} + +bool CpMainView::event(QEvent *e) +{ + if (e->type() == QEvent::Show || e->type() == QEvent::ShowToParent) { + CPPERF_LOG("CpMainView shown."); + } + return CpBaseSettingView::event(e); +} + +void CpMainView::initializeMainModel() +{ + if (HbDataForm *form = qobject_cast(widget())) { + if (!mMainModel) { + mItemDataHelper = new CpItemDataHelper(form); + mMainModel = new CpMainModel; + mMainModel->initialize(*mItemDataHelper); + form->setModel(mMainModel); + connect(form, SIGNAL(activated(QModelIndex)), this, SLOT(onDataFormItemActivated(QModelIndex))); + + connect(mMainWindow, SIGNAL(aboutToChangeView(HbView *, HbView *)), this, SLOT(onAboutToChangeView(HbView *, HbView *))); + } + } + loadActivity(); +} + +void CpMainView::loadActivity() +{ + if (mMainModel == 0) { + return; + } + QVariant data = mActivityManager->activityData(QString("ControlPanelView")); + if (data.canConvert >()) + { + QList isExpanded = qvariant_cast >(data); + HbDataFormModelItem *root = mMainModel->invisibleRootItem(); + int groupCount = 0; + + if (root) { + groupCount = root->childCount(); + } + + if (groupCount == isExpanded.count()) { + for (int i = 0; i < groupCount; i++) { + HbDataFormModelItem *groupItem = root->childAt(i); + QModelIndex index = mMainModel->indexFromItem(groupItem); + HbDataForm *form = qobject_cast(widget()); + if (form) { + if (isExpanded.at(i).toBool()) { + onDataFormItemActivated(index); + } + form->setExpanded(index,isExpanded.at(i).toBool()); + } + } + } + + mActivityManager->removeActivity("ControlPanelView"); + } +} + +void CpMainView::saveActivity() +{ + HbDataFormModelItem *root = mMainModel->invisibleRootItem(); + int groupCount = 0; + QList isExpanded; + if (root) { + groupCount = root->childCount(); + } + for (int i = 0; i < groupCount; i++) { + HbDataFormModelItem *groupItem = root->childAt(i); + QModelIndex index = mMainModel->indexFromItem(groupItem); + HbDataForm *form = qobject_cast(widget()); + isExpanded << form->isExpanded(index); + } + + HbMainWindow *mainWindow = hbInstance->allMainWindows().first(); + HbView *view = mainWindow->currentView(); + if(this == view) + { + mScreenshot = QPixmap::grabWidget(mainWindow, mainWindow->rect()); + } + + QVariantHash metadata; + metadata.insert("screenshot", mScreenshot); + QVariant data(isExpanded); + + mActivityManager->addActivity("ControlPanelView", data, metadata); +} + +void CpMainView::onDataFormItemActivated(const QModelIndex &index) +{ + CPFW_LOG("CpMainView::onDataFormItemActivated"); + CpSettingFormItemData *itemData = static_cast(mMainModel->itemFromIndex(index)); + + if (CpCategorySettingFormItemData *categoryItemData = qobject_cast(itemData)) { + categoryItemData->initialize(*mItemDataHelper); + } +} +void CpMainView::onAboutToChangeView(HbView * oldView, HbView *newView) +{ + Q_UNUSED(newView); + if (this == oldView) { + mScreenshot = QPixmap::grabWidget(mMainWindow, mMainWindow->rect()); + } + } + +// End of File