securitysettings/cpeapuiplugins/cpeaptlsmethodsui/src/cpeappacstoreui.cpp
author hgs
Thu, 16 Sep 2010 13:07:04 +0300
changeset 49 43351a4f2da3
permissions -rw-r--r--
201037
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
49
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
 * All rights reserved.
hgs
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
 *
hgs
parents:
diff changeset
     9
 * Initial Contributors:
hgs
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
 *
hgs
parents:
diff changeset
    12
 * Contributors:
hgs
parents:
diff changeset
    13
 *
hgs
parents:
diff changeset
    14
 * Description:
hgs
parents:
diff changeset
    15
 *   Control Panel QT UI for PAC store configuration
hgs
parents:
diff changeset
    16
 *
hgs
parents:
diff changeset
    17
 */
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
/*
hgs
parents:
diff changeset
    20
 * %version: 6 %
hgs
parents:
diff changeset
    21
 */
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
// System includes
hgs
parents:
diff changeset
    24
#include <HbMessageBox>
hgs
parents:
diff changeset
    25
#include <HbInputDialog>
hgs
parents:
diff changeset
    26
#include <HbAction>
hgs
parents:
diff changeset
    27
#include <HbLineEdit>
hgs
parents:
diff changeset
    28
#include <cpsettingformitemdata.h>
hgs
parents:
diff changeset
    29
#include <cpitemdatahelper.h>
hgs
parents:
diff changeset
    30
#include <eapqtvalidator.h>
hgs
parents:
diff changeset
    31
#include <eapqtpacstoreconfig.h>
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
// User includes
hgs
parents:
diff changeset
    34
#include "cpeaptlsmethodsui.h"
hgs
parents:
diff changeset
    35
#include "cpeappacstoreui.h"
hgs
parents:
diff changeset
    36
hgs
parents:
diff changeset
    37
/*!
hgs
parents:
diff changeset
    38
 * \class CpEapPacStoreUi
hgs
parents:
diff changeset
    39
 * \brief Implementes PAC Store configuration group. 
hgs
parents:
diff changeset
    40
 */
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
// External function prototypes
hgs
parents:
diff changeset
    43
hgs
parents:
diff changeset
    44
// Local constants
hgs
parents:
diff changeset
    45
hgs
parents:
diff changeset
    46
/*!
hgs
parents:
diff changeset
    47
 * First lineEdit of the dialog
hgs
parents:
diff changeset
    48
 */
hgs
parents:
diff changeset
    49
static const int FirstRow = 0;
hgs
parents:
diff changeset
    50
/*
hgs
parents:
diff changeset
    51
 * Second lineEdit of the dialog
hgs
parents:
diff changeset
    52
 */
hgs
parents:
diff changeset
    53
static const int SecondRow = 1;
hgs
parents:
diff changeset
    54
hgs
parents:
diff changeset
    55
// ======== LOCAL FUNCTIONS ========
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
// ======== MEMBER FUNCTIONS ========
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
/*!
hgs
parents:
diff changeset
    60
 * Constructor.
hgs
parents:
diff changeset
    61
 * 
hgs
parents:
diff changeset
    62
 * @param [in] configIf  Pointer to EapQtConfigInterface
hgs
parents:
diff changeset
    63
 */
hgs
parents:
diff changeset
    64
hgs
parents:
diff changeset
    65
CpEapPacStoreUi::CpEapPacStoreUi(EapQtConfigInterface *configIf) :
hgs
parents:
diff changeset
    66
        mConfigIf(configIf),
hgs
parents:
diff changeset
    67
        mItemDataHelper(NULL),
hgs
parents:
diff changeset
    68
        mPacStoreGroup(NULL),
hgs
parents:
diff changeset
    69
        mPacStorePassword(NULL),
hgs
parents:
diff changeset
    70
        mResetPacStore(NULL),
hgs
parents:
diff changeset
    71
        mPacStorePasswordState(0),
hgs
parents:
diff changeset
    72
        mExistPasswordDialog(NULL),
hgs
parents:
diff changeset
    73
        mNewPasswordDialog(NULL),
hgs
parents:
diff changeset
    74
        mMessageBox(NULL)
hgs
parents:
diff changeset
    75
{
hgs
parents:
diff changeset
    76
    qDebug("CpEapPacStoreUi::CpEapPacStoreUi()");
hgs
parents:
diff changeset
    77
}
hgs
parents:
diff changeset
    78
hgs
parents:
diff changeset
    79
/*!
hgs
parents:
diff changeset
    80
 * Destructor.
hgs
parents:
diff changeset
    81
 */
hgs
parents:
diff changeset
    82
CpEapPacStoreUi::~CpEapPacStoreUi()
hgs
parents:
diff changeset
    83
{
hgs
parents:
diff changeset
    84
    qDebug("CpEapPacStoreUi::~CpEapPacStoreUi()");
hgs
parents:
diff changeset
    85
hgs
parents:
diff changeset
    86
}
hgs
parents:
diff changeset
    87
hgs
parents:
diff changeset
    88
/*!
hgs
parents:
diff changeset
    89
 * Returns PAC store UI group
hgs
parents:
diff changeset
    90
 * 
hgs
parents:
diff changeset
    91
 * @param [in] dataHelper  CpItemDataHelper to add Connections
hgs
parents:
diff changeset
    92
 * 
hgs
parents:
diff changeset
    93
 * @return PAC store group
hgs
parents:
diff changeset
    94
 */
hgs
parents:
diff changeset
    95
CpSettingFormItemData* CpEapPacStoreUi::uiInstance(
hgs
parents:
diff changeset
    96
    CpItemDataHelper &dataHelpper)
hgs
parents:
diff changeset
    97
{
hgs
parents:
diff changeset
    98
    //Store the address of the Data Helper
hgs
parents:
diff changeset
    99
    mItemDataHelper = &dataHelpper;
hgs
parents:
diff changeset
   100
    
hgs
parents:
diff changeset
   101
    mPacStoreGroup.reset(new CpSettingFormItemData(
hgs
parents:
diff changeset
   102
        HbDataFormModelItem::GroupItem, 
hgs
parents:
diff changeset
   103
        hbTrId("txt_occ_subhead_pac_store")));
hgs
parents:
diff changeset
   104
    mPacStoreGroup->setContentWidgetData("objectName", "CpEapPacStoreUiGroupItem");
hgs
parents:
diff changeset
   105
    
hgs
parents:
diff changeset
   106
    // Read PAC Store configuration
hgs
parents:
diff changeset
   107
    bool configurationRead = mConfigIf->readPacStoreConfiguration(
hgs
parents:
diff changeset
   108
        mPacStoreConfig);
hgs
parents:
diff changeset
   109
    if (!configurationRead) {
hgs
parents:
diff changeset
   110
        // Use default value - PAC store password prompt
hgs
parents:
diff changeset
   111
        qDebug("CpEapPacStoreUi::uiInstance - read PAC store configuration failed.");
hgs
parents:
diff changeset
   112
    }
hgs
parents:
diff changeset
   113
    
hgs
parents:
diff changeset
   114
    // Create PAC store password selection comboBox
hgs
parents:
diff changeset
   115
    createPacStorePassword();
hgs
parents:
diff changeset
   116
    
hgs
parents:
diff changeset
   117
    // Create Reset PAC store button
hgs
parents:
diff changeset
   118
    createResetPacStore();
hgs
parents:
diff changeset
   119
hgs
parents:
diff changeset
   120
    return mPacStoreGroup.take();
hgs
parents:
diff changeset
   121
}
hgs
parents:
diff changeset
   122
hgs
parents:
diff changeset
   123
/*!
hgs
parents:
diff changeset
   124
 * Creates PAC store password selection comboBox
hgs
parents:
diff changeset
   125
 */
hgs
parents:
diff changeset
   126
void CpEapPacStoreUi::createPacStorePassword()
hgs
parents:
diff changeset
   127
{
hgs
parents:
diff changeset
   128
    qDebug("CpEapPacStoreUi::createPacStorePassword()");
hgs
parents:
diff changeset
   129
    // Create PAC store password comboBox
hgs
parents:
diff changeset
   130
    mPacStorePassword = new CpSettingFormItemData(
hgs
parents:
diff changeset
   131
        HbDataFormModelItem::ComboBoxItem, 
hgs
parents:
diff changeset
   132
        hbTrId("txt_occ_setlabel_pac_store_password"));
hgs
parents:
diff changeset
   133
    mPacStoreGroup->appendChild(mPacStorePassword);
hgs
parents:
diff changeset
   134
    mPacStorePassword->setContentWidgetData(
hgs
parents:
diff changeset
   135
        "objectName", 
hgs
parents:
diff changeset
   136
        "CpEapPacStoreUiPassword");
hgs
parents:
diff changeset
   137
    
hgs
parents:
diff changeset
   138
    // Add items to comboBox List
hgs
parents:
diff changeset
   139
    QStringList items;
hgs
parents:
diff changeset
   140
    items << hbTrId("txt_occ_setlabel_pac_store_password_val_prompt")
hgs
parents:
diff changeset
   141
        << hbTrId("txt_occ_setlabel_pac_store_password_val_user_defin");
hgs
parents:
diff changeset
   142
    mPacStorePassword->setContentWidgetData("items", items);
hgs
parents:
diff changeset
   143
    
hgs
parents:
diff changeset
   144
    // Initialize selection from PAC store configuration
hgs
parents:
diff changeset
   145
    if (mPacStoreConfig.value(EapQtPacStoreConfig::PacStoreState).toInt() 
hgs
parents:
diff changeset
   146
        == EapQtPacStoreConfig::PacStoreStatePasswordStored) {
hgs
parents:
diff changeset
   147
        mPacStorePassword->setContentWidgetData("currentIndex", PacStorePasswordUserDefined);
hgs
parents:
diff changeset
   148
        mPacStorePasswordState = PacStorePasswordUserDefined;
hgs
parents:
diff changeset
   149
    } else {
hgs
parents:
diff changeset
   150
        mPacStorePassword->setContentWidgetData("currentIndex", PacStorePasswordPrompt);
hgs
parents:
diff changeset
   151
        mPacStorePasswordState = PacStorePasswordPrompt;
hgs
parents:
diff changeset
   152
    }
hgs
parents:
diff changeset
   153
    
hgs
parents:
diff changeset
   154
    // Connect signal for password state changed
hgs
parents:
diff changeset
   155
    mItemDataHelper->addConnection(mPacStorePassword, SIGNAL(currentIndexChanged(int)), this,
hgs
parents:
diff changeset
   156
        SLOT(pacStorePasswordChanged(int)));
hgs
parents:
diff changeset
   157
}
hgs
parents:
diff changeset
   158
hgs
parents:
diff changeset
   159
/*!
hgs
parents:
diff changeset
   160
 * Creates reset PAC store button
hgs
parents:
diff changeset
   161
 */
hgs
parents:
diff changeset
   162
void CpEapPacStoreUi::createResetPacStore()
hgs
parents:
diff changeset
   163
{
hgs
parents:
diff changeset
   164
    qDebug("CpEapPacStoreUi::createResetPacStore()");
hgs
parents:
diff changeset
   165
    
hgs
parents:
diff changeset
   166
    // Create button
hgs
parents:
diff changeset
   167
    mResetPacStore = new CpSettingFormItemData(
hgs
parents:
diff changeset
   168
        HbDataFormModelItem::ToggleValueItem,
hgs
parents:
diff changeset
   169
        hbTrId(""));
hgs
parents:
diff changeset
   170
    mPacStoreGroup->appendChild(mResetPacStore);
hgs
parents:
diff changeset
   171
    mResetPacStore->setContentWidgetData(
hgs
parents:
diff changeset
   172
        "objectName", 
hgs
parents:
diff changeset
   173
        "CpEapPacStoreUiResetPacStore");    
hgs
parents:
diff changeset
   174
hgs
parents:
diff changeset
   175
    // Define text for the button
hgs
parents:
diff changeset
   176
    mResetPacStore->setContentWidgetData("text",
hgs
parents:
diff changeset
   177
            hbTrId("txt_occ_button_reset_pac_store"));
hgs
parents:
diff changeset
   178
    mResetPacStore->setContentWidgetData("additionalText", 
hgs
parents:
diff changeset
   179
            hbTrId("txt_occ_button_reset_pac_store"));
hgs
parents:
diff changeset
   180
hgs
parents:
diff changeset
   181
    // Connect signal for button pressed
hgs
parents:
diff changeset
   182
    mItemDataHelper->addConnection(
hgs
parents:
diff changeset
   183
        mResetPacStore, 
hgs
parents:
diff changeset
   184
        SIGNAL(valueChanged(QPersistentModelIndex, QVariant)), 
hgs
parents:
diff changeset
   185
        this,
hgs
parents:
diff changeset
   186
        SLOT(resetPacStoreButtonPressed(QPersistentModelIndex, QVariant)));
hgs
parents:
diff changeset
   187
}
hgs
parents:
diff changeset
   188
hgs
parents:
diff changeset
   189
/*!
hgs
parents:
diff changeset
   190
 * Set PAC store password state.
hgs
parents:
diff changeset
   191
 * This is called when state changed has failed and state shall be restored. 
hgs
parents:
diff changeset
   192
 * 
hgs
parents:
diff changeset
   193
 * @param [in] state  Pac store password state: Prompt/Userd defined.
hgs
parents:
diff changeset
   194
 */
hgs
parents:
diff changeset
   195
void CpEapPacStoreUi::setPacStorePasswordState(const PacStorePasswordIndexes state)
hgs
parents:
diff changeset
   196
{
hgs
parents:
diff changeset
   197
    // Remove signal connection while state is restored
hgs
parents:
diff changeset
   198
    mItemDataHelper->removeConnection(mPacStorePassword, SIGNAL(currentIndexChanged(int)), this,
hgs
parents:
diff changeset
   199
        SLOT(pacStorePasswordChanged(int)));
hgs
parents:
diff changeset
   200
    mPacStorePassword->setContentWidgetData("currentIndex", state);
hgs
parents:
diff changeset
   201
    // Restore connection
hgs
parents:
diff changeset
   202
    mItemDataHelper->addConnection(mPacStorePassword, SIGNAL(currentIndexChanged(int)), this,
hgs
parents:
diff changeset
   203
        SLOT(pacStorePasswordChanged(int)));
hgs
parents:
diff changeset
   204
    mPacStorePasswordState = state;
hgs
parents:
diff changeset
   205
}
hgs
parents:
diff changeset
   206
hgs
parents:
diff changeset
   207
/*!
hgs
parents:
diff changeset
   208
 * Show PAC store password query when PAC store already exists
hgs
parents:
diff changeset
   209
 */
hgs
parents:
diff changeset
   210
void CpEapPacStoreUi::showExistPasswordQuery()
hgs
parents:
diff changeset
   211
{
hgs
parents:
diff changeset
   212
    qDebug("CpEapPacStoreUi::showExistPasswordQuery()");
hgs
parents:
diff changeset
   213
    
hgs
parents:
diff changeset
   214
    // Create dialog
hgs
parents:
diff changeset
   215
    QScopedPointer<HbInputDialog> existPasswordDialog(new HbInputDialog());
hgs
parents:
diff changeset
   216
    existPasswordDialog->setObjectName("CpEapPacStoreUiExistPasswordDialog");
hgs
parents:
diff changeset
   217
    existPasswordDialog->setAttribute(Qt::WA_DeleteOnClose);
hgs
parents:
diff changeset
   218
    existPasswordDialog->setPromptText(hbTrId("txt_occ_dialog_pac_store_password"));
hgs
parents:
diff changeset
   219
    existPasswordDialog->setInputMode(HbInputDialog::TextInput);
hgs
parents:
diff changeset
   220
hgs
parents:
diff changeset
   221
    // Add validator
hgs
parents:
diff changeset
   222
    mValidatorPacStore.reset( 
hgs
parents:
diff changeset
   223
        mConfigIf->validatorPacStore(
hgs
parents:
diff changeset
   224
            EapQtPacStoreConfig::PacStorePasswordConfirmation));
hgs
parents:
diff changeset
   225
    Q_ASSERT(mValidatorPacStore.data());
hgs
parents:
diff changeset
   226
    mValidatorPacStore->updateEditor(existPasswordDialog->lineEdit());
hgs
parents:
diff changeset
   227
hgs
parents:
diff changeset
   228
    // Set Password echo mode
hgs
parents:
diff changeset
   229
    existPasswordDialog->setEchoMode(HbLineEdit::Password);
hgs
parents:
diff changeset
   230
    
hgs
parents:
diff changeset
   231
    // Configurate buttons
hgs
parents:
diff changeset
   232
    existPasswordDialog->clearActions();
hgs
parents:
diff changeset
   233
    HbAction *okAction = new HbAction(
hgs
parents:
diff changeset
   234
        hbTrId("txt_common_button_ok"),
hgs
parents:
diff changeset
   235
        existPasswordDialog.data());
hgs
parents:
diff changeset
   236
    existPasswordDialog->addAction(okAction);
hgs
parents:
diff changeset
   237
    okAction->setObjectName("CpEapPacStoreUiExistPasswordDialogOkAction");
hgs
parents:
diff changeset
   238
    bool connected = connect(okAction, 
hgs
parents:
diff changeset
   239
                             SIGNAL(triggered()), 
hgs
parents:
diff changeset
   240
                             this, 
hgs
parents:
diff changeset
   241
                             SLOT(completeExistPasswordQuery()));
hgs
parents:
diff changeset
   242
    Q_ASSERT(connected);
hgs
parents:
diff changeset
   243
    HbAction *cancelAction = new HbAction(
hgs
parents:
diff changeset
   244
        hbTrId("txt_common_button_cancel"),
hgs
parents:
diff changeset
   245
        existPasswordDialog.data());
hgs
parents:
diff changeset
   246
    existPasswordDialog->addAction(cancelAction);
hgs
parents:
diff changeset
   247
    cancelAction->setObjectName("CpEapPacStoreUiExistPasswordDialogCancelAction");
hgs
parents:
diff changeset
   248
    connected = connect(cancelAction, 
hgs
parents:
diff changeset
   249
                        SIGNAL(triggered()), 
hgs
parents:
diff changeset
   250
                        this, 
hgs
parents:
diff changeset
   251
                        SLOT(cancelPasswordQuery()));
hgs
parents:
diff changeset
   252
    Q_ASSERT(connected);
hgs
parents:
diff changeset
   253
hgs
parents:
diff changeset
   254
    // Take the ownership of the dialog from QScopedPointer
hgs
parents:
diff changeset
   255
    mExistPasswordDialog = existPasswordDialog.take();
hgs
parents:
diff changeset
   256
    
hgs
parents:
diff changeset
   257
    // Show dialog
hgs
parents:
diff changeset
   258
    mExistPasswordDialog->show();
hgs
parents:
diff changeset
   259
}
hgs
parents:
diff changeset
   260
hgs
parents:
diff changeset
   261
/*!
hgs
parents:
diff changeset
   262
 * Show create PAC store password query when no PAC store exists
hgs
parents:
diff changeset
   263
 */
hgs
parents:
diff changeset
   264
void CpEapPacStoreUi::showNewPasswordQuery()
hgs
parents:
diff changeset
   265
{
hgs
parents:
diff changeset
   266
    qDebug("CpEapPacStoreUi::showNewPasswordQuery()");
hgs
parents:
diff changeset
   267
hgs
parents:
diff changeset
   268
    // Create dialog
hgs
parents:
diff changeset
   269
    QScopedPointer<HbInputDialog> newPasswordDialog(new HbInputDialog());
hgs
parents:
diff changeset
   270
    newPasswordDialog->setObjectName("CpEapPacStoreUiNewPasswordDialog");
hgs
parents:
diff changeset
   271
    newPasswordDialog->setAttribute(Qt::WA_DeleteOnClose);
hgs
parents:
diff changeset
   272
    newPasswordDialog->setAdditionalRowVisible(true);
hgs
parents:
diff changeset
   273
    newPasswordDialog->setPromptText(
hgs
parents:
diff changeset
   274
        hbTrId("txt_occ_dialog_create_password_for_encrypted_pac_s"), 
hgs
parents:
diff changeset
   275
        FirstRow);
hgs
parents:
diff changeset
   276
    newPasswordDialog->setPromptText(
hgs
parents:
diff changeset
   277
        hbTrId("txt_occ_dialog_verify_password"),
hgs
parents:
diff changeset
   278
        SecondRow);
hgs
parents:
diff changeset
   279
    newPasswordDialog->setInputMode(HbInputDialog::TextInput);
hgs
parents:
diff changeset
   280
    
hgs
parents:
diff changeset
   281
    // Add validators
hgs
parents:
diff changeset
   282
    mValidatorPacStore.reset( 
hgs
parents:
diff changeset
   283
        mConfigIf->validatorPacStore(
hgs
parents:
diff changeset
   284
            EapQtPacStoreConfig::PacStorePassword));
hgs
parents:
diff changeset
   285
    Q_ASSERT(mValidatorPacStore.data());
hgs
parents:
diff changeset
   286
    mValidatorPacStore->updateEditor(newPasswordDialog->lineEdit(FirstRow));
hgs
parents:
diff changeset
   287
    mValidatorPacStore->updateEditor(newPasswordDialog->lineEdit(SecondRow));
hgs
parents:
diff changeset
   288
hgs
parents:
diff changeset
   289
    // Set Password echo mode
hgs
parents:
diff changeset
   290
    newPasswordDialog->setEchoMode(HbLineEdit::Password, FirstRow);
hgs
parents:
diff changeset
   291
    newPasswordDialog->setEchoMode(HbLineEdit::Password, SecondRow);
hgs
parents:
diff changeset
   292
    
hgs
parents:
diff changeset
   293
    // Configure buttons
hgs
parents:
diff changeset
   294
    newPasswordDialog->clearActions();
hgs
parents:
diff changeset
   295
    HbAction *okAction = new HbAction(
hgs
parents:
diff changeset
   296
        hbTrId("txt_common_button_ok"),
hgs
parents:
diff changeset
   297
        newPasswordDialog.data());
hgs
parents:
diff changeset
   298
    newPasswordDialog->addAction(okAction);
hgs
parents:
diff changeset
   299
    okAction->setObjectName("CpEapPacStoreUiNewPasswordDialogOkAction");
hgs
parents:
diff changeset
   300
    bool connected = connect(okAction, 
hgs
parents:
diff changeset
   301
                             SIGNAL(triggered()), 
hgs
parents:
diff changeset
   302
                             this, 
hgs
parents:
diff changeset
   303
                             SLOT(completeNewPasswordQuery()));
hgs
parents:
diff changeset
   304
    Q_ASSERT(connected);
hgs
parents:
diff changeset
   305
    HbAction *cancelAction = new HbAction(
hgs
parents:
diff changeset
   306
        hbTrId("txt_common_button_cancel"),
hgs
parents:
diff changeset
   307
        newPasswordDialog.data());
hgs
parents:
diff changeset
   308
    newPasswordDialog->addAction(cancelAction);
hgs
parents:
diff changeset
   309
    cancelAction->setObjectName("CpEapPacStoreUiNewPasswordDialogCancelAction");
hgs
parents:
diff changeset
   310
    connected = connect(cancelAction, 
hgs
parents:
diff changeset
   311
                        SIGNAL(triggered()), 
hgs
parents:
diff changeset
   312
                        this, 
hgs
parents:
diff changeset
   313
                        SLOT(cancelPasswordQuery()));
hgs
parents:
diff changeset
   314
    
hgs
parents:
diff changeset
   315
    // Take the ownership of the dialog from QScopedPointer
hgs
parents:
diff changeset
   316
    mNewPasswordDialog = newPasswordDialog.take();
hgs
parents:
diff changeset
   317
    
hgs
parents:
diff changeset
   318
    // Show dialog
hgs
parents:
diff changeset
   319
    mNewPasswordDialog->show();
hgs
parents:
diff changeset
   320
}
hgs
parents:
diff changeset
   321
hgs
parents:
diff changeset
   322
/*!
hgs
parents:
diff changeset
   323
 * Shows message box with "OK" button using given text.
hgs
parents:
diff changeset
   324
 * 
hgs
parents:
diff changeset
   325
 * @param [in] type  Message box type
hgs
parents:
diff changeset
   326
 * @param [in] text  Text to be shown
hgs
parents:
diff changeset
   327
 */
hgs
parents:
diff changeset
   328
void CpEapPacStoreUi::showMessageBox(
hgs
parents:
diff changeset
   329
    HbMessageBox::MessageBoxType type,
hgs
parents:
diff changeset
   330
    const QString &text)
hgs
parents:
diff changeset
   331
{
hgs
parents:
diff changeset
   332
    // Create a message box
hgs
parents:
diff changeset
   333
    mMessageBox = QSharedPointer<HbMessageBox>(new HbMessageBox(type));
hgs
parents:
diff changeset
   334
    mMessageBox->setObjectName("CpEapPacStoreUiMessageBox");
hgs
parents:
diff changeset
   335
    mMessageBox->setText(text);
hgs
parents:
diff changeset
   336
    mMessageBox->setModal(true);
hgs
parents:
diff changeset
   337
    mMessageBox->setTimeout(HbPopup::NoTimeout);
hgs
parents:
diff changeset
   338
    mMessageBox->open();
hgs
parents:
diff changeset
   339
}
hgs
parents:
diff changeset
   340
hgs
parents:
diff changeset
   341
/*!
hgs
parents:
diff changeset
   342
 * This slot is called when PAC Store password state has been changed
hgs
parents:
diff changeset
   343
 * 
hgs
parents:
diff changeset
   344
 * @param [in] value  New state of password (prompt/user defined)
hgs
parents:
diff changeset
   345
 */
hgs
parents:
diff changeset
   346
void CpEapPacStoreUi::pacStorePasswordChanged(int value)
hgs
parents:
diff changeset
   347
{
hgs
parents:
diff changeset
   348
    qDebug("CpEapPacStoreUi::pacStorePasswordChanged()");
hgs
parents:
diff changeset
   349
hgs
parents:
diff changeset
   350
    if (mPacStorePasswordState != value) {
hgs
parents:
diff changeset
   351
        // Value is really changed
hgs
parents:
diff changeset
   352
        if (value == PacStorePasswordPrompt) {
hgs
parents:
diff changeset
   353
            // Prompt
hgs
parents:
diff changeset
   354
            qDebug("CpEapPacStoreUi::pacStorePasswordChanged - Prompt");
hgs
parents:
diff changeset
   355
            
hgs
parents:
diff changeset
   356
            //Show message box to confirm the PAC store password clearing
hgs
parents:
diff changeset
   357
            HbMessageBox *questionBox = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
hgs
parents:
diff changeset
   358
            questionBox->setObjectName("CpEapPacStoreUiClearPasswordQuestion");
hgs
parents:
diff changeset
   359
            questionBox->setText(hbTrId("txt_occ_info_pac_store_password_will_no_longer_be"));
hgs
parents:
diff changeset
   360
            questionBox->setModal(true);
hgs
parents:
diff changeset
   361
            questionBox->setTimeout(HbPopup::NoTimeout);
hgs
parents:
diff changeset
   362
            questionBox->setAttribute(Qt::WA_DeleteOnClose);
hgs
parents:
diff changeset
   363
            questionBox->setStandardButtons(HbMessageBox::Yes | HbMessageBox::No);
hgs
parents:
diff changeset
   364
            questionBox->open(this,SLOT(clearPacStorePasswordConfirmed(int)));
hgs
parents:
diff changeset
   365
        } else {
hgs
parents:
diff changeset
   366
            //User defined
hgs
parents:
diff changeset
   367
            Q_ASSERT(value == PacStorePasswordUserDefined);
hgs
parents:
diff changeset
   368
            qDebug("CpEapPacStoreUi::pacStorePasswordChanged - User defined");
hgs
parents:
diff changeset
   369
            // Read from PAC store config if PAC store exists
hgs
parents:
diff changeset
   370
            EapQtPacStoreConfig pacStoreConfig;
hgs
parents:
diff changeset
   371
            bool configurationRead = mConfigIf->readPacStoreConfiguration(
hgs
parents:
diff changeset
   372
                pacStoreConfig);
hgs
parents:
diff changeset
   373
            if (!configurationRead) {
hgs
parents:
diff changeset
   374
                qDebug("CpEapPacStoreUi::pacStorePasswordChanged - read PAC store configuration failed.");
hgs
parents:
diff changeset
   375
            }
hgs
parents:
diff changeset
   376
hgs
parents:
diff changeset
   377
            if (pacStoreConfig.value(EapQtPacStoreConfig::PacStoreState).toInt() 
hgs
parents:
diff changeset
   378
                == EapQtPacStoreConfig::PacStoreStatePasswordRequired) {
hgs
parents:
diff changeset
   379
                // PAC store exists, show 'PAC store password' query 
hgs
parents:
diff changeset
   380
                qDebug("CpEapPacStoreUi::pacStorePasswordChanged - Exist password query");
hgs
parents:
diff changeset
   381
                showExistPasswordQuery();
hgs
parents:
diff changeset
   382
            } else if (pacStoreConfig.value(EapQtPacStoreConfig::PacStoreState).toInt()
hgs
parents:
diff changeset
   383
                == EapQtPacStoreConfig::PacStoreStateStoreNotExists) {
hgs
parents:
diff changeset
   384
                // PAC store doesn't exist, show create password query
hgs
parents:
diff changeset
   385
                qDebug("CpEapPacStoreUi::pacStorePasswordChanged - Create new password");
hgs
parents:
diff changeset
   386
                showNewPasswordQuery();
hgs
parents:
diff changeset
   387
            } else {
hgs
parents:
diff changeset
   388
                // If password already stored no prompt needed
hgs
parents:
diff changeset
   389
                qDebug("CpEapPacStoreUi::pacStorePasswordChanged - Password stored");
hgs
parents:
diff changeset
   390
            }
hgs
parents:
diff changeset
   391
        }    
hgs
parents:
diff changeset
   392
    }
hgs
parents:
diff changeset
   393
}
hgs
parents:
diff changeset
   394
hgs
parents:
diff changeset
   395
/*!
hgs
parents:
diff changeset
   396
 * Slot for handling "Reset PAC store" button presses.
hgs
parents:
diff changeset
   397
 * 
hgs
parents:
diff changeset
   398
 * @param [in] index  Obsolete parameter, not needed
hgs
parents:
diff changeset
   399
 * @param [in] value  Obsolete parameter, not needed
hgs
parents:
diff changeset
   400
 */
hgs
parents:
diff changeset
   401
void CpEapPacStoreUi::resetPacStoreButtonPressed(
hgs
parents:
diff changeset
   402
    QPersistentModelIndex index, 
hgs
parents:
diff changeset
   403
    QVariant value)
hgs
parents:
diff changeset
   404
{
hgs
parents:
diff changeset
   405
    qDebug("CpEapPacStoreUi::resetPacStoreButtonPressed");
hgs
parents:
diff changeset
   406
hgs
parents:
diff changeset
   407
    Q_UNUSED(index);
hgs
parents:
diff changeset
   408
    Q_UNUSED(value);
hgs
parents:
diff changeset
   409
hgs
parents:
diff changeset
   410
    //Show message box to confirm the PAC store resetting
hgs
parents:
diff changeset
   411
    HbMessageBox *questionBox = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
hgs
parents:
diff changeset
   412
    questionBox->setObjectName("CpEapPacStoreUiRestPacStoreQuestion");
hgs
parents:
diff changeset
   413
    questionBox->setText(hbTrId("txt_occ_info_remove_pac_store_all_credentials_wil"));
hgs
parents:
diff changeset
   414
    questionBox->setModal(true);
hgs
parents:
diff changeset
   415
    questionBox->setTimeout(HbPopup::NoTimeout);
hgs
parents:
diff changeset
   416
    questionBox->setAttribute(Qt::WA_DeleteOnClose);
hgs
parents:
diff changeset
   417
    questionBox->setStandardButtons(HbMessageBox::Yes | HbMessageBox::No);
hgs
parents:
diff changeset
   418
    questionBox->open(this,SLOT(resetPacStoreConfirmed(int)));
hgs
parents:
diff changeset
   419
}
hgs
parents:
diff changeset
   420
hgs
parents:
diff changeset
   421
/*!
hgs
parents:
diff changeset
   422
 * Slot for clear PAC store Password after confirmed.
hgs
parents:
diff changeset
   423
 * 
hgs
parents:
diff changeset
   424
 * @param [in] action  User action
hgs
parents:
diff changeset
   425
 */
hgs
parents:
diff changeset
   426
void CpEapPacStoreUi::clearPacStorePasswordConfirmed(int action)
hgs
parents:
diff changeset
   427
{
hgs
parents:
diff changeset
   428
    qDebug("CpEapPacStoreUi::clearPacStorePasswordConfirmed()");
hgs
parents:
diff changeset
   429
    if (action == HbMessageBox::Yes) {
hgs
parents:
diff changeset
   430
        // User Clicked Yes
hgs
parents:
diff changeset
   431
        // Clear PAC store password
hgs
parents:
diff changeset
   432
        EapQtPacStoreConfig pacStoreConfig;
hgs
parents:
diff changeset
   433
        pacStoreConfig.setValue(EapQtPacStoreConfig::PacStoreSavePassword, false);
hgs
parents:
diff changeset
   434
        bool status = mConfigIf->savePacStoreConfiguration(
hgs
parents:
diff changeset
   435
            pacStoreConfig);
hgs
parents:
diff changeset
   436
        qDebug("CpEapPacStoreUi::clearPacStorePasswordConfirmed - status: %d", status);
hgs
parents:
diff changeset
   437
        mPacStorePasswordState = PacStorePasswordPrompt;
hgs
parents:
diff changeset
   438
        // Show error note to user
hgs
parents:
diff changeset
   439
        if (!status) {
hgs
parents:
diff changeset
   440
            // Show error note to user
hgs
parents:
diff changeset
   441
            showMessageBox(
hgs
parents:
diff changeset
   442
                HbMessageBox::MessageTypeWarning,
hgs
parents:
diff changeset
   443
                hbTrId("txt_occ_info_unable_to_save_setting"));            
hgs
parents:
diff changeset
   444
        }
hgs
parents:
diff changeset
   445
    } else {
hgs
parents:
diff changeset
   446
        // User Clicked No
hgs
parents:
diff changeset
   447
        Q_ASSERT(action == HbMessageBox::No);
hgs
parents:
diff changeset
   448
        // Set PAC store password back to 'User defined'
hgs
parents:
diff changeset
   449
        setPacStorePasswordState(PacStorePasswordUserDefined);
hgs
parents:
diff changeset
   450
    }
hgs
parents:
diff changeset
   451
}
hgs
parents:
diff changeset
   452
hgs
parents:
diff changeset
   453
/*!
hgs
parents:
diff changeset
   454
 * Slot for reset PAC store after confirmed.
hgs
parents:
diff changeset
   455
 * 
hgs
parents:
diff changeset
   456
 * @param [in] action  User action
hgs
parents:
diff changeset
   457
 */
hgs
parents:
diff changeset
   458
void CpEapPacStoreUi::resetPacStoreConfirmed(int action)
hgs
parents:
diff changeset
   459
{
hgs
parents:
diff changeset
   460
    qDebug("CpEapPacStoreUi::resetPacStoreConfirmed()");
hgs
parents:
diff changeset
   461
    if (action == HbMessageBox::Yes) {
hgs
parents:
diff changeset
   462
        // User Clicked Yes
hgs
parents:
diff changeset
   463
        // Reset PAC Store
hgs
parents:
diff changeset
   464
        EapQtPacStoreConfig pacStoreConfig;
hgs
parents:
diff changeset
   465
        pacStoreConfig.setValue(EapQtPacStoreConfig::PacStoreReset, true);
hgs
parents:
diff changeset
   466
        bool status = mConfigIf->savePacStoreConfiguration(
hgs
parents:
diff changeset
   467
            pacStoreConfig);
hgs
parents:
diff changeset
   468
        qDebug("CpEapPacStoreUi::resetPacStoreConfirmed - reset status: %d", status);
hgs
parents:
diff changeset
   469
        if (!status) {
hgs
parents:
diff changeset
   470
            // Show error note to user
hgs
parents:
diff changeset
   471
            showMessageBox(
hgs
parents:
diff changeset
   472
                HbMessageBox::MessageTypeWarning,
hgs
parents:
diff changeset
   473
                hbTrId("txt_occ_info_unable_to_save_setting"));
hgs
parents:
diff changeset
   474
        }
hgs
parents:
diff changeset
   475
        
hgs
parents:
diff changeset
   476
        // Set PAC store password selection to 'Prompt'
hgs
parents:
diff changeset
   477
        setPacStorePasswordState(PacStorePasswordPrompt);
hgs
parents:
diff changeset
   478
    } else {
hgs
parents:
diff changeset
   479
        // User Clicked No
hgs
parents:
diff changeset
   480
        Q_ASSERT(action == HbMessageBox::No);
hgs
parents:
diff changeset
   481
        // Do nothing (don't reset PAC store)
hgs
parents:
diff changeset
   482
        qDebug("CpEapPacStoreUi::resetPacStoreConfirmed - Do not reset.");
hgs
parents:
diff changeset
   483
    }
hgs
parents:
diff changeset
   484
}
hgs
parents:
diff changeset
   485
hgs
parents:
diff changeset
   486
/*!
hgs
parents:
diff changeset
   487
 * Slot for confirm given PAC store password when PAC store exists
hgs
parents:
diff changeset
   488
 */
hgs
parents:
diff changeset
   489
void CpEapPacStoreUi::completeExistPasswordQuery()
hgs
parents:
diff changeset
   490
{
hgs
parents:
diff changeset
   491
    qDebug("CpEapPacStoreUi::completeExistPasswordQuery()");
hgs
parents:
diff changeset
   492
    QString password = mExistPasswordDialog->value().toString();
hgs
parents:
diff changeset
   493
    if (mValidatorPacStore->validate(password) == EapQtValidator::StatusOk) {
hgs
parents:
diff changeset
   494
        qDebug("CpEapPacStoreUi::completeExistPasswordQuery() - save password");
hgs
parents:
diff changeset
   495
        // Password is OK, save it
hgs
parents:
diff changeset
   496
        EapQtPacStoreConfig pacStoreConfig;
hgs
parents:
diff changeset
   497
        pacStoreConfig.setValue(EapQtPacStoreConfig::PacStorePassword, password);
hgs
parents:
diff changeset
   498
        pacStoreConfig.setValue(EapQtPacStoreConfig::PacStoreSavePassword, true);
hgs
parents:
diff changeset
   499
        bool status = mConfigIf->savePacStoreConfiguration(
hgs
parents:
diff changeset
   500
            pacStoreConfig);
hgs
parents:
diff changeset
   501
        qDebug("CpEapPacStoreUi::completeExistPasswordQuery - save status: %d", status);
hgs
parents:
diff changeset
   502
        if (status) {
hgs
parents:
diff changeset
   503
            mPacStorePasswordState = PacStorePasswordUserDefined;            
hgs
parents:
diff changeset
   504
        } else {
hgs
parents:
diff changeset
   505
            setPacStorePasswordState(PacStorePasswordPrompt);
hgs
parents:
diff changeset
   506
            // Show error note to user
hgs
parents:
diff changeset
   507
            showMessageBox(
hgs
parents:
diff changeset
   508
                HbMessageBox::MessageTypeWarning,
hgs
parents:
diff changeset
   509
                hbTrId("txt_occ_info_unable_to_save_setting"));
hgs
parents:
diff changeset
   510
        }
hgs
parents:
diff changeset
   511
hgs
parents:
diff changeset
   512
    } else {
hgs
parents:
diff changeset
   513
        // Existing password cannot be changed
hgs
parents:
diff changeset
   514
        // Set PAC store password selection back to 'Prompt'
hgs
parents:
diff changeset
   515
        setPacStorePasswordState(PacStorePasswordPrompt);
hgs
parents:
diff changeset
   516
        // Show info popup
hgs
parents:
diff changeset
   517
        HbMessageBox *infoBox = new HbMessageBox(HbMessageBox::MessageTypeInformation);
hgs
parents:
diff changeset
   518
        infoBox->setObjectName("CpEapPacStoreUiPasswordCannotChangeInfo");
hgs
parents:
diff changeset
   519
        infoBox->setText(hbTrId("txt_occ_info_existing_password_cannot_be_changed"));
hgs
parents:
diff changeset
   520
        infoBox->setModal(true);
hgs
parents:
diff changeset
   521
        infoBox->setTimeout(HbPopup::NoTimeout);
hgs
parents:
diff changeset
   522
        infoBox->setAttribute(Qt::WA_DeleteOnClose);
hgs
parents:
diff changeset
   523
        infoBox->setStandardButtons(HbMessageBox::Ok);
hgs
parents:
diff changeset
   524
        infoBox->open();
hgs
parents:
diff changeset
   525
    }
hgs
parents:
diff changeset
   526
}
hgs
parents:
diff changeset
   527
hgs
parents:
diff changeset
   528
/*!
hgs
parents:
diff changeset
   529
 * Slot for save given PAC store password when no PAC store exists
hgs
parents:
diff changeset
   530
 */
hgs
parents:
diff changeset
   531
void CpEapPacStoreUi::completeNewPasswordQuery()
hgs
parents:
diff changeset
   532
{
hgs
parents:
diff changeset
   533
    qDebug("CpEapPacStoreUi::completeNewPasswordQuery()");
hgs
parents:
diff changeset
   534
    QString password = mNewPasswordDialog->value(0).toString();
hgs
parents:
diff changeset
   535
    QString passwordConfirm = mNewPasswordDialog->value(1).toString();
hgs
parents:
diff changeset
   536
hgs
parents:
diff changeset
   537
    if (password == passwordConfirm &&
hgs
parents:
diff changeset
   538
        mValidatorPacStore->validate(password) == EapQtValidator::StatusOk) {
hgs
parents:
diff changeset
   539
        // Password is OK, save it
hgs
parents:
diff changeset
   540
        qDebug("CpEapPacStoreUi::completeNewPasswordQuery() - password OK. Save it.");
hgs
parents:
diff changeset
   541
        EapQtPacStoreConfig pacStoreConfig;
hgs
parents:
diff changeset
   542
        pacStoreConfig.setValue(EapQtPacStoreConfig::PacStorePassword, password);
hgs
parents:
diff changeset
   543
        pacStoreConfig.setValue(EapQtPacStoreConfig::PacStoreSavePassword, true);
hgs
parents:
diff changeset
   544
        bool status = mConfigIf->savePacStoreConfiguration(
hgs
parents:
diff changeset
   545
            pacStoreConfig);
hgs
parents:
diff changeset
   546
        qDebug("CpEapPacStoreUi::completeNewPasswordQuery - save status: %d", status);
hgs
parents:
diff changeset
   547
        if (status) {
hgs
parents:
diff changeset
   548
            mPacStorePasswordState = PacStorePasswordUserDefined;
hgs
parents:
diff changeset
   549
        } else {
hgs
parents:
diff changeset
   550
            setPacStorePasswordState(PacStorePasswordPrompt);
hgs
parents:
diff changeset
   551
            // Show error note to user
hgs
parents:
diff changeset
   552
            showMessageBox(
hgs
parents:
diff changeset
   553
                HbMessageBox::MessageTypeWarning,
hgs
parents:
diff changeset
   554
                hbTrId("txt_occ_info_unable_to_save_setting"));
hgs
parents:
diff changeset
   555
        }
hgs
parents:
diff changeset
   556
    } else {
hgs
parents:
diff changeset
   557
        // Password is not OK, show info popup
hgs
parents:
diff changeset
   558
        qDebug("CpEapPacStoreUi::completeNewPasswordQuery() - password Not OK. Show popup.");
hgs
parents:
diff changeset
   559
        HbMessageBox *infoBox = new HbMessageBox(HbMessageBox::MessageTypeInformation);
hgs
parents:
diff changeset
   560
        infoBox->setObjectName("CpEapPacStoreUiInvalidPasswordInfo");
hgs
parents:
diff changeset
   561
        if (password != passwordConfirm) {
hgs
parents:
diff changeset
   562
            infoBox->setText(hbTrId("txt_occ_info_passwords_do_not_match_try_again"));
hgs
parents:
diff changeset
   563
        } else {
hgs
parents:
diff changeset
   564
            infoBox->setText(hbTrId("txt_occ_info_invalid_input"));
hgs
parents:
diff changeset
   565
        }
hgs
parents:
diff changeset
   566
        infoBox->setModal(true);
hgs
parents:
diff changeset
   567
        infoBox->setTimeout(HbPopup::NoTimeout);
hgs
parents:
diff changeset
   568
        infoBox->setAttribute(Qt::WA_DeleteOnClose);
hgs
parents:
diff changeset
   569
        infoBox->setStandardButtons(HbMessageBox::Ok);
hgs
parents:
diff changeset
   570
        infoBox->open(this,SLOT(invalidPasswordInfoClosed(int)));
hgs
parents:
diff changeset
   571
    }
hgs
parents:
diff changeset
   572
}
hgs
parents:
diff changeset
   573
hgs
parents:
diff changeset
   574
/*!
hgs
parents:
diff changeset
   575
 * This function is called when user selects CANCEL from
hgs
parents:
diff changeset
   576
 * PAC store password or New PAC store password query popup.
hgs
parents:
diff changeset
   577
 * PAC store password selection is changed back to 'Prompt'.
hgs
parents:
diff changeset
   578
 */
hgs
parents:
diff changeset
   579
void CpEapPacStoreUi::cancelPasswordQuery()
hgs
parents:
diff changeset
   580
{
hgs
parents:
diff changeset
   581
    qDebug("CpEapPacStoreUi::cancelPasswordQuery()");
hgs
parents:
diff changeset
   582
    // Set PAC store password selection back to 'Prompt'
hgs
parents:
diff changeset
   583
    setPacStorePasswordState(PacStorePasswordPrompt);
hgs
parents:
diff changeset
   584
}
hgs
parents:
diff changeset
   585
hgs
parents:
diff changeset
   586
/*!
hgs
parents:
diff changeset
   587
 * This function is called when user selects OK from
hgs
parents:
diff changeset
   588
 * 'Passwords do not match' or 'Invalid input' information popup.
hgs
parents:
diff changeset
   589
 * New PAC store password query dialog is shown again
hgs
parents:
diff changeset
   590
 * 
hgs
parents:
diff changeset
   591
 * @param [in] action  Obsolete parameter, not needed
hgs
parents:
diff changeset
   592
 */
hgs
parents:
diff changeset
   593
void CpEapPacStoreUi::invalidPasswordInfoClosed(int action)
hgs
parents:
diff changeset
   594
{
hgs
parents:
diff changeset
   595
    qDebug("CpEapPacStoreUi::invalidPasswordInfoClosed() - Show query again.");
hgs
parents:
diff changeset
   596
    Q_UNUSED(action);
hgs
parents:
diff changeset
   597
    
hgs
parents:
diff changeset
   598
    showNewPasswordQuery();    
hgs
parents:
diff changeset
   599
}