📄 adapters.cpp
字号:
/*
** Copyright (C) 2005 Darrell Karbott (djk2005@users.sf.net)
** This code is free software; you can redistribute it and/or modify
** it under the terms of the GNU Public Licence (GPL) version 2 See
** http://www.gnu.org/ for further details of the GPL.
*/
#include "adapters.h"
#include <utf.h>
#include <string.h>
const TInt MAX_DES_LEN = 256;
void Convert(const char* from, TDes& to)
{
to.Zero();
TPtrC8 skinny;
TInt len = strlen(from);
if (len == 0) { return; }
// Truncate.
skinny.Set((const TUint8*)from, len < MAX_DES_LEN - 1 ? len : MAX_DES_LEN - 1);
if (CnvUtfConverter::ConvertToUnicodeFromUtf8(to, skinny) < 0) {
// Give up. Good enough for demo code. In practice this should "never happen".
to = _L("[STRING CONVERSION FAILED!]");
}
to.ZeroTerminate();
}
void Convert(const TDesC& from, TDes8& to)
{
to.Zero();
if (from.Length() == 0) { return; }
if (CnvUtfConverter::ConvertFromUnicodeToUtf8(to, from) < 0) {
// Give up. Good enough for demo code. In practice this should "never happen".
to = _L8("[STRING CONVERSION FAILED!]");
}
to.ZeroTerminate();
}
////////////////////////////////////////////////////////////
MIksDemoUserInterface::~MIksDemoUserInterface() {}
MIksDemoUserInteractions::~MIksDemoUserInteractions() {}
////////////////////////////////////////////////////////////
CIksDemoUserInterfaceAdapter::CIksDemoUserInterfaceAdapter(MIksDemoUserInterface* target) : iTarget(target)
{
User::LeaveIfNull(iTarget);
}
CIksDemoUserInterfaceAdapter::~CIksDemoUserInterfaceAdapter() {}
// Just truncate if the strings are too long.
void CIksDemoUserInterfaceAdapter::displayJabberMsgFrom(const char* from, const char* msg )
{
TBuf<MAX_DES_LEN> fromDes;
TBuf<MAX_DES_LEN> msgDes;
Convert(from, fromDes);
Convert(msg, msgDes);
iTarget->DisplayJabberMsgFrom(fromDes, msgDes);
}
void CIksDemoUserInterfaceAdapter::displayStatusMsg(const char* msg)
{
TBuf<MAX_DES_LEN> msgDes;
Convert(msg, msgDes);
iTarget->DisplayStatusMsg(msgDes);
}
void CIksDemoUserInterfaceAdapter::displayErrorMsg(const char* msg)
{
TBuf<MAX_DES_LEN> msgDes;
Convert(msg, msgDes);
iTarget->DisplayErrorMsg(msgDes);
}
void CIksDemoUserInterfaceAdapter::updateConnectionStatus(int bConnected)
{
iTarget->UpdateConnectionStatus(bConnected ? ETrue : EFalse);
}
////////////////////////////////////////////////////////////
CIksDemoUserInteractionsAdapter::CIksDemoUserInteractionsAdapter(IUserInteractions* target) : iTarget(target)
{
User::LeaveIfNull(iTarget);
}
CIksDemoUserInteractionsAdapter::~CIksDemoUserInteractionsAdapter() {}
TInt CIksDemoUserInteractionsAdapter::Connect(const TDesC& jid, const TDesC& password, TInt port)
{
if ((jid.Length() > MAX_DES_LEN - 1) || (password.Length() > MAX_DES_LEN - 1)) {
return KErrOverflow;
}
TBuf8<MAX_DES_LEN> jidDes;
TBuf8<MAX_DES_LEN> passwordDes;
Convert(jid, jidDes);
Convert(password, passwordDes);
return iTarget->connect((const char*)jidDes.PtrZ(), (const char*)passwordDes.PtrZ(), port)
? KErrNone : KErrGeneral;
}
void CIksDemoUserInteractionsAdapter::Disconnect()
{
iTarget->disconnect();
}
TInt CIksDemoUserInteractionsAdapter::SendMsg(const TDesC& jid, const TDesC& msg)
{
if ((jid.Length() > MAX_DES_LEN - 1) || (msg.Length() > MAX_DES_LEN - 1)) {
return KErrOverflow;
}
TBuf8<MAX_DES_LEN> jidDes;
TBuf8<MAX_DES_LEN> msgDes;
Convert(jid, jidDes);
Convert(msg, msgDes);
return iTarget->sendMsg((const char*)jidDes.PtrZ(), (const char*) msgDes.PtrZ())
? KErrNone : KErrGeneral;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -