diff -r 09b1ac925e3f -r 03674e5abf46 securitydialogs/secuinotifications/secuinotificationdialogplugin/src/secuinotificationcontentwidget.cpp --- a/securitydialogs/secuinotifications/secuinotificationdialogplugin/src/secuinotificationcontentwidget.cpp Tue Aug 31 16:04:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,367 +0,0 @@ -/* -* Copyright (c) 2010 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: SecUi notification content widget. -* -*/ - -#include "secuinotificationdebug.h" -#include "secuinotificationcontentwidget.h" -#include "secuinotificationdialogpluginkeys.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include // needed for a checkbox dialog -#include // needed for multicheckbox dialog -#include -#include -#include - -#define ESecUiCancelSupported 0x1000000 -#define ESecUiCancelNotSupported 0x0000000 - -#define ESecUiEmergencySupported 0x2000000 -#define ESecUiEmergencyNotSupported 0x0000000 - -#define ESecUiAlphaSupported 0x4000000 -#define ESecUiAlphaNotSupported 0x0000000 - -#define ESecUiSecretSupported 0x8000000 -#define ESecUiSecretNotSupported 0x0000000 - -#define ESecUiMaskFlags 0xFF000000 -#define ESecUiMaskType 0x00FFFFFF - -#define ESecUiTypeDeviceLock 0x00100000 -#define ESecUiTypeKeyguard 0x00200000 -#define ESecUiTypeClock 0x00300000 -#define ESecUiTypeScreensaver 0x00400000 - -#define ESecUiTypeMaskLock 0x00F00000 - - -// ---------------------------------------------------------------------------- -// SecUiNotificationContentWidget::SecUiNotificationContentWidget() -// ---------------------------------------------------------------------------- -// -SecUiNotificationContentWidget::SecUiNotificationContentWidget( - QGraphicsItem *parent, Qt::WindowFlags flags) : HbWidget(parent, flags) -{ - RDEBUG("0", 0); -} - -// ---------------------------------------------------------------------------- -// SecUiNotificationContentWidget::~SecUiNotificationContentWidget() -// ---------------------------------------------------------------------------- -// -SecUiNotificationContentWidget::~SecUiNotificationContentWidget() -{ -} - -// ---------------------------------------------------------------------------- -// SecUiNotificationContentWidget::constructFromParameters() -// ---------------------------------------------------------------------------- -// -void SecUiNotificationContentWidget::constructFromParameters(const QVariantMap ¶meters) -{ - RDEBUG("0", 0); - RDEBUGQT("parameters", parameters); - QGraphicsLinearLayout *mainLayout = new QGraphicsLinearLayout(Qt::Vertical); - - lMinLength = 4; // might be replaced later - lMaxLength = 8; // might be replaced later - queryDual=0; - isEmergency=0; - codeTop=0; - - // KApplicationSize - if (parameters.contains(KQueryType)) { - RDEBUG("0", 0); - queryType = parameters.value(KQueryType).toUInt(); - RDEBUG("queryType", queryType); - if( (queryType & ESecUiTypeMaskLock) ) - { - RDEBUG("KQueryType=ESecUiTypeMaskLock", queryType); - // showing "Lock" icon. All other params are irrelevant. codeTop is not even created - - HbLabel *iconLabel = new HbLabel("Locked"); - HbIcon *icon = new HbIcon("qtg_large_device_lock"); - // iconLabel->setAspectRatioMode(Qt::IgnoreAspectRatio); - // iconLabel->setGeometry(QRectF(QPointF(10,10),QSizeF(300,300))); - iconLabel->setIcon(*icon); - if( (queryType & ESecUiTypeMaskLock)==ESecUiTypeDeviceLock ) - { // really big icon for the devicelock - iconLabel->setPreferredHeight(500); - iconLabel->setPreferredWidth(500); - } - else if( (queryType & ESecUiTypeMaskLock)==ESecUiTypeKeyguard ) - { // smaller icon for the keyguard - iconLabel->setPreferredHeight(100); - iconLabel->setPreferredWidth(100); - } - - // icon->setWidth(300); - // icon->setHeight(350); - // icon->setGeometry(QRectF(QPointF(10,10),QSizeF(500,300))); - // icon->setSize(QSizeF(300,300)); - - mainLayout->addItem(iconLabel); - mainLayout->setAlignment(iconLabel, Qt::AlignCenter ); - // mainLayout->setGeometry(QRectF(QPointF(10,10),QSizeF(300,300))); - - /* - QToolButton* mLabelIcon = new QToolButton; - mLabelIcon->setIcon(QIcon(":/AutolockSrv_hbicon/qtg_large_device_lock.svg")); - mLabelIcon->setIconSize(QSize(300,300)); - HbLabel *iconLabel = new HbLabel("Locked"); - iconLabel->setIcon(*mLabelIcon); - mainLayout->addItem(iconLabel); - */ - - // mainLayout->setContentsMargins(10,10,300,500); // this makes the dialog really big - setLayout(mainLayout); // same as at the end - return; - } - // not ESecUiTypeMaskLock - lEmergencySupported = ESecUiEmergencyNotSupported; - if((queryType & ESecUiEmergencySupported)==ESecUiEmergencySupported) - { - lEmergencySupported = ESecUiEmergencySupported; - } - RDEBUG("lEmergencySupported", lEmergencySupported); - } - - if (parameters.contains(KQueryMinLength)) { - RDEBUG("KQueryMinLength", 0); - lMinLength = parameters.value(KQueryMinLength).toUInt(); - RDEBUG("lMinLength", lMinLength); - } - if (parameters.contains(KQueryMaxLength)) { - RDEBUG("KQueryMaxLength", 0); - lMaxLength = parameters.value(KQueryMaxLength).toUInt(); - RDEBUG("lMaxLength", lMaxLength); - } - - if (parameters.contains(KEmergency)) { - RDEBUG("KEmergency", 0); - QString emergencyText = parameters.value(KEmergency).toString(); - RDEBUGQT("emergencyText", emergencyText); - if(!emergencyText.compare("emergencyYes")) - { - RDEBUG("emergencyYes", 1); - isEmergency = 1; - } - if(!emergencyText.compare("emergencyNo")) - { - RDEBUG("emergencyNo", 0); - isEmergency = 0; - } - } - - - // KCodeTop - if (parameters.contains(KCodeTop)) { - RDEBUG("KCodeTop", 0); - codeTop = new HbLineEdit(""); // no default value - RDEBUG("queryType", queryType); - codeTop->setInputMethodHints(Qt::ImhDigitsOnly); // default - if (queryType & ESecUiAlphaSupported) - { - RDEBUG("ESecUiAlphaSupported", ESecUiAlphaSupported); - codeTop->setInputMethodHints(Qt::ImhNone); - } - if (queryType & ESecUiSecretSupported) - { - RDEBUG("ESecUiSecretSupported", ESecUiSecretSupported); - codeTop->setEchoMode(HbLineEdit::PasswordEchoOnEdit); - } - RDEBUG("lMaxLength", lMaxLength); - if(lMaxLength>2) - codeTop->setMaxLength(lMaxLength); - - if (parameters.contains(KDefaultCode)) { - RDEBUG("KDefaultCode", 0); - QString defaultCode = parameters.value(KDefaultCode).toString(); - RDEBUGQT("defaultCode", defaultCode); - codeTop->setText(defaultCode); - } - RDEBUG("1", 1); - - connect(codeTop, SIGNAL(textChanged(const QString &)), this, SIGNAL(codeTopChanged(const QString &))); - connect(codeTop, SIGNAL(contentsChanged()), this, SIGNAL(codeTopContentChanged())); - - if (parameters.contains(KDefaultCode)) { // this is done in this step so that the OK becomes valid (if rules are fulfilled) - RDEBUG("KDefaultCode", 0); - QString defaultCode = parameters.value(KDefaultCode).toString(); - RDEBUGQT("defaultCode", defaultCode); - codeTop->setText(defaultCode); - } - RDEBUG("2", 2); - - if (parameters.contains(KDialogTitle)) { - QString titleText = parameters.value(KDialogTitle).toString(); - QString titleAttempts = ""; - if(titleText.indexOf('|')>0) - { // if separator, take only first part - titleText = titleText.left(titleText.indexOf('|')); - } - if(titleText.indexOf('$')>0) - { // if separator, take only first part - // it comes translated alredy, from the client - titleAttempts = titleText.right(titleText.length()-titleText.indexOf('$')-1); - RDEBUGQT("titleAttempts", titleAttempts); - int nAttempts = titleAttempts.toInt(); - RDEBUG("nAttempts", nAttempts); - titleText = titleText.left(titleText.indexOf('$')); // this comes translated already - if(nAttempts==1) // last attempt - { - // This must be in a new line, to avoid problems with left-to-right writing - titleAttempts = hbTrId("txt_pin_code_dpophead_last_attempt"); - } - else if(nAttempts>0) - { - titleAttempts = hbTrId("attempts") + "=" + QString::number(nAttempts); - // TODO this requires %L1 localization using txt_pin_code_dpopinfo_ln_attempts_remaining - } - else if(nAttempts==0) - { - titleAttempts = ""; // something special for the last attempt ? - } - else - { - titleAttempts = ""; - } - } - HbLabel *titleTop = new HbLabel(titleText); - mainLayout->addItem(titleTop); - if (titleAttempts.length()>0 ) - { - HbLabel *titleTopAttemps = new HbLabel(titleAttempts); - mainLayout->addItem(titleTopAttemps); - } - // in the dialog, it was setHeadingWidget(title); - } - RDEBUG("3", 3); - mainLayout->addItem(codeTop); - // double-query - if (parameters.contains(KCodeBottom)) - { - queryDual=1; - QString titleText = parameters.value(KDialogTitle).toString(); - if(titleText.indexOf('|')>0) - { // if no separator, don't create label - QString titleBottomStr = titleText.right(titleText.length()-titleText.indexOf('|')-1); - // no need to translate - HbLabel *titleBottom = new HbLabel(titleBottomStr); - mainLayout->addItem(titleBottom); - } - - codeBottom = new HbLineEdit(""); // no default value - if(lMaxLength>2) - codeBottom->setMaxLength(lMaxLength); - codeBottom->setInputMethodHints(Qt::ImhDigitsOnly); // default - if (queryType & ESecUiAlphaSupported) - { - RDEBUG("setInputMethodHints", 0); - codeBottom->setInputMethodHints(Qt::ImhNone); - } - if (queryType & ESecUiSecretSupported) - { - RDEBUG("ESecUiSecretSupported", 0); - codeBottom->setEchoMode(HbLineEdit::PasswordEchoOnEdit); // this will also remove predictive, which is what we want - } - RDEBUG("connecting", 0); - connect(codeBottom, SIGNAL(textChanged(const QString &)), this, SIGNAL(codeBottomChanged(const QString &))); - connect(codeBottom, SIGNAL(contentsChanged(const QString &)), this, SIGNAL(codeBottomChanged(const QString &))); - mainLayout->addItem(codeBottom); - } - - QGraphicsLinearLayout *mainLayoutButtons = new QGraphicsLinearLayout(Qt::Horizontal); - HbPushButton *but1 = new HbPushButton("1234"); - HbPushButton *but2 = new HbPushButton("+1"); - HbPushButton *but3 = new HbPushButton("+5"); - connect(but1, SIGNAL(clicked()), this, SIGNAL(but1Changed())); - connect(but2, SIGNAL(clicked()), this, SIGNAL(but2Changed())); - connect(but3, SIGNAL(clicked()), this, SIGNAL(but3Changed())); - #if defined(_DEBUG) - mainLayoutButtons->addItem(but1); - mainLayoutButtons->addItem(but2); - mainLayoutButtons->addItem(but3); - #endif - - mainLayout->addItem(mainLayoutButtons); - - // remove setFocus from PIN query because Orbit can't handle it - // codeTop->setFocus(); // this should open the VKB - - } - - if (parameters.contains(KChecboxType)) { - RDEBUG("KChecboxType", 0); - if (parameters.contains(KDialogTitle)) { - //TODO position of the label is not centered - QString tmpText=parameters.value(KDialogTitle).toString(); - if (tmpText.endsWith("\n")) tmpText=tmpText.left(tmpText.length()-1); - DialogText= new HbLabel(tmpText); - DialogText->setTextWrapping(Hb::TextWordWrap); - DialogText->setAlignment(Qt::AlignVCenter); - mainLayout->addItem(DialogText); - } - - checkbox = new HbCheckBox("Caption"); - if (parameters.contains(KDefaultCode)) { - RDEBUG("KDefaultCode", 0); - QStringList list1 = parameters.value(KDefaultCode).toString().split("|"); - if (!list1.isEmpty() && list1.count()==2) { - if (!list1[0].isNull() && !list1[0].isEmpty()) checkbox->setText(list1[0]); - if (!list1[1].isNull() && !list1[1].isEmpty()) checkbox->setChecked(list1[1].toInt()); - } - // TODO this needs localization - } - mainLayout->addItem(checkbox); - } - - if (parameters.contains(KMultiChecboxType) && parameters.contains(KDefaultCode)) - { - RDEBUG("KMultiChecboxType", 0); - QStringList list1 = parameters.value(KDefaultCode).toString().split("1\t"); - if (!list1.isEmpty()) { - listWidget = new HbListWidget(); - for (int i = 0; (i < list1.count()); i++) - if (!list1[i].isEmpty() && !list1[i].isNull()) { - HbListWidgetItem* modelItem = new HbListWidgetItem(); - modelItem->setData(QVariant(list1[i]), Qt::DisplayRole); - // TODO this needs localization - listWidget->addItem(modelItem); - } - listWidget->setCurrentRow(0); - listWidget->setSelectionMode(HbAbstractItemView::MultiSelection); - //listWidget->setClampingStyle(HbScrollArea::BounceBackClamping); - listWidget->setVerticalScrollBarPolicy(HbScrollArea::ScrollBarAsNeeded); - listWidget->setMaximumHeight(150); - mainLayout->addItem(listWidget); - // delete listWidget; - } - } - - setLayout(mainLayout); - } -