author | hgs |
Thu, 30 Sep 2010 16:15:53 +0800 | |
changeset 41 | ab0490982943 |
parent 33 | 0cfa53de576f |
permissions | -rw-r--r-- |
10
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
1 |
/* |
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
2 |
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). |
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
3 |
* All rights reserved. |
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
4 |
* This component and the accompanying materials are made available |
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
5 |
* under the terms of "Eclipse Public License v1.0"" |
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
6 |
* which accompanies this distribution, and is available |
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
7 |
* at the URL "http://www.eclipse.org/legal/epl-v10.html". |
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
8 |
* |
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
9 |
* Initial Contributors: |
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
10 |
* Nokia Corporation - initial contribution. |
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
11 |
* |
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
12 |
* Contributors: |
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
13 |
* |
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
14 |
* Description: |
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
15 |
* |
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
16 |
*/ |
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
17 |
|
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
18 |
#include "cpmainview.h" |
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
19 |
#include "cpmainmodel.h" |
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
20 |
#include <QList> |
19 | 21 |
#include <hbmainwindow.h> |
10
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
22 |
#include <hbdataform.h> |
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
23 |
#include <cpitemdatahelper.h> |
11
10d0dd0e43f1
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
10
diff
changeset
|
24 |
#include <cplogger.h> |
33 | 25 |
#include <hbactivitymanager.h> |
26 |
#include <hbapplication.h> |
|
27 |
#include <hbinstance.h> |
|
28 |
#include <QPixMap> |
|
29 |
#include <QMetaType> |
|
30 |
#include "cpcategorysettingformitemdata.h" |
|
10
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
31 |
|
19 | 32 |
//CpMainView implementation |
33 |
CpMainView::CpMainView(HbMainWindow *mainWindow/*= 0*/) |
|
34 |
: CpBaseSettingView(0,0), |
|
35 |
mMainModel(0), |
|
36 |
mItemDataHelper(0), |
|
33 | 37 |
mMainWindow(mainWindow), |
38 |
mActivityManager(0) |
|
19 | 39 |
{ |
40 |
//delay loading |
|
33 | 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())); |
|
10
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
47 |
} |
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
48 |
|
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
49 |
CpMainView::~CpMainView() |
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
50 |
{ |
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
51 |
delete mMainModel; |
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
52 |
delete mItemDataHelper; |
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
53 |
} |
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
54 |
|
11
10d0dd0e43f1
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
10
diff
changeset
|
55 |
bool CpMainView::event(QEvent *e) |
10d0dd0e43f1
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
10
diff
changeset
|
56 |
{ |
10d0dd0e43f1
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
10
diff
changeset
|
57 |
if (e->type() == QEvent::Show || e->type() == QEvent::ShowToParent) { |
10d0dd0e43f1
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
10
diff
changeset
|
58 |
CPPERF_LOG("CpMainView shown."); |
10d0dd0e43f1
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
10
diff
changeset
|
59 |
} |
10d0dd0e43f1
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
10
diff
changeset
|
60 |
return CpBaseSettingView::event(e); |
10d0dd0e43f1
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
10
diff
changeset
|
61 |
} |
10d0dd0e43f1
Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
10
diff
changeset
|
62 |
|
19 | 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); |
|
33 | 71 |
connect(form, SIGNAL(activated(QModelIndex)), this, SLOT(onDataFormItemActivated(QModelIndex))); |
19 | 72 |
|
33 | 73 |
connect(mMainWindow, SIGNAL(aboutToChangeView(HbView *, HbView *)), this, SLOT(onAboutToChangeView(HbView *, HbView *))); |
19 | 74 |
} |
75 |
} |
|
33 | 76 |
loadActivity(); |
19 | 77 |
} |
33 | 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"); |
|
41 | 145 |
HbDataFormModelItem *modelItem = mMainModel->itemFromIndex(index); |
146 |
if (modelItem != 0 && modelItem->type() == HbDataFormModelItem::GroupItem) { |
|
147 |
CpSettingFormItemData *itemData = static_cast<CpSettingFormItemData *>(modelItem); |
|
148 |
if (CpCategorySettingFormItemData *categoryItemData = qobject_cast<CpCategorySettingFormItemData *>(itemData)) { |
|
149 |
categoryItemData->initialize(*mItemDataHelper); |
|
150 |
} |
|
151 |
} |
|
152 |
||
33 | 153 |
} |
154 |
void CpMainView::onAboutToChangeView(HbView * oldView, HbView *newView) |
|
155 |
{ |
|
156 |
Q_UNUSED(newView); |
|
157 |
if (this == oldView) { |
|
158 |
mScreenshot = QPixmap::grabWidget(mMainWindow, mMainWindow->rect()); |
|
159 |
} |
|
160 |
} |
|
161 |
||
10
0a74be98a8bc
Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff
changeset
|
162 |
// End of File |