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