utilityapps/screengrabber/src/settingsview.cpp
changeset 55 2d9cac8919d3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/utilityapps/screengrabber/src/settingsview.cpp	Mon Oct 18 16:30:05 2010 +0300
@@ -0,0 +1,275 @@
+/*
+* 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 <hbdataform.h>
+#include <hbdataformmodelitem.h>
+#include <hbdataformmodel.h>
+#include <hbdataformviewitem.h>
+#include <hbaction.h>
+#include <hbmenu.h>
+#include <hbtoolbar.h>
+#include <hbabstractviewitem.h>
+#include <hbaction.h>
+
+
+#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
+    
+    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);
+}