homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsviewappdetailsstate.cpp
author hgs
Mon, 20 Sep 2010 10:19:07 +0300
changeset 90 3ac3aaebaee5
parent 86 e4f038c420f7
permissions -rw-r--r--
201037
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
51
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/*
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
4785f57bf3d4 Revision: 201019
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".
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
*
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    11
*
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    12
* Contributors:
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
*
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    14
* Description:  Menu Application Library state.
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
 *
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    16
*/
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    18
#include <QDebug>
69
hgs
parents: 63
diff changeset
    19
#include <QScopedPointer>
51
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
#include <HbDialog>
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
#include <HbDocumentLoader>
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
#include <HbLabel>
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
#include <HbAction>
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
#include "caservice.h"
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    26
#include "casoftwareregistry.h"
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    27
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    28
#include "canotifier.h"
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    29
#include "canotifierfilter.h"
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
#include "hsviewappdetailsstate.h"
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
#include "hsmenuevent.h"
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    33
#include "hsmenuitemmodel.h"
90
hgs
parents: 86
diff changeset
    34
#include "hsdialogcontroller.h"
51
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    35
63
hgs
parents: 62
diff changeset
    36
static const char *const HS_VIEWAPPDETAILS_JAVA_DIALOG_SECTION_NAME=
hgs
parents: 62
diff changeset
    37
        "detailsDialogForJavaApplication";
62
hgs
parents: 55
diff changeset
    38
hgs
parents: 55
diff changeset
    39
/*!
hgs
parents: 55
diff changeset
    40
 Constructor.
63
hgs
parents: 62
diff changeset
    41
 /param parent Parent state.
62
hgs
parents: 55
diff changeset
    42
 */
51
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    43
HsViewAppDetailsState::HsViewAppDetailsState(QState *parent) :
90
hgs
parents: 86
diff changeset
    44
    QState(parent)
51
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    45
{
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    46
    construct();
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    47
}
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    48
62
hgs
parents: 55
diff changeset
    49
/*!
hgs
parents: 55
diff changeset
    50
 Destructor
hgs
parents: 55
diff changeset
    51
 */
51
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    52
HsViewAppDetailsState::~HsViewAppDetailsState()
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    53
{
90
hgs
parents: 86
diff changeset
    54
    QT_TRY {
hgs
parents: 86
diff changeset
    55
        emit exit();
hgs
parents: 86
diff changeset
    56
    } QT_CATCH (...) {
hgs
parents: 86
diff changeset
    57
    }
51
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    58
}
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    59
62
hgs
parents: 55
diff changeset
    60
/*!
hgs
parents: 55
diff changeset
    61
 Construction
hgs
parents: 55
diff changeset
    62
 */
51
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    63
void HsViewAppDetailsState::construct()
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    64
{
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    65
    HSMENUTEST_FUNC_ENTRY("HsViewAppDetailsState::construct");
63
hgs
parents: 62
diff changeset
    66
62
hgs
parents: 55
diff changeset
    67
    setObjectName("/ViewAppDetailsState");
hgs
parents: 55
diff changeset
    68
    if (this->parent()) {
hgs
parents: 55
diff changeset
    69
        setObjectName(this->parent()->objectName() + objectName());
hgs
parents: 55
diff changeset
    70
    }
51
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    71
    HSMENUTEST_FUNC_EXIT("HsViewAppDetailsState::construct");
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    72
}
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    73
62
hgs
parents: 55
diff changeset
    74
/*!
hgs
parents: 55
diff changeset
    75
 Invoked on entering state
hgs
parents: 55
diff changeset
    76
 */
51
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    77
void HsViewAppDetailsState::onEntry(QEvent *event)
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    78
{
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    79
    HSMENUTEST_FUNC_ENTRY("HsViewAppDetailsState::onEntry");
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    80
    QState::onEntry(event);
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    81
    HsMenuEvent *menuEvent = static_cast<HsMenuEvent *>(event);
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    82
    QVariantMap data = menuEvent->data();
63
hgs
parents: 62
diff changeset
    83
81
hgs
parents: 69
diff changeset
    84
    const int entryId = data.value(Hs::itemIdKey).toInt();
63
hgs
parents: 62
diff changeset
    85
    QSharedPointer<const CaEntry> entry
62
hgs
parents: 55
diff changeset
    86
        = CaService::instance()->getEntry(entryId);
86
hgs
parents: 81
diff changeset
    87
    if (!entry) {
90
hgs
parents: 86
diff changeset
    88
        emit exit();
86
hgs
parents: 81
diff changeset
    89
        return;
hgs
parents: 81
diff changeset
    90
    }
62
hgs
parents: 55
diff changeset
    91
    const int componentId = entry->attribute(
81
hgs
parents: 69
diff changeset
    92
        Hs::componentIdAttributeName).toInt();
86
hgs
parents: 81
diff changeset
    93
51
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    94
    QSharedPointer<CaSoftwareRegistry> scr = CaSoftwareRegistry::create();
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    95
    CaSoftwareRegistry::DetailMap detailMap = scr->entryDetails(componentId);
63
hgs
parents: 62
diff changeset
    96
81
hgs
parents: 69
diff changeset
    97
    QString appType = entry->attribute(Hs::swTypeKey);
63
hgs
parents: 62
diff changeset
    98
86
hgs
parents: 81
diff changeset
    99
63
hgs
parents: 62
diff changeset
   100
    //TODO: Should we display something In that case?
hgs
parents: 62
diff changeset
   101
    if (detailMap.size() < 1){
90
hgs
parents: 86
diff changeset
   102
        emit exit();
63
hgs
parents: 62
diff changeset
   103
        return;
hgs
parents: 62
diff changeset
   104
    }
86
hgs
parents: 81
diff changeset
   105
51
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   106
    HbDocumentLoader loader;
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   107
    bool loadStatusOk = false;
63
hgs
parents: 62
diff changeset
   108
    loader.load(HS_DETAILS_DIALOG_LAYOUT, &loadStatusOk);
62
hgs
parents: 55
diff changeset
   109
    Q_ASSERT_X(loadStatusOk, HS_DETAILS_DIALOG_LAYOUT,
51
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   110
           "Error while loading docml file.");
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   111
81
hgs
parents: 69
diff changeset
   112
    if (!appType.compare(Hs::javaSwType)) {
63
hgs
parents: 62
diff changeset
   113
        QString section = QString(HS_VIEWAPPDETAILS_JAVA_DIALOG_SECTION_NAME);
hgs
parents: 62
diff changeset
   114
        loader.load(HS_DETAILS_DIALOG_LAYOUT,
hgs
parents: 62
diff changeset
   115
                                  section, &loadStatusOk);
hgs
parents: 62
diff changeset
   116
    }
hgs
parents: 62
diff changeset
   117
90
hgs
parents: 86
diff changeset
   118
    QScopedPointer<HbDialog> dialog(qobject_cast<HbDialog*>(
hgs
parents: 86
diff changeset
   119
        loader.findWidget(HS_DETAILS_DIALOG_NAME)));
62
hgs
parents: 55
diff changeset
   120
90
hgs
parents: 86
diff changeset
   121
    if (!dialog.isNull()) {
hgs
parents: 86
diff changeset
   122
        dialog->setTimeout(HbPopup::NoTimeout);
hgs
parents: 86
diff changeset
   123
        dialog->actions()[0]->setParent(dialog.data());
86
hgs
parents: 81
diff changeset
   124
63
hgs
parents: 62
diff changeset
   125
        setFieldPresentation(CaSoftwareRegistry::componentNameKey(),
hgs
parents: 62
diff changeset
   126
            detailMap, loader);
hgs
parents: 62
diff changeset
   127
        setFieldPresentation(CaSoftwareRegistry::componentVersionKey(),
hgs
parents: 62
diff changeset
   128
            detailMap, loader);
hgs
parents: 62
diff changeset
   129
        setFieldPresentation(CaSoftwareRegistry::componentVendorKey(),
hgs
parents: 62
diff changeset
   130
            detailMap, loader);
hgs
parents: 62
diff changeset
   131
        setFieldPresentation(CaSoftwareRegistry::componentDriveInfoKey(),
hgs
parents: 62
diff changeset
   132
            detailMap, loader);
hgs
parents: 62
diff changeset
   133
        setFieldPresentation(CaSoftwareRegistry::componentSizeKey(),
hgs
parents: 62
diff changeset
   134
            detailMap, loader);
hgs
parents: 62
diff changeset
   135
        setFieldPresentation(CaSoftwareRegistry::componentTypeKey(),
hgs
parents: 62
diff changeset
   136
            detailMap, loader);
hgs
parents: 62
diff changeset
   137
81
hgs
parents: 69
diff changeset
   138
        if (!appType.compare(Hs::javaSwType)) {
63
hgs
parents: 62
diff changeset
   139
            setFieldPresentation(CaSoftwareRegistry::componentDescriptionKey(),
hgs
parents: 62
diff changeset
   140
                detailMap, loader);
hgs
parents: 62
diff changeset
   141
            setFieldPresentation(CaSoftwareRegistry::componentProtectionDomainKey(),
hgs
parents: 62
diff changeset
   142
                detailMap, loader);
hgs
parents: 62
diff changeset
   143
        }
86
hgs
parents: 81
diff changeset
   144
90
hgs
parents: 86
diff changeset
   145
        QScopedPointer<HsDialogController> dialogController(
hgs
parents: 86
diff changeset
   146
            new HsDialogController(dialog.take(),
hgs
parents: 86
diff changeset
   147
                HsMenuDialogFactory::acceptActionIndex(),
hgs
parents: 86
diff changeset
   148
                HsMenuDialogFactory::rejectActionIndex()));
86
hgs
parents: 81
diff changeset
   149
90
hgs
parents: 86
diff changeset
   150
        connect(dialogController.data(),
hgs
parents: 86
diff changeset
   151
                SIGNAL(dialogCompleted()),
hgs
parents: 86
diff changeset
   152
                this,
hgs
parents: 86
diff changeset
   153
                SIGNAL(exit()));
86
hgs
parents: 81
diff changeset
   154
90
hgs
parents: 86
diff changeset
   155
        // ensure dialog is dismissed on app key pressed
hgs
parents: 86
diff changeset
   156
        connect(this, SIGNAL(exited()),
hgs
parents: 86
diff changeset
   157
                dialogController.data(),
hgs
parents: 86
diff changeset
   158
                SLOT(dismissDialog()));
hgs
parents: 86
diff changeset
   159
hgs
parents: 86
diff changeset
   160
        dialogController.take()->openDialog(entryId);
69
hgs
parents: 63
diff changeset
   161
    } else {
90
hgs
parents: 86
diff changeset
   162
        emit exit();
51
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   163
    }
63
hgs
parents: 62
diff changeset
   164
    HSMENUTEST_FUNC_EXIT("HsViewAppDetailsState::onEntry");
hgs
parents: 62
diff changeset
   165
}
hgs
parents: 62
diff changeset
   166
hgs
parents: 62
diff changeset
   167
/*!
hgs
parents: 62
diff changeset
   168
 Extracting label from loader and set content of data field.
hgs
parents: 62
diff changeset
   169
 Hide label if the is no data to display.
hgs
parents: 62
diff changeset
   170
 \param key detail key.
hgs
parents: 62
diff changeset
   171
 \param detailMap detail map.
hgs
parents: 62
diff changeset
   172
 \param loader session to document loader
hgs
parents: 62
diff changeset
   173
 \retval void
hgs
parents: 62
diff changeset
   174
 */
hgs
parents: 62
diff changeset
   175
void HsViewAppDetailsState::setFieldPresentation(QString key,
hgs
parents: 62
diff changeset
   176
        CaSoftwareRegistry::DetailMap &detailMap,
hgs
parents: 62
diff changeset
   177
        HbDocumentLoader &loader)
hgs
parents: 62
diff changeset
   178
{
hgs
parents: 62
diff changeset
   179
    HbLabel* dataLabel = qobject_cast<HbLabel*>(
hgs
parents: 62
diff changeset
   180
                loader.findWidget(key));
hgs
parents: 62
diff changeset
   181
    QString data = detailMap[key];
hgs
parents: 62
diff changeset
   182
    if (data.isEmpty()) {
hgs
parents: 62
diff changeset
   183
        dataLabel->setVisible(false);
hgs
parents: 62
diff changeset
   184
        dataLabel->setMaximumHeight(0);
hgs
parents: 62
diff changeset
   185
        HbLabel* titleLabel = qobject_cast<HbLabel*>(
hgs
parents: 62
diff changeset
   186
            loader.findWidget(QString("_") + key));
hgs
parents: 62
diff changeset
   187
        titleLabel->setVisible(false);
hgs
parents: 62
diff changeset
   188
        titleLabel->setMaximumHeight(0);
hgs
parents: 62
diff changeset
   189
    } else {
hgs
parents: 62
diff changeset
   190
        dataLabel->setPlainText(data);
hgs
parents: 62
diff changeset
   191
    }
51
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   192
}
62
hgs
parents: 55
diff changeset
   193
51
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   194
4785f57bf3d4 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   195