cpsecplugins/simpincodeplugin/src/cppincodepluginview.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 06 Jul 2010 15:15:05 +0300
changeset 38 e0432375ea67
parent 37 7bad16cccaca
permissions -rw-r--r--
Revision: 201025 Kit: 2010127

/*
 * 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:  
 *
 */

// System includes
#include <hbdataform.h>
#include <hbdataformmodel.h>
#include <hbdataformmodelitem.h>
#include <hblineedit.h>
#include <seccodeeditdataformviewitem.h>
#include <seccodesettings.h>

// User includes
#include "cppincodepluginview.h"
#include <../../inc/cpsecplugins.h>

/*!
    \class CpPinCodePluginView
    \brief Pin Code Setting view class

    This class is used to create PIN code setting view
*/

// ======== LOCAL FUNCTIONS ========

/*!
   Constructor
*/
CpPinCodePluginView::CpPinCodePluginView(QGraphicsItem *parent /*= 0*/)
	: CpBaseSettingView(0,parent), mSecCodeSettings(new SecCodeSettings())
{
		RDEBUG("0", 0);
    HbDataForm *form = qobject_cast<HbDataForm*>(widget());
    if (form) {
        QList<HbAbstractViewItem *> protoTypeList = form->itemPrototypes();
        protoTypeList.append(new SecCodeEditDataFormViewItem());
        form->setItemPrototypes(protoTypeList);     
        form->setHeading(tr("PIN code"));

        mFormModel = new HbDataFormModel(this);        
        mPinCodeRequestItem = new HbDataFormModelItem(
            HbDataFormModelItem::ToggleValueItem, tr("PIN code requests"));

        bool currentPinCodeRequest = mSecCodeSettings->pinCodeRequest();
        if (currentPinCodeRequest) { 
            mPinCodeRequestItem->setContentWidgetData("text", tr("On"));
            mPinCodeRequestItem->setContentWidgetData("additionalText", tr("On"));
        } else {
            mPinCodeRequestItem->setContentWidgetData("text",tr("Off"));
            mPinCodeRequestItem->setContentWidgetData("additionalText", tr("Off"));
        }
				RDEBUG("form->addConnection", 1);
        connect(mFormModel, SIGNAL(dataChanged(QModelIndex, QModelIndex)), 
                  this, SLOT(toggleChange(QModelIndex, QModelIndex)));
        mFormModel->appendDataFormItem(mPinCodeRequestItem);

        HbDataFormModelItem *pinCodeItem = new HbDataFormModelItem(
            static_cast<HbDataFormModelItem::DataItemType>
            (SecCodeEditDataFormViewItem::SecCodeEditItem), tr("PIN code"));
        pinCodeItem->setContentWidgetData("echoMode", HbLineEdit::Password);
        pinCodeItem->setContentWidgetData("text", "1111");
        pinCodeItem->setContentWidgetData("readOnly", true);
        form->addConnection(pinCodeItem, SIGNAL(clicked()), this,
        		SLOT(changePinCode()));
        mFormModel->appendDataFormItem(pinCodeItem);

        HbDataFormModelItem *pin2CodeItem = new HbDataFormModelItem(
            static_cast<HbDataFormModelItem::DataItemType>
            (SecCodeEditDataFormViewItem::SecCodeEditItem), tr("PIN2 code"));
        pin2CodeItem->setContentWidgetData("echoMode", HbLineEdit::Password);
        pin2CodeItem->setContentWidgetData("text", "1111");
        pin2CodeItem->setContentWidgetData("readOnly", true);
        form->addConnection(pin2CodeItem, SIGNAL(clicked()), this,
        		SLOT(changePin2Code()));
        mFormModel->appendDataFormItem(pin2CodeItem);
				RDEBUG("form->setModel", 1);
        form->setModel(mFormModel);
    }
}

/*!
   Destructor
*/
CpPinCodePluginView::~CpPinCodePluginView()
{
    delete mSecCodeSettings;
}

/*!
   response for click pin code request
*/
void CpPinCodePluginView::toggleChange(QModelIndex startIn, 
        QModelIndex /*endIn*/)
{
		RDEBUG("0", 0);
    HbDataFormModelItem *item = mFormModel->itemFromIndex(startIn);
    if(item->type() == HbDataFormModelItem::ToggleValueItem) {
        if (mSecCodeSettings->changePinCodeRequest()) {
        		RDEBUG("got changePinCodeRequest", 1);
						disconnect(mFormModel, 
                    SIGNAL(dataChanged(QModelIndex, QModelIndex)), this, 
                    SLOT(toggleChange(QModelIndex, QModelIndex)));
        		RDEBUG("disconnected", 1);
            QString text = mPinCodeRequestItem->contentWidgetData(
                    "text").toString();
            if (0 == text.compare("On")) {
                mPinCodeRequestItem->setContentWidgetData("text", 
                    tr("Off"));
                mPinCodeRequestItem->setContentWidgetData("additionalText", 
                    tr("Off"));
            } else {
                mPinCodeRequestItem->setContentWidgetData("text", 
                    tr("On"));
                mPinCodeRequestItem->setContentWidgetData("additionalText", 
                    tr("On"));
            }
         		RDEBUG("reconnect", 1);
						connect(mFormModel, SIGNAL(dataChanged(QModelIndex, QModelIndex)), 
                    this, SLOT(toggleChange(QModelIndex, QModelIndex)));
        }
      else
      	{
      	RDEBUG("value was not changed", 0);
      	}
    }
   	RDEBUG("0", 0);
}

/*!
   response for click pin code
*/
void CpPinCodePluginView::changePinCode()
{
		RDEBUG("0", 0);
    mSecCodeSettings->changePinCode();
}

/*!
   response for click pin2 code
*/
void CpPinCodePluginView::changePin2Code()
{
		RDEBUG("0", 0);
    mSecCodeSettings->changePin2Code();
}