remotemgmt_plat/syncml_ds_error_reporting_api/tsrc/QtSyncStatusSpy/qtsyncstatusmodel.cpp
branchRCL_3
changeset 25 b183ec05bd8c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/remotemgmt_plat/syncml_ds_error_reporting_api/tsrc/QtSyncStatusSpy/qtsyncstatusmodel.cpp	Tue Aug 31 16:04:06 2010 +0300
@@ -0,0 +1,270 @@
+/*
+ * 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:
+ *
+ */
+
+#include <QModelIndex>
+#include <QDateTime>
+#include <QDir>
+#include <hbdataform.h>
+#include <hbdataformmodel.h>
+#include <hbmainwindow.h>
+//#include <hbstyleoptioncommonnote.h> //<hbcommonnote.h> this new header compensate oldone ??
+#include <HbDataFormModelItem.h>
+#include <hbdataformviewitem.h>
+#include <hblineedit.h>
+#include <HbComboBox.h>
+#include <HbPushButton.h>
+#include <HbAbstractButton.h>
+#include <HbLineEdit.h>
+#include <xqsettingsmanager.h>
+#include <xqsettingskey.h>
+#include <XQServiceUtil.h>
+
+#include <nsmloperatorerrorcrkeys.h>
+#include <DataSyncInternalPSKeys.h>
+#include "qtsyncstatusmodel.h"
+#include "qtsyncstatuslog.h"
+
+QtSyncStatusModel::QtSyncStatusModel(QtSyncStatusLog& log, HbDataForm *form, QObject *parent)
+:QObject(parent),
+ mSettingsForm(form),
+ mSettingsModel(0),
+ mSyncLog(log)
+{
+    connect(mSettingsForm, SIGNAL(activated(const QModelIndex)),
+            this, SLOT(itemDisplayed(const QModelIndex)));
+    
+    mSettingsManager = new XQSettingsManager(this);
+    mNsmlOpDsSyncErrorCode = new XQSettingsKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidOperatorDatasyncErrorKeys.iUid, KNsmlOpDsSyncErrorCode);
+    mSettingsManager->startMonitoring(*mNsmlOpDsSyncErrorCode);
+    mNsmlOpDsSyncProfUid = new XQSettingsKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidOperatorDatasyncErrorKeys.iUid, KNsmlOpDsSyncProfId);
+    mSettingsManager->startMonitoring(*mNsmlOpDsSyncProfUid);
+    mNsmlOpDsSyncType = new XQSettingsKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidOperatorDatasyncErrorKeys.iUid, KNsmlOpDsSyncType);
+    mSettingsManager->startMonitoring(*mNsmlOpDsSyncType);
+    mNsmlOpDsSyncInitiation = new XQSettingsKey(XQSettingsKey::TargetCentralRepository,
+            KCRUidOperatorDatasyncErrorKeys.iUid, KNsmlOpDsSyncInitiation);
+    mSettingsManager->startMonitoring(*mNsmlOpDsSyncInitiation);
+    
+    mDataSyncStatusKey = new XQSettingsKey(XQSettingsKey::TargetPublishAndSubscribe,
+            KPSUidDataSynchronizationInternalKeys.iUid, KDataSyncStatus);
+    
+    connect(mSettingsManager, SIGNAL(valueChanged(const XQSettingsKey&, const QVariant&)),
+            this, SLOT(valueChanged(const XQSettingsKey&, const QVariant&)));
+    
+    // Read the initial values from the cenrep
+    QVariant value = mSettingsManager->readItemValue(*mNsmlOpDsSyncErrorCode);
+    mSyncErrorCode = value.toUInt();
+    value = mSettingsManager->readItemValue(*mNsmlOpDsSyncProfUid);
+    mSyncProfileUid = value.toUInt();
+    value = mSettingsManager->readItemValue(*mNsmlOpDsSyncType);
+    mSyncType = value.toUInt();
+    value = mSettingsManager->readItemValue(*mNsmlOpDsSyncInitiation);
+    mSyncInitiation = value.toUInt();
+}
+
+QtSyncStatusModel::~QtSyncStatusModel()
+{
+    delete mSettingsModel;
+    delete mSettingsManager;
+    delete mNsmlOpDsSyncErrorCode;
+    delete mNsmlOpDsSyncProfUid;
+    delete mNsmlOpDsSyncType;
+    delete mNsmlOpDsSyncInitiation;
+    delete mDataSyncStatusKey;
+}
+
+void QtSyncStatusModel::initModel()
+{
+    // Remove the model.
+    if (mSettingsForm->model()) {
+        delete mSettingsForm->model();
+        mSettingsForm->setModel(0);
+        mSettingsModel = 0;
+    }
+        
+    mSettingsModel = new HbDataFormModel();
+        
+    mNsmlOpDsSyncErrorCodeItem = new HbDataFormModelItem(
+            HbDataFormModelItem::TextItem, QString( tr("Sync error code") ), 0);
+    QString errorCode;
+    errorCode.setNum(mSyncErrorCode);
+    mNsmlOpDsSyncErrorCodeItem->setContentWidgetData( "text", errorCode );
+    mNsmlOpDsSyncErrorCodeItem->setContentWidgetData( QString("readOnly"), QString("false") );
+    mSettingsModel->appendDataFormItem(mNsmlOpDsSyncErrorCodeItem);
+    
+    mNsmlOpDsSyncProfUidItem = new HbDataFormModelItem(
+            HbDataFormModelItem::TextItem, QString(tr("Sync profile ID")), 0);
+            //HbDataFormModelItem::TextItem, QString(tr("Sync profile ID")), mSettingsModel->invisibleRootItem());
+    QString profileUId;
+    profileUId.setNum(mSyncProfileUid);
+    mNsmlOpDsSyncProfUidItem->setContentWidgetData( "text", profileUId );
+    mNsmlOpDsSyncProfUidItem->setContentWidgetData( QString("readOnly"), QString("false") );
+    mSettingsModel->appendDataFormItem(mNsmlOpDsSyncProfUidItem);
+    
+    QStringList syncTypes;
+    syncTypes << tr("ESmlTwoWay")
+               << tr("ESmlOneWayFromServer")
+               << tr("ESmlOneWayFromClient")
+               << tr("ESmlSlowSync")
+               << tr("ESmlRefreshFromServer")
+               << tr("ESmlRefreshFromClient");
+    
+    mNsmlOpDsSyncTypeItem = new HbDataFormModelItem();
+    mNsmlOpDsSyncTypeItem->setType(HbDataFormModelItem::ComboBoxItem);
+    mNsmlOpDsSyncTypeItem->setData(HbDataFormModelItem::LabelRole, QString(tr("Sync type")));
+    mNsmlOpDsSyncTypeItem->setContentWidgetData(QString("items"), syncTypes);
+    mNsmlOpDsSyncTypeItem->setContentWidgetData(QString("currentIndex"), mSyncType);
+    mSettingsModel->appendDataFormItem(mNsmlOpDsSyncTypeItem);
+
+    QStringList syncInitiation;
+    syncInitiation << tr("No sync ongoing")
+               << tr("Client initiated")
+               << tr("Server alerted");
+    
+    mNsmlOpDsSyncInitiationItem = new HbDataFormModelItem();
+    mNsmlOpDsSyncInitiationItem->setType(HbDataFormModelItem::ComboBoxItem);
+    mNsmlOpDsSyncInitiationItem->setData(HbDataFormModelItem::LabelRole, QString(tr("Sync initiation")));
+    mNsmlOpDsSyncInitiationItem->setContentWidgetData(QString("items"), syncInitiation);
+    mNsmlOpDsSyncInitiationItem->setContentWidgetData(QString("currentIndex"), mSyncInitiation);
+    mSettingsModel->appendDataFormItem(mNsmlOpDsSyncInitiationItem);
+    
+    mSettingsForm->setModel(mSettingsModel);
+}
+
+void QtSyncStatusModel::itemDisplayed(const QModelIndex &index)
+{   
+    //HbDataFormModelItem *data = static_cast<HbDataFormModelItem*>(index.internalPointer());
+    HbDataFormViewItem *viewItem = static_cast<HbDataFormViewItem*>( mSettingsForm->itemByIndex(index) );
+       
+    switch (index.row())
+        {
+        case 0:
+            {
+            HbWidget* contentWidget = viewItem->dataItemContentWidget();
+            mSyncErrorCodeEdit = static_cast<HbLineEdit *>(contentWidget);
+            mSyncErrorCodeEdit->setInputMethodHints(Qt::ImhPreferNumbers);
+            connect(mSyncErrorCodeEdit, SIGNAL(editingFinished()),
+                    this, SLOT(handleSyncMLErrorCodeChangeFinished()));
+            break;
+            }
+            
+        case 1:
+            {
+            HbWidget* contentWidget = viewItem->dataItemContentWidget();
+            mSyncProfileUidEdit = static_cast<HbLineEdit *>(contentWidget);
+            mSyncProfileUidEdit->setInputMethodHints(Qt::ImhPreferNumbers);
+            connect(mSyncProfileUidEdit, SIGNAL(editingFinished()),
+                    this, SLOT(handleProfileUidChangeFinished()));            
+            break;
+            }
+           
+        case 2:
+            {
+            HbWidget* contentWidget = viewItem->dataItemContentWidget();
+            mmSyncTypeComboBox = static_cast<HbComboBox *>(contentWidget);
+            connect(mmSyncTypeComboBox, SIGNAL(currentIndexChanged(int)),
+                    this, SLOT(handleSyncTypeChange(int)));                
+            break;
+            }
+                
+        case 3:
+            {
+            HbWidget* contentWidget = viewItem->dataItemContentWidget();
+            mSyncInitiationComboBox = static_cast<HbComboBox *>(contentWidget);
+            connect(mSyncInitiationComboBox, SIGNAL(currentIndexChanged(int)),
+                    this, SLOT(handleSyncInitiationChange(int)));                
+            break;
+            }
+        
+        default:
+        break;
+        }
+}
+
+void QtSyncStatusModel::handleSyncErrorCodeChangeFinished()
+{
+    mSettingsManager->writeItemValue(*mNsmlOpDsSyncErrorCode, mSyncErrorCodeEdit->text().toInt()); 
+}
+
+void QtSyncStatusModel::handleProfileUidChangeFinished()
+{
+    mSettingsManager->writeItemValue(*mNsmlOpDsSyncProfUid, mSyncProfileUidEdit->text().toInt());
+}
+
+void QtSyncStatusModel::handleSyncTypeChange(int index)
+{
+    mSettingsManager->writeItemValue(*mNsmlOpDsSyncType, index);
+}
+
+void QtSyncStatusModel::handleSyncInitiationChange(int index)
+{
+    mSettingsManager->writeItemValue(*mNsmlOpDsSyncInitiation, index);
+}
+
+void QtSyncStatusModel::valueChanged(const XQSettingsKey& key, const QVariant& value)
+{
+    QDateTime dt = QDateTime::currentDateTime();
+    QString logLine;
+    
+    unsigned long int crKey = key.key();
+    if (crKey == mNsmlOpDsSyncErrorCode->key()) {
+        mSyncErrorCode = value.toUInt();
+        QString errorCode;
+        errorCode.setNum(mSyncErrorCode);
+        mNsmlOpDsSyncErrorCodeItem->setContentWidgetData( "text", errorCode );
+        logLine.append("[" + dt.toString("dd.MM.yyyy hh:mm:ss") + "] [SyncErrCode: " + errorCode + "]\r\n");
+    }
+    else if (crKey == mNsmlOpDsSyncProfUid->key()) {
+        mSyncProfileUid = value.toUInt();
+        QString profileUId;
+        profileUId.setNum(mSyncProfileUid);
+        mNsmlOpDsSyncProfUidItem->setContentWidgetData( "text", profileUId );
+        logLine.append("[" + dt.toString("dd.MM.yyyy hh:mm:ss") + "] [SyncProfileId: " + profileUId + "]\r\n");
+    }
+    else if (crKey == mNsmlOpDsSyncType->key()) {
+        mSyncType = value.toUInt();
+        QString syncType;
+        syncType.setNum(mSyncType);
+        mNsmlOpDsSyncTypeItem->setContentWidgetData(QString("currentIndex"), mSyncType);
+        logLine.append("[" + dt.toString("dd.MM.yyyy hh:mm:ss") + "] [SyncType: " + syncType + "]\r\n");
+    }
+    else if (crKey == mNsmlOpDsSyncInitiation->key()) {
+        mSyncInitiation = value.toUInt();
+        QString syncInitiation;
+        syncInitiation.setNum(mSyncInitiation);
+        mNsmlOpDsSyncInitiationItem->setContentWidgetData(QString("currentIndex"), mSyncInitiation);
+        logLine.append("[" + dt.toString("dd.MM.yyyy hh:mm:ss") + "] [SyncInitiation: " + syncInitiation + "]\r\n");        
+    }
+    mSyncLog.write(logLine);
+    XQServiceUtil::toBackground( false );
+}
+
+void QtSyncStatusModel::clearSyncLog()
+{
+    mSyncLog.clear();
+}
+
+
+void QtSyncStatusModel::publishSyncStatusKey()
+{
+    mSettingsManager->writeItemValue(*mDataSyncStatusKey,EDataSyncRunning12);
+    mSettingsManager->writeItemValue(*mDataSyncStatusKey,EDataSyncNotRunning);
+}
+
+// End of file