/******************************************************************************** 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 <hbmainwindow.h>#include <hbaction.h>#include <hbtoolbar.h>#include <hbdataform.h>#include <hbdataformmodel.h>#include <hbdataformmodelitem.h>#include <QGraphicsLinearLayout>#include <hbthemeutils_p.h>#include <hbcombobox.h>#include <hbmessagebox.h>#include "settingsview.h"/** * Constructor */SettingsView::SettingsView(const QStringList &themes, HbMainWindow *mainWindow, HbView* parent): HbView(parent), mThemes(themes){ mMainWindow = mainWindow; mParentView = parent; for(int i=0;i<mThemes.count();i++) { mThemeUiNames += QDir(mThemes[i]).dirName(); } QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical); this->setTitle(tr("Settings")); mDataForm = new HbDataForm(this); HbDataFormModel *model = new HbDataFormModel(this); mBaseThemeSetting = model->appendDataFormItem(HbDataFormModelItem::RadioButtonListItem, tr("Base Theme")); mDefaultThemeSetting = model->appendDataFormItem(HbDataFormModelItem::RadioButtonListItem, tr("Default Theme")); mPriorityThemeSetting = model->appendDataFormItem(HbDataFormModelItem::TextItem, tr("Priority Theme")); mDataForm->setModel(model); loadSettings(); layout->addItem(mDataForm); HbAction *act = new HbAction(tr("Save")); connect(act, SIGNAL(triggered()), this, SLOT(saveSettings())); this->toolBar()->addAction(act); act = new HbAction(tr("Cancel")); connect(act, SIGNAL(triggered()), this, SLOT(cancel())); this->toolBar()->addAction(act); act = new HbAction(Hb::BackNaviAction); connect(act, SIGNAL(triggered()), this, SLOT(cancel())); this->setNavigationAction(act); this->setLayout(layout); mMainWindow->addView(this);}/** * Destructor */SettingsView::~SettingsView(){ delete mDataForm;}void SettingsView::loadSettings(){ mBaseThemeSetting->setContentWidgetData("items",mThemeUiNames); mBaseThemeSetting->setContentWidgetData("selected", mThemes.indexOf(HbThemeUtils::getThemeSetting(HbThemeUtils::BaseThemeSetting))); mDefaultThemeSetting->setContentWidgetData("items",mThemeUiNames); mDefaultThemeSetting->setContentWidgetData("selected", mThemes.indexOf(HbThemeUtils::getThemeSetting(HbThemeUtils::DefaultThemeSetting))); mPriorityThemeSetting->setContentWidgetData("text",HbThemeUtils::getThemeSetting(HbThemeUtils::OperatorNameSetting));}void SettingsView::saveSettings(){ HbThemeUtils::setThemeSetting(HbThemeUtils::BaseThemeSetting, mThemes[mBaseThemeSetting->contentWidgetData("selected").toInt()]); HbThemeUtils::setThemeSetting(HbThemeUtils::DefaultThemeSetting, mThemes[mDefaultThemeSetting->contentWidgetData("selected").toInt()]); HbThemeUtils::setThemeSetting(HbThemeUtils::OperatorNameSetting, mPriorityThemeSetting->contentWidgetData("text").toString()); loadSettings();#ifdef Q_OS_SYMBIAN HbMessageBox::information(tr("Please reboot the device to apply the changes."));#else HbMessageBox::information(tr("Please restart the Hb application to apply the changes."));#endif mMainWindow->setCurrentView(mParentView);}void SettingsView::cancel(){ loadSettings(); mMainWindow->setCurrentView(mParentView);}