filemanager/src/filemanager/src/backuprestore/fmbackupwidget.cpp
branchRCL_3
changeset 38 491b3ed49290
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/src/filemanager/src/backuprestore/fmbackupwidget.cpp	Tue Aug 31 15:06:05 2010 +0300
@@ -0,0 +1,351 @@
+/*
+ * Copyright (c) 2009 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:
+ *     The header file of the back up widget of file manager
+ */
+
+#include "fmbackupwidget.h"
+#include "fmbackupsettings.h"
+#include "fmdlgutils.h"
+#include "fmviewmanager.h"
+#include "fmoperationservice.h"
+#include "fmbkupengine.h"
+#include "fmbackuprestorehandler.h"
+#include "fmutils.h"
+
+
+#include <QGraphicsLinearLayout>
+#include <QDir>
+
+#include <hbdataform.h>
+#include <hbdataformmodel.h>
+#include <hbdataformmodelitem.h>
+#include <hbdataformviewitem.h>
+
+
+FmBackupWidget::FmBackupWidget( QGraphicsItem *parent )
+: HbWidget( parent )
+{
+    init();
+}
+
+FmBackupWidget::~FmBackupWidget()
+{
+    mDataForm->setModel( 0 );
+    delete mModel;
+}
+
+
+void FmBackupWidget::on_list_activated( const QModelIndex &index )
+{    
+    // change item data when receive activated signal
+	HbDataFormModelItem *item = mModel->itemFromIndex(index);
+	if( item == mContentsItem ){
+        emit changeContents();
+    } else if( item == mTargetItem ){
+        emit changeTargetDrive();
+    } else if( item == mSchedulingItem ){
+        emit changeScheduling();
+    } else if( item == mWeekdayItem ){
+        emit changeWeekday();
+    } else if( item == mTimeItem ){
+        emit changeTime();
+    }
+}
+
+void FmBackupWidget::init()
+{
+    QGraphicsLinearLayout *vLayout = new QGraphicsLinearLayout( this );
+    vLayout->setOrientation( Qt::Vertical );
+
+
+    mModel = new HbDataFormModel();
+    initModel();
+
+    mDataForm = new HbDataForm( this );
+    mDataForm->setModel( mModel );
+    vLayout->addItem( mDataForm );
+        
+    connect( mDataForm, SIGNAL( activated( const QModelIndex & ) ),
+             this, SLOT( on_list_activated( const QModelIndex & ) ) );
+
+    connect( this, SIGNAL( doModelRefresh() ),
+             this, SLOT( refreshModel() ), Qt::QueuedConnection );
+    
+    connect( this, SIGNAL(changeContents()), this, SLOT(on_changeContents()), Qt::QueuedConnection);
+    connect( this, SIGNAL(changeScheduling()), this, SLOT(on_changeScheduling()), Qt::QueuedConnection);
+    connect( this, SIGNAL(changeWeekday()), this, SLOT(on_changeWeekday()), Qt::QueuedConnection);
+    connect( this, SIGNAL(changeTime()), this, SLOT(on_changeTime()), Qt::QueuedConnection);
+    connect( this, SIGNAL(changeTargetDrive()), this, SLOT(on_changeTargetDrive()), Qt::QueuedConnection);
+    
+    //mBackupSettings = new FmBackupSettings();
+    mBackupSettings = FmViewManager::viewManager()->operationService()->backupRestoreHandler()->bkupEngine()->BackupSettingsL();
+    mBackupSettings->load();
+
+    emit doModelRefresh();
+
+}
+
+void FmBackupWidget::expandAllGroup()
+{
+    FM_LOG( QString( "function expandAllGroup start" ) );
+    
+    mDataForm->setModel( 0 );
+    mDataForm->setModel( mModel );
+
+    HbDataFormViewItem *itemScheduling = 
+        (HbDataFormViewItem *)(mDataForm->itemByIndex(mModel->indexFromItem(mSchedulingGroup)));
+    if( itemScheduling ){
+        FM_LOG( QString( "expand itemScheduling start" ) );
+        itemScheduling->setExpanded( true );
+        FM_LOG( QString( "expand itemScheduling end" ) );
+    }
+
+    HbDataFormViewItem *itemGroup = 
+        (HbDataFormViewItem *)(mDataForm->itemByIndex(mModel->indexFromItem(mContentsGroup)));
+    if( itemGroup ){
+        FM_LOG( QString( "expand itemGroup start" ) );
+        itemGroup->setExpanded( true );
+        FM_LOG( QString( "expand itemGroup end" ) );
+    }
+    FM_LOG( QString( "function expandAllGroup end" ) );
+}
+
+void FmBackupWidget::initModel()
+{
+    mContentsGroup = mModel->appendDataFormGroup(
+        QString( hbTrId( "Contents" ) ), mModel->invisibleRootItem());
+
+    mContentsItem = mModel->appendDataFormItem(
+        HbDataFormModelItem::TextItem, QString( "" ), mContentsGroup );
+    mContentsItem->setContentWidgetData( QString("readOnly"), QString("true") );
+    mContentsItem->setContentWidgetData( QString("objectName"), QString("backupContentItem") );
+
+    mTargetItem = mModel->appendDataFormItem(
+        HbDataFormModelItem::TextItem, QString( "" ), mContentsGroup );
+    mTargetItem->setContentWidgetData( QString("readOnly"), QString("true") );
+    mTargetItem->setContentWidgetData( QString("objectName"), QString("backupTargetItem") );
+
+    mSchedulingGroup = mModel->appendDataFormGroup(
+        QString( hbTrId( "Scheduling" ) ), mModel->invisibleRootItem());
+
+    mSchedulingItem = mModel->appendDataFormItem(
+        HbDataFormModelItem::TextItem, QString( "" ), mSchedulingGroup );
+    mSchedulingItem->setContentWidgetData( QString("readOnly"), QString("true") );
+    mSchedulingItem->setContentWidgetData( QString("objectName"), QString("backupSchedulingItem") );
+
+    mWeekdayItem = mModel->appendDataFormItem(
+        HbDataFormModelItem::TextItem, QString( "" ), mSchedulingGroup );
+    mWeekdayItem->setContentWidgetData( QString("readOnly"), QString("true") );
+    mWeekdayItem->setContentWidgetData( QString("objectName"), QString("backupWeekdayItem") );
+
+    mTimeItem = mModel->appendDataFormItem(
+        HbDataFormModelItem::TextItem, QString( "" ), mSchedulingGroup );
+    mTimeItem->setContentWidgetData( QString("readOnly"), QString("true") );
+    mTimeItem->setContentWidgetData( QString("objectName"), QString("backupTimeItem") );
+    
+    mLastBackupDateItem = mModel->appendDataFormItem(
+        HbDataFormModelItem::TextItem, QString( ( "" )), mModel->invisibleRootItem() );
+    mLastBackupDateItem->setContentWidgetData( QString("readOnly"), QString("true") );   
+    mLastBackupDateItem->setContentWidgetData( QString("objectName"), QString("backupLastBackupDateItem") );
+}
+
+
+
+void FmBackupWidget::refreshModel()
+{
+    mDataForm->setModel( 0 );
+
+    mBackupSettings->load();
+    
+    int index = 0;
+
+    index = mSchedulingGroup->indexOf(  mWeekdayItem );
+    if( index >=0 ){
+        mSchedulingGroup->removeChild( index );
+        mWeekdayItem = 0;
+    }
+
+    index = mSchedulingGroup->indexOf(  mTimeItem );
+    if( index >=0 ){
+        mSchedulingGroup->removeChild( index );
+        mTimeItem = 0;
+    }
+    
+    index = mContentsGroup->indexOf(  mTargetItem );
+    if( index >=0 ){
+        mContentsGroup->removeChild( index );
+        mTargetItem = 0;
+    }
+   
+    QList< FmBackupEntry* > backupEntryList = mBackupSettings->backupEntryList();
+
+    QList< FmBackupEntry* >::iterator it;
+
+    for (  it = backupEntryList.begin(); it != backupEntryList.end(); ++it ){
+    
+        int type = ( *it )->type();
+
+        QString title = ( *it )->title();
+        QString tips  = ( *it )->tips();
+      
+        switch ( type )
+        {
+        case FmBackupEntry::EContents:
+            {
+            mContentsItem->setLabel(title);
+            mContentsItem->setContentWidgetData( QString("text"), tips );
+            break;
+            }
+        case FmBackupEntry::ETarget:
+            {
+            mTargetItem = mModel->appendDataFormItem(
+                HbDataFormModelItem::TextItem, QString( "" ), mContentsGroup );
+            mTargetItem->setContentWidgetData( QString("readOnly"), QString("true") );        
+            mTargetItem->setLabel(title);
+            mTargetItem->setContentWidgetData( QString("text"), tips );
+            break;
+            }
+        case FmBackupEntry::EScheduling:
+            {
+            mSchedulingItem->setLabel(title);
+            mSchedulingItem->setContentWidgetData( QString("text"), tips );
+            break;
+            }
+        case FmBackupEntry::EWeekday:
+            {
+            mWeekdayItem = mModel->appendDataFormItem(
+                HbDataFormModelItem::TextItem, QString( "" ), mSchedulingGroup );
+            mWeekdayItem->setContentWidgetData( QString("readOnly"), QString("true") );
+            mWeekdayItem->setLabel(title);
+            mWeekdayItem->setContentWidgetData( QString("text"), tips );
+            break;
+            }
+        case FmBackupEntry::ETime:
+            {
+            mTimeItem = mModel->appendDataFormItem(
+                HbDataFormModelItem::TextItem, QString( "" ), mSchedulingGroup );
+            mTimeItem->setContentWidgetData( QString("readOnly"), QString("true") );
+            mTimeItem->setLabel(title);
+            mTimeItem->setContentWidgetData( QString("text"), tips );
+            break;
+            }
+        case FmBackupEntry::EBackupdate:
+            {            
+            mLastBackupDateItem->setContentWidgetData( QString("text"), tips );
+            break;
+            }
+        }
+    }
+
+    mDataForm->setModel( mModel );
+
+    expandAllGroup();
+}
+
+void FmBackupWidget::on_changeContents()
+{
+    
+    QString title = mContentsItem->label();  
+    QStringList queryStringList;
+    quint32 contentMask = FmBackupSettings::EFileManagerBackupContentAll;
+    while ( contentMask <= FmBackupSettings::EFileManagerBackupContentLast)
+    {
+        queryStringList.push_back( mBackupSettings->contentToString( contentMask ) );
+        contentMask = contentMask << 1;
+    }
+    quint32 select = mBackupSettings->content();
+    if( FmDlgUtils::showMultiSettingQuery( title, queryStringList, select, 0 ) )
+    {
+        mBackupSettings->setContent( select );
+        emit doModelRefresh();
+    }
+    
+} 
+
+
+void FmBackupWidget::on_changeScheduling()
+{
+    QString title = mSchedulingItem->label();  
+    QStringList queryStringList;
+
+    FmBackupSettings::TFileManagerBackupSchedule schedule = FmBackupSettings::EFileManagerBackupScheduleNever;
+    while ( schedule <= FmBackupSettings::EFileManagerBackupScheduleWeekly )
+    {
+        queryStringList.push_back( mBackupSettings->schedulingToString( schedule ) );
+        schedule = FmBackupSettings::TFileManagerBackupSchedule(((int)schedule)+1);
+    }
+    
+    // adjust index offset against monday.
+    int selectIndex = mBackupSettings->scheduling() - FmBackupSettings::EFileManagerBackupScheduleNever;
+    if( FmDlgUtils::showSingleSettingQuery( title, queryStringList, selectIndex ) )
+    {
+        selectIndex += FmBackupSettings::EFileManagerBackupScheduleNever;
+        mBackupSettings->setScheduling( ( FmBackupSettings::TFileManagerBackupSchedule )selectIndex );
+        emit doModelRefresh();
+    }
+}
+
+void FmBackupWidget::on_changeWeekday()
+{
+    QString title = mWeekdayItem->label();
+    QStringList queryStringList;
+
+    FmBackupSettings::TFileManagerBackupWeekday weekday = FmBackupSettings::EFileManagerBackupWeekdayMonday;
+    while ( weekday <= FmBackupSettings::EFileManagerBackupWeekdaySunday )
+    {
+        queryStringList.push_back( mBackupSettings->weekdayToString( weekday ) );
+        weekday = FmBackupSettings::TFileManagerBackupWeekday(((int)weekday)+1);
+    }
+    
+    // adjust index offset against monday.
+    int selectIndex = mBackupSettings->weekday() - FmBackupSettings::EFileManagerBackupWeekdayMonday;
+    if( FmDlgUtils::showSingleSettingQuery( title, queryStringList, selectIndex ) )
+    {
+        selectIndex += FmBackupSettings::EFileManagerBackupWeekdayMonday;
+        mBackupSettings->setWeekday( (FmBackupSettings::TFileManagerBackupWeekday)selectIndex );
+        emit doModelRefresh();
+    }
+}
+
+void FmBackupWidget::on_changeTime()
+{
+    QString title = mTimeItem->label();  
+    QTime queryTime = mBackupSettings->time();
+
+    if( FmDlgUtils::showTimeSettingQuery( title, queryTime ) )
+    {
+        mBackupSettings->setTime( queryTime );
+        emit doModelRefresh();
+    }
+}
+
+
+void FmBackupWidget::on_changeTargetDrive()
+{
+    QString title = mTargetItem->label();  
+    QString drive = FmDlgUtils::showBackupDriveQuery( title );
+    if( ( !drive.isEmpty() ) && 
+            ( mBackupSettings->targetDrive().compare( drive, Qt::CaseInsensitive ) != 0 ) ) {
+        mBackupSettings->setTargetDrive( drive );
+        emit doModelRefresh();
+    }
+}
+
+void FmBackupWidget::updateBackupDate()
+{
+    mBackupSettings->updateBackupDate();
+    emit doModelRefresh();
+}