controlpanelui/src/cpapplication/src/cpmainview.cpp
author hgs
Thu, 30 Sep 2010 16:15:53 +0800
changeset 41 ab0490982943
parent 33 0cfa53de576f
permissions -rw-r--r--
201039
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
hgs
parents: 11
diff changeset
    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
hgs
parents: 21
diff changeset
    25
#include <hbactivitymanager.h>
hgs
parents: 21
diff changeset
    26
#include <hbapplication.h>
hgs
parents: 21
diff changeset
    27
#include <hbinstance.h>
hgs
parents: 21
diff changeset
    28
#include <QPixMap>
hgs
parents: 21
diff changeset
    29
#include <QMetaType>
hgs
parents: 21
diff changeset
    30
#include "cpcategorysettingformitemdata.h"
10
0a74be98a8bc Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
19
hgs
parents: 11
diff changeset
    32
//CpMainView implementation
hgs
parents: 11
diff changeset
    33
CpMainView::CpMainView(HbMainWindow *mainWindow/*= 0*/)
hgs
parents: 11
diff changeset
    34
: CpBaseSettingView(0,0), 
hgs
parents: 11
diff changeset
    35
  mMainModel(0), 
hgs
parents: 11
diff changeset
    36
  mItemDataHelper(0), 
33
hgs
parents: 21
diff changeset
    37
  mMainWindow(mainWindow),
hgs
parents: 21
diff changeset
    38
  mActivityManager(0)
19
hgs
parents: 11
diff changeset
    39
{ 
hgs
parents: 11
diff changeset
    40
    //delay loading
33
hgs
parents: 21
diff changeset
    41
    //connect(mMainWindow,SIGNAL(viewReady()),this,SLOT(initializeMainModel()));
hgs
parents: 21
diff changeset
    42
    // AUTO SAVE ACTIVITY OF CONTROLPANEL
hgs
parents: 21
diff changeset
    43
    HbApplication *app= qobject_cast<HbApplication *>(qApp);
hgs
parents: 21
diff changeset
    44
    mActivityManager = app->activityManager();
hgs
parents: 21
diff changeset
    45
    initializeMainModel();    
hgs
parents: 21
diff changeset
    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
hgs
parents: 11
diff changeset
    63
void CpMainView::initializeMainModel()
hgs
parents: 11
diff changeset
    64
{
hgs
parents: 11
diff changeset
    65
    if (HbDataForm *form = qobject_cast<HbDataForm *>(widget())) {
hgs
parents: 11
diff changeset
    66
        if (!mMainModel) {  
hgs
parents: 11
diff changeset
    67
            mItemDataHelper = new CpItemDataHelper(form);
hgs
parents: 11
diff changeset
    68
            mMainModel = new CpMainModel;
hgs
parents: 11
diff changeset
    69
            mMainModel->initialize(*mItemDataHelper);
hgs
parents: 11
diff changeset
    70
            form->setModel(mMainModel);
33
hgs
parents: 21
diff changeset
    71
            connect(form, SIGNAL(activated(QModelIndex)), this, SLOT(onDataFormItemActivated(QModelIndex)));
19
hgs
parents: 11
diff changeset
    72
            
33
hgs
parents: 21
diff changeset
    73
            connect(mMainWindow, SIGNAL(aboutToChangeView(HbView *, HbView *)), this, SLOT(onAboutToChangeView(HbView *, HbView *)));
19
hgs
parents: 11
diff changeset
    74
        }
hgs
parents: 11
diff changeset
    75
    }   
33
hgs
parents: 21
diff changeset
    76
    loadActivity();
19
hgs
parents: 11
diff changeset
    77
}
33
hgs
parents: 21
diff changeset
    78
hgs
parents: 21
diff changeset
    79
void CpMainView::loadActivity()
hgs
parents: 21
diff changeset
    80
{
hgs
parents: 21
diff changeset
    81
    if (mMainModel == 0) {
hgs
parents: 21
diff changeset
    82
        return;            
hgs
parents: 21
diff changeset
    83
    } 
hgs
parents: 21
diff changeset
    84
    QVariant data = mActivityManager->activityData(QString("ControlPanelView"));
hgs
parents: 21
diff changeset
    85
    if (data.canConvert<QList<QVariant> >())
hgs
parents: 21
diff changeset
    86
    {
hgs
parents: 21
diff changeset
    87
        QList<QVariant> isExpanded = qvariant_cast<QList<QVariant> >(data);
hgs
parents: 21
diff changeset
    88
        HbDataFormModelItem *root = mMainModel->invisibleRootItem();
hgs
parents: 21
diff changeset
    89
        int groupCount = 0;
hgs
parents: 21
diff changeset
    90
        
hgs
parents: 21
diff changeset
    91
        if (root) {
hgs
parents: 21
diff changeset
    92
         groupCount = root->childCount();
hgs
parents: 21
diff changeset
    93
        }
hgs
parents: 21
diff changeset
    94
        
hgs
parents: 21
diff changeset
    95
        if (groupCount == isExpanded.count()) {
hgs
parents: 21
diff changeset
    96
            for (int i = 0; i < groupCount; i++) {
hgs
parents: 21
diff changeset
    97
                HbDataFormModelItem *groupItem = root->childAt(i);
hgs
parents: 21
diff changeset
    98
                QModelIndex index = mMainModel->indexFromItem(groupItem);
hgs
parents: 21
diff changeset
    99
                HbDataForm *form = qobject_cast<HbDataForm *>(widget());
hgs
parents: 21
diff changeset
   100
                if (form) {
hgs
parents: 21
diff changeset
   101
                    if (isExpanded.at(i).toBool()) {
hgs
parents: 21
diff changeset
   102
                        onDataFormItemActivated(index);
hgs
parents: 21
diff changeset
   103
                    }
hgs
parents: 21
diff changeset
   104
                    form->setExpanded(index,isExpanded.at(i).toBool());
hgs
parents: 21
diff changeset
   105
                }
hgs
parents: 21
diff changeset
   106
            }
hgs
parents: 21
diff changeset
   107
        }
hgs
parents: 21
diff changeset
   108
        
hgs
parents: 21
diff changeset
   109
        mActivityManager->removeActivity("ControlPanelView");
hgs
parents: 21
diff changeset
   110
    }
hgs
parents: 21
diff changeset
   111
}
hgs
parents: 21
diff changeset
   112
hgs
parents: 21
diff changeset
   113
void CpMainView::saveActivity()
hgs
parents: 21
diff changeset
   114
{
hgs
parents: 21
diff changeset
   115
    HbDataFormModelItem *root = mMainModel->invisibleRootItem();
hgs
parents: 21
diff changeset
   116
    int groupCount = 0;
hgs
parents: 21
diff changeset
   117
    QList<QVariant> isExpanded;
hgs
parents: 21
diff changeset
   118
    if (root) {
hgs
parents: 21
diff changeset
   119
        groupCount = root->childCount();
hgs
parents: 21
diff changeset
   120
    }
hgs
parents: 21
diff changeset
   121
    for (int i = 0; i < groupCount; i++) {
hgs
parents: 21
diff changeset
   122
        HbDataFormModelItem *groupItem = root->childAt(i);
hgs
parents: 21
diff changeset
   123
        QModelIndex index = mMainModel->indexFromItem(groupItem);
hgs
parents: 21
diff changeset
   124
        HbDataForm *form = qobject_cast<HbDataForm *>(widget());    
hgs
parents: 21
diff changeset
   125
        isExpanded << form->isExpanded(index);
hgs
parents: 21
diff changeset
   126
    }
hgs
parents: 21
diff changeset
   127
    
hgs
parents: 21
diff changeset
   128
    HbMainWindow *mainWindow = hbInstance->allMainWindows().first();
hgs
parents: 21
diff changeset
   129
    HbView *view = mainWindow->currentView();
hgs
parents: 21
diff changeset
   130
    if(this == view)
hgs
parents: 21
diff changeset
   131
        {
hgs
parents: 21
diff changeset
   132
        mScreenshot = QPixmap::grabWidget(mainWindow, mainWindow->rect());
hgs
parents: 21
diff changeset
   133
        }
hgs
parents: 21
diff changeset
   134
    
hgs
parents: 21
diff changeset
   135
    QVariantHash metadata;
hgs
parents: 21
diff changeset
   136
    metadata.insert("screenshot", mScreenshot);
hgs
parents: 21
diff changeset
   137
    QVariant data(isExpanded);
hgs
parents: 21
diff changeset
   138
hgs
parents: 21
diff changeset
   139
    mActivityManager->addActivity("ControlPanelView", data, metadata);
hgs
parents: 21
diff changeset
   140
}
hgs
parents: 21
diff changeset
   141
hgs
parents: 21
diff changeset
   142
void CpMainView::onDataFormItemActivated(const QModelIndex &index)
hgs
parents: 21
diff changeset
   143
{
hgs
parents: 21
diff changeset
   144
    CPFW_LOG("CpMainView::onDataFormItemActivated");
41
hgs
parents: 33
diff changeset
   145
    HbDataFormModelItem *modelItem = mMainModel->itemFromIndex(index);
hgs
parents: 33
diff changeset
   146
    if (modelItem != 0 && modelItem->type() == HbDataFormModelItem::GroupItem) {
hgs
parents: 33
diff changeset
   147
        CpSettingFormItemData *itemData = static_cast<CpSettingFormItemData *>(modelItem);
hgs
parents: 33
diff changeset
   148
        if (CpCategorySettingFormItemData *categoryItemData = qobject_cast<CpCategorySettingFormItemData *>(itemData)) {
hgs
parents: 33
diff changeset
   149
            categoryItemData->initialize(*mItemDataHelper);
hgs
parents: 33
diff changeset
   150
        }    
hgs
parents: 33
diff changeset
   151
    }
hgs
parents: 33
diff changeset
   152
        
33
hgs
parents: 21
diff changeset
   153
}
hgs
parents: 21
diff changeset
   154
void CpMainView::onAboutToChangeView(HbView * oldView, HbView *newView)
hgs
parents: 21
diff changeset
   155
{
hgs
parents: 21
diff changeset
   156
    Q_UNUSED(newView);
hgs
parents: 21
diff changeset
   157
    if (this == oldView) {
hgs
parents: 21
diff changeset
   158
        mScreenshot = QPixmap::grabWidget(mMainWindow, mMainWindow->rect());
hgs
parents: 21
diff changeset
   159
        }
hgs
parents: 21
diff changeset
   160
    }
hgs
parents: 21
diff changeset
   161
10
0a74be98a8bc Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   162
// End of File