diff -r 48060abbbeaf -r b3cee849fa46 screengrabber/src/settingsview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/screengrabber/src/settingsview.cpp Tue Aug 31 15:15:20 2010 +0300 @@ -0,0 +1,278 @@ +/* +* 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: +* +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "settingsview.h" +#include "enginewrapper.h" +#include "sgengine.h" +#include "hbslider.h" +#include "notifications.h" + + + +// --------------------------------------------------------------------------- + +SettingsView::SettingsView(HbView &mainView, HbMainWindow &mainWindow, EngineWrapper &engineWrapper): + mEngineWrapper(engineWrapper), + mMainWindow(mainWindow), + mMainView(mainView) +{ + // Set title and add this view to main window + setTitle("Settings"); + + HbAction *actionSaveSettings = menu()->addAction(QString("Save & close")); + HbAction *actionCancel = menu()->addAction("Cancel & close"); + + toolBar()->addAction(actionSaveSettings); + toolBar()->addAction(actionCancel); + + + //create setting form + mSettingForm = new HbDataForm(); + + //create a model class + mModel = new HbDataFormModel(this); + + // DataFormItem for mode selection + mModeItem = mModel->appendDataFormItem( + HbDataFormModelItem::RadioButtonListItem, QString("Capture mode"), 0); + mModeItem->setContentWidgetData(QString("items"), CAPTUREMODES); + + // Create setting model + createSingleCaptureComponents(mModel, 0); + createSequentialCaptureComponents(mModel, 0); + createVideoCaptureComponents(mModel, 0); + + // Set created model model to form + mSettingForm->setModel(mModel); + setWidget(mSettingForm);//takes ownership + + // Get view item of mode selection item + HbDataFormViewItem *viewItemVideoPage = static_cast(mSettingForm->itemByIndex(mModel->indexFromItem(mModeItem))); + + loadSettings(); + + // Connect signals from item modifications and close with this form's slots + connect(actionSaveSettings, SIGNAL(triggered()), this, SLOT(saveAndClose())); + connect(actionCancel, SIGNAL(triggered()), this, SLOT(close())); + + HbAction *mDefaultNavigationAction = new HbAction(Hb::QuitNaviAction, this); + connect(mDefaultNavigationAction,SIGNAL(triggered()), this, SLOT(saveAndClose())); + setNavigationAction(mDefaultNavigationAction); + + + +} + + +// --------------------------------------------------------------------------- + +SettingsView::~SettingsView() +{ + +} + +// --------------------------------------------------------------------------- + +void SettingsView::loadSettings() +{ + + // get settings from engine; + mSettings = mEngineWrapper.getGrabSettings(); + + //Capture mode + mModeItem->setContentWidgetData("selected", mSettings.mCaptureMode); + + // Still image + mImageHotKeyItem->setContentWidgetData("selected", mSettings.mSingleCaptureHotkey); + mImageFormatItem->setContentWidgetData("selected", mSettings.mSingleCaptureImageFormat); + mImageMemoryInUseItem->setContentWidgetData("selected", mSettings.mSingleCaptureMemoryInUseMultiDrive); + mImageFileNameItem->setContentWidgetData("text", mSettings.mSingleCaptureFileName); + + // Seguantial image components + mSequantialHotKeyItem->setContentWidgetData("selected", mSettings.mSequantialCaptureHotkey); + mSequantialFormatItem->setContentWidgetData("selected", mSettings.mSequantialCaptureImageFormat); + mSequantialDelayItem->setContentWidgetData("text", mSettings.mSequantialCaptureDelay); + mSequantialMemoryInUseItem->setContentWidgetData("selected", mSettings.mSequantialCaptureMemoryInUseMultiDrive); + mSequantialFileNameItem->setContentWidgetData("text", mSettings.mSequantialCaptureFileName); + + // Video capture components + mVideoHotKeyItem->setContentWidgetData("selected", mSettings.mVideoCaptureHotkey); + mVideoFormatItem->setContentWidgetData("selected", mSettings.mVideoCaptureVideoFormat); + mVideoMemoryInUseItem->setContentWidgetData("selected", mSettings.mVideoCaptureMemoryInUseMultiDrive); + mVideoFileNameItem->setContentWidgetData("text", mSettings.mVideoCaptureFileName); + + +} + +// --------------------------------------------------------------------------- + +void SettingsView::createSingleCaptureComponents(HbDataFormModel *model, HbDataFormModelItem *parent) +{ + + // Create Group for single image components + mGroupImageCapture = model->appendDataFormGroup(QString("Single image settings"), parent); + + // DataFormItem for hotkey selection + mImageHotKeyItem = model->appendDataFormItem( + HbDataFormModelItem::RadioButtonListItem, QString("Capture hotkey"), mGroupImageCapture); + mImageHotKeyItem->setContentWidgetData(QString("items"), KEYS); + + // DataFormItem for image format selection + mImageFormatItem = model->appendDataFormItem( + HbDataFormModelItem::RadioButtonListItem, QString("Image format"), mGroupImageCapture); + mImageFormatItem->setContentWidgetData(QString("items"), IMAGEFORMATS); + + // DataFormItem for memory in use selection + mImageMemoryInUseItem = model->appendDataFormItem( + HbDataFormModelItem::RadioButtonListItem, QString("Memory in use"), mGroupImageCapture); + mImageMemoryInUseItem->setContentWidgetData(QString("items"), MEMORYMODES); + + // DataFormItem for file name + mImageFileNameItem = model->appendDataFormItem( + HbDataFormModelItem::TextItem, QString("File name"), mGroupImageCapture); + mImageFileNameItem->setContentWidgetData(QString("text"), QString("Shot")); + +} + +// --------------------------------------------------------------------------- + +void SettingsView::createSequentialCaptureComponents(HbDataFormModel *model, HbDataFormModelItem *parent) +{ + + + // Create Group for sequential image components + mGroupSeguantialCapture = model->appendDataFormGroup(QString("Sequential image settings"), parent); + + // DataFormItem for hotkey selection + mSequantialHotKeyItem = model->appendDataFormItem( + HbDataFormModelItem::RadioButtonListItem, QString("Capture hotkey"), mGroupSeguantialCapture); + mSequantialHotKeyItem->setContentWidgetData(QString("items"), KEYS); + + // DataFormItem for image format selection + mSequantialFormatItem = model->appendDataFormItem( + HbDataFormModelItem::RadioButtonListItem, QString("Image format"), mGroupSeguantialCapture); + mSequantialFormatItem->setContentWidgetData(QString("items"), IMAGEFORMATS); + + // DataFormItem for delay between images selection + mSequantialDelayItem = model->appendDataFormItem( + HbDataFormModelItem::TextItem, QString("Delay between two images(ms)"), mGroupSeguantialCapture); + mSequantialDelayItem->setContentWidgetData(QString("text"), QString("Shot")); + + // DataFormItem for memory selection + mSequantialMemoryInUseItem = model->appendDataFormItem( + HbDataFormModelItem::RadioButtonListItem, QString("Memory in use"), mGroupSeguantialCapture); + mSequantialMemoryInUseItem->setContentWidgetData(QString("items"), MEMORYMODES); + + // DataFormItem for file name + mSequantialFileNameItem = model->appendDataFormItem( + HbDataFormModelItem::TextItem, QString("File name"), mGroupSeguantialCapture); + mSequantialFileNameItem->setContentWidgetData(QString("text"), QString("Shot")); + +} + +// --------------------------------------------------------------------------- + +void SettingsView::createVideoCaptureComponents(HbDataFormModel *model, HbDataFormModelItem *parent) +{ + + // Create Group for video capturing components + mGroupVideoCapture = model->appendDataFormGroup(QString("Video settings"), parent); + + // DataFormItem for hotkey selection + mVideoHotKeyItem = model->appendDataFormItem( + HbDataFormModelItem::RadioButtonListItem, QString("Start/Stop hotkey"), mGroupVideoCapture); + mVideoHotKeyItem->setContentWidgetData(QString("items"), KEYS); + + // DataFormItem for video format selection + mVideoFormatItem = model->appendDataFormItem( + HbDataFormModelItem::RadioButtonListItem, QString("Video format"), mGroupVideoCapture); + mVideoFormatItem->setContentWidgetData(QString("items"), VIDEOFORMATS); + + // DataFormItem for memory selection + mVideoMemoryInUseItem = model->appendDataFormItem( + HbDataFormModelItem::RadioButtonListItem, QString("Memory in use"), mGroupVideoCapture); + mVideoMemoryInUseItem->setContentWidgetData(QString("items"), MEMORYMODES); + + // DataFormItem for file name + mVideoFileNameItem = model->appendDataFormItem( + HbDataFormModelItem::TextItem, QString("File name"), mGroupVideoCapture); + mVideoFileNameItem->setContentWidgetData(QString("text"), QString("Video")); + +} + +// --------------------------------------------------------------------------- + +void SettingsView::saveAndClose() +{ + + readFormItems(); + if (!mEngineWrapper.saveSettings(mSettings)) { + Notifications::error("Unable to save settings"); + } + + mEngineWrapper.EnableRcpOfFoc(EFalse); + mMainWindow.setCurrentView(&mMainView); + +} + +// --------------------------------------------------------------------------- + +void SettingsView::readFormItems() +{ + + //TODO this does not work correctly with WK38 ( Text box items ) + + mSettings.mCaptureMode = mModeItem->contentWidgetData("selected").toInt(); + + mSettings.mSingleCaptureImageFormat = mImageFormatItem->contentWidgetData("selected").toInt(); + mSettings.mSingleCaptureHotkey = mImageHotKeyItem->contentWidgetData("selected").toInt(); + mSettings.mSingleCaptureMemoryInUseMultiDrive = mImageMemoryInUseItem->contentWidgetData("selected").toInt(); + mSettings.mSingleCaptureFileName = mImageFileNameItem->contentWidgetData("text").toString(); + + mSettings.mSequantialCaptureImageFormat = mSequantialFormatItem->contentWidgetData("selected").toInt(); + mSettings.mSequantialCaptureHotkey = mSequantialHotKeyItem ->contentWidgetData("selected").toInt(); + mSettings.mSequantialCaptureMemoryInUseMultiDrive = mSequantialMemoryInUseItem ->contentWidgetData("selected").toInt(); + mSettings.mSequantialCaptureFileName = mSequantialFileNameItem->contentWidgetData("text").toString(); + mSettings.mSequantialCaptureDelay = mSequantialDelayItem->contentWidgetData("text").toInt(); + + + mSettings.mVideoCaptureVideoFormat = mVideoFormatItem->contentWidgetData("selected").toInt(); + mSettings.mVideoCaptureHotkey = mVideoHotKeyItem ->contentWidgetData("selected").toInt(); + mSettings.mVideoCaptureMemoryInUseMultiDrive = mVideoMemoryInUseItem ->contentWidgetData("selected").toInt(); + mSettings.mVideoCaptureFileName = mVideoFileNameItem ->contentWidgetData("text").toString(); + + +} + +// --------------------------------------------------------------------------- + +void SettingsView::close() +{ + mEngineWrapper.EnableRcpOfFoc(EFalse); + mMainWindow.setCurrentView(&mMainView); +}