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

📄 adapters.cpp

📁 symbina上可以使用一个xml解析器,对开发网络应用很有好处
💻 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 + -