系统名片夹的操作
来源:互联网 发布:c语言程序员 编辑:程序博客网 时间:2024/06/10 11:40
//是把名片夹以窗口的方式打开。
//#include <cpbkviewstate.h>
//ReadDeviceData WriteDeviceData
//PbkView.lib
void CLEDPointAppUi::OpenInfraredL()
{
CPbkViewState* pbkViewParam = CPbkViewState::NewLC();
pbkViewParam->SetFocusedContactId(0);
// Package and return object in a buffer.
HBufC8* paramBuf = pbkViewParam->PackLC();
//名片夹的UID
const TUid appUid =
{
0x101f4cce
};
//打开页面
CCoeAppUi::ActivateViewL(TVwsViewId(appUid, TUid::Uid(1)),
CPbkViewState::Uid(), *paramBuf);
// Cleanup
CleanupStack::PopAndDestroy(2); // paramBuf, pbkViewParam
}
名片中字段对应的枚举值
EPbkFieldIdLastName 姓
EPbkFieldIdFirstName 名
EPbkFieldIdPhoneNumberMobile 手机号
EPbkFieldIdPhoneNumberStandard 电话号码
EPbkFieldIdEmailAddress 电子邮件
EPbkFieldIdCompanyName 公司
EPbkFieldIdJobTitle 职位
EPbkFieldIdFaxNumber 传真
//----------------------------------------打开名片夹窗口----------------------------------------
CPbkViewState* pbkViewParam = CPbkViewState::NewLC();
pbkViewParam->SetFocusedContactId(0); //这个是在本窗口设置选中的ID
// Package and return object in a buffer.
HBufC8* paramBuf = pbkViewParam->PackLC();
//名片夹的UID
const TUid appUid =
{
0x101f4cce
};
//打开页面
CCoeEnv::Static()->AppUi()->ActivateViewL(TVwsViewId(appUid, TUid::Uid(1)),
CPbkViewState::Uid(), *paramBuf);
CleanupStack::PopAndDestroy(2); // paramBuf, pbkViewParam
//----------------------------------------创建一条新名片----------------------------------------
//其中iPbkContactEngine是类的成员变量
//通讯录
//iPbkContactEngine = CPbkContactEngine::NewL();
RPbkViewResourceFile phonebookResource(*(CEikonEnv::Static()));
if (!phonebookResource.IsOpen())
{
phonebookResource.OpenL();
}
CPbkContactItem* contactItem = iPbkContactEngine->CreateEmptyContactL();
CleanupStack::PushL(contactItem);
CPbkContactEditorDlg* editor = CPbkContactEditorDlg::NewL(
*iPbkContactEngine, *contactItem, ETrue);
TContactItemId id = editor->ExecuteLD();
CleanupStack::PopAndDestroy(contactItem);
phonebookResource.Close();
//----------------------------------------创建一条新的名片,设置默认的字段----------------------------------------
//其中iPbkContactEngine是类的成员变量
//通讯录
//iPbkContactEngine = CPbkContactEngine::NewL();
RPbkViewResourceFile phonebookResource(*(CEikonEnv::Static()));
if (!phonebookResource.IsOpen())
{
phonebookResource.OpenL();
}
CPbkContactItem* contactItem = iPbkContactEngine->CreateEmptyContactL();
CleanupStack::PushL(contactItem);
//设置字段的内容
TPbkContactItemField* fieldFirstName = contactItem->FindField(EPbkFieldIdFirstName);
fieldFirstName->TextStorage()->SetTextL(_L("Costya"));
CPbkContactEditorDlg* editor = CPbkContactEditorDlg::NewL(
*iPbkContactEngine, *contactItem, ETrue);
TContactItemId id = editor->ExecuteLD();
CleanupStack::PopAndDestroy(contactItem);
phonebookResource.Close(); // Close the phonebook view
//----------------------------------------修改一个名片----------------------------------------
//获取记录的TContactItem Id
TContactItemId tId = iAllRecord[aId]->iRecordID;
RPbkViewResourceFile phonebookResource(*(CEikonEnv::Static()));
if (!phonebookResource.IsOpen())
{
phonebookResource.OpenL();
}
CPbkContactItem* contactItem = iPbkContactEngine->OpenContactL(tId);
CleanupStack::PushL(contactItem);
CPbkContactEditorDlg* editor = CPbkContactEditorDlg::NewL(
*iPbkContactEngine, *contactItem, EFalse);
TContactItemId id = editor->ExecuteLD();
CleanupStack::PopAndDestroy(contactItem);
iPbkContactEngine->CloseContactL(tId);
phonebookResource.Close();
//----------------------------------------查找一个名片----------------------------------------
//获取联系人通讯录TContactItemId
TContactItemId tID = iAllRecord[aId]->iRecordID;
CPbkContactItem* pContactItem = iPbkContactEngine->OpenContactL(tID);
//记录集为空就执行下一条记录
if (pContactItem == NULL)
{
return;
}
//如果不是查找的记录,就执行下一行
if (tID != pContactItem->Id())
{
return;
}
//是查找的记录,下面开始组装名片字符串
TPbkContactItemField* pCntField;
TBuf<500> bValue;
TBuf<100> bName;
//得到姓
bValue.Zero();
pCntField = pContactItem->FindField(EPbkFieldIdLastName);
if (pCntField)
{
pCntField->GetTextL(bValue);
bName.Zero();
CEikonEnv::Static()->ReadResource(bName, R_CARD_FIRST_NAME);
bCard.Append(bName);
bCard.Append(bValue);
bCard.Append(KRN);
}
//得到名称
bValue.Zero();
pCntField = pContactItem->FindField(EPbkFieldIdFirstName);
if (pCntField)
{
pCntField->GetTextL(bValue);
bName.Zero();
CEikonEnv::Static()->ReadResource(bName, R_CARD_LAST_NAME);
bCard.Append(bName);
bCard.Append(bValue);
bCard.Append(KRN);
}
//得到手机号
bValue.Zero();
pCntField = pContactItem->FindField(EPbkFieldIdPhoneNumberMobile);
if (pCntField)
{
pCntField->GetTextL(bValue);
bName.Zero();
CEikonEnv::Static()->ReadResource(bName, R_CARD_PHONE);
bCard.Append(bName);
bCard.Append(bValue);
bCard.Append(KRN);
}
delete pContactItem;
pContactItem = NULL;
iPbkContactEngine->CloseContactL(tID);
//到此,bCard中就是获取名片的信息了。
//----------------------------------------当名片夹有变化的时候----------------------------------------
class CControl : public CBase,
public MPbkContactDbObserver
{
public:
//当通讯录有变化的时候,系统就会自动调用此函数
virtual void HandleDatabaseEventL(TContactDbObserverEvent aEvent);
private:
//通讯录引擎
CPbkContactEngine* iPbkContactEngine;
//通讯录监控类
CPbkContactChangeNotifier* iPbkContactNotifier;
}
void CXXX::ConstructL()
{
//创建通讯录引擎
iPbkContactEngine = CPbkContactEngine::NewL();
//创建事件通知类
iPbkContactNotifier = CPbkContactChangeNotifier::NewL(*iPbkContactEngine, this);
}
void CXXX::HandleDatabaseEventL(TContactDbObserverEvent aEvent)
{
// The changed item.
TContactItemId contactId = aEvent.iContactId;
switch (aEvent.iType)
{
//当修改通讯录的时候
case EContactDbObserverEventContactChanged:
{
break;
}
//删除通讯录的时候
case EContactDbObserverEventContactDeleted:
{
break;
}
//添加通讯录的时候
case EContactDbObserverEventContactAdded:
{
break;
}
default:
{
}
break;
}
}
//----------------------------------------打开某一个联系人的详情页面----------------------------------------
//获取记录的TContactItem Id
TContactItemId tId = //名片的TContactItem
const TUid appUid =
{
0x101f4cce
};
const TUid KExtViewUid =
{
4
}; // 对应信息页面的view uid
CPbkViewState* pbkViewParam = CPbkViewState::NewLC();
TInt contact_id = tId;
pbkViewParam->SetFocusedContactId(contact_id);
HBufC8* paramBuf = pbkViewParam->PackLC();
CCoeEnv::Static()->AppUi()->ActivateViewL(TVwsViewId(appUid, KExtViewUid), CPbkViewState::Uid(),
*paramBuf);
CleanupStack::PopAndDestroy(2); // paramBuf, pbkViewPara
//---------------------在通讯录中,当一个人有多个手机的时候,拨打此人的电话,就弹出电话号码选择框。-------------------------------
RPbkViewResourceFile pbkViewResourceFile(*CCoeEnv::Static());
pbkViewResourceFile.OpenL();
const TContactItemId cid = //获取通讯录中的ID;
TBuf<128> phoneNumber;
TBuf<128> phoneName;
TBool namefound = EFalse;
CPbkContactItem* pbkItem = iPbkContactEngine->ReadContactLC(cid);
CPbkPhoneNumberSelect* dlg = new (ELeave) CPbkPhoneNumberSelect();
CPbkPhoneNumberSelect::TParams addparams(*pbkItem);
TBool selected = dlg->ExecuteLD(addparams);
if (selected)
{
//得到选择的字段,如移动、移动(办公)、电话、家庭电话,通过numtmp->Label()你能找到额外的字段标签
const TPbkContactItemField* numtmp = addparams.SelectedField();
if (numtmp)
{
phoneNumber = numtmp->Text();
}
TPbkContactItemField* nametmp;
if ((nametmp = pbkItem->FindField(EPbkFieldIdFirstName)) != NULL)
{
phoneName = nametmp->Text();
if (phoneName.Length() > 0)
{
namefound = ETrue;
}
}
if ((nametmp = pbkItem->FindField(EPbkFieldIdLastName)) != NULL)
{
if (namefound)
{
phoneName.Append(_L(" "));
phoneName.Append(nametmp->Text());
}
else
{
phoneName = nametmp->Text();
}
}
}
CleanupStack::PopAndDestroy(1);//CPbkContactItem
pbkViewResourceFile.Close();
//如果有电话,就打电话
if (0 < phoneNumber.Length())
{
//到现在,phoneNumber中就是选中的电话号码。
}
- 系统名片夹的操作
- 系统监听名片夹的变化
- 如何监测名片夹数据库的变化?
- 名片自动录入系统的实现(转载)
- 调用名片夹视图选择名片信息
- Symbian 名片操作 新手请看
- 简简单单名片管理系统 免费
- 小巧名片管理系统 下载
- python实现名片管理系统
- 名片的制作
- 名片 - 名片设计的比例
- 名片网的是是非非
- 名片网的是是非非
- 名片网的是是非非
- 名片网的是是非非
- 新设计的名片
- 英语名片的写法
- 奇怪的群名片
- 本文结合大量实例阐述如何编写一个shell脚本
- 用 HTML5 消磨时光
- locating mfc90d.lib
- CSendUi短信操作
- 服务器端编程的十大性能问题
- 系统名片夹的操作
- linux自学之旅_新增驱动步骤
- 大家好
- 大家好,多多帮助
- VC/MFC类向导ClassWizard的Parsing error错误
- 在Managed Bean中给ADF RichTable排序
- .netframewrok离线安装
- ARM学习笔记(四)--ARM体系的存储系统
- 每天学一点flash(67) 上传图片(3)