diff -r 923ff622b8b9 -r 4633027730f5 src/hbapps/hbfeatureconfigapp/settingsview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hbapps/hbfeatureconfigapp/settingsview.cpp Wed Aug 18 10:05:37 2010 +0300 @@ -0,0 +1,300 @@ +/**************************************************************************** +** +** Copyright (C) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (developer.feedback@nokia.com) +** +** This file is part of the HbApps module of the UI Extensions for Mobile. +** +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this file. +** Please review the following information to ensure the GNU Lesser General +** Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at developer.feedback@nokia.com. +** +****************************************************************************/ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "settingsview.h" + +#if defined(Q_OS_SYMBIAN) +#include +#include +#include +#endif + +SettingsView::SettingsView(HbDocumentLoader* loader, HbMainWindow *window, HbView *infoView) : + mWindow(window), + mLoader(loader), + mResolutionComboBox(0), + mOrientationComboBox(0), + mLayoutDirectionComboBox(0), + mTouchAreaComboBox(0), + mTextItemComboBox(0), + mIconItemComboBox(0), + mLocalizationComboBox(0), + mTestUtilityComboBox(0), + mFpsCounterComboBox(0), + mInfoView(infoView) +{ + setupMenu(); + setupLayout(); + updateSelections(); + connect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(updateLayout())); + connect(mWindow, SIGNAL(currentViewChanged(HbView*)), this, SLOT(updateSelections())); + setTitle("Settings"); + HbAction *backAction = new HbAction(Hb::BackNaviAction, this); + connect(backAction, SIGNAL(triggered()), SLOT(goBack())); + setNavigationAction(backAction); +} + +void SettingsView::goBack() +{ + mWindow->setCurrentView(mInfoView); +} + +void SettingsView::setupMenu() +{ + HbMenu *menu = new HbMenu(); + HbAction *a; + a = menu->addAction( "Change orientation" ); + connect(a, SIGNAL(triggered()), SLOT(changeOrientation())); + setMenu(menu); +} + + +void SettingsView::setupLayout() +{ + disconnectSignals(); + + HbDeviceProfile currentProfile = HbDeviceProfile::profile(mWindow); + QString section = currentProfile.orientation() == Qt::Horizontal ? "landscape" : "portrait"; + mLoader->load(QString(":/appxml/hbs60deviceconfigapp.docml"), section); + + QGraphicsWidget *settingsWidget = mLoader->findWidget("settingsView"); + if (settingsWidget) { + QGraphicsWidget* oldWidget = takeWidget(); + if (oldWidget) + oldWidget->setVisible(false); + settingsWidget->setVisible(true); + setWidget(settingsWidget); + } + + if( !mResolutionComboBox ) { + mResolutionComboBox = qobject_cast(mLoader->findWidget("resolutionSettingCombo")); + mResolutionComboBox->setModel(new QStringListModel(HbDeviceProfile::profileNames())); + } + + if( !mOrientationComboBox ) { + mOrientationComboBox = qobject_cast(mLoader->findWidget("orientationSettingCombo")); + mOrientationComboBox->setModel(new QStringListModel(QStringList() << "Portrait" << "Landscape")); + } + + if( !mLayoutDirectionComboBox ) { + mLayoutDirectionComboBox = qobject_cast(mLoader->findWidget("directionSettingCombo")); + mLayoutDirectionComboBox->setModel(new QStringListModel(QStringList() << "Left to Right" << "Right to Left")); + } + + if( !mTouchAreaComboBox ) { + mTouchAreaComboBox = qobject_cast(mLoader->findWidget("touchareaSettingCombo")); + mTouchAreaComboBox->setModel(new QStringListModel(QStringList() << tr("Invisible") << tr("Visible"))); + } + + if( !mTextItemComboBox ) { + mTextItemComboBox = qobject_cast(mLoader->findWidget("textitemSettingCombo")); + mTextItemComboBox->setModel(new QStringListModel(QStringList() << tr("Invisible") << tr("Visible"))); + } + + if( !mIconItemComboBox ) { + mIconItemComboBox = qobject_cast(mLoader->findWidget("iconitemSettingCombo")); + mIconItemComboBox->setModel(new QStringListModel(QStringList() << tr("Invisible") << tr("Visible"))); + } + + if (!mFpsCounterComboBox) { + mFpsCounterComboBox = qobject_cast(mLoader->findWidget("fpscounterSettingCombo")); + mFpsCounterComboBox->setModel(new QStringListModel(QStringList() << tr("Invisible") << tr("Visible"))); + } + + if( !mLocalizationComboBox ) { + mLocalizationComboBox = qobject_cast(mLoader->findWidget("localizationSettingCombo")); + mLocalizationComboBox->setModel(new QStringListModel(QStringList() << tr("Disabled") << tr("Enabled") << tr("Automatic"))); + } + + int textMeasurementValue = HbFeatureManager::instance()->featureStatus( HbFeatureManager::TextMeasurement ); + if ( textMeasurementValue > 2 ) { + textMeasurementValue = 1; + } + mLocalizationComboBox->setCurrentIndex( textMeasurementValue ); + + if( !mTestUtilityComboBox ) { + mTestUtilityComboBox = qobject_cast(mLoader->findWidget("testUtilitySettingCombo")); + mTestUtilityComboBox->setModel(new QStringListModel(QStringList() << tr("Disabled") << tr("Enabled"))); + } + mTestUtilityComboBox->setCurrentIndex( HbFeatureManager::instance()->featureStatus( HbFeatureManager::TheTestUtility ) ? 1 : 0 ); + + connectSignals(); +} + +void SettingsView::changeLocMode(int index) +{ + HbFeatureManager::instance()->setFeatureStatus( HbFeatureManager::TextMeasurement, index ); +} + +void SettingsView::changeTestUtilMode(int index) +{ + HbFeatureManager::instance()->setFeatureStatus( HbFeatureManager::TheTestUtility, index ); +} + +void SettingsView::changeResolution(int index) +{ +#if defined(Q_OS_SYMBIAN) + sendEvent(KChangeDeviceProfile, index); +#else + Q_UNUSED(index); +#endif +} + +void SettingsView::changeOrientation(int index) +{ +#if defined(Q_OS_SYMBIAN) + sendEvent(KChangeOrientation, index); +#else + Q_UNUSED(index); +#endif +} + +void SettingsView::changeLayoutDirection(int index) +{ +#if defined(Q_OS_SYMBIAN) + sendEvent(KChangeDirection, index); +#else + Q_UNUSED(index); +#endif +} + +void SettingsView::changeTouchAreaVisibility(int index) +{ +#if defined(Q_OS_SYMBIAN) + sendEvent(KChangeTouchAreaVis, index); +#else + Q_UNUSED(index); +#endif +} + +void SettingsView::changeTextItemVisibility(int index) +{ +#if defined(Q_OS_SYMBIAN) + sendEvent(KChangeTextItemVis, index); +#else + Q_UNUSED(index); +#endif +} + +void SettingsView::changeIconItemVisibility(int index) +{ +#if defined(Q_OS_SYMBIAN) + sendEvent(KChangeIconItemVis, index); +#else + Q_UNUSED(index); +#endif +} + +void SettingsView::changeFpsCounterVisibility(int index) +{ +#if defined(Q_OS_SYMBIAN) + sendEvent(KChangeFpsCounterVis, index); +#else + Q_UNUSED(index); +#endif +} + +void SettingsView::sendEvent(const int eventID, const int data) +{ +#if defined(Q_OS_SYMBIAN) + RWsSession session; + User::LeaveIfError( session.Connect() ); + TWsEvent event; + event.SetType(eventID); + TUint8* dataptr = event.EventData(); + *dataptr = data; + session.SendEventToAllWindowGroups(event); + session.Close(); +#else + Q_UNUSED(eventID); + Q_UNUSED(data); +#endif +} + + +void SettingsView::updateLayout() +{ + setupLayout(); + updateSelections(); +} + +void SettingsView::updateSelections() +{ + disconnectSignals(); + HbDeviceProfile currentProfile = HbDeviceProfile::profile(mWindow); + mIconItemComboBox->setCurrentIndex(0); // TODO: Can't currently get value from private code + mTextItemComboBox->setCurrentIndex(0); // TODO: Can't currently get value from private code + mTouchAreaComboBox->setCurrentIndex(0); // TODO: Can't currently get value from private code + mLayoutDirectionComboBox->setCurrentIndex(HbApplication::layoutDirection() == Qt::LeftToRight ? 0 : 1); + mOrientationComboBox->setCurrentIndex(currentProfile.orientation() == Qt::Vertical ? 0 : 1); + mResolutionComboBox->setCurrentIndex(HbDeviceProfile::profileNames().indexOf(currentProfile.name())); + mFpsCounterComboBox->setCurrentIndex(0); // off by default + connectSignals(); +} + +void SettingsView::connectSignals() +{ + connect(mIconItemComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changeIconItemVisibility(int))); + connect(mTextItemComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changeTextItemVisibility(int))); + connect(mTouchAreaComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changeTouchAreaVisibility(int))); + connect(mLayoutDirectionComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changeLayoutDirection(int))); + connect(mOrientationComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changeOrientation(int))); + connect(mResolutionComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changeResolution(int))); + connect(mFpsCounterComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changeFpsCounterVisibility(int))); + connect(mLocalizationComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changeLocMode(int))); + connect(mTestUtilityComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changeTestUtilMode(int))); +} + +void SettingsView::disconnectSignals() +{ + disconnect(mIconItemComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changeIconItemVisibility(int))); + disconnect(mTextItemComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changeTextItemVisibility(int))); + disconnect(mTouchAreaComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changeTouchAreaVisibility(int))); + disconnect(mLayoutDirectionComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changeLayoutDirection(int))); + disconnect(mOrientationComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changeOrientation(int))); + disconnect(mResolutionComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changeResolution(int))); + disconnect(mFpsCounterComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changeFpsCounterVisibility(int))); + disconnect(mLocalizationComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changeLocMode(int))); + disconnect(mTestUtilityComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changeTestUtilMode(int))); +} + +void SettingsView::changeOrientation() +{ + if (mWindow) + mWindow->setOrientation(mWindow->orientation() == Qt::Vertical ? Qt::Horizontal : Qt::Vertical); +}