phonebookui/pbkcommonui/src/cntsettingsmodel.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 17 Sep 2010 08:27:32 +0300
changeset 71 7cc7d74059f9
parent 47 7cbcb2896f0e
permissions -rw-r--r--
Revision: 201035 Kit: 201037

/*
* Copyright (c) 2009 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:  
*
*/

#include "cntsettingsmodel.h"
#include <cntuids.h>
#include <qstringlist.h>
#include <xqsettingskey.h>
#include "cntdebug.h"

CntSettingsModel::CntSettingsModel() :
HbDataFormModel(),
mNameOrderkey(NULL),
mNameListRowSettingkey(NULL)
{
    // Create name ordering setting item
    createNameOrderSettingsItem();
    
    // Create names list row (1-row or 2-rows) setting item
    createNamesListRowSettingItem();
    
    connect(this, SIGNAL(dataChanged(QModelIndex , QModelIndex)), this, SLOT(handleDataChanged(QModelIndex , QModelIndex)));
}

void CntSettingsModel::createNameOrderSettingsItem()
{
    HbDataFormModelItem* ord = new HbDataFormModelItem(HbDataFormModelItem::ComboBoxItem, hbTrId(
    "txt_phob_setlabel_name_display_order"));
    
    QStringList orderList;
    // This order should be maintained as per the UI spec
    orderList.append( hbTrId("txt_phob_setlabel_name_display_order_val_last_name") );
    orderList.append( hbTrId("txt_phob_setlabel_name_display_order_val_last_name_separator") );
    orderList.append( hbTrId("txt_phob_setlabel_name_display_order_val_first_nam") );
    
    ord->setContentWidgetData( "items", orderList );
    appendDataFormItem(ord, invisibleRootItem());
    mNameOrderkey = new XQSettingsKey(XQSettingsKey::TargetCentralRepository,
                            KCRCntSettings.iUid,
                            KCntNameOrdering);
    int settingValue = mSettings.readItemValue(*mNameOrderkey, XQSettingsManager::TypeInt).toInt();

    if (settingValue == CntOrderLastFirst) {
        ord->setContentWidgetData("currentIndex", 0 );
    } else if (settingValue == CntOrderLastCommaFirst) {
        ord->setContentWidgetData("currentIndex", 1 );
    } else if (settingValue == CntOrderFirstLast) {
        ord->setContentWidgetData("currentIndex", 2 );
    }
}

void CntSettingsModel::createNamesListRowSettingItem()
{
    HbDataFormModelItem* rowSetting = new HbDataFormModelItem(HbDataFormModelItem::ComboBoxItem, hbTrId(
        "txt_phob_setlabel_show"));
    
    QStringList rowSettingList;
    // This order should be maintained as per the UI spec
    rowSettingList.append( hbTrId("txt_phob_setlabel_show_val_name_only") );
    rowSettingList.append( hbTrId("txt_phob_setlabel_show_val_name_and_phonenumber") );

    rowSetting->setContentWidgetData( "items", rowSettingList );
    appendDataFormItem(rowSetting, invisibleRootItem());
    mNameListRowSettingkey = new XQSettingsKey(XQSettingsKey::TargetCentralRepository,
                            KCRCntSettings.iUid,
                            KCntNameListRowSetting);
	int settingValue = mSettings.readItemValue(*mNameListRowSettingkey, XQSettingsManager::TypeInt).toInt();
    
    if (settingValue == CntOneRowNameOnly) {
         rowSetting->setContentWidgetData("currentIndex", 0 );
	} else if (settingValue == CntTwoRowsNameAndPhoneNumber) {
         rowSetting->setContentWidgetData("currentIndex", 1 );
    }
}

CntSettingsModel::~CntSettingsModel()
{
    delete mNameOrderkey;
    delete mNameListRowSettingkey;
}

void CntSettingsModel::handleDataChanged(QModelIndex topLeft, QModelIndex bottomRight)
{
    Q_UNUSED(bottomRight)
    bool written(true);
            
    if (topLeft.row() == 0) {
        int selected = itemFromIndex(topLeft)->contentWidgetData( "currentIndex" ).toInt();
        if (selected == 0) {
            written = mSettings.writeItemValue(*mNameOrderkey, QVariant(CntOrderLastFirst));
        } else if (selected == 1) {
            written = mSettings.writeItemValue(*mNameOrderkey, QVariant(CntOrderLastCommaFirst));
        } else if (selected == 2) {
            written = mSettings.writeItemValue(*mNameOrderkey, QVariant(CntOrderFirstLast));
        }
        if (!written) {
            CNT_LOG_ARGS(QString("failed writting cenrep key"))
        }
    }
    else if (topLeft.row() == 1) {
        int selected = itemFromIndex(topLeft)->contentWidgetData( "currentIndex" ).toInt();
		if (selected == 0) {
            written = mSettings.writeItemValue(*mNameListRowSettingkey, QVariant(CntOneRowNameOnly));
        } else if (selected == 1) {
            written = mSettings.writeItemValue(*mNameListRowSettingkey, QVariant(CntTwoRowsNameAndPhoneNumber));
        }
        if (!written) {
            CNT_LOG_ARGS(QString("failed writting cenrep key"))
        }
    }
}