controlpanelui/src/cpplugins/keytouchfdbkplugin/src/cpkeyscreenview.cpp
author hgs
Fri, 14 May 2010 13:21:08 +0800
changeset 19 36aa4756ee82
child 21 2883a5458389
permissions -rw-r--r--
201019
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
19
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
 * Copyright (c) 2009 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
 *
hgs
parents:
diff changeset
    16
 */
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#include "cpkeyscreenview.h"
hgs
parents:
diff changeset
    19
#include "cpkeyscreenmodel.h"
hgs
parents:
diff changeset
    20
#include "cpkeyscreenconstants.h"
hgs
parents:
diff changeset
    21
#include <hbdataform.h>
hgs
parents:
diff changeset
    22
#include <QStringList>
hgs
parents:
diff changeset
    23
#include <QDebug>
hgs
parents:
diff changeset
    24
#include <QtCore/qobject.h>
hgs
parents:
diff changeset
    25
#include <hbdataformmodel.h>
hgs
parents:
diff changeset
    26
#include <cpsettingformitemdata.h>
hgs
parents:
diff changeset
    27
#include <hbmessagebox.h>
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
CpKeyScreenView::CpKeyScreenView(QGraphicsItem *parent) :
hgs
parents:
diff changeset
    31
    CpBaseSettingView(0,parent),
hgs
parents:
diff changeset
    32
    mScreenRadioButton(0),
hgs
parents:
diff changeset
    33
    mRotateCheckbox(0),
hgs
parents:
diff changeset
    34
	mBrightSliderItem(0),
hgs
parents:
diff changeset
    35
	mCallibItem(0),
hgs
parents:
diff changeset
    36
	mModel(0)
hgs
parents:
diff changeset
    37
{
hgs
parents:
diff changeset
    38
    HbDataForm *form = qobject_cast<HbDataForm*> ( widget() );
hgs
parents:
diff changeset
    39
    if (form) {
hgs
parents:
diff changeset
    40
        form->setHeading(hbTrId("txt_cp_subhead_keys_screen"));
hgs
parents:
diff changeset
    41
        mModel = new CpKeyScreenModel();
hgs
parents:
diff changeset
    42
        HbDataFormModel *model = new HbDataFormModel;
hgs
parents:
diff changeset
    43
hgs
parents:
diff changeset
    44
        if ( mModel->isKeyguardSupported() ) {
hgs
parents:
diff changeset
    45
            makeScreenItem(*model);
hgs
parents:
diff changeset
    46
        }
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
        if ( mModel->isRotateSupported() ) {
hgs
parents:
diff changeset
    49
            makeRotateItem(*model);
hgs
parents:
diff changeset
    50
        }
hgs
parents:
diff changeset
    51
hgs
parents:
diff changeset
    52
        makeBrightnessItem(*model);
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
        if ( mModel->isCallibrationSupported() ) {
hgs
parents:
diff changeset
    55
            makeCallibrationItem(*model);
hgs
parents:
diff changeset
    56
        }
hgs
parents:
diff changeset
    57
hgs
parents:
diff changeset
    58
        form->setModel(model);
hgs
parents:
diff changeset
    59
    }
hgs
parents:
diff changeset
    60
}
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
void CpKeyScreenView::makeScreenItem(HbDataFormModel& model)
hgs
parents:
diff changeset
    63
{
hgs
parents:
diff changeset
    64
    mScreenRadioButton = new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem,
hgs
parents:
diff changeset
    65
            hbTrId("txt_cp_setlabel_keys_screen_locked_after"));
hgs
parents:
diff changeset
    66
    qobject_cast<HbDataForm*> ( widget() )->addConnection(mScreenRadioButton,SIGNAL(itemSelected(int)),this,SLOT(screenValueChanged(int)));
hgs
parents:
diff changeset
    67
    model.appendDataFormItem(mScreenRadioButton, model.invisibleRootItem());
hgs
parents:
diff changeset
    68
hgs
parents:
diff changeset
    69
    // Valid range is:
hgs
parents:
diff changeset
    70
    // 15 secs, 30 secs, 45 secs, 1 min, 2 mins
hgs
parents:
diff changeset
    71
    QStringList sList;
hgs
parents:
diff changeset
    72
    sList<< hbTrId("txt_cp_setlabel_keys_screen_val_15_seconds")<< hbTrId("txt_cp_setlabel_keys_screen_val_30_seconds")
hgs
parents:
diff changeset
    73
         << hbTrId("txt_cp_setlabel_keys_screen_val_45_seconds")<< hbTrId("txt_cp_setlabel_keys_screen_val_1_minute")
hgs
parents:
diff changeset
    74
         << hbTrId("txt_cp_setlabel_keys_screen_val_2_minutes");
hgs
parents:
diff changeset
    75
    int period = mModel->keyguard();
hgs
parents:
diff changeset
    76
    int selectedIndex = period/KCpKeyscreenTimeCoeff - 1;
hgs
parents:
diff changeset
    77
    if ( KCpKeyscreenLock120s == period ){ // 2 minutes
hgs
parents:
diff changeset
    78
        selectedIndex = EKeyScreenLockItem5;
hgs
parents:
diff changeset
    79
    }
hgs
parents:
diff changeset
    80
    if ( (KCpKeyscreenLock15s != period) && (KCpKeyscreenLock30s != period) && 
hgs
parents:
diff changeset
    81
            (KCpKeyscreenLock45s != period) && (KCpKeyscreenLock60s != period) && 
hgs
parents:
diff changeset
    82
            (KCpKeyscreenLock120s != period) ){
hgs
parents:
diff changeset
    83
        mModel->setKeyguard(KCpKeyscreenLockDefault30s);  // Set keyguard and backlight period to default
hgs
parents:
diff changeset
    84
        selectedIndex = EKeyScreenLockItem2;
hgs
parents:
diff changeset
    85
    }
hgs
parents:
diff changeset
    86
    mScreenRadioButton->setContentWidgetData( QString("items"), sList );
hgs
parents:
diff changeset
    87
    mScreenRadioButton->setContentWidgetData( QString("selected"), selectedIndex);
hgs
parents:
diff changeset
    88
}
hgs
parents:
diff changeset
    89
hgs
parents:
diff changeset
    90
void CpKeyScreenView::makeRotateItem(HbDataFormModel& model)
hgs
parents:
diff changeset
    91
{
hgs
parents:
diff changeset
    92
    mRotateCheckbox = new CpSettingFormItemData(HbDataFormModelItem::CheckBoxItem, QString());
hgs
parents:
diff changeset
    93
    qobject_cast<HbDataForm*> ( widget() )->addConnection(mRotateCheckbox,SIGNAL(stateChanged(int)),this,SLOT(rotateValueChanged(int)));
hgs
parents:
diff changeset
    94
    model.appendDataFormItem(mRotateCheckbox, model.invisibleRootItem());
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
    mRotateCheckbox->setContentWidgetData( QString("text"), QVariant(hbTrId("txt_cp_list_autorotate_display")) );
hgs
parents:
diff changeset
    97
    mRotateCheckbox->setData(HbDataFormModelItem::DescriptionRole, QString( hbTrId("txt_cp_info_rotate_the_display_content_automatical") ));
hgs
parents:
diff changeset
    98
    Qt::CheckState state;
hgs
parents:
diff changeset
    99
    if ( mModel->rotate() ){
hgs
parents:
diff changeset
   100
        state = Qt::Checked;
hgs
parents:
diff changeset
   101
    } else {
hgs
parents:
diff changeset
   102
        state = Qt::Unchecked;
hgs
parents:
diff changeset
   103
    }
hgs
parents:
diff changeset
   104
    mRotateCheckbox->setContentWidgetData( QString("checkState"), state );
hgs
parents:
diff changeset
   105
}
hgs
parents:
diff changeset
   106
hgs
parents:
diff changeset
   107
void CpKeyScreenView::makeBrightnessItem(HbDataFormModel& model)
hgs
parents:
diff changeset
   108
{
hgs
parents:
diff changeset
   109
    mBrightSliderItem = new CpSettingFormItemData(HbDataFormModelItem::SliderItem, hbTrId("txt_cp_setlabel_brightness"));
hgs
parents:
diff changeset
   110
    qobject_cast<HbDataForm*> ( widget() )->addConnection(mBrightSliderItem,SIGNAL(valueChanged(int)),this,SLOT(brightValueChanged(int)));
hgs
parents:
diff changeset
   111
    model.appendDataFormItem(mBrightSliderItem, model.invisibleRootItem());
hgs
parents:
diff changeset
   112
hgs
parents:
diff changeset
   113
    mBrightSliderItem->setContentWidgetData( QString("value"), mModel->brightness() );
hgs
parents:
diff changeset
   114
    mBrightSliderItem->setContentWidgetData( QString("minimum"), 1 );
hgs
parents:
diff changeset
   115
    mBrightSliderItem->setContentWidgetData( QString("maximum"), 5 );
hgs
parents:
diff changeset
   116
}
hgs
parents:
diff changeset
   117
hgs
parents:
diff changeset
   118
void CpKeyScreenView::makeCallibrationItem(HbDataFormModel& model)
hgs
parents:
diff changeset
   119
{
hgs
parents:
diff changeset
   120
    mCallibItem = new CpSettingFormItemData(HbDataFormModelItem::ToggleValueItem,
hgs
parents:
diff changeset
   121
                        QString());
hgs
parents:
diff changeset
   122
    qobject_cast<HbDataForm*> ( widget() )->addConnection(mCallibItem,SIGNAL(pressed()),this,SLOT(launchCallib()));
hgs
parents:
diff changeset
   123
    model.appendDataFormItem(mCallibItem, model.invisibleRootItem());
hgs
parents:
diff changeset
   124
    mCallibItem->setContentWidgetData( QString("text"), hbTrId("txt_cp_button_touch_screen_calibration"));
hgs
parents:
diff changeset
   125
}
hgs
parents:
diff changeset
   126
hgs
parents:
diff changeset
   127
CpKeyScreenView::~CpKeyScreenView()
hgs
parents:
diff changeset
   128
{
hgs
parents:
diff changeset
   129
    delete mModel;
hgs
parents:
diff changeset
   130
	mModel = 0;
hgs
parents:
diff changeset
   131
}
hgs
parents:
diff changeset
   132
hgs
parents:
diff changeset
   133
void CpKeyScreenView::screenValueChanged(int index)
hgs
parents:
diff changeset
   134
{
hgs
parents:
diff changeset
   135
    int period = (index + 1) * KCpKeyscreenTimeCoeff;
hgs
parents:
diff changeset
   136
    if (EKeyScreenLockItem5 == index){
hgs
parents:
diff changeset
   137
        period = KCpKeyscreenLock120s;
hgs
parents:
diff changeset
   138
    }
hgs
parents:
diff changeset
   139
    mModel->setKeyguard(period);
hgs
parents:
diff changeset
   140
}
hgs
parents:
diff changeset
   141
hgs
parents:
diff changeset
   142
void CpKeyScreenView::rotateValueChanged(int value)
hgs
parents:
diff changeset
   143
{
hgs
parents:
diff changeset
   144
    mModel->setRotate( value );
hgs
parents:
diff changeset
   145
}
hgs
parents:
diff changeset
   146
hgs
parents:
diff changeset
   147
void CpKeyScreenView::brightValueChanged(int value)
hgs
parents:
diff changeset
   148
{
hgs
parents:
diff changeset
   149
	mModel->setBrightness(value);
hgs
parents:
diff changeset
   150
}
hgs
parents:
diff changeset
   151
hgs
parents:
diff changeset
   152
void CpKeyScreenView::launchCallib()
hgs
parents:
diff changeset
   153
{
hgs
parents:
diff changeset
   154
}
hgs
parents:
diff changeset
   155
hgs
parents:
diff changeset
   156