⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 esimitemengine.cpp

📁 基于SIP协议的即时消息聊天功能设计,Symbian平台下实现
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// ----------------------------------------------------
// 
void CESIMItemEngine::UserReadL( RReadStream& aStream )
	{
	TInt count = aStream.ReadInt16L();
	for ( TInt index = 0; index < count; ++index )
	{
		CESIMUserItem* item = CESIMUserItem::NewL();
		CleanupStack::PushL( item );
		item->InternalizeL( aStream );
		User::LeaveIfError( iUserItemList.Append( item ) );
		CleanupStack::Pop( item );
	}

    }

// ----------------------------------------------------
// CESIMItemEngine::GroupReadL( RWriteStream& aStream) 
// ----------------------------------------------------
// 
void CESIMItemEngine::GroupReadL( RReadStream& aStream )
	{
	TInt count = aStream.ReadInt16L();
	for ( TInt index = 0; index < count; ++index )
	{
		CESIMGroupItem* item = CESIMGroupItem::NewL();
		CleanupStack::PushL( item );
		item->InternalizeL( aStream );
		User::LeaveIfError( iGroupItemList.Append( item ) );
		CleanupStack::Pop( item );
	}

    }

// ----------------------------------------------------
// CESIMItemEngine::AddUserToGroupL(TInt aUserIndex, TInt aGroupIndex)
// ----------------------------------------------------
// 
void CESIMItemEngine::AddUserToGroupL(TInt aUserIndex, TInt aGroupIndex)
	{
		if(aUserIndex > iUserItemList.Count()||aGroupIndex > iGroupItemList.Count())
			return;
		
		TInt j;
		for(TInt i=0; i<(static_cast<CESIMGroupItem*>(iGroupItemList[aGroupIndex]))->ItemList().Count(); i++)
		{
			if( (*((static_cast<CESIMGroupItem*>(iGroupItemList[aGroupIndex]))->ItemList())[i]->SipAddress()).Compare(*(static_cast<CESIMUserItem*>(iUserItemList[aUserIndex])->SipAddress())) == 0)
			{
				CESIMAppUi::ShowConformationNote(_L("The User has been added to the Group !"));
				return;
			}
		}

		CESIMUserItem* item = CESIMUserItem::NewL();
		//item = static_cast<CESIMUserItem*>(iUserItemList[aUserIndex]);
		item->SetNameL(static_cast<CESIMUserItem*>(iUserItemList[aUserIndex])->Name()->AllocL());
		item->SetSipAddressL(static_cast<CESIMUserItem*>(iUserItemList[aUserIndex])->SipAddress()->AllocL());
// 		item->SetMessageL(static_cast<CESIMUserItem*>(iUserItemList[aUserIndex])->Message()->AllocL());

		(static_cast<CESIMGroupItem*>(iGroupItemList[aGroupIndex]))->ItemList().Append(item);
	}

// ----------------------------------------------------
// CESIMItemEngine::RemoveUserFromGroup(TInt aUserIndex, TInt aGroupIndex)
// ----------------------------------------------------
// 
void CESIMItemEngine::RemoveUserFromGroup(TInt aUserIndex, TInt aGroupIndex)
	{
	if(aGroupIndex > iGroupItemList.Count()||aUserIndex > iGroupItemList[aGroupIndex]->ItemList().Count())
		return;

	CESIMUserItem* item = static_cast<CESIMUserItem*>(iGroupItemList[aGroupIndex]->ItemList()[aUserIndex]);
	iGroupItemList[aGroupIndex]->ItemList().Remove(aUserIndex);
	delete item;

	}

// ----------------------------------------------------
// CESIMItemEngine::NewUserFormL()
// ----------------------------------------------------
// 
void CESIMItemEngine::NewUserFormL()
	{
	CESIMUserItem* item = CESIMUserItem::NewL();
	TBool saveState = EFalse;
	CESIMUserItemForm* form = CESIMUserItemForm::NewL(*item, saveState);
	form->ExecuteLD(R_OPPONENTFORM_FORM_DIALOG);
	if(saveState)
	{
		for(TInt i=0;i<iUserItemList.Count();i++)
		{
			CESIMUserItem* tmp = static_cast<CESIMUserItem*>(iUserItemList[i]);
			if((*tmp->SipAddress()).Compare(*item->SipAddress()) == 0)
			{
				CESIMAppUi::ShowConformationNote(_L("The User has exist !"));
				delete item;
				return;
			}
		}
		iUserItemList.Append(item);
	}

	}

void CESIMItemEngine::NewGroupFormL()
{
	CESIMGroupItem* item = CESIMGroupItem::NewL();
	TBool saveState = EFalse;
	CESIMGroupItemForm* form = CESIMGroupItemForm::NewL(*item, saveState);
	form->ExecuteLD(R_ESIM_GROUP_FORM_DIALOG);
	if(saveState)
	{
		for(TInt i=0;i<iGroupItemList.Count();i++)
		{
			CESIMGroupItem* tmp = static_cast<CESIMGroupItem*>(iGroupItemList[i]);
			if((*tmp->SipAddress()).Compare(*item->SipAddress()) == 0)
			{
				CESIMAppUi::ShowConformationNote(_L("The Group has exist !"));
				delete item;
				return;
			}
		}
		iGroupItemList.Append(item);
	}

}
// ----------------------------------------------------
// CESIMItemEngine::EditUserFormL()
// ----------------------------------------------------
// 
void CESIMItemEngine::EditUserFormL(TInt aIndex)
	{
	if(aIndex > iUserItemList.Count())
		return;
	
	CESIMUserItem* item = iUserItemList[aIndex];
	TBool saveState = EFalse;
	CESIMUserItemForm* form = CESIMUserItemForm::NewL(*item, saveState);
	form->ExecuteLD(R_OPPONENTFORM_FORM_DIALOG);

	}

void CESIMItemEngine::EditGroupFormL(TInt aIndex)
{
	if(aIndex > iGroupItemList.Count())
		return;

	CESIMGroupItem* item = iGroupItemList[aIndex];
	TBool saveState = EFalse;
	CESIMGroupItemForm* form = CESIMGroupItemForm::NewL(*item, saveState);
	form->ExecuteLD(R_ESIM_GROUP_FORM_DIALOG);

}
// ----------------------------------------------------
// CESIMItemEngine::CreateGroupL()
// ----------------------------------------------------
// 
void CESIMItemEngine::CreateGroupL()
	{
	HBufC* groupName = HBufC::NewLC( KMaxGroupNameLength );
    TPtr ptr( groupName->Des() );
	HBufC* prompt = StringLoader::LoadLC( R_ESIM_CREATE_GROUP_MESSAGE );
	CAknTextQueryDialog* dlg = new (ELeave) CAknTextQueryDialog( ptr,
                                                CAknQueryDialog::ENoTone );
	CleanupStack::PushL( dlg );
    dlg->SetPromptL( *prompt );
    dlg->SetMaxLength( KMaxTextLength );

    if( dlg->ExecuteLD( R_ESIM_TEXTBOX_QUERY ) )
	{
		//Create contactGroup
	    CESIMGroupItem* groupItem = CESIMGroupItem::NewL();
		groupItem->SetNameL(groupName->Alloc());
		iGroupItemList.Append(groupItem);
	}

    CleanupStack::Pop( dlg );
    CleanupStack::PopAndDestroy( prompt );
	CleanupStack::PopAndDestroy( groupName ); // pbkContactEng
	}

// ----------------------------------------------------------------------------
// CESIMItemEngine::OpenTextBoxQueryL()
// Display of Data Query.
// ----------------------------------------------------------------------------
//
//TBool CESIMItemEngine::OpenTextBoxQueryL(const TInt aTextResourceId,
//                                               TPtr aTextData,
//											   TInt aTextLength)
//    {
//    HBufC* prompt = StringLoader::LoadLC( aTextResourceId );
//    // aTextData is smaller than 40 so this does not crash
//    TBuf<KMaxTextBoxQueryLength> text = aTextData;
//
//    CAknTextQueryDialog* dlg = new (ELeave) CAknTextQueryDialog( text,
//                                                CAknQueryDialog::ENoTone );
//
//    CleanupStack::PushL( dlg );
//    dlg->SetPromptL( *prompt );
//    dlg->SetMaxLength( aTextLength );
//
//    TBool answer( dlg->ExecuteLD( R_ESIM_TEXTBOX_QUERY ) );
//    CleanupStack::Pop( dlg );
//    CleanupStack::PopAndDestroy( prompt );
//    aTextData = text;
//    return answer;
//    }


// ----------------------------------------------------
// CESIMItemEngine::GetUsersFromSelectedGroupL()
// ----------------------------------------------------
// 
RPointerArray<CESIMUserItem>& CESIMItemEngine::GetUsersFromSelectedGroupL()
	{
		return iGroupItemList[iCurrentGroupIndex]->ItemList();
	}

// ----------------------------------------------------
// CESIMItemEngine::GetUsersFromSelectedGroupL()
// ----------------------------------------------------
// 
void CESIMItemEngine::SetCurrentGroupIndex(TInt aIndex)
	{
		iCurrentGroupIndex = aIndex;
	}

// ----------------------------------------------------
// CESIMItemEngine::GetUsersFromSelectedGroupL()
// ----------------------------------------------------
// 
TInt CESIMItemEngine::GetCurrentGrouuIndex( )
	{
		return iCurrentGroupIndex;
	}

void CESIMItemEngine::SetCurrentUserIndex(TInt aIndex)
{
	iCurrentUserIndex = aIndex;
}

TInt CESIMItemEngine::GetCurrentUserIndex( )
{
	return iCurrentUserIndex;
}

// ----------------------------------------------------
// CESIMItemEngine::GetUsersFromSelectedGroupL()
// ----------------------------------------------------
// 
void CESIMItemEngine::SetCurrentGroupName( TInt aIndex )
	{
		iGroupName = iGroupItemList[aIndex]->Name()->Des();
	}
// ----------------------------------------------------
// CESIMItemEngine::GetUsersFromSelectedGroupL()
// ----------------------------------------------------
// 
TDes& CESIMItemEngine::ReturnCurrentGroupName()
{
	return iGroupName;
}
// End of File

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -