diff -r 8e7494275d3a -r 4f0867e42d62 omads/omadsappui/AspSyncUtil/src/AspFilter.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omads/omadsappui/AspSyncUtil/src/AspFilter.cpp Wed Sep 01 12:30:02 2010 +0100 @@ -0,0 +1,1322 @@ +/* +* Copyright (c) 2002-2005 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: +* +*/ + + + +// INCLUDES + +#include + + +#include "aspfilter.h" +#include "aspprofile.h" +#include "AspResHandler.h" +#include "AspDialogUtil.h" + + + +// ============================ MEMBER FUNCTIONS =============================== + + + +/******************************************************************************* + * class CAspFilterList + *******************************************************************************/ + + + +// ----------------------------------------------------------------------------- +// CAspFilterList::NewL +// +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CAspFilterList* CAspFilterList::NewL(const TAspParam& aParam, RPointerArray& aArray) + { + CAspFilterList* self = new(ELeave) CAspFilterList(aParam, aArray); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + + return self; + } + + +// ----------------------------------------------------------------------------- +// CAspFilterList::~CAspFilterList +// +// ----------------------------------------------------------------------------- +// +CAspFilterList::~CAspFilterList() + { + iFilterList.ResetAndDestroy(); + iFilterList.Close(); + } + + +// ----------------------------------------------------------------------------- +// CAspFilterList::ConstructL +// +// ----------------------------------------------------------------------------- +// +void CAspFilterList::ConstructL() + { + InitFiltersL(); + } + + +// ----------------------------------------------------------------------------- +// CAspFilterList::CAspFilterList +// +// ----------------------------------------------------------------------------- +// +CAspFilterList::CAspFilterList(const TAspParam& aParam, RPointerArray& aArray) + { + iApplicationId = aParam.iApplicationId; + //iAspTask = aParam.iSyncTask; + iArray = aArray; + } + + +// ----------------------------------------------------------------------------- +// CAspFilterList::InitFiltersL +// +// ----------------------------------------------------------------------------- +// +void CAspFilterList::InitFiltersL() + { + //TSyncMLFilterChangeInfo changeInfo = ESyncMLDefault; + //RPointerArray& arr = iAspTask->Task().SupportedServerFiltersL(changeInfo); + + TInt count = iArray.Count(); + for (TInt i=0; iEnabled()) + { + return ETrue; + } + } + + return EFalse; + } + + +// ----------------------------------------------------------------------------- +// CAspFilterList::SetFiltersEnabledL +// +// ----------------------------------------------------------------------------- +// +void CAspFilterList::SetFiltersEnabledL(TBool aEnable) + { + TInt count = iFilterList.Count(); + + for (TInt i=0; iSetEnabledL(aEnable); + } + } + + +// ----------------------------------------------------------------------------- +// CAspFilterList::SaveL +// +// ----------------------------------------------------------------------------- +// +void CAspFilterList::SaveL() + { + } + + +// ----------------------------------------------------------------------------- +// CAspFilterList::Item +// +// ----------------------------------------------------------------------------- +// +CAspFilter* CAspFilterList::Item(TInt aIndex) + { + if (aIndex < 0 || aIndex >= iFilterList.Count()) + { + TUtil::Panic(KErrArgument); + } + + return iFilterList[aIndex]; + } + + +// ----------------------------------------------------------------------------- +// CAspFilterList::ItemForIdL +// +// ----------------------------------------------------------------------------- +// +CAspFilter* CAspFilterList::ItemForId(TInt aId) + { + TInt count = iFilterList.Count(); + + for (TInt i=0; iId() == aId) + { + return filter; + } + } + + return NULL; + } + + + + + +/******************************************************************************* + * class CAspFilter + *******************************************************************************/ + + +// ----------------------------------------------------------------------------- +// CAspFilter::NewLC +// +// ----------------------------------------------------------------------------- +// +CAspFilter* CAspFilter::NewLC(CSyncMLFilter* aSyncFilter, TInt aId) + { + CAspFilter* self = new(ELeave) CAspFilter(aSyncFilter, aId); + CleanupStack::PushL(self); + self->ConstructL(); + + return self; + } + + +// ----------------------------------------------------------------------------- +// CAspFilter::~CAspFilter +// +// ----------------------------------------------------------------------------- +// +CAspFilter::~CAspFilter() + { + iFilterItemList.ResetAndDestroy(); + iFilterItemList.Close(); + } + + +// ----------------------------------------------------------------------------- +// CAspFilter::ConstructL +// +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CAspFilter::ConstructL() + { + InitFilterItemsL(); + } + + +// ----------------------------------------------------------------------------- +// CAspFilter::CAspFilter +// +// ----------------------------------------------------------------------------- +// +CAspFilter::CAspFilter(CSyncMLFilter* aSyncFilter, TInt aId) + { + iId = KFilterBaseId + aId; + iSyncFilter = aSyncFilter; + + __ASSERT_ALWAYS(iSyncFilter, TUtil::Panic(KErrGeneral)); + } + + +// ----------------------------------------------------------------------------- +// CAspFilter::SaveL +// +// ----------------------------------------------------------------------------- +// +void CAspFilter::SaveL() + { + } + + +// ----------------------------------------------------------------------------- +// CAspFilter::InitFilterItemsL +// +// ----------------------------------------------------------------------------- +// +void CAspFilter::InitFilterItemsL() + { + RPointerArray& arr = iSyncFilter->FilterProperties(); + + TInt count = arr.Count(); + for (TInt i=0; iDisplayName(); + } + + +// ----------------------------------------------------------------------------- +// CAspFilter::GetDisplayValueL +// +// ----------------------------------------------------------------------------- +// +void CAspFilter::GetDisplayValueL(TDes& aText) + { + aText = KNullDesC; + + if (!Enabled()) + { + CAspResHandler::ReadL(aText, R_ASP_NOT_DEFINED); + } + else if (iFilterItemList.Count() == 1) + { + CAspFilterItem* item = iFilterItemList[0]; + item->GetDisplayValueL(aText); + } + else if (iFilterItemList.Count() > 1) + { + CAspResHandler::ReadL(aText, R_ASP_MULTIPLE_SELECTION); + } + } + + +// ----------------------------------------------------------------------------- +// CAspFilter::Id +// +// ----------------------------------------------------------------------------- +// +TInt CAspFilter::Id() + { + return iId; + } + + +// ----------------------------------------------------------------------------- +// CAspFilter::ItemCount +// +// ----------------------------------------------------------------------------- +// +TInt CAspFilter::ItemCount() + { + return iFilterItemList.Count(); + } + + +// ----------------------------------------------------------------------------- +// CAspFilter::Item +// +// ----------------------------------------------------------------------------- +// +CAspFilterItem* CAspFilter::Item(TInt aIndex) + { + if (aIndex < 0 || aIndex >= ItemCount()) + { + TUtil::Panic(KErrArgument); + } + + return iFilterItemList[aIndex]; + } + + +// ----------------------------------------------------------------------------- +// CAspFilter::ItemForIdL +// +// ----------------------------------------------------------------------------- +// +CAspFilterItem* CAspFilter::ItemForId(TInt aId) + { + TInt count = ItemCount(); + + for (TInt i=0; iId() == aId) + { + return item; + } + } + + return NULL; + } + + +// ----------------------------------------------------------------------------- +// CAspFilter::Enabled +// +// ----------------------------------------------------------------------------- +// +TBool CAspFilter::Enabled() + { + return iSyncFilter->Enabled(); + } + + +// ----------------------------------------------------------------------------- +// CAspFilter::SetEnabledL +// +// ----------------------------------------------------------------------------- +// +void CAspFilter::SetEnabledL(TBool aEnable) + { + iSyncFilter->SetEnabledL(aEnable); + } + + + + + + + +/******************************************************************************* + * class CAspFilterItem + *******************************************************************************/ + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::NewLC +// +// ----------------------------------------------------------------------------- +// +CAspFilterItem* CAspFilterItem::NewLC(CSyncMLFilterProperty* aProperty, TInt aId) + { + CAspFilterItem* self = new(ELeave) CAspFilterItem(aProperty, aId); + CleanupStack::PushL(self); + self->ConstructL(); + + return self; + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::NewL +// +// ----------------------------------------------------------------------------- +// +CAspFilterItem* CAspFilterItem::NewL(CSyncMLFilterProperty* aProperty, TInt aId) + { + CAspFilterItem* self = new(ELeave) CAspFilterItem(aProperty, aId); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + + return self; + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::~CAspFilterItem +// +// ----------------------------------------------------------------------------- +// +CAspFilterItem::~CAspFilterItem() + { + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::ConstructL +// +// ----------------------------------------------------------------------------- +// +void CAspFilterItem::ConstructL() + { + InitListTypeL(); + InitDataTypeL(); + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::CAspFilterItem +// ----------------------------------------------------------------------------- +// +CAspFilterItem::CAspFilterItem(CSyncMLFilterProperty* aProperty, TInt aId) + { + iId = aId + KFilterItemBaseId; + iProperty = aProperty; + + __ASSERT_ALWAYS(iProperty, TUtil::Panic(KErrGeneral)); + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::ListType +// +// ----------------------------------------------------------------------------- +// +TInt CAspFilterItem::ListType() + { + return iListType; + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::DataType +// +// ----------------------------------------------------------------------------- +// +TInt CAspFilterItem::DataType() + { + return iDataType; + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::InitListType +// +// ----------------------------------------------------------------------------- +// +void CAspFilterItem::InitListTypeL() + { + TInt defaultValueCount = iProperty->DefaultValueCount(); + TBool querySupported = iProperty->CanUseQueryValue(); + TBool multiSelectionSupported = iProperty->SupportsMultipleSelection(); + + if (defaultValueCount == 0 && querySupported) + { + iListType = ETypeQuery; + } + else if (defaultValueCount > 0 && !querySupported && !multiSelectionSupported) + { + iListType = ETypeSingleSelection; + } + else if (defaultValueCount > 0 && querySupported && !multiSelectionSupported) + { + iListType = ETypeSingleSelectionUserDefined; + } + else if (defaultValueCount > 0 && !querySupported && multiSelectionSupported) + { + iListType = ETypeMultipleSelection; + } + else if (defaultValueCount > 0 && querySupported && multiSelectionSupported) + { + iListType = ETypeMultipleSelectionUserDefined; + } + else + { + User::Leave(KErrNotSupported); + } + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::InitDataType +// +// ----------------------------------------------------------------------------- +// +void CAspFilterItem::InitDataTypeL() + { + if (!iProperty->CanUseQueryValue()) + { + iDataType = CAspListItemData::ETypeList; + return; + } + + TSyncMLFilterPropertyDataType type = iProperty->QueryValueDataType(); + + switch (type) + { + case ESyncMLDataTypeBool: + iDataType = CAspListItemData::ETypeBoolean; + break; + case ESyncMLDataTypeNumber: + iDataType = CAspListItemData::ETypeNumber; + break; + case ESyncMLDataTypeDate: + iDataType = CAspListItemData::ETypeDate; + break; + case ESyncMLDataTypeTime: + iDataType = CAspListItemData::ETypeTime; + break; + case ESyncMLDataTypeText8: + iDataType = CAspListItemData::ETypeText; + break; + case ESyncMLDataTypeText16: + iDataType = CAspListItemData::ETypeText; + break; + + default: + User::Leave(KErrNotSupported); + break; + } + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::DisplayName +// +// ----------------------------------------------------------------------------- +// +const TDesC& CAspFilterItem::DisplayName() + { + return iProperty->DisplayName(); + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::DisplayValueL +// +// ----------------------------------------------------------------------------- +// +const TDesC& CAspFilterItem::DisplayValueL() + { + GetDisplayValueL(iDisplayValueBuf); + return iDisplayValueBuf; + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::GetDisplayValueL +// +// ----------------------------------------------------------------------------- +// +void CAspFilterItem::GetDisplayValueL(TDes& aText) + { + aText = KNullDesC; + + if (ListType() == ETypeQuery) + { + GetQueryValueTextL(aText); + } + else if (SelectionAndQueryCount() > 1) + { + CAspResHandler::ReadL(aText, R_ASP_MULTIPLE_SELECTION); + } + else if (SelectionAndQueryCount() == 1) + { + if (QueryValueSelected()) + { + GetQueryValueTextL(aText); + } + else + { + GetListValueTextL(aText); + } + } + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::GetQueryValueTextL +// +// ----------------------------------------------------------------------------- +// +void CAspFilterItem::GetQueryValueTextL(TDes& aText) + { + aText = KNullDesC; + + TSyncMLFilterPropertyDataType type = iProperty->QueryValueDataType(); + + switch (type) + { + case ESyncMLDataTypeText16: + GetText(aText); + break; + + case ESyncMLDataTypeText8: + GetText(aText); + break; + + case ESyncMLDataTypeNumber: + aText.Num(iProperty->QueryValueIntL()); + break; + + case ESyncMLDataTypeBool: + { + CDesCArray* stringData = CAspResHandler::ReadDesArrayStaticLC(R_ASP_FILTER_ITEM_YESNO); + if (iProperty->QueryValueBoolL()) + { + aText = (*stringData)[1]; + } + else + { + aText = (*stringData)[0]; + } + CleanupStack::PopAndDestroy(stringData); + break; + } + + case ESyncMLDataTypeDate: + TUtil::GetDateTextL(aText, iProperty->QueryValueDateL()); + break; + + case ESyncMLDataTypeTime: + TUtil::GetTimeTextL(aText, iProperty->QueryValueTimeL()); + break; + + default: + break; + + } + + + if (TUtil::IsEmpty(aText)) + { + CAspResHandler::ReadL(aText, R_ASP_SETTING_VALUE_NONE); + } + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::SetQueryValueTextL +// +// ----------------------------------------------------------------------------- +// +void CAspFilterItem::SetQueryValueTextL(const TDesC& aText) + { + TInt num = 0; + + TSyncMLFilterPropertyDataType type = iProperty->QueryValueDataType(); + + switch (type) + { + case ESyncMLDataTypeText16: + iProperty->SetQueryValueText16L(aText); + break; + + case ESyncMLDataTypeText8: + TUtil::StrCopy(iBuf8, aText); + iProperty->SetQueryValueText8L(iBuf8); + break; + + case ESyncMLDataTypeNumber: + User::LeaveIfError(TUtil::StrToInt(aText, num)); + iProperty->SetQueryValueIntL(num); + break; + + case ESyncMLDataTypeBool: + User::LeaveIfError(TUtil::StrToInt(aText, num)); + if (num) + { + iProperty->SetQueryValueBoolL(ETrue); + } + else + { + iProperty->SetQueryValueBoolL(EFalse); + } + break; + + case ESyncMLDataTypeDate: + User::LeaveIfError(TUtil::StrToInt(aText, num)); + iProperty->SetQueryValueDateL(num); + break; + + case ESyncMLDataTypeTime: + User::LeaveIfError(TUtil::StrToInt(aText, num)); + iProperty->SetQueryValueTimeL(num); + break; + + default: + break; + + } + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::GetListValueTextL +// +// ----------------------------------------------------------------------------- +// +void CAspFilterItem::GetListValueTextL(TDes& aText) + { + aText = KNullDesC; + TInt index = SelectionIndex(); + if (index == KErrNotFound) + { + CAspResHandler::ReadL(aText, R_ASP_SETTING_VALUE_NONE); + return; // list does not have one item selected + } + + GetListValueTextL(aText, index); + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::GetListValueTextL +// +// ----------------------------------------------------------------------------- +// +void CAspFilterItem::GetListValueTextL(TDes& aText, TInt aIndex) + { + aText = KNullDesC; + + if (aIndex < 0 || aIndex >= iProperty->DefaultValueCount()) + { + TUtil::Panic(KErrArgument); + } + + TSyncMLFilterPropertyDataType type = iProperty->DefaultValueDataType(); + + switch (type) + { + case ESyncMLDataTypeText16: + TUtil::StrCopy(aText, iProperty->DefaultValueText16L(aIndex)); + break; + + case ESyncMLDataTypeText8: + TUtil::StrCopy(aText, iProperty->DefaultValueText8L(aIndex)); + break; + + case ESyncMLDataTypeNumber: + aText.Num(iProperty->DefaultValueIntL(aIndex)); + break; + + case ESyncMLDataTypeBool: + { + CDesCArray* stringData = CAspResHandler::ReadDesArrayStaticLC(R_ASP_FILTER_ITEM_YESNO); + if (iProperty->DefaultValueBoolL(aIndex)) + { + aText = (*stringData)[1]; + } + else + { + aText = (*stringData)[0]; + } + CleanupStack::PopAndDestroy(stringData); + break; + } + + case ESyncMLDataTypeDate: + TUtil::GetDateTextL(aText, iProperty->DefaultValueDateL(aIndex)); + break; + + case ESyncMLDataTypeTime: + TUtil::GetTimeTextL(aText, iProperty->DefaultValueTimeL(aIndex)); + break; + + default: + break; + + } + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::SelectionCount +// +// ----------------------------------------------------------------------------- +// +TInt CAspFilterItem::SelectionCount() + { + TInt count = 0; + TInt defaultValueCount = iProperty->DefaultValueCount(); + + for (TInt i=0; iIsDefaultValueSelected(i)) + { + count++; + } + } + + return count; + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::SelectionAndQueryCount +// +// ----------------------------------------------------------------------------- +// +TInt CAspFilterItem::SelectionAndQueryCount() + { + TInt count = SelectionCount(); + + if (QueryValueSelected()) + { + count++; + } + + return count; + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::SelectionIndex +// +// ----------------------------------------------------------------------------- +// +TInt CAspFilterItem::SelectionIndex() + { + if (SelectionCount() != 1) + { + return KErrNotFound; + } + if (QueryValueSelected()) + { + return KErrNotFound; + } + + TInt count = iProperty->DefaultValueCount(); + + for (TInt i=0; iIsDefaultValueSelected(i)) + { + return i; + } + } + + return KErrNotFound; + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::QueryValueSelected +// +// ----------------------------------------------------------------------------- +// +TBool CAspFilterItem::QueryValueSelected() + { + if (iProperty->DefaultValueCount() > 0 && iProperty->CanUseQueryValue()) + { + if (iProperty->IsQueryValueSelected()) + { + return ETrue; + } + } + + return EFalse; + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::Id +// +// ----------------------------------------------------------------------------- +// +TInt CAspFilterItem::Id() + { + return iId; + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::IsMandatory +// +// ----------------------------------------------------------------------------- +// +TBool CAspFilterItem::IsMandatory() + { + if (iListType == ETypeMultipleSelection || iListType == ETypeMultipleSelectionUserDefined) + { + if (!iProperty->SupportsEmptySelection()) + { + return ETrue; + } + } + + return EFalse; + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::MaxLength +// +// ----------------------------------------------------------------------------- +// +TInt CAspFilterItem::MaxLength() + { + TSyncMLFilterPropertyDataType type = iProperty->QueryValueDataType(); + if (type != ESyncMLDataTypeText8 && type != ESyncMLDataTypeText16) + { + return 0; + } + + return iProperty->MaxTextLength(); + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::GetSelectionL +// +// ----------------------------------------------------------------------------- +// +void CAspFilterItem::GetSelectionL(CSelectionItemList* aList) + { + __ASSERT_ALWAYS(aList, TUtil::Panic(KErrGeneral)); + + TBuf buf; + + TInt count = iProperty->DefaultValueCount(); + for (TInt i=0; iIsDefaultValueSelected(i); + GetListValueTextL(buf, i); + + CSelectableItem* item = new (ELeave) CSelectableItem(buf, selected); + CleanupStack::PushL(item); + item->ConstructL(); + aList->AppendL(item); + CleanupStack::Pop(item); + } + + AddQueryValueL(aList); + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::SetSelectionL +// +// ----------------------------------------------------------------------------- +// +void CAspFilterItem::SetSelectionL(CSelectionItemList* aList) + { + TInt count = aList->Count(); + TInt defaultValuecount = iProperty->DefaultValueCount(); + + __ASSERT_ALWAYS(count >= defaultValuecount, TUtil::Panic(KErrGeneral)); + + for (TInt i=0; iSelectionStatus(); + if (selected) + { + iProperty->SelectDefaultValueL(i); + } + else + { + iProperty->UnselectDefaultValueL(i); + } + } + + UpdateQueryValueL(aList); + + CheckEmptySelectionL(); + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::CheckEmptySelectionL +// +// ----------------------------------------------------------------------------- +// +void CAspFilterItem::CheckEmptySelectionL() + { + if (iListType != ETypeMultipleSelection && iListType != ETypeMultipleSelectionUserDefined) + { + return; + } + + if (SelectionAndQueryCount() == 0 && !iProperty->SupportsEmptySelection()) + { + if (iProperty->DefaultValueCount() > 0) + { + iProperty->SelectDefaultValueL(0); + } + } + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::UpdateQueryValueL +// +// ----------------------------------------------------------------------------- +// +void CAspFilterItem::UpdateQueryValueL(CSelectionItemList* aList) + { + if (iListType != ETypeSingleSelectionUserDefined && iListType != ETypeMultipleSelectionUserDefined) + { + return; + } + + TSyncMLFilterPropertyDataType type = iProperty->QueryValueDataType(); + if (type != ESyncMLDataTypeNumber && type != ESyncMLDataTypeText16 && type != ESyncMLDataTypeText8) + { + return; // "User defined" list only supports number and text + } + + + TInt count = aList->Count(); + TInt defaultValueCount = iProperty->DefaultValueCount(); + + __ASSERT_ALWAYS(count == defaultValueCount+1, TUtil::Panic(KErrGeneral)); + + + CSelectableItem* item = (*aList)[count-1]; + + SetQueryValueTextL(item->ItemText()); + + if (!item->SelectionStatus()) + { + iProperty->UnselectQueryValueL(); + } + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::AddQueryValueL +// +// ----------------------------------------------------------------------------- +// +void CAspFilterItem::AddQueryValueL(CSelectionItemList* aList) + { + if (iListType != ETypeSingleSelectionUserDefined && iListType != ETypeMultipleSelectionUserDefined) + { + return; + } + + TSyncMLFilterPropertyDataType type = iProperty->QueryValueDataType(); + if (type != ESyncMLDataTypeNumber && type != ESyncMLDataTypeText16 && type != ESyncMLDataTypeText8) + { + return; // "User defined" list only supports number and text + } + + + + TBuf buf; + TBool selected = iProperty->IsQueryValueSelected(); + GetQueryValueTextL(buf); + + CSelectableItem* item = new (ELeave) CSelectableItem(buf, selected); + CleanupStack::PushL(item); + item->ConstructL(); + aList->AppendL(item); + CleanupStack::Pop(item); + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::GetTextL +// +// ----------------------------------------------------------------------------- +// +void CAspFilterItem::GetTextL(TDes& aText) + { + TSyncMLFilterPropertyDataType type = iProperty->QueryValueDataType(); + + __ASSERT_DEBUG(type==ESyncMLDataTypeText8 || type==ESyncMLDataTypeText16, TUtil::Panic(KErrGeneral)); + + if (type == ESyncMLDataTypeText8) + { + TUtil::StrCopy(aText, iProperty->QueryValueText8L()); + } + else + { + TUtil::StrCopy(aText, iProperty->QueryValueText16L()); + } + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::GetText +// +// ----------------------------------------------------------------------------- +// +void CAspFilterItem::GetText(TDes& aText) + { + TRAPD(err, GetTextL(aText)); + + if (err != KErrNone) + { + aText = KNullDesC; + } + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::SetTextL +// +// ----------------------------------------------------------------------------- +// +void CAspFilterItem::SetTextL(const TDesC& aText) + { + TSyncMLFilterPropertyDataType type = iProperty->QueryValueDataType(); + + __ASSERT_DEBUG(type==ESyncMLDataTypeText8 || type==ESyncMLDataTypeText16, TUtil::Panic(KErrGeneral)); + + if (type == ESyncMLDataTypeText8) + { + TUtil::StrCopy(iBuf8, aText); + iProperty->SetQueryValueText8L(iBuf8); + } + else + { + iProperty->SetQueryValueText16L(aText); + } + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::BoolL +// +// ----------------------------------------------------------------------------- +// +TBool CAspFilterItem::BoolL() + { + TSyncMLFilterPropertyDataType type = iProperty->QueryValueDataType(); + + __ASSERT_DEBUG(type==ESyncMLDataTypeBool, TUtil::Panic(KErrGeneral)); + + return iProperty->QueryValueBoolL(); + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::SetBoolL +// +// ----------------------------------------------------------------------------- +// +void CAspFilterItem::SetBoolL(TBool aBool) + { + TSyncMLFilterPropertyDataType type = iProperty->QueryValueDataType(); + + __ASSERT_DEBUG(type==ESyncMLDataTypeBool, TUtil::Panic(KErrGeneral)); + + iProperty->SetQueryValueBoolL(aBool); + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::IntL +// +// ----------------------------------------------------------------------------- +// +TInt CAspFilterItem::IntL() + { + TSyncMLFilterPropertyDataType type = iProperty->QueryValueDataType(); + + __ASSERT_DEBUG(type==ESyncMLDataTypeNumber, TUtil::Panic(KErrGeneral)); + + return iProperty->QueryValueIntL(); + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::SetIntL +// +// ----------------------------------------------------------------------------- +// +void CAspFilterItem::SetIntL(TInt aInt) + { + TSyncMLFilterPropertyDataType type = iProperty->QueryValueDataType(); + + __ASSERT_DEBUG(type==ESyncMLDataTypeNumber, TUtil::Panic(KErrGeneral)); + + iProperty->SetQueryValueIntL(aInt); + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::DateL +// +// ----------------------------------------------------------------------------- +// +TTime CAspFilterItem::DateL() + { + TSyncMLFilterPropertyDataType type = iProperty->QueryValueDataType(); + + __ASSERT_DEBUG(type==ESyncMLDataTypeDate, TUtil::Panic(KErrGeneral)); + + return iProperty->QueryValueDateL(); + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::SetDateL +// +// ----------------------------------------------------------------------------- +// +void CAspFilterItem::SetDateL(TTime aTime) + { + TSyncMLFilterPropertyDataType type = iProperty->QueryValueDataType(); + + __ASSERT_DEBUG(type==ESyncMLDataTypeDate, TUtil::Panic(KErrGeneral)); + + return iProperty->SetQueryValueDateL(aTime); + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::TimeL +// +// ----------------------------------------------------------------------------- +// +TTime CAspFilterItem::TimeL() + { + TSyncMLFilterPropertyDataType type = iProperty->QueryValueDataType(); + + __ASSERT_DEBUG(type==ESyncMLDataTypeTime, TUtil::Panic(KErrGeneral)); + + return iProperty->QueryValueTimeL(); + } + + +// ----------------------------------------------------------------------------- +// CAspFilterItem::SetTimeL +// +// ----------------------------------------------------------------------------- +// +void CAspFilterItem::SetTimeL(TTime aTime) + { + TSyncMLFilterPropertyDataType type = iProperty->QueryValueDataType(); + + __ASSERT_DEBUG(type==ESyncMLDataTypeTime, TUtil::Panic(KErrGeneral)); + + return iProperty->SetQueryValueTimeL(aTime); + } + + + + + +// End of file +