filemanager/src/filemanager/src/backuprestore/fmbackupconfigloader.cpp
branchRCL_3
changeset 20 491b3ed49290
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/src/filemanager/src/backuprestore/fmbackupconfigloader.cpp	Tue Aug 31 15:06:05 2010 +0300
@@ -0,0 +1,261 @@
+/*
+ * 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 source file of the back up config loader of file manager
+ */
+
+#include "fmbackupconfigloader.h"
+#include "fmbkupengine.h"
+#include "fmbkupcommon.h"
+#include "fmutils.h"
+
+#include <QFile>
+#include <QByteArray>
+#include <QCoreApplication>
+
+FmBackupConfigLoader::FmBackupConfigLoader(void)
+{
+    
+}
+
+FmBackupConfigLoader::~FmBackupConfigLoader(void)
+{
+    /*
+	if( mProgressDialog )
+		delete mProgressDialog;
+		*/
+}
+
+void FmBackupConfigLoader::loadData()
+{
+    if( mDrivesAndOperationList.count() != 0 || mBackupCategoryList.count() != 0 ) {
+        return;
+    }
+
+    QString path = QCoreApplication::applicationDirPath ();
+    path = FmUtils::getBurConfigPath( path );
+    QFile file( path );
+    if( !file.exists() ) {
+        Q_ASSERT( false );
+        return;
+    }
+    if( !file.open( QIODevice::ReadOnly ) ) {
+        Q_ASSERT( false );
+        return;
+    }
+    QByteArray data = file.readAll();
+    xml.clear();	
+    xml.addData(data);
+    file.close();
+    parseXml();
+
+//    mBackupSettings->load();
+}
+
+QList<FmBkupDrivesAndOperation* > FmBackupConfigLoader::driversAndOperationList()
+{
+    loadData();
+    return mDrivesAndOperationList; 
+}
+QList<FmBkupBackupCategory*> FmBackupConfigLoader::backupCategoryList()
+{
+    loadData();
+    return mBackupCategoryList;
+}
+    
+void FmBackupConfigLoader::parseXml()
+{
+    while(!xml.atEnd()){
+        xml.readNext();
+        if( xml.isStartElement() ){ 
+            currentTag = xml.name().toString();
+            if( xml.name() == "drivesAndOperation" ){
+                parseDrivesAndOperation();
+            }
+            else if( xml.name() == "backupCategory" ){
+                parseBackupCategory();
+            }
+        } 
+    }
+    if (xml.error() && xml.error() != QXmlStreamReader::PrematureEndOfDocumentError) {
+        qDebug("XML ERROR: %d :%s"), xml.lineNumber() ,xml.errorString().toAscii().data();
+    }
+}
+
+
+void FmBackupConfigLoader::parseDrivesAndOperation()
+{
+    FmBkupDrivesAndOperation* driversAndOperation = 
+        new FmBkupDrivesAndOperation;
+
+    while( !( xml.isEndElement() && xml.name() == "drivesAndOperation" ) )
+    {
+        xml.readNext();
+        currentTag = xml.name().toString();
+        if( xml.name() == "drive" )
+        {
+            driveString = xml.readElementText();
+        }
+        else if( xml.name() == "type" )
+        {
+            typeString = xml.readElementText();
+        }
+    }
+
+    bool ok = false;
+    bool everyParamOk = true;
+
+    unsigned int driveInt = 
+        ConfigStringConverter::drivesAndOperations_DriveToUInt( &ok, driveString );
+    if( !ok ){
+        everyParamOk = false;
+    }
+
+    unsigned int typeInt =
+        ConfigStringConverter::drivesAndOperations_TypeToUInt( &ok, typeString );
+    if( !ok ){
+        everyParamOk = false;
+    }
+
+    if( everyParamOk ){
+        driversAndOperation->setDrvCategories( driveInt );
+        driversAndOperation->setOwnerDataType( typeInt );
+        mDrivesAndOperationList.append(driversAndOperation);
+    } 
+    else{
+        delete driversAndOperation;
+    }
+
+    QString debugString;
+    debugString = debugString + "drive = " + driveString;
+    debugString = debugString + "\n type = " + typeString;
+    //QMessageBox::notifyation( NULL, "drive&Type = ", debugString, QMessageBox::Ok, QMessageBox::NoButton );
+
+    driveString.clear();
+    typeString.clear();
+}
+
+void FmBackupConfigLoader::parseBackupCategory()
+{
+    FmBkupBackupCategory* backupCategory = 
+        new FmBkupBackupCategory();
+
+    while( !( xml.isEndElement() && xml.name() == "backupCategory" ) )
+    {
+        xml.readNext();
+        currentTag = xml.name().toString();
+        if( xml.name() == "category" )
+        {
+            categoryString = xml.readElementText();
+        }
+        else if( xml.name() == "archive_name" )
+        {
+            archive_nameString = xml.readElementText();
+        }
+        else if( xml.name() == "special_flags" )
+        {
+            special_flagsString = xml.readElementText();
+        }
+        else if( xml.name() == "exclude_special_flags" )
+        {
+           exclude_special_flagsString = xml.readElementText();
+        }
+        else if( xml.name() == "uids" ){
+            QString tempString = xml.readElementText();
+            if( tempString.length()>0 ){
+                /// debug-----------
+                uidsString += '|';
+                uidsString += tempString;
+                /// debug-----------
+
+                bool ok = false;
+                unsigned int value = tempString.toUInt( &ok, 16); 
+                if( ok ){
+                    backupCategory->addUids( value );
+                }
+            }
+        }
+        else if( xml.name() == "exclude_uids" ){
+            QString tempString = xml.readElementText();
+            if( tempString.length()>0 ){
+                /// debug-----------
+                exclude_uidsString += '|';
+                exclude_uidsString += tempString;
+                /// debug-----------
+
+                bool ok = false;
+                unsigned int value = tempString.toUInt( &ok, 16); 
+                if( ok ){
+                    backupCategory->addExclude_uids( value );
+                }
+            }
+        }
+    }
+
+    
+    bool ok = false;
+    bool everyParamOk = true;
+
+    unsigned int categoryInt =
+        ConfigStringConverter::backupCategory_CategoryToUInt( &ok, categoryString );
+    if( !ok ){
+        everyParamOk = false;
+    }
+
+    if( archive_nameString.length() <= 0 ){
+        everyParamOk = false;
+    }
+    
+    unsigned int special_flagsInt =
+        ConfigStringConverter::backupCategory_Special_flagsToUInt( &ok, special_flagsString );
+    if( !ok ){
+        everyParamOk = false;
+    }
+
+    unsigned int exclude_special_flagsInt =
+        ConfigStringConverter::backupCategory_Special_flagsToUInt( &ok, exclude_special_flagsString );
+    if( !ok ){
+        everyParamOk = false;
+    }
+
+    if( everyParamOk ){
+        backupCategory->setCategory( categoryInt );
+        backupCategory->setArchive_name( archive_nameString );
+        backupCategory->setSpecial_flags( special_flagsInt );
+        backupCategory->setExclude_special_flags( exclude_special_flagsInt );
+        mBackupCategoryList.append( backupCategory );
+    } 
+    else{
+        delete backupCategory;
+    }
+
+    QString debugString;
+    debugString = debugString + "category = " + categoryString;
+    debugString = debugString + "\n archive_name = " + archive_nameString;
+    debugString = debugString + "\n special_flags = " + special_flagsString;
+    debugString = debugString + "\n exclude_special_flags = " + special_flagsString;
+    debugString = debugString + "\n exclude_special_flags = " + exclude_special_flagsString;
+    debugString = debugString + "\n uids = " + uidsString;
+    debugString = debugString + "\n exclude_uids = " + exclude_uidsString;
+    //QMessageBox::notifyation( NULL, "category = ", debugString, QMessageBox::Ok, QMessageBox::NoButton );
+
+    categoryString.clear();
+    archive_nameString.clear();
+    special_flagsString.clear();
+    exclude_special_flagsString.clear();
+    uidsString.clear();
+    exclude_uidsString.clear();
+}
+