messagingapp/msgsettings/settingsview/src/smssettingsprivate.cpp
changeset 25 84d9eb65b26f
child 46 b1f0785c289d
child 52 12db4185673b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgsettings/settingsview/src/smssettingsprivate.cpp	Mon May 03 12:29:07 2010 +0300
@@ -0,0 +1,259 @@
+/*
+ * 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:  This provides the messaging mw interface for sms 
+ *
+ */
+
+#include <commdb.h>
+#include <commdbconnpref.h>
+#include <msvapi.h>
+#include <msvstd.h>
+#include <msvuids.h>
+#include <csmsaccount.h>
+#include <smutset.h>
+#include "debugtraces.h"
+
+
+#include "smssettingsprivate.h"
+
+
+//two phase constructor
+SmsSettingsPrivate* SmsSettingsPrivate::NewL()
+{
+    SmsSettingsPrivate* self = new (ELeave) SmsSettingsPrivate();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop();
+    return self;
+}
+
+//2nd phase constructor
+void SmsSettingsPrivate::ConstructL()
+{
+    //does nothing
+}
+
+//---------------------------------------------------------------
+// SmsSettingsPrivate::SmsSettingsPrivate
+// @see header
+//---------------------------------------------------------------
+SmsSettingsPrivate::SmsSettingsPrivate()
+{
+    //do nothing
+}
+
+//---------------------------------------------------------------
+// SmsSettingsPrivate::~SmsSettingsPrivate
+// @see header
+//---------------------------------------------------------------
+SmsSettingsPrivate::~SmsSettingsPrivate()
+{
+    //do nothing
+}
+
+void SmsSettingsPrivate::setReceiveSerivceMessages(
+        TBool serviceMessages)
+{
+    CSmsAccount* smsAccount = CSmsAccount::NewLC();
+    CSmsSettings* smsSettings = CSmsSettings::NewLC();
+
+    smsAccount->LoadSettingsL(*smsSettings);
+
+    //TODO set the receive message part
+
+    smsAccount->SaveSettingsL(*smsSettings);
+
+    CleanupStack::PopAndDestroy(2);
+}
+
+void SmsSettingsPrivate::setCharacterEncoding(TBool status)
+{
+    CSmsAccount* smsAccount = CSmsAccount::NewLC();
+    CSmsSettings* smsSettings = CSmsSettings::NewLC();
+
+    smsAccount->LoadSettingsL(*smsSettings);
+
+    if (status == EFalse)
+    {
+        smsSettings->SetCharacterSet(TSmsDataCodingScheme::ESmsAlphabet7Bit);
+    }
+    else
+    {
+        smsSettings->SetCharacterSet(TSmsDataCodingScheme::ESmsAlphabetUCS2);
+    }
+
+    smsAccount->SaveSettingsL(*smsSettings);
+
+    CleanupStack::PopAndDestroy(2);
+}
+
+void SmsSettingsPrivate::settingsServiceMessagesAndCharEncoding(
+                                                              TBool& report,
+                                                              TBool& statusEncoding)
+{
+    CSmsAccount* smsAccount = CSmsAccount::NewLC();
+    CSmsSettings* smsSettings = CSmsSettings::NewLC();
+
+    smsAccount->LoadSettingsL(*smsSettings);
+
+    //TODO: service messages read
+
+    TSmsDataCodingScheme::TSmsAlphabet charSet = smsSettings->CharacterSet();
+
+    statusEncoding = ETrue;
+    if (charSet == TSmsDataCodingScheme::ESmsAlphabet7Bit)
+    {
+        statusEncoding = EFalse;
+    }
+    CleanupStack::PopAndDestroy(2);
+}
+
+void SmsSettingsPrivate::getAllSMSMessageCenter(
+                                                RPointerArray<HBufC>& accessPoints,
+                                                TInt &defaultIndex)
+{
+    CSmsAccount* smsAccount = CSmsAccount::NewLC();
+    CSmsSettings* settings = CSmsSettings::NewLC();
+
+    smsAccount->LoadSettingsL(*settings);
+
+    //save the default index
+    defaultIndex = settings->DefaultServiceCenter();
+
+    int totalSMSc = settings->ServiceCenterCount();
+    for (int index = 0; index < totalSMSc; index++)
+    {
+        TPtrC16 name = settings->GetServiceCenter(index).Name();
+        HBufC* accessName = name.AllocL();
+        accessPoints.AppendL(accessName);
+    }
+
+    CleanupStack::PopAndDestroy(2);
+
+    return;
+}
+
+void SmsSettingsPrivate::setSMSMessageCenter(int index)
+{
+    CSmsAccount* smsAccount = CSmsAccount::NewLC();
+    CSmsSettings* smsSettings = CSmsSettings::NewLC();
+
+    smsAccount->LoadSettingsL(*smsSettings);
+    smsSettings->SetDefaultServiceCenter(index);
+    smsAccount->SaveSettingsL(*smsSettings);
+
+    CleanupStack::PopAndDestroy(2);
+}
+
+void SmsSettingsPrivate::editSMSServiceCentre(HBufC* address, HBufC* name,
+                                              TInt index)
+{
+    CSmsAccount* smsAccount = CSmsAccount::NewLC();
+    CSmsSettings* smsSettings = CSmsSettings::NewLC();
+
+    smsAccount->LoadSettingsL(*smsSettings);
+
+    TInt indexDefault = smsSettings->DefaultServiceCenter();
+    bool flag = false;
+    if (index == indexDefault)
+    {
+        flag = true;
+    }
+
+    //remove the service center
+    //smsSettings->RemoveServiceCenter(index);
+    //add a new service center
+    smsSettings->AddServiceCenterL(name->Des(), address->Des());
+    
+    if (flag == true)
+    {
+       smsSettings->SetDefaultServiceCenter(
+               smsSettings->ServiceCenterCount()- 1);
+    }
+    
+    smsAccount->SaveSettingsL(*smsSettings);
+
+    smsAccount->LoadSettingsL(*smsSettings);
+    if (flag == true)
+    {
+        smsSettings->RemoveServiceCenter(index);
+    }
+    
+    smsAccount->SaveSettingsL(*smsSettings);
+    
+    CleanupStack::PopAndDestroy(2);
+}
+
+void SmsSettingsPrivate::addSmsMessageCenter(HBufC* address, HBufC* name)
+{
+    CSmsAccount* smsAccount = CSmsAccount::NewLC();
+    CSmsSettings* smsSettings = CSmsSettings::NewLC();
+
+    smsAccount->LoadSettingsL(*smsSettings);
+    
+    int total_count = smsSettings->ServiceCenterCount();
+    smsSettings->AddServiceCenterL(name->Des(), address->Des());
+    
+    if (total_count == 0) // no service center
+    {
+        smsSettings->SetDefaultServiceCenter(0);
+    }
+    smsSettings->SetCommDbAction(CSmsSettings::ENone);
+    smsAccount->SaveSettingsL(*smsSettings);
+
+    CleanupStack::PopAndDestroy(2);
+}
+
+void SmsSettingsPrivate::deleteSmsMessageCenter(TInt aDeleteIndex)
+{
+    CSmsAccount* smsAccount = CSmsAccount::NewLC();
+    CSmsSettings* smsSettings = CSmsSettings::NewLC();
+
+    smsAccount->LoadSettingsL(*smsSettings);
+    
+    TInt indexDefault = smsSettings->DefaultServiceCenter();
+    
+    //remove from settings
+    smsSettings->RemoveServiceCenter(aDeleteIndex);
+    
+    if (indexDefault == aDeleteIndex 
+            && smsSettings->ServiceCenterCount() > 0)
+    {
+        smsSettings->SetDefaultServiceCenter(0);
+    }
+    smsSettings->SetCommDbAction(CSmsSettings::ENone);
+    smsAccount->SaveSettingsL(*smsSettings);
+
+    CleanupStack::PopAndDestroy(2);
+}
+
+void SmsSettingsPrivate::smsCenterNameAndNumber(int index,
+                                                HBufC** centerNumber,
+                                                HBufC** centerName)
+{
+    CSmsAccount* smsAccount = CSmsAccount::NewLC();
+    CSmsSettings* smsSettings = CSmsSettings::NewLC();
+
+    smsAccount->LoadSettingsL(*smsSettings);
+
+    TPtrC16 addr = smsSettings->GetServiceCenter(index).Address();
+    TPtrC16 name = smsSettings->GetServiceCenter(index).Name();
+
+    (*centerNumber) = addr.AllocL();
+    (*centerName) = name.AllocL();
+
+    CleanupStack::PopAndDestroy(2);
+}
+
+//eof