javamanager/javasettings/appsettingsview_qt/src/javaapplicationsettingsview_p.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 11 Jun 2010 13:33:44 +0300
changeset 35 85266cc22c7f
parent 26 dc7c549001d5
child 47 f40128debb5d
permissions -rw-r--r--
Revision: v2.2.1 Kit: 2010123

/*
* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
*
*/
#ifndef JAVAAPPLICATIONSETTINGSVIEW_P_H
#define JAVAAPPLICATIONSETTINGSVIEW_P_H

#include <QVector>
#include <QList>
#include <QTranslator>
#include <QModelIndex>
#include <QEventLoop>
#include <memory>
#include <cmapplsettingsui.h>
#include "javaapplicationsettings.h"
#include "javastorage.h"

class HbWidget;
class HbPushButton;
class HbDataForm;
class HbDataFormModel;
class HbDataFormModelItem;
class JavaApplicationSettingsView;
class HbAction;

struct IndexedSettingsName
{
    std::wstring name;
    int index;
};

struct AscendingSort
{
    bool operator()(const IndexedSettingsName& i1, const IndexedSettingsName& i2)
    {
        return i1.index < i2.index;
    }
};

class JavaApplicationSettingsViewPrivate: public QObject
{
    Q_OBJECT
    
public:
    JavaApplicationSettingsViewPrivate(const QString& aApplication);
    virtual ~JavaApplicationSettingsViewPrivate();
    void init(JavaApplicationSettingsView*);

    // slots
    void _q_settingsChanged(const QString &newValue);
    void _q_settingsChanged(bool);
    void _q_dataItemDisplayed(const QModelIndex);

private slots:
    void netConnSelected(uint netConnSelectionStatus);
    void securityWarningDismissed(HbAction*);

private:
    void readAllSettings();
    void initSettings(QVector<JavaApplicationSettings>& settings, HbDataFormModelItem * parent);
    void writeSettings(JavaApplicationSettings& settings, const QString &newValue);
    void securityWarningsChanged(const QString &);
    bool blanketAllowed(const JavaApplicationSettings &settings);
    HbWidget * itemToWidget(const HbDataFormModelItem *);
    JavaApplicationSettings* findSettings(HbWidget* id);
    JavaApplicationSettings* findSettings(HbWidget* id, QVector<JavaApplicationSettings>& settings);
    void readFromStorage(JavaApplicationSettings& settings);
    void writeToStorage(JavaApplicationSettings& settings);
    bool findFromStorage(const std::wstring&, const std::wstring&, const std::wstring&, const std::string&);
    std::wstring readFromStorage(const std::wstring&, const std::wstring&, const std::wstring&, const std::string&);
    std::vector<IndexedSettingsName> readFromStorage(const std::wstring& aColumnName, const std::string& aTableName);
    void filterSecuritySettings(JavaApplicationSettings& settings);
    void findEntry(const java::storage::JavaStorageApplicationList_t&, const std::wstring&, std::wstring& eValue);
    void readSuiteUid(const QString& aAppUid);
    bool securityWarningAccepted(const QString& text, const QString& acceptActionLabel, const QString& rejectActionLabel, const QString& headingText);
    void handleNetworkSettings();
    void readNetworkConnectionName();
    void initNetworkConnection();
    void configureList(QList<JavaApplicationSettings*>&, const QStringList&, const QHash<QString, int>&);
    void attachList(const QString& settingsName, const QList<JavaApplicationSettings*>&, const QHash<QString, int>&, bool isHighRiskList = true);
    void installTranslator(const QString& translationFileName);
    
private:
    HbDataForm * mainForm;
    HbDataFormModel *model;
    HbDataFormModelItem * generalSettingsGroup;
    HbDataFormModelItem * securitySettingsGroup;
    QVector<JavaApplicationSettings> generalSettings;
    QVector<JavaApplicationSettings> securitySettings;
    QVector<JavaApplicationSettings> extraSettings;
    JavaApplicationSettingsView* iPublicView;
    std::auto_ptr<java::storage::JavaStorage> iStorage;
    std::wstring iSuiteUid;
    QString BLANKET,SESSION,ONESHOT,DENIED,SECURITY_LEVEL,USER_DEFINED,SENSITIVE_SETTINGS,SENSITIVE_SETTINGS_NET_USAGE,MUTUALLY_EXCLUSIVE_SETTINGS,OK,CANCEL,SECURITY_WARNING_TITLE,NET_ACCESS,LOW_LEVEL_NET_ACCESS,NETWORK_CONNECTION,NETWORK_CONNECTION_CHANGE,SETTINGS_TITLE,SETTINGS_NOT_AVAILABLE;
    CmApplSettingsUi* netConnSettingsUi;
    CmApplSettingsUi::SettingSelection netConnSelection;
    JavaApplicationSettings::NetworkConnection netConn;
    int netSettIndex;
    QEventLoop* asyncToSyncCallEventLoop;
    bool secWarningAccepted;
    int defaultConnId;
    QList<QTranslator *> translators;
};


#endif // JAVAAPPLICATIONSETTINGSVIEW_P_H