javamanager/javasettings_qt/src/javaapplicationsettingsview_p.cpp
author hgs
Fri, 09 Jul 2010 16:35:45 +0300
changeset 50 023eef975703
child 67 63b81d807542
permissions -rw-r--r--
v2.2.4_1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
50
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
     1
/*
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
     3
* All rights reserved.
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
     8
*
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
     9
* Initial Contributors:
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    11
*
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    12
* Contributors:
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    13
*
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    14
* Description:
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    15
*
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    16
*/
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    17
#include <hbmessagebox.h>
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    18
#include <hbdataformviewitem.h>
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    19
#include <hbcombobox.h>
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    20
#include <hbpushbutton.h>
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    21
#include <hbdataform.h>
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    22
#include <hbdataformmodel.h>
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    23
#include <hbdataformmodelitem.h>
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    24
#include <hblabel.h>
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    25
#include <hbaction.h>
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    26
#include <QApplication>
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    27
#include <QTranslator>
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    28
#include <QLibraryInfo>
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    29
#include <qnetworkconfigmanager.h>
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    30
#include <qnetworkconfiguration.h>
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    31
#include <algorithm>
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    32
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    33
#include "javaapplicationsettings.h"
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    34
#include "javaapplicationsettingsview.h"
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    35
#include "javaapplicationsettingsview_p.h"
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    36
#include "connectionmanager.h"
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    37
#include "javacommonutils.h"
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    38
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    39
#include "securitystoragedatadefs.h"
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    40
#include "javastoragenames.h"
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    41
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    42
#include "logger.h"
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    43
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    44
QTM_USE_NAMESPACE
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    45
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    46
using namespace java::settings;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    47
using namespace java::storage;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    48
using namespace java::util;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    49
using namespace std;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    50
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    51
const wchar_t ON_SCREEN_KEYPAD_VALUE_NO[] = L"0";
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    52
const wchar_t ON_SCREEN_KEYPAD_VALUE_GAMEACTIONS[] = L"1";
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    53
const wchar_t ON_SCREEN_KEYPAD_VALUE_NAVIGATION[] = L"2";
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    54
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    55
JavaApplicationSettingsViewPrivate::JavaApplicationSettingsViewPrivate(const QString& aJavaAppUid):
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    56
        mMainForm(0), mModel(0), mGeneralSettingsGroup(0), mSecuritySettingsGroup(0), mNetConnSettingsUi(0), mAsyncToSyncCallEventLoop(0), mSecWarningAccepted(false), mDefaultConnId(0)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    57
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    58
    // init common values
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    59
    init();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    60
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    61
    // init the suite UID from the application UID
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    62
    readSuiteUid(aJavaAppUid);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    63
    if (mSuiteUid.size() <= 0)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    64
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    65
        ELOG1(EJavaSettings, "No suite found with uid %S", aJavaAppUid.toStdWString().c_str());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    66
        return;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    67
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    68
    ELOG1(EJavaSettings, "Initializing settings for suite %S", mSuiteUid.c_str());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    69
    
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    70
    // init access point settings ui
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    71
    mNetConnSettingsUi = new CmApplSettingsUi(this);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    72
    mAsyncToSyncCallEventLoop = new QEventLoop();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    73
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    74
    // read all settings
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    75
    readAllSettings();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    76
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    77
    // init form
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    78
    mMainForm = new HbDataForm();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    79
    mMainForm->setHeading(QString::fromStdWString(readFromStorage(PACKAGE_NAME, L"", L"", APPLICATION_PACKAGE_TABLE)));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    80
    mModel = new HbDataFormModel();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    81
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    82
    // init settings
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    83
    mGeneralSettingsGroup = mModel->appendDataFormGroup(
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    84
        QString(hbTrId(ID_GENERAL_GROUP_TITLE)), mModel->invisibleRootItem());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    85
    initSettings(mGeneralSettings, mGeneralSettingsGroup);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    86
    // append the security settings only if there are any user settings
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    87
    if (mExtraSettings.size() > 0)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    88
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    89
        mSecuritySettingsGroup = mModel->appendDataFormGroup(
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    90
            QString(hbTrId(ID_SECURITY_GROUP_TITLE)), mModel->invisibleRootItem());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    91
        initSettings(mSecuritySettings, mSecuritySettingsGroup);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    92
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    93
        // if security warnings is user defined -> add the extra settings, expand
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    94
        if (mSecuritySettings[0].getCurrentValue() == 1)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    95
        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    96
            securityWarningsChanged(TXT_USER_DEFINED);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    97
        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    98
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
    99
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   100
    // link form and model
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   101
    mMainForm->setModel(mModel);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   102
    mMainForm->setExpanded(mModel->indexFromItem(mGeneralSettingsGroup), true);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   103
    if (mExtraSettings.size() > 0)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   104
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   105
        mMainForm->setExpanded(mModel->indexFromItem(mSecuritySettingsGroup), (mSecuritySettings[0].getCurrentValue() == 1));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   106
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   107
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   108
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   109
void JavaApplicationSettingsViewPrivate::init(JavaApplicationSettingsView* aPublicView)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   110
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   111
    mPublicView = aPublicView;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   112
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   113
    if (mMainForm)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   114
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   115
        // do the connect for the main form
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   116
        mPublicView->connect(mMainForm, SIGNAL(itemShown(const QModelIndex)),
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   117
                             mPublicView, SLOT(_q_dataItemDisplayed(const QModelIndex)));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   118
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   119
        // set the form as view's widget
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   120
        mPublicView->setWidget(mMainForm);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   121
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   122
    else
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   123
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   124
        // no settings available
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   125
        HbLabel* label = new HbLabel(TXT_SETTINGS_NOT_AVAILABLE, mPublicView);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   126
        label->setAlignment(Qt::AlignVCenter);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   127
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   128
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   129
    // set title
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   130
    mPublicView->setTitle(TXT_SETTINGS_TITLE);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   131
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   132
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   133
JavaApplicationSettingsViewPrivate::~JavaApplicationSettingsViewPrivate()
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   134
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   135
    delete mMainForm;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   136
    delete mModel;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   137
    delete mNetConnSettingsUi;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   138
    delete mAsyncToSyncCallEventLoop;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   139
    foreach (QTranslator *translator, mTranslators) {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   140
        qApp->removeTranslator(translator);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   141
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   142
    qDeleteAll(mTranslators);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   143
    mTranslators.clear();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   144
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   145
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   146
void JavaApplicationSettingsViewPrivate::readAllSettings()
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   147
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   148
    // general settings
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   149
    initGeneralSettings();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   150
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   151
    // security settings
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   152
    initSecuritySettings();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   153
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   154
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   155
void JavaApplicationSettingsViewPrivate::init()
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   156
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   157
    // init storage
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   158
    try
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   159
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   160
        mStorage.reset(JavaStorage::createInstance());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   161
        mStorage->open();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   162
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   163
    catch (JavaStorageException& aJse)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   164
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   165
        ELOG1(EJavaSettings, "Error while opening the storage %S", aJse.toString().c_str());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   166
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   167
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   168
    QTranslator translator;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   169
    // load the correct translation of the localized strings for the cmmanager.
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   170
    // Load this one first since it contains the smallest amount of strings
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   171
    // (so it's ok to be searched last)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   172
    installTranslator("cmapplsettingsui");
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   173
    installTranslator("cmmanager");
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   174
    // load the correct translation of the localized strings for the java settings
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   175
    // Current solution reads it from Z only (this does not work with IAD)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   176
    // -> check if translator can handle path without drive letter (e.g. the resource
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   177
    // is loaded from the same drive where the DLL is loaded)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   178
    installTranslator("javaruntimeapplicationsettings");
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   179
    // init strings
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   180
    TXT_BLANKET = QString(hbTrId(ID_BLANKET));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   181
    TXT_SESSION = QString(hbTrId(ID_SESSION));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   182
    TXT_ONESHOT = QString(hbTrId(ID_ONESHOT));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   183
    TXT_DENIED = QString(hbTrId(ID_DENIED));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   184
    TXT_SECURITY_LEVEL = QString(hbTrId(ID_SECURITY_LEVEL));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   185
    TXT_USER_DEFINED = QString(hbTrId(ID_USER_DEFINED));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   186
    TXT_SENSITIVE_SETTINGS = QString(hbTrId(ID_SENSITIVE_SETTINGS));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   187
    TXT_SENSITIVE_SETTINGS_NET_USAGE = QString(hbTrId(ID_SENSITIVE_SETTINGS_NET_USAGE));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   188
    TXT_MUTUALLY_EXCLUSIVE_SETTINGS = QString(hbTrId(ID_MUTUALLY_EXCLUSIVE_SETTINGS));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   189
    TXT_OK = QString(hbTrId(ID_OK));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   190
    TXT_CANCEL = QString(hbTrId(ID_CANCEL));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   191
    TXT_SECURITY_WARNING_TITLE = QString(hbTrId(ID_SECURITY_WARNING_TITLE));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   192
    TXT_NET_ACCESS = QString(hbTrId(ID_NET_ACCESS));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   193
    TXT_LOW_LEVEL_NET_ACCESS = QString(hbTrId(ID_LOW_LEVEL_NET_ACCESS));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   194
    TXT_NETWORK_CONNECTION = QString(hbTrId(ID_NETWORK_CONNECTION));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   195
    TXT_SETTINGS_TITLE = QString(hbTrId(ID_SETTINGS_TITLE));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   196
    TXT_SETTINGS_NOT_AVAILABLE = QString(hbTrId(ID_SETTINGS_NOT_AVAILABLE));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   197
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   198
    // init the known localized settings names
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   199
    mLocalizedSettingsNames[QString::fromStdWString(NET_ACCESS_SETTINGS)] = TXT_NET_ACCESS;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   200
    mLocalizedSettingsNames[QString::fromStdWString(LOW_LEVEL_NET_ACCESS_SETTINGS)] = TXT_LOW_LEVEL_NET_ACCESS;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   201
    mLocalizedSettingsNames[QString::fromStdWString(MESSAGING_SETTINGS)] = QString(hbTrId(ID_MESSAGING));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   202
    mLocalizedSettingsNames[QString::fromStdWString(RESTRICTED_MESSAGING_SETTINGS)] = QString(hbTrId(ID_RESTRICTED_MESSAGING));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   203
    mLocalizedSettingsNames[QString::fromStdWString(CALL_CONTROL_SETTINGS)] = QString(hbTrId(ID_CALL_CONTROL));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   204
    mLocalizedSettingsNames[QString::fromStdWString(LOCAL_CONNECTIVITY_SETTINGS)] = QString(hbTrId(ID_LOCAL_CONNECTIVITY));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   205
    mLocalizedSettingsNames[QString::fromStdWString(MULTIMEDIA_RECORDING_SETTINGS)] = QString(hbTrId(ID_MULTIMEDIA_RECORDING));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   206
    mLocalizedSettingsNames[QString::fromStdWString(WRITE_USER_DATA_ACCESS_SETTINGS)] = QString(hbTrId(ID_WRITE_USER_DATA_ACCESS));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   207
    mLocalizedSettingsNames[QString::fromStdWString(READ_USER_DATA_ACCESS_SETTINGS)] = QString(hbTrId(ID_READ_USER_DATA_ACCESS));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   208
    mLocalizedSettingsNames[QString::fromStdWString(LOCATION_SETTINGS)] = QString(hbTrId(ID_LOCATION));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   209
    mLocalizedSettingsNames[QString::fromStdWString(LANDMARK_SETTINGS)] = QString(hbTrId(ID_LANDMARK));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   210
    mLocalizedSettingsNames[QString::fromStdWString(AUTHENTICATION_SETTINGS)] = QString(hbTrId(ID_AUTHENTICATION));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   211
    mLocalizedSettingsNames[QString::fromStdWString(SMART_CARD_COMMUNICATION_SETTINGS)] = QString(hbTrId(ID_SMART_CARD_COMMUNICATION));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   212
    mLocalizedSettingsNames[QString::fromStdWString(APPLICATION_AUTO_INVOCATION_SETTINGS)] = QString(hbTrId(ID_APPLICATION_AUTO_INVOCATION));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   213
    mLocalizedSettingsNames[QString::fromStdWString(BROADCAST_SETTINGS)] = QString(hbTrId(ID_BROADCAST));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   214
    mLocalizedSettingsNames[QString::fromStdWString(NFC_WRITE_ACCESS_SETTINGS)] = QString(hbTrId(ID_NFC_WRITE_ACCESS));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   215
    mLocalizedSettingsNames[QString::fromStdWString(URL_START_SETTINGS)] = QString(hbTrId(ID_URL_START));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   216
    // init the display indexes associated with each settings
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   217
    mSettingsNamesIndexes[QString::fromStdWString(NET_ACCESS_SETTINGS)] = NET_ACCESS_SETTINGS_INDEX;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   218
    mSettingsNamesIndexes[QString::fromStdWString(LOW_LEVEL_NET_ACCESS_SETTINGS)] = LOW_LEVEL_NET_ACCESS_SETTINGS_INDEX;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   219
    mSettingsNamesIndexes[QString::fromStdWString(MESSAGING_SETTINGS)] = MESSAGING_SETTINGS_INDEX;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   220
    mSettingsNamesIndexes[QString::fromStdWString(RESTRICTED_MESSAGING_SETTINGS)] = RESTRICTED_MESSAGING_SETTINGS_INDEX;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   221
    mSettingsNamesIndexes[QString::fromStdWString(CALL_CONTROL_SETTINGS)] = CALL_CONTROL_SETTINGS_INDEX;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   222
    mSettingsNamesIndexes[QString::fromStdWString(LOCAL_CONNECTIVITY_SETTINGS)] = LOCAL_CONNECTIVITY_SETTINGS_INDEX;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   223
    mSettingsNamesIndexes[QString::fromStdWString(MULTIMEDIA_RECORDING_SETTINGS)] = MULTIMEDIA_RECORDING_SETTINGS_INDEX;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   224
    mSettingsNamesIndexes[QString::fromStdWString(WRITE_USER_DATA_ACCESS_SETTINGS)] = WRITE_USER_DATA_ACCESS_SETTINGS_INDEX;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   225
    mSettingsNamesIndexes[QString::fromStdWString(READ_USER_DATA_ACCESS_SETTINGS)] = READ_USER_DATA_ACCESS_SETTINGS_INDEX;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   226
    mSettingsNamesIndexes[QString::fromStdWString(LOCATION_SETTINGS)] = LOCATION_SETTINGS_INDEX;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   227
    mSettingsNamesIndexes[QString::fromStdWString(LANDMARK_SETTINGS)] = LANDMARK_SETTINGS_INDEX;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   228
    mSettingsNamesIndexes[QString::fromStdWString(AUTHENTICATION_SETTINGS)] = AUTHENTICATION_SETTINGS_INDEX;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   229
    mSettingsNamesIndexes[QString::fromStdWString(SMART_CARD_COMMUNICATION_SETTINGS)] = SMART_CARD_COMMUNICATION_SETTINGS_INDEX;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   230
    mSettingsNamesIndexes[QString::fromStdWString(APPLICATION_AUTO_INVOCATION_SETTINGS)] = APPLICATION_AUTO_INVOCATION_SETTINGS_INDEX;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   231
    mSettingsNamesIndexes[QString::fromStdWString(BROADCAST_SETTINGS)] = BROADCAST_SETTINGS_INDEX;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   232
    mSettingsNamesIndexes[QString::fromStdWString(NFC_WRITE_ACCESS_SETTINGS)] = NFC_WRITE_ACCESS_SETTINGS_INDEX;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   233
    mSettingsNamesIndexes[QString::fromStdWString(URL_START_SETTINGS)] = URL_START_SETTINGS_INDEX;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   234
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   235
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   236
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   237
void JavaApplicationSettingsViewPrivate::initGeneralSettings()
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   238
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   239
    QStringList settingsValues;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   240
    vector<wstring> storageValues;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   241
    if (!isInStorage(VALUE, NAME, L"Nokia-MIDlet-On-Screen-Keypad", APPLICATION_PACKAGE_ATTRIBUTES_TABLE))
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   242
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   243
        // if the on screen keypad is predefined, it should not be changable by user
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   244
        // -> right now it is not added to settings list. It should be changed so that
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   245
        // the setting should not be editable by user
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   246
        settingsValues<<QString(hbTrId(ID_OSK_NO))<<QString(hbTrId(ID_OSK_GAME))<<QString(hbTrId(ID_OSK_NAVIGATION));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   247
        storageValues.push_back(ON_SCREEN_KEYPAD_VALUE_NO);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   248
        storageValues.push_back(ON_SCREEN_KEYPAD_VALUE_GAMEACTIONS);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   249
        storageValues.push_back(ON_SCREEN_KEYPAD_VALUE_NAVIGATION);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   250
        mGeneralSettings.append(JavaApplicationSettings(QString(hbTrId(ID_OSK)), settingsValues, ON_SCREEN_KEYPAD, MIDP_PACKAGE_TABLE, storageValues));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   251
        readFromStorage(mGeneralSettings[0]);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   252
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   253
    settingsValues = QStringList();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   254
    initNetworkConnection();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   255
    settingsValues<<mNetConn.name;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   256
    mGeneralSettings.append(JavaApplicationSettings(TXT_NETWORK_CONNECTION, settingsValues));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   257
    mNetSettIndex = mGeneralSettings.size() - 1;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   258
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   259
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   260
void JavaApplicationSettingsViewPrivate::initSecuritySettings()
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   261
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   262
    QStringList settingsValues;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   263
    vector<wstring> storageValues;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   264
    settingsValues = QStringList();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   265
    storageValues.clear();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   266
    settingsValues<<QString(hbTrId(ID_SECURITY_LEVEL_DEFAULT))<<TXT_USER_DEFINED;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   267
    storageValues.push_back(SECURITY_WARNINGS_DEFAULT_MODE);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   268
    storageValues.push_back(SECURITY_WARNINGS_USER_DEFINED_MODE);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   269
    mSecuritySettings.append(JavaApplicationSettings(TXT_SECURITY_LEVEL, settingsValues, SECURITY_WARNINGS, MIDP_PACKAGE_TABLE, storageValues));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   270
    readFromStorage(mSecuritySettings[0]);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   271
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   272
    // extra settings
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   273
    settingsValues = QStringList();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   274
    storageValues.clear();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   275
    settingsValues<<TXT_ONESHOT<<TXT_SESSION<<TXT_BLANKET<<TXT_DENIED;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   276
    storageValues.push_back(ONESHOT_INTERACTION_MODE);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   277
    storageValues.push_back(SESSION_INTERACTION_MODE);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   278
    storageValues.push_back(BLANKET_INTERACTION_MODE);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   279
    storageValues.push_back(DENIED_INTERACTION_MODE);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   280
    vector<IndexedSettingsName> allSecuritySettings = readFromStorage(FUNCTION_GROUP, MIDP_FUNC_GRP_SETTINGS_TABLE, MIDP_PERMISSIONS_TABLE);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   281
    // sort the security settings according to how they should be displayed
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   282
    std::sort(allSecuritySettings.begin(), allSecuritySettings.end(), AscendingSort());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   283
    for(int i=0; i<allSecuritySettings.size(); i++)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   284
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   285
        QString rawSettingsName = QString::fromStdWString(allSecuritySettings[i].name);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   286
        QString localizedSettingsName = rawSettingsName;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   287
        if (mLocalizedSettingsNames.contains(rawSettingsName))
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   288
            localizedSettingsName = mLocalizedSettingsNames.value(rawSettingsName);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   289
        mExtraSettings.append(JavaApplicationSettings(
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   290
            localizedSettingsName, settingsValues, CURRENT_SETTING,
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   291
            MIDP_FUNC_GRP_SETTINGS_TABLE, storageValues, FUNCTION_GROUP,
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   292
            allSecuritySettings[i].name, ALLOWED_SETTINGS));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   293
        readFromStorage(mExtraSettings[i]);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   294
        mSettingsIndexes[rawSettingsName] = i;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   295
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   296
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   297
    // configure the high risk lists
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   298
    configureLists();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   299
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   300
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   301
void JavaApplicationSettingsViewPrivate::configureLists()
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   302
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   303
    QList<JavaApplicationSettings*> highRiskList;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   304
    QStringList highRiskSettingsNames;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   305
    highRiskSettingsNames
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   306
        <<QString::fromStdWString(MULTIMEDIA_RECORDING_SETTINGS)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   307
        <<QString::fromStdWString(READ_USER_DATA_ACCESS_SETTINGS);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   308
    configureList(highRiskList, highRiskSettingsNames, mSettingsIndexes);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   309
    // net access with multimedia and read user data
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   310
    attachList(QString::fromStdWString(NET_ACCESS_SETTINGS),highRiskList, mSettingsIndexes);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   311
    // low level net access with multimedia and read user data
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   312
    attachList(QString::fromStdWString(LOW_LEVEL_NET_ACCESS_SETTINGS),highRiskList, mSettingsIndexes);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   313
    // messaging with multimedia and read user data
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   314
    attachList(QString::fromStdWString(MESSAGING_SETTINGS),highRiskList, mSettingsIndexes);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   315
    // restricted messaging with multimedia and read user data
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   316
    attachList(QString::fromStdWString(RESTRICTED_MESSAGING_SETTINGS),highRiskList, mSettingsIndexes);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   317
    // call control with multimedia and read user data
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   318
    attachList(QString::fromStdWString(CALL_CONTROL_SETTINGS),highRiskList, mSettingsIndexes);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   319
    // local connectivity with multimedia and read user data
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   320
    attachList(QString::fromStdWString(LOCAL_CONNECTIVITY_SETTINGS),highRiskList, mSettingsIndexes);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   321
    // multimedia with net access, low level net access, messaging,
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   322
    // restricted messaging, call control and local connectivity
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   323
    highRiskList.clear();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   324
    highRiskSettingsNames.clear();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   325
    highRiskSettingsNames
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   326
        <<QString::fromStdWString(NET_ACCESS_SETTINGS)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   327
        <<QString::fromStdWString(LOW_LEVEL_NET_ACCESS_SETTINGS)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   328
        <<QString::fromStdWString(MESSAGING_SETTINGS)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   329
        <<QString::fromStdWString(RESTRICTED_MESSAGING_SETTINGS)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   330
        <<QString::fromStdWString(CALL_CONTROL_SETTINGS)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   331
        <<QString::fromStdWString(LOCAL_CONNECTIVITY_SETTINGS)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   332
        <<QString::fromStdWString(MULTIMEDIA_RECORDING_SETTINGS);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   333
    configureList(highRiskList, highRiskSettingsNames, mSettingsIndexes);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   334
    attachList(QString::fromStdWString(MULTIMEDIA_RECORDING_SETTINGS),highRiskList, mSettingsIndexes);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   335
    // read user data with net access, low level net access, messaging,
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   336
    // restricted messaging, call control and local connectivity
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   337
    attachList(QString::fromStdWString(READ_USER_DATA_ACCESS_SETTINGS),highRiskList, mSettingsIndexes);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   338
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   339
    // configure the mutually exclusive list
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   340
    QList<JavaApplicationSettings*> mutuallyExclusiveList;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   341
    QStringList mutuallyExclusiveSettingsNames;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   342
    mutuallyExclusiveSettingsNames
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   343
        <<QString::fromStdWString(APPLICATION_AUTO_INVOCATION_SETTINGS);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   344
    configureList(mutuallyExclusiveList, mutuallyExclusiveSettingsNames, mSettingsIndexes);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   345
    //net access with application auto invocation
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   346
    attachList(QString::fromStdWString(NET_ACCESS_SETTINGS),mutuallyExclusiveList, mSettingsIndexes, false /* is high risk list */);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   347
    //low level net access with application auto invocation
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   348
    attachList(QString::fromStdWString(LOW_LEVEL_NET_ACCESS_SETTINGS),mutuallyExclusiveList, mSettingsIndexes, false /* is high risk list */);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   349
    //application auto invocation with net access and low level net access
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   350
    mutuallyExclusiveList.clear();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   351
    mutuallyExclusiveSettingsNames.clear();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   352
    mutuallyExclusiveSettingsNames
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   353
        <<QString::fromStdWString(NET_ACCESS_SETTINGS)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   354
        <<QString::fromStdWString(LOW_LEVEL_NET_ACCESS_SETTINGS);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   355
    configureList(mutuallyExclusiveList, mutuallyExclusiveSettingsNames, mSettingsIndexes);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   356
    attachList(QString::fromStdWString(APPLICATION_AUTO_INVOCATION_SETTINGS),mutuallyExclusiveList, mSettingsIndexes, false /* is high risk list */);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   357
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   358
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   359
void JavaApplicationSettingsViewPrivate::initSettings(QVector<JavaApplicationSettings>& aSettings, HbDataFormModelItem * aParent)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   360
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   361
    for (int i=0; i<aSettings.size(); i++)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   362
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   363
        HbDataFormModelItem * appSettings = NULL;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   364
        int currentValue = 0;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   365
        switch(aSettings[i].getValues().size())
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   366
        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   367
            case 1:
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   368
                appSettings  = mModel->appendDataFormItem(
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   369
                        HbDataFormModelItem::ToggleValueItem,
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   370
                        aSettings[i].getName(), aParent);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   371
                // make it a toogle button (-> get rid of the "pressed" ui effect)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   372
                if (appSettings)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   373
                {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   374
                    appSettings->setContentWidgetData(QString("text"), aSettings[i].getValues()[0]);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   375
                    appSettings->setContentWidgetData(QString("additionalText"), aSettings[i].getValues()[0]);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   376
                }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   377
                break;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   378
            case 2:
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   379
                appSettings  = mModel->appendDataFormItem(
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   380
                        HbDataFormModelItem::ToggleValueItem,
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   381
                        aSettings[i].getName(), aParent);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   382
                if (appSettings)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   383
                {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   384
                    currentValue = aSettings[i].getCurrentValue();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   385
                    if (currentValue < 0)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   386
                    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   387
                        currentValue = 0;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   388
                    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   389
                    appSettings->setContentWidgetData(QString("text"), aSettings[i].getValues()[currentValue]);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   390
                    appSettings->setContentWidgetData(QString("additionalText"),aSettings[i].getValues()[1 - currentValue]);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   391
                }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   392
                break;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   393
            default:
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   394
                appSettings  = mModel->appendDataFormItem(
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   395
                        HbDataFormModelItem::ComboBoxItem,
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   396
                        aSettings[i].getName(), aParent);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   397
                if (appSettings)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   398
                {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   399
                    appSettings->setContentWidgetData(QString("items"), aSettings[i].getValues());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   400
                    appSettings->setContentWidgetData(QString("currentIndex"),aSettings[i].getCurrentValue());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   401
                }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   402
        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   403
        aSettings[i].setId(appSettings);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   404
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   405
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   406
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   407
void JavaApplicationSettingsViewPrivate::writeSettings(JavaApplicationSettings& aSettings, const QString &aNewValue)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   408
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   409
    QStringList values = aSettings.getValues();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   410
    int currentValue = aSettings.getCurrentValue();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   411
    int newValue = aSettings.getValueIndex(aNewValue);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   412
    if (newValue != -1 && currentValue != newValue)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   413
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   414
        // handle blanket settings
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   415
        if (aNewValue == TXT_BLANKET)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   416
        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   417
            // check blanket settings
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   418
            if (!isBlanketAllowed(aSettings))
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   419
            {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   420
                // change back to the old value
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   421
                HbComboBox * settingsCombo = static_cast<HbComboBox*>(itemToWidget(aSettings.getId()));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   422
                if (settingsCombo)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   423
                {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   424
                    settingsCombo->setCurrentIndex(currentValue);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   425
                }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   426
                return;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   427
            }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   428
        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   429
        aSettings.setCurrentValue(newValue);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   430
        writeToStorage(aSettings);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   431
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   432
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   433
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   434
bool JavaApplicationSettingsViewPrivate::isBlanketAllowed(const JavaApplicationSettings& aSettings)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   435
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   436
    // handle the high risk items
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   437
    QList<JavaApplicationSettings*> highRiskList = aSettings.getHighRiskList();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   438
    // go through the list and see if any of the setings are in blanket
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   439
    for (int i=0; i<highRiskList.size(); i++)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   440
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   441
        if (highRiskList[i] &&
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   442
                highRiskList[i]->getValue(highRiskList[i]->getCurrentValue())
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   443
                == TXT_BLANKET)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   444
        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   445
            QString secWarning = TXT_SENSITIVE_SETTINGS;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   446
            QString LOCAL_CONNECTIVITY = QString(hbTrId(ID_LOCAL_CONNECTIVITY));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   447
            if (aSettings.getName() != LOCAL_CONNECTIVITY
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   448
                && highRiskList[i]->getName() != LOCAL_CONNECTIVITY)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   449
            {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   450
                secWarning = TXT_SENSITIVE_SETTINGS_NET_USAGE;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   451
            }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   452
            if (!isSecurityWarningAccepted(
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   453
                secWarning,TXT_OK,TXT_CANCEL ,TXT_SECURITY_WARNING_TITLE))
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   454
            {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   455
                LOG3(EJavaSettings, EInfo,"User did not accept the high risk due to having both \"%S\" and \"%S\" set to \"%S\"", aSettings.getName().toStdWString().c_str(), highRiskList[i]->getName().toStdWString().c_str(), TXT_BLANKET.toStdWString().c_str());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   456
                return false;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   457
            }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   458
            LOG3(EJavaSettings, EInfo,"User accepted the high risk due to having both \"%S\" and \"%S\" set to \"%S\"", aSettings.getName().toStdWString().c_str(), highRiskList[i]->getName().toStdWString().c_str(), TXT_BLANKET.toStdWString().c_str());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   459
            break;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   460
        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   461
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   462
    // handle the mutually exclusive rules
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   463
    QList<JavaApplicationSettings*> mutuallyExclusiveList = aSettings
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   464
            .getMutuallyExclusiveList();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   465
    // go through the list and see if any of the setings are in blanket
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   466
    for (int i=0; i<mutuallyExclusiveList.size(); i++)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   467
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   468
        if (mutuallyExclusiveList[i] && mutuallyExclusiveList[i]->getValue(
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   469
                    mutuallyExclusiveList[i]->getCurrentValue()) == TXT_BLANKET)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   470
        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   471
            bool isBlanketAllowed = isSecurityWarningAccepted(
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   472
                TXT_MUTUALLY_EXCLUSIVE_SETTINGS, TXT_OK, TXT_CANCEL, TXT_SECURITY_WARNING_TITLE);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   473
            if (isBlanketAllowed)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   474
            {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   475
                // change  the current value to the maximum allowed
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   476
                bool isBlanket = true;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   477
                do
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   478
                {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   479
                    if (isBlanket)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   480
                    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   481
                        QStringList allowedValues = mutuallyExclusiveList[i]->getValues();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   482
                        int selectedValue = mutuallyExclusiveList[i]->getCurrentValue();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   483
                        // select the maximum allowed value
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   484
                        for (int j=0; j<allowedValues.size(); j++)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   485
                        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   486
                            if (allowedValues[j] == TXT_SESSION)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   487
                            {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   488
                                selectedValue = j;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   489
                                break;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   490
                            }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   491
                            if (allowedValues[j] == TXT_ONESHOT)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   492
                            {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   493
                                selectedValue = j;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   494
                            }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   495
                            else if (allowedValues[j] == TXT_DENIED
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   496
                                     && allowedValues[selectedValue] == TXT_BLANKET)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   497
                            {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   498
                                selectedValue = j;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   499
                            }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   500
                        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   501
                        // set the maximum allowed value
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   502
                        mutuallyExclusiveList[i]->setCurrentValue(selectedValue);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   503
                        HbComboBox * settingsCombo = static_cast<HbComboBox*>(itemToWidget(
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   504
                                                         mutuallyExclusiveList[i]->getId()));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   505
                        if (settingsCombo)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   506
                        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   507
                            settingsCombo->setCurrentIndex(selectedValue);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   508
                        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   509
                        writeToStorage(*mutuallyExclusiveList[i]);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   510
                        LOG4(EJavaSettings, EInfo,"Changing \"%S\" to \"%S\" led to changing \"%S\" to \"%S\" due to mutually exclusive rules", aSettings.getName().toStdWString().c_str(), TXT_BLANKET.toStdWString().c_str(), mutuallyExclusiveList[i]->getName().toStdWString().c_str(), allowedValues[selectedValue].toStdWString().c_str());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   511
                    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   512
                    i++;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   513
                    // end of list?
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   514
                    if (i >= mutuallyExclusiveList.size())
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   515
                    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   516
                        break;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   517
                    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   518
                    // move on into the list
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   519
                    isBlanket = (mutuallyExclusiveList[i]->getValue(
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   520
                                     mutuallyExclusiveList[i]->getCurrentValue()) == TXT_BLANKET);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   521
                }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   522
                while (true);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   523
            }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   524
            else
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   525
            {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   526
                LOG1(EJavaSettings, EInfo,"User did not accept changes in \"%S\" due to mutually exclusive rules", mutuallyExclusiveList[i]->getName().toStdWString().c_str());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   527
            }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   528
            return isBlanketAllowed;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   529
        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   530
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   531
    return true;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   532
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   533
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   534
void JavaApplicationSettingsViewPrivate::_q_settingsChanged(bool)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   535
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   536
    HbPushButton * sender = static_cast<HbPushButton*>(mPublicView->sender());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   537
    if (sender)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   538
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   539
        JavaApplicationSettings* settings = findSettings(sender);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   540
        if (settings == NULL)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   541
        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   542
            return;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   543
        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   544
        if (settings->getName() == TXT_SECURITY_LEVEL)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   545
        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   546
            QString newValue = settings->getValue(1 - settings->getCurrentValue());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   547
            securityWarningsChanged(newValue);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   548
            writeSettings(*settings, newValue);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   549
        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   550
        else if (settings->getName() == TXT_NETWORK_CONNECTION)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   551
        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   552
            handleNetworkSettings();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   553
        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   554
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   555
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   556
void JavaApplicationSettingsViewPrivate::_q_settingsChanged(const QString& aNewValue)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   557
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   558
    HbComboBox * sender = static_cast<HbComboBox*>(mPublicView->sender());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   559
    if (sender)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   560
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   561
        JavaApplicationSettings* settings = findSettings(sender);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   562
        if (settings != NULL)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   563
        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   564
            // any other settings are treated same
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   565
            writeSettings(*settings, aNewValue);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   566
        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   567
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   568
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   569
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   570
void JavaApplicationSettingsViewPrivate::securityWarningsChanged(const QString& aNewValue)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   571
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   572
    if (aNewValue == TXT_USER_DEFINED)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   573
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   574
        // append the extra settings and values
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   575
        for (int i=0; i<mExtraSettings.size(); i++)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   576
        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   577
            if (mExtraSettings[i].getCurrentValue() >= 0 && mExtraSettings[i].getId() == 0)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   578
            {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   579
                HbDataFormModelItem * appSettings = mModel->appendDataFormItem(
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   580
                                                        HbDataFormModelItem::ComboBoxItem,
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   581
                                                        mExtraSettings[i].getName(), mSecuritySettingsGroup);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   582
                if (appSettings)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   583
                {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   584
                    mExtraSettings[i].setId(appSettings);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   585
                    // when settings the items, the settingsChanged signal gets emitted with the first value
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   586
                    // as being the current value. This signal should be discarded (the first value is just
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   587
                    // an intermediate value towards the actual current value which gets set shortly).
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   588
                    // Therefore set the first value as the current value (this way the settingsChanged
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   589
                    // signal gets discarded) and change the current value back to the real current value
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   590
                    int currentValue = mExtraSettings[i].getCurrentValue();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   591
                    mExtraSettings[i].setCurrentValue(0);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   592
                    appSettings->setContentWidgetData(QString("items"), mExtraSettings[i].getValues());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   593
                    mExtraSettings[i].setCurrentValue(currentValue);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   594
                    appSettings->setContentWidgetData(QString("currentIndex"),mExtraSettings[i].getCurrentValue());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   595
                }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   596
            }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   597
        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   598
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   599
    else
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   600
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   601
        // remove the extra settings
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   602
        for (int i=0; i<mExtraSettings.size(); i++)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   603
        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   604
            if (mExtraSettings[i].getId())
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   605
            {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   606
                HbComboBox * extraSettingsId = static_cast<HbComboBox*>(itemToWidget(mExtraSettings[i].getId()));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   607
                if (extraSettingsId)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   608
                {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   609
                    mPublicView->disconnect(extraSettingsId, 0, 0, 0);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   610
                    mModel->removeItem(mModel->indexFromItem(mExtraSettings[i].getId()));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   611
                    mExtraSettings[i].setId(0);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   612
                    mExtraSettings[i].disconnectFromUi();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   613
                }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   614
            }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   615
        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   616
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   617
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   618
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   619
void JavaApplicationSettingsViewPrivate::handleNetworkSettings()
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   620
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   621
    // init flags to show destinations and connection methods
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   622
    QFlags<CmApplSettingsUi::SelectionDialogItems> listItems;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   623
    listItems |= CmApplSettingsUi::ShowDestinations;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   624
    listItems |= CmApplSettingsUi::ShowConnectionMethods;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   625
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   626
    // empty filter -> all bearer types included
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   627
    QSet<CmApplSettingsUi::BearerTypeFilter> filter;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   628
    // reset the result
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   629
    mNetConnSelection.result = mNetConn.type;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   630
    mNetConnSelection.id = mNetConn.id;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   631
    // init settings ui with destinations, filter and initial selection
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   632
    mNetConnSettingsUi->setOptions(listItems, filter);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   633
    mNetConnSettingsUi->setSelection(mNetConnSelection);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   634
    // Connect the setting ui's signal with own slot where the mNetConnSelection is stored
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   635
    connect(mNetConnSettingsUi, SIGNAL(finished(uint)), this, SLOT(netConnSelected(uint)));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   636
    // launch the setting ui
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   637
    mNetConnSettingsUi->open();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   638
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   639
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   640
void JavaApplicationSettingsViewPrivate::_q_dataItemDisplayed(const QModelIndex aDataItemIndex)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   641
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   642
    HbDataFormModelItem *item = static_cast<HbDataFormModel*>(
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   643
                                    mMainForm->model())->itemFromIndex(aDataItemIndex);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   644
    if (item == NULL)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   645
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   646
        return;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   647
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   648
    int itemType = item->data(HbDataFormModelItem::ItemTypeRole).toInt();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   649
    HbComboBox * comboBox = NULL;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   650
    HbPushButton * pushButton = NULL;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   651
    HbWidget * widget = (qobject_cast<HbDataFormViewItem *>
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   652
        (mMainForm->itemByIndex(aDataItemIndex)))->dataItemContentWidget();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   653
    JavaApplicationSettings* settings = findSettings(widget);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   654
    if (settings == NULL)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   655
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   656
        // stop right here
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   657
        return;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   658
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   659
    switch(HbDataFormModelItem::DataItemType(itemType))
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   660
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   661
        case HbDataFormModelItem::ComboBoxItem:
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   662
            comboBox = static_cast<HbComboBox*>(widget);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   663
            if (settings->isConnectedToUi())
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   664
            {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   665
                // need to do a reconnect: disconnect followed by a connect
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   666
                mPublicView->disconnect(comboBox,
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   667
                        SIGNAL(currentIndexChanged(const QString &)),
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   668
                        mPublicView,
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   669
                        SLOT(_q_settingsChanged(const QString &)));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   670
            }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   671
            mPublicView->connect(comboBox,
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   672
                                 SIGNAL(currentIndexChanged(const QString &)),
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   673
                                 mPublicView, SLOT(_q_settingsChanged(const QString &)),
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   674
                                 Qt::UniqueConnection);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   675
            break;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   676
        case HbDataFormModelItem::ToggleValueItem:
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   677
            pushButton = static_cast< HbPushButton*>(widget);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   678
            if (settings->isConnectedToUi())
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   679
            {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   680
                // need to do a reconnect: disconnect followed by a connect
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   681
                mPublicView->disconnect(pushButton,
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   682
                        SIGNAL(clicked(bool)),
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   683
                        mPublicView,
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   684
                        SLOT(_q_settingsChanged(bool)));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   685
            }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   686
            mPublicView->connect(pushButton,
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   687
                                 SIGNAL(clicked(bool)),
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   688
                                 mPublicView, SLOT(_q_settingsChanged(bool)),
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   689
                                 Qt::UniqueConnection);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   690
            break;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   691
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   692
    settings->connectToUi();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   693
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   694
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   695
void JavaApplicationSettingsViewPrivate::netConnSelected(uint aNetConnSelectionStatus)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   696
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   697
    if (aNetConnSelectionStatus == CmApplSettingsUi::ApplSettingsErrorNone)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   698
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   699
        mNetConnSelection = mNetConnSettingsUi->selection();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   700
        // store the selection
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   701
        if (mNetConnSelection.id != mNetConn.id
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   702
            && mNetConnSelection.id != mDefaultConnId)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   703
        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   704
            TRAPD(err,
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   705
                switch(mNetConnSelection.result)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   706
                {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   707
                    case CmApplSettingsUi::SelectionTypeDestination:
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   708
                        ConnectionManager::setDestinationNetworkIdL(mSuiteUid, mNetConnSelection.id);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   709
                        break;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   710
                    case CmApplSettingsUi::SelectionTypeConnectionMethod:
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   711
                        ConnectionManager::setApnIdL(mSuiteUid, mNetConnSelection.id);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   712
                        break;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   713
                }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   714
            );
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   715
            if (err == KErrNone)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   716
            {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   717
                mNetConn.id = mNetConnSelection.id;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   718
                mNetConn.type = mNetConnSelection.result;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   719
                readNetworkConnectionName();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   720
                mGeneralSettings[mNetSettIndex].getId()->setContentWidgetData(QString("text"), mNetConn.name);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   721
                mGeneralSettings[mNetSettIndex].getId()->setContentWidgetData(QString("additionalText"), mNetConn.name);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   722
            }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   723
        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   724
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   725
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   726
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   727
void JavaApplicationSettingsViewPrivate::securityWarningDismissed(HbAction* aDismissAction)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   728
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   729
    HbMessageBox *dlg = static_cast<HbMessageBox*>(sender());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   730
    mSecWarningAccepted = (aDismissAction == dlg->actions().at(0));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   731
    mAsyncToSyncCallEventLoop->exit();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   732
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   733
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   734
void JavaApplicationSettingsViewPrivate::initNetworkConnection()
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   735
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   736
    TRAP_IGNORE(
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   737
        mNetConn.id = ConnectionManager::getDestinationNetworkIdL(mSuiteUid);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   738
        if (mNetConn.id == (uint)KJavaNetworkAccessNotSpecified)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   739
        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   740
            mNetConn.id = ConnectionManager::getApnIdL(mSuiteUid);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   741
        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   742
    );
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   743
    QNetworkConfigurationManager manager;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   744
    QNetworkConfiguration defaultCfg = manager.defaultConfiguration();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   745
    mDefaultConnId = defaultCfg.identifier().toInt();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   746
    QNetworkConfiguration cfg = manager.configurationFromIdentifier(
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   747
        QString::number(mNetConn.id));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   748
    if (!cfg.isValid())
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   749
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   750
        cfg = defaultCfg;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   751
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   752
    mNetConn.name = QString(hbTrId(cfg.name().toUtf8()));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   753
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   754
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   755
void JavaApplicationSettingsViewPrivate::readNetworkConnectionName()
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   756
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   757
    QNetworkConfigurationManager manager;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   758
    QNetworkConfiguration cfg = manager.configurationFromIdentifier(
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   759
        QString::number(mNetConn.id));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   760
    if (!cfg.isValid())
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   761
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   762
        cfg = manager.defaultConfiguration();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   763
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   764
    mNetConn.name = QString(hbTrId(cfg.name().toUtf8()));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   765
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   766
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   767
JavaApplicationSettings* JavaApplicationSettingsViewPrivate::findSettings(HbWidget* aId)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   768
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   769
    JavaApplicationSettings* settings = findSettings(aId, mGeneralSettings);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   770
    if (settings == NULL)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   771
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   772
        settings = findSettings(aId, mSecuritySettings);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   773
        if (settings == NULL)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   774
        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   775
            settings = findSettings(aId, mExtraSettings);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   776
        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   777
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   778
    return settings;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   779
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   780
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   781
JavaApplicationSettings* JavaApplicationSettingsViewPrivate::findSettings(HbWidget* aId, QVector<JavaApplicationSettings>& aAllSettings)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   782
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   783
    for (int i=0; i<aAllSettings.size(); i++)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   784
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   785
        if (itemToWidget(aAllSettings[i].getId()) == aId)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   786
        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   787
            return &aAllSettings[i];
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   788
        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   789
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   790
    return NULL;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   791
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   792
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   793
HbWidget * JavaApplicationSettingsViewPrivate::itemToWidget(const HbDataFormModelItem * aItem)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   794
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   795
    HbDataFormViewItem * viewItem = qobject_cast<HbDataFormViewItem *> (mMainForm->itemByIndex(
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   796
                                        mModel->indexFromItem(aItem)));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   797
    if (viewItem)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   798
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   799
        return static_cast<HbWidget*>(viewItem->dataItemContentWidget());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   800
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   801
    return NULL;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   802
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   803
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   804
bool JavaApplicationSettingsViewPrivate::isSecurityWarningAccepted(const QString& aText, const QString& aAcceptActionLabel, const QString& aRejectActionLabel, const QString& aHeadingText)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   805
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   806
    HbMessageBox securityWarning(HbMessageBox::MessageTypeQuestion);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   807
    securityWarning.setDismissPolicy(HbDialog::NoDismiss);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   808
    securityWarning.setTimeout(HbDialog::NoTimeout);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   809
    securityWarning.setIconVisible(false);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   810
    securityWarning.setText(aText);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   811
    securityWarning.addAction(new HbAction(
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   812
            aAcceptActionLabel, &securityWarning));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   813
    securityWarning.addAction(new HbAction(
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   814
            aRejectActionLabel, &securityWarning));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   815
    securityWarning.setHeadingWidget(new HbLabel(aHeadingText));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   816
    securityWarning.open(this, SLOT(securityWarningDismissed(HbAction*)));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   817
    mAsyncToSyncCallEventLoop->exec();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   818
    return mSecWarningAccepted;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   819
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   820
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   821
void JavaApplicationSettingsViewPrivate::configureList(QList<JavaApplicationSettings*>& aList, const QStringList& aSettingsNames,  const QHash<QString, int>& aSettingsIndexes)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   822
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   823
    for(int i=0; i<aSettingsNames.size(); i++)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   824
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   825
        if (aSettingsIndexes.contains(aSettingsNames[i]))
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   826
        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   827
            aList << &(mExtraSettings[aSettingsIndexes.value(aSettingsNames[i])]);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   828
        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   829
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   830
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   831
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   832
void JavaApplicationSettingsViewPrivate::attachList(const QString& aSettingsName, const QList<JavaApplicationSettings*>& aList, const QHash<QString, int>& aSettingsIndexes, bool aIsHighRiskList)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   833
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   834
    if (aSettingsIndexes.contains(aSettingsName))
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   835
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   836
        if (aIsHighRiskList)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   837
        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   838
            mExtraSettings[aSettingsIndexes.value(aSettingsName)].setHighRiskList(aList);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   839
        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   840
        else
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   841
        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   842
            mExtraSettings[aSettingsIndexes.value(aSettingsName)].setMutuallyExclusiveList(aList);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   843
        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   844
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   845
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   846
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   847
void JavaApplicationSettingsViewPrivate::installTranslator(const QString& aTranslationFileName)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   848
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   849
    QTranslator* translator = new QTranslator;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   850
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   851
    // load the correct translation of the localized strings for the java settings
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   852
    if (translator->load(
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   853
            aTranslationFileName + "_" + QLocale::system().name(),
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   854
            QLibraryInfo::location(QLibraryInfo::TranslationsPath)))
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   855
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   856
        mTranslators.append(translator);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   857
        qApp->installTranslator(translator);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   858
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   859
    else
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   860
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   861
        delete translator;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   862
        translator = NULL;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   863
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   864
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   865
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   866
void JavaApplicationSettingsViewPrivate::readFromStorage(JavaApplicationSettings& aSettings)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   867
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   868
    if (aSettings.getColumnName().size() > 0
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   869
            && aSettings.getTableName().size() > 0)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   870
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   871
        wstring value = L"";
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   872
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   873
        JavaStorageApplicationEntry_t query;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   874
        JavaStorageApplicationList_t queryResult;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   875
        JavaStorageEntry attr;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   876
        attr.setEntry(ID, mSuiteUid);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   877
        query.insert(attr);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   878
        if (aSettings.getFilterColumnName().size() > 0)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   879
        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   880
            attr.setEntry(aSettings.getFilterColumnName(), aSettings.getFilterColumnValue());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   881
            query.insert(attr);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   882
        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   883
        attr.setEntry(aSettings.getColumnName(), L"");
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   884
        query.insert(attr);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   885
        if (aSettings.getValuesColumnName().size() > 0)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   886
        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   887
            attr.setEntry(aSettings.getValuesColumnName(), L"");
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   888
            query.insert(attr);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   889
        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   890
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   891
        try
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   892
        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   893
            mStorage->search(aSettings.getTableName(), query, queryResult);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   894
        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   895
        catch (JavaStorageException& aJse)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   896
        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   897
            // Don't leave. Set defaults.
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   898
            ELOG1(EJavaSettings, "Error while reading from storage %S", aJse.toString().c_str());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   899
        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   900
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   901
        if (aSettings.getValuesColumnName().size() > 0)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   902
        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   903
            findEntry(queryResult, aSettings.getValuesColumnName(), value);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   904
            if (value.size() > 0)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   905
            {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   906
                aSettings.setStorageValuesFilter(value);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   907
                filterSecuritySettings(aSettings);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   908
            }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   909
        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   910
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   911
        value = L"";
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   912
        findEntry(queryResult, aSettings.getColumnName(), value);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   913
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   914
        if (value.size() > 0)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   915
        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   916
            vector<wstring> storageValues = aSettings.getStorageValues();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   917
            for (int i=0; i<storageValues.size(); i++)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   918
            {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   919
                if (storageValues[i] == value)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   920
                {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   921
                    aSettings.setCurrentValue(i);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   922
                    break;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   923
                }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   924
            }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   925
            LOG2(EJavaSettings, EInfo,"Setting \"%S\" initialized to \"%S\"", aSettings.getName().toStdWString().c_str(), aSettings.getValue(aSettings.getCurrentValue()).toStdWString().c_str());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   926
        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   927
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   928
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   929
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   930
void JavaApplicationSettingsViewPrivate::filterSecuritySettings(JavaApplicationSettings& aSettings)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   931
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   932
    std::wstring allowedModes = aSettings.getStorageValuesFilter();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   933
    if (allowedModes.size() <= 0)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   934
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   935
            return;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   936
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   937
    // The allowed modes info is stored as a 4-bit constant:
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   938
    //    X(oneshot)X(session)X(blanket)X(no)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   939
    // e.g. 1011 (=11) means that oneshot, blanket and no are allowed.
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   940
    // The following constants are used to encode/decode the allowed modes
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   941
    // into/from a 4-bit number
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   942
    int INTERACTION_MODE_DENIED = 1;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   943
    int INTERACTION_MODE_BLANKET = 2;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   944
    int INTERACTION_MODE_SESSION = 4;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   945
    int INTERACTION_MODE_ONESHOT = 8;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   946
    TInt allowedInteractionModes = JavaCommonUtils::wstringToInt(allowedModes);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   947
    int index = 0;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   948
    int tmp = allowedInteractionModes & INTERACTION_MODE_ONESHOT;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   949
    if (tmp <= 0)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   950
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   951
        aSettings.removeValue(index);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   952
        index--;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   953
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   954
    index++;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   955
    tmp = allowedInteractionModes & INTERACTION_MODE_SESSION;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   956
    if (tmp <= 0)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   957
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   958
        aSettings.removeValue(index);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   959
        index--;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   960
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   961
    index++;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   962
    tmp = allowedInteractionModes & INTERACTION_MODE_BLANKET;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   963
    if (tmp <= 0)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   964
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   965
        aSettings.removeValue(index);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   966
        index--;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   967
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   968
    index++;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   969
    tmp = allowedInteractionModes & INTERACTION_MODE_DENIED;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   970
    if (tmp <= 0)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   971
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   972
        aSettings.removeValue(index);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   973
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   974
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   975
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   976
void JavaApplicationSettingsViewPrivate::writeToStorage(JavaApplicationSettings& aSettings)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   977
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   978
    if (aSettings.getTableName().size() <= 0
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   979
            || aSettings.getColumnName().size() <= 0)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   980
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   981
        // storage details are not provided -> no point in going further
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   982
        return;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   983
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   984
    JavaStorageApplicationEntry_t oldEntry;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   985
    JavaStorageEntry attr;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   986
    attr.setEntry(ID, mSuiteUid);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   987
    oldEntry.insert(attr);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   988
    JavaStorageApplicationEntry_t entry;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   989
    if (aSettings.getFilterColumnName().size() > 0)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   990
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   991
        attr.setEntry(aSettings.getFilterColumnName(), aSettings.getFilterColumnValue());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   992
        oldEntry.insert(attr);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   993
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   994
    attr.setEntry(aSettings.getColumnName(), aSettings.getStorageValues()[aSettings.getCurrentValue()]);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   995
    entry.insert(attr);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   996
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   997
    try
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   998
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
   999
        mStorage->update(aSettings.getTableName(), entry, oldEntry);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1000
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1001
    catch (JavaStorageException& aJse)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1002
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1003
        ELOG1(EJavaSettings, "Error while writing into storage %S", aJse.toString().c_str());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1004
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1005
    LOG2(EJavaSettings, EInfo,"Setting \"%S\" changed to \"%S\"", aSettings.getName().toStdWString().c_str(), aSettings.getValue(aSettings.getCurrentValue()).toStdWString().c_str());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1006
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1007
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1008
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1009
void JavaApplicationSettingsViewPrivate::findEntry(const JavaStorageApplicationList_t& aQueryResult,
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1010
        const std::wstring& aName,
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1011
        std::wstring& aValue)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1012
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1013
    if (aQueryResult.size() > 0)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1014
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1015
        JavaStorageApplicationEntry_t entry = aQueryResult.front();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1016
        JavaStorageEntry findPattern;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1017
        findPattern.setEntry(aName, L"");
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1018
        JavaStorageApplicationEntry_t::const_iterator findIterator =
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1019
            entry.find(findPattern);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1020
        if (findIterator != entry.end())
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1021
        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1022
            aValue = findIterator->entryValue();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1023
        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1024
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1025
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1026
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1027
bool JavaApplicationSettingsViewPrivate::isInStorage(const std::wstring& aColumnName, const std::wstring& aColumnFilterName, const std::wstring& aColumnFilterValue, const std::string& aTableName)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1028
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1029
    wstring value = readFromStorage(aColumnName, aColumnFilterName, aColumnFilterValue, aTableName);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1030
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1031
    return (value.size() > 0);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1032
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1033
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1034
wstring JavaApplicationSettingsViewPrivate::readFromStorage(const std::wstring& aColumnName, const std::wstring& aColumnFilterName, const std::wstring& aColumnFilterValue, const std::string& aTableName)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1035
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1036
    wstring value = L"";
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1037
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1038
    JavaStorageApplicationEntry_t query;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1039
    JavaStorageApplicationList_t queryResult;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1040
    JavaStorageEntry attr;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1041
    attr.setEntry(ID, mSuiteUid);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1042
    query.insert(attr);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1043
    if (aColumnFilterName.size() > 0)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1044
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1045
        attr.setEntry(aColumnFilterName, aColumnFilterValue);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1046
        query.insert(attr);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1047
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1048
    attr.setEntry(aColumnName, L"");
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1049
    query.insert(attr);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1050
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1051
    try
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1052
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1053
        mStorage->search(aTableName, query, queryResult);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1054
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1055
    catch (JavaStorageException& aJse)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1056
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1057
        // Don't leave. Set defaults.
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1058
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1059
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1060
    findEntry(queryResult, aColumnName, value);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1061
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1062
    return value;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1063
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1064
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1065
vector<IndexedSettingsName> JavaApplicationSettingsViewPrivate::readFromStorage(const std::wstring& aColumnName, const std::string& aPrimaryTableName, const std::string& aSecondaryTableName)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1066
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1067
    vector<IndexedSettingsName> values;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1068
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1069
    JavaStorageApplicationEntry_t query;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1070
    JavaStorageApplicationList_t queryResult;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1071
    JavaStorageEntry attr;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1072
    attr.setEntry(ID, mSuiteUid);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1073
    query.insert(attr);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1074
    attr.setEntry(aColumnName, L"");
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1075
    query.insert(attr);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1076
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1077
    try
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1078
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1079
        mStorage->search(aPrimaryTableName, query, queryResult);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1080
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1081
        JavaStorageApplicationList_t::const_iterator iterator;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1082
        JavaStorageApplicationList_t secondaryQueryResult;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1083
        for (iterator = queryResult.begin(); iterator != queryResult.end(); iterator++)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1084
        {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1085
            std::wstring name = L"";
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1086
            JavaStorageApplicationEntry_t entry = (*iterator);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1087
            JavaStorageEntry findPattern;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1088
            findPattern.setEntry(aColumnName, L"");
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1089
            JavaStorageApplicationEntry_t::const_iterator findIterator =
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1090
                    entry.find(findPattern);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1091
            if (findIterator != entry.end())
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1092
            {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1093
                name = findIterator->entryValue();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1094
            }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1095
            if (name.size() > 0)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1096
            {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1097
                entry.clear();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1098
                query.clear();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1099
                attr.setEntry(ID, mSuiteUid);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1100
                query.insert(attr);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1101
                attr.setEntry(aColumnName, name);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1102
                query.insert(attr);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1103
                secondaryQueryResult.clear();
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1104
                mStorage->search(aSecondaryTableName, query, secondaryQueryResult);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1105
                if (secondaryQueryResult.size() > 0)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1106
                {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1107
                    IndexedSettingsName value;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1108
                    value.name = name;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1109
                    value.index = LAST_SETTINGS_INDEX + 1;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1110
                    if (mSettingsNamesIndexes.contains(QString::fromStdWString(name)))
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1111
                    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1112
                        value.index = mSettingsNamesIndexes.value(QString::fromStdWString(name));
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1113
                    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1114
                    values.push_back(value);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1115
                }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1116
            }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1117
        }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1118
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1119
    catch (JavaStorageException& aJse)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1120
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1121
        // Don't leave. Set defaults.
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1122
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1123
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1124
    return values;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1125
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1126
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1127
void JavaApplicationSettingsViewPrivate::readSuiteUid(const QString& aAppUid)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1128
{
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1129
    mSuiteUid = L"";
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1130
    bool ok;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1131
    int tmp = aAppUid.toInt( &ok, 10 );
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1132
    if (!ok)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1133
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1134
        return;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1135
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1136
    wstring appUid = L"";
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1137
    appUid.append(L"[").append(QString("%1").arg(tmp, 0, 16).toStdWString()).append(L"]");
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1138
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1139
    JavaStorageApplicationEntry_t query;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1140
    JavaStorageApplicationList_t queryResult;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1141
    JavaStorageEntry attr;
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1142
    attr.setEntry(ID, appUid);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1143
    query.insert(attr);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1144
    attr.setEntry(PACKAGE_ID, L"");
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1145
    query.insert(attr);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1146
    try
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1147
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1148
        mStorage->search(APPLICATION_TABLE, query, queryResult);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1149
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1150
    catch (JavaStorageException& aJse)
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1151
    {
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1152
        // Don't leave. Set defaults.
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1153
        ELOG1(EJavaSettings, "Error while reading from storage %S", aJse.toString().c_str());
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1154
    }
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1155
    findEntry(queryResult, PACKAGE_ID, mSuiteUid);
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1156
}
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1157
023eef975703 v2.2.4_1
hgs
parents:
diff changeset
  1158
#include "moc_javaapplicationsettingsview.cpp"