--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwtools/preparedefaultcommsdatabase/Tools/ced/src/preference.cpp Thu Dec 17 09:22:25 2009 +0200
@@ -0,0 +1,271 @@
+// Copyright (c) 2003-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:
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include "database.h"
+#include "dbdef.h"
+#include "filedump.h"
+
+/**
+makes logging accessible to all files
+
+*/
+extern FileDump* oMsg;
+
+//
+//
+// PRIVATE PREFERENCE METHODS
+//
+//
+
+
+TInt DBAccess::OpenPreferenceTable(TDesC &table)
+/**
+Opens the preference table
+
+ @param table A reference to a descriptor containing the name of a table
+ @return ETrue if Successful else EFalse
+ */
+ {
+ TInt valid = EFalse;
+
+ if (table.Compare(TPtrC(CONNECTION_PREFERENCES)) == 0)
+ {
+ IAPpreference.iDirection = ECommDbConnectionDirectionOutgoing;
+
+ oMsg->Dbg(_L(" Opening preference table for outgoing"));
+
+ TRAPD(ret, _OpenPrefTableL());
+ if (Evaluate(ret))
+ {
+ if (dbPrefView)
+ {
+ access |= DBPrefOut;
+ valid = ETrue;
+ }
+ }
+ }
+
+ if (valid)
+ if (access & DBUpdate)
+ if (!Evaluate(dbPrefView->GotoFirstRecord()))
+ valid = EFalse;
+
+ return valid;
+ }
+
+
+TInt DBAccess::OpenPreferenceTableOnRank(TDesC &table)
+/**
+Open the preference table according to supplied rank and direction
+
+ @param table A reference to a descriptor containing the name of a table
+ @return ETrue if Successful else EFalse
+ */
+ {
+ TInt valid = EFalse;
+
+ if (table.Compare(TPtrC(CONNECTION_PREFERENCES)) == 0)
+ {
+ IAPpreference.iDirection = ECommDbConnectionDirectionOutgoing;
+
+ oMsg->Dbg(_L(" Opening preference table using rank [%d] direction [%d]"), IAPpreference.iRanking, IAPpreference.iDirection);
+
+ TRAPD(ret, _OpenPrefTableOnRankL());
+ if (Evaluate(ret))
+ {
+ if (dbPrefView)
+ {
+ access |= DBPrefOut;
+ valid = ETrue;
+ }
+ }
+ }
+
+ if (valid)
+ if (access & DBUpdate)
+ if (!Evaluate(dbPrefView->GotoFirstRecord()))
+ valid = EFalse;
+
+ return valid;
+ }
+
+
+void DBAccess::_OpenPrefTableL()
+/**
+Opens specific tables. This is done in it's own functions because
+they put stuff on the stack that has to be popped off before a
+TRAP can be called on it.
+
+ */
+ {
+ dbPrefView = db->OpenConnectionPrefTableLC(IAPpreference.iDirection);
+
+ CleanupStack::Pop(); // view
+ }
+
+void DBAccess::_OpenPrefTableOnRankL()
+ {
+ dbPrefView = db->OpenConnectionPrefTableViewOnRankLC(IAPpreference.iDirection, IAPpreference.iRanking);
+
+ CleanupStack::Pop(); // view
+ }
+
+
+void DBAccess::ResetPreferenceFields()
+/**
+Set Preference Table structure to known values
+
+ */
+ {
+ IAPpreference.iRanking = BADNUMVAL;
+ IAPpreference.iDirection = ECommDbConnectionDirectionUnknown;
+ IAPpreference.iDialogPref = ECommDbDialogPrefUnknown;
+ IAPpreference.iBearer.iBearerSet = BADNUMVAL;
+ IAPpreference.iBearer.iIapId = BADNUMVAL;
+#ifdef __COMMDB_ROHID_SUPPORT__
+ isReadOnly = EFalse;
+#endif
+ }
+
+
+TInt DBAccess::CheckPreferenceFieldsL()
+/**
+Makes sure we have all preference fields set
+
+ @return ETrue if successful or EFalse
+ */
+ {
+ oMsg->Dbg(_L(" Checking preference fields..."));
+
+ if (IAPpreference.iRanking == BADNUMVAL ||
+ IAPpreference.iDirection == ECommDbConnectionDirectionUnknown ||
+ IAPpreference.iDialogPref == ECommDbDialogPrefUnknown ||
+ IAPpreference.iBearer.iBearerSet == BADNUMVAL )
+ {
+ iLastError = E_NOTENOUGHDATA;
+ LastErrorMessage.Set(errorCode[E_NOTENOUGHDATA]);
+ return EFalse;
+ }
+ // now check if the optional field was supplied - if not, zero it
+ if (IAPpreference.iBearer.iIapId == BADNUMVAL)
+ IAPpreference.iBearer.iIapId = 0;
+
+ oMsg->Msg(_L("All preference fields valid"));
+ return ETrue;
+ }
+
+
+TInt DBAccess::SetPrefValue(TInt index)
+/**
+Attempts to open the preference table, or set a particular field
+
+ @param index Index in the Table
+ @return ETrue if successful or EFalse
+ */
+ {
+ TInt valid = EFalse;
+ TLex temp = TargetCols[ColCount].Value;
+ TInt tempInt = 0;
+
+ // once we have the ranking value, we can open the database
+ if (TargetCols[ColCount].Name.Compare(TPtrC(CONNECT_PREF_RANKING)) == 0)
+ {
+ if (Evaluate(temp.Val(tempInt)))
+ {
+ TPtrC table = tableArray[index];
+
+ ResetPreferenceFields();
+ IAPpreference.iRanking = tempInt;
+
+ if (access & DBInsert)
+ {
+ if (OpenPreferenceTable(table))
+ valid = ETrue;
+ }
+ else if (access & DBUpdate)
+ {
+ // open record we want to edit
+ if (OpenPreferenceTableOnRank(table))
+ valid = ETrue;
+ }
+ }
+ }
+ else
+ {
+ // set IAP value
+ if(Evaluate(temp.Val(tempInt)))
+ {
+ if (TargetCols[ColCount].Name.Compare(TPtrC(CONNECT_PREF_DIALOG_PREF)) == 0)
+ {
+ IAPpreference.iDialogPref = (TCommDbDialogPref)tempInt;
+ oMsg->Dbg(_L(" Dialog preference set to %d"), IAPpreference.iDialogPref);
+ valid = ETrue;
+ }
+ else if (TargetCols[ColCount].Name.Compare(TPtrC(CONNECT_PREF_IAP)) == 0)
+ {
+ IAPpreference.iBearer.iIapId = tempInt;
+ oMsg->Dbg(_L(" Bearer ID set to %d"), IAPpreference.iBearer.iIapId);
+ valid = ETrue;
+ }
+ else if (TargetCols[ColCount].Name.Compare(TPtrC(CONNECT_PREF_DIRECTION)) == 0)
+ {
+ IAPpreference.iDirection = (TCommDbConnectionDirection)tempInt;
+ oMsg->Dbg(_L(" Bearer Direction set to %d"), IAPpreference.iDirection);
+ valid = ETrue;
+ }
+ else if (TargetCols[ColCount].Name.Compare(TPtrC(CONNECT_PREF_BEARER_SET)) == 0)
+ {
+ IAPpreference.iBearer.iBearerSet = tempInt;
+ oMsg->Dbg(_L(" Bearer Set set to %d"), IAPpreference.iBearer.iBearerSet);
+ valid = ETrue;
+ }
+#ifdef __COMMDB_ROHID_SUPPORT__
+ else if (TargetCols[ColCount].Name.Compare(TPtrC(COMMDB_READ_ONLY)) == 0)
+ {
+ oMsg->Dbg(_L(" ReadOnly set to %d"), tempInt);
+ valid = ETrue;
+ }
+#endif
+ else
+ {
+ iLastError = E_INCORRECTCOLNAME;
+ LastErrorMessage.Set(errorCode[E_INCORRECTCOLNAME]);
+ }
+ }
+ else
+ {
+ iLastError = E_INCORRECTTYPE;
+ LastErrorMessage.Set(errorCode[E_INCORRECTTYPE]);
+ }
+ }
+
+ return valid;
+ }
+
+TInt DBAccess::ConnectionPreferencesTable(TDesC &table)
+ {
+
+ if (table.Compare(TPtrC(CONNECTION_PREFERENCES)) == 0)
+ {
+ return ETrue;
+ }
+
+ return EFalse;
+ }