本文整理汇总了C++中XmlMessage::addData方法的典型用法代码示例。如果您正苦于以下问题:C++ XmlMessage::addData方法的具体用法?C++ XmlMessage::addData怎么用?C++ XmlMessage::addData使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XmlMessage
的用法示例。
在下文中一共展示了XmlMessage::addData方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: removeUser
void lmcChatRoomWindow::removeUser(QString* lpszUserId) {
QTreeWidgetItem* pItem = getUserItem(lpszUserId);
if(!pItem)
return;
QTreeWidgetItem* pGroup = pItem->parent();
pGroup->removeChild(pItem);
QString userId = peerIds.value(*lpszUserId);
QString userName = peerNames.value(*lpszUserId);
peerIds.remove(*lpszUserId);
peerNames.remove(*lpszUserId);
if(groupMode) {
XmlMessage xmlMessage;
xmlMessage.addData(XN_THREAD, threadId);
xmlMessage.addData(XN_GROUPMSGOP, GroupMsgOpNames[GMO_Leave]);
appendMessageLog(MT_Leave, &userId, &userName, &xmlMessage);
setWindowTitle(getWindowTitle());
}
// If the local user is removed for some reason, prevent sending any further messages
if(userId.compare(localId) == 0)
ui.txtMessage->setEnabled(false);
}
示例2: selectContacts
void lmcChatRoomWindow::selectContacts(QStringList* selectedContacts) {
XmlMessage xmlMessage;
xmlMessage.addData(XN_THREAD, threadId);
xmlMessage.addData(XN_GROUPMSGOP, GroupMsgOpNames[GMO_Request]);
for(int index = 0; index < selectedContacts->count(); index++) {
QString userId = selectedContacts->value(index);
emit messageSent(MT_GroupMessage, &userId, &xmlMessage);
}
}
示例3: updateUser
void lmcMessaging::updateUser(MessageType type, QString szUserId, QString szUserData) {
User* pUser = getUser(&szUserId);
if(!pUser)
return;
XmlMessage updateMsg;
switch(type) {
case MT_Status:
if(pUser->status.compare(szUserData) != 0) {
QString oldStatus = pUser->status;
pUser->status = szUserData;
int statusIndex = Helper::statusIndexFromCode(oldStatus);
if(statusType[statusIndex] == StatusTypeOffline) // old status is offline
emit messageReceived(MT_Announce, &szUserId, NULL);
updateMsg.addData(XN_STATUS, pUser->status);
emit messageReceived(MT_Status, &szUserId, &updateMsg);
statusIndex = Helper::statusIndexFromCode(pUser->status);
if(statusType[statusIndex] == StatusTypeOffline) { // new status is offline
// Send a dummy xml message. A non null xml message implies that the
// user is only in offline status, and not actually offline.
XmlMessage xmlMessage;
emit messageReceived(MT_Depart, &szUserId, &xmlMessage);
}
}
break;
case MT_UserName:
if(pUser->name.compare(szUserData) != 0) {
pUser->name = szUserData;
updateMsg.addData(XN_NAME, pUser->name);
emit messageReceived(MT_UserName, &szUserId, &updateMsg);
}
break;
case MT_Note:
if(pUser->note.compare(szUserData) != 0) {
pUser->note = szUserData;
updateMsg.addData(XN_NOTE, pUser->note);
emit messageReceived(MT_Note, &szUserId, &updateMsg);
}
break;
case MT_Group:
pUser->group = szUserData;
userGroupMap.insert(pUser->id, pUser->group);
saveGroups();
break;
case MT_Avatar:
pUser->avatarPath = szUserData;
break;
default:
break;
}
}
示例4: addUser
void lmcChatRoomWindow::addUser(User* pUser)
{
if(!pUser)
return;
// Do not add user if user's version is 1.2.10 or less. These versions do not
// support Public Chat feature.
if(Helper::compareVersions(pUser->version, "1.2.10") <= 0)
return;
// Do not add user if user is already in the list of participants
if(peerIds.contains(pUser->id))
return;
peerIds.insert(pUser->id, pUser->id);
peerNames.insert(pUser->id, pUser->name);
int index = Helper::statusIndexFromCode(pUser->status);
lmcUserTreeWidgetUserItem *pItem = new lmcUserTreeWidgetUserItem();
pItem->setData(0, IdRole, pUser->id);
pItem->setData(0, TypeRole, "User");
pItem->setData(0, StatusRole, index);
pItem->setData(0, SubtextRole, pUser->note);
pItem->setText(0, pUser->name);
if(index != -1)
pItem->setIcon(0, QIcon(QPixmap(statusPic[index], "PNG")));
lmcUserTreeWidgetGroupItem* pGroupItem = (lmcUserTreeWidgetGroupItem*)getGroupItem(&GroupId);
pGroupItem->addChild(pItem);
pGroupItem->sortChildren(0, Qt::AscendingOrder);
// this should be called after item has been added to tree
setUserAvatar(&pUser->id);
if(groupMode) {
XmlMessage xmlMessage;
xmlMessage.addData(XN_THREAD, threadId);
xmlMessage.addData(XN_GROUPMSGOP, GroupMsgOpNames[GMO_Join]);
appendMessageLog(MT_Join, &pUser->id, &pUser->name, &xmlMessage);
setWindowTitle(getWindowTitle());
emit messageSent(MT_GroupMessage, NULL, &xmlMessage);
}
// Local user cannot participate in public chat if status is offline
if(!groupMode && pUser->id.compare(localId) == 0) {
bool offline = (statusType[Helper::statusIndexFromCode(pUser->status)] == StatusTypeOffline);
ui.txtMessage->setEnabled(!offline);
ui.txtMessage->setFocus();
}
}
示例5: sendUserData
void lmcMessaging::sendUserData(MessageType type, QueryOp op, QString* lpszUserId, QString* lpszAddress) {
lmctrace("Sending local user details to user " + *lpszUserId + " at " + *lpszAddress);
XmlMessage xmlMessage;
xmlMessage.addData(XN_USERID, localUser->id);
xmlMessage.addData(XN_NAME, localUser->name);
xmlMessage.addData(XN_ADDRESS, localUser->address);
xmlMessage.addData(XN_VERSION, localUser->version);
xmlMessage.addData(XN_STATUS, localUser->status);
xmlMessage.addData(XN_NOTE, localUser->note);
xmlMessage.addData(XN_QUERYOP, QueryOpNames[op]);
QString szMessage = addHeader(type, msgId, &localUser->id, lpszUserId, &xmlMessage);
pNetwork->sendMessage(lpszUserId, lpszAddress, &szMessage);
}
示例6: userFileAction_triggered
void lmcChatRoomWindow::userFileAction_triggered(void) {
QString userId = ui.tvUserList->currentItem()->data(0, IdRole).toString();
QString dir = pSettings->value(IDS_OPENPATH, IDS_OPENPATH_VAL).toString();
QString fileName = QFileDialog::getOpenFileName(this, QString(), dir);
if(!fileName.isEmpty()) {
pSettings->setValue(IDS_OPENPATH, QFileInfo(fileName).dir().absolutePath());
XmlMessage xmlMessage;
xmlMessage.addData(XN_MODE, FileModeNames[FM_Send]);
xmlMessage.addData(XN_FILETYPE, FileTypeNames[FT_Normal]);
xmlMessage.addData(XN_FILEOP, FileOpNames[FO_Request]);
xmlMessage.addData(XN_FILEPATH, fileName);
emit messageSent(MT_LocalFile, &userId, &xmlMessage);
}
}
示例7: closeEvent
void lmcChatRoomWindow::closeEvent(QCloseEvent* pEvent) {
if(groupMode) {
XmlMessage xmlMessage;
xmlMessage.addData(XN_THREAD, threadId);
xmlMessage.addData(XN_GROUPMSGOP, GroupMsgOpNames[GMO_Leave]);
emit messageSent(MT_GroupMessage, NULL, &xmlMessage);
// call stop procedure to save history
stop();
emit closed(&threadId);
}
QWidget::closeEvent(pEvent);
}
示例8: addUser
bool lmcMessaging::addUser(QString szUserId, QString szVersion, QString szAddress, QString szName, QString szStatus,
QString szAvatar, QString szNote, QString szCaps) {
for(int index = 0; index < userList.count(); index++)
if(userList[index].id.compare(szUserId) == 0)
return false;
lmcTrace::write("Adding new user: " + szUserId + ", " + szVersion + ", " + szAddress);
if(!userGroupMap.contains(szUserId) || !groupList.contains(Group(userGroupMap.value(szUserId))))
userGroupMap.insert(szUserId, GRP_DEFAULT_ID);
int nAvatar = szAvatar.isNull() ? -1 : szAvatar.toInt();
userList.append(User(szUserId, szVersion, szAddress, szName, szStatus, userGroupMap[szUserId],
nAvatar, szNote, QString::null, szCaps));
if(!szStatus.isNull()) {
XmlMessage xmlMessage;
xmlMessage.addHeader(XN_FROM, szUserId);
xmlMessage.addData(XN_STATUS, szStatus);
// send a status message to app layer, this is different from announce message
emit messageReceived(MT_Status, &szUserId, &xmlMessage);
int statusIndex = Helper::statusIndexFromCode(szStatus);
if(statusType[statusIndex] == StatusTypeOffline) // offline status
return false; // no need to send a new user message to app layer
}
emit messageReceived(MT_Announce, &szUserId, NULL);
return true;
}
示例9: btnCancel_clicked
void lmcTransferWindow::btnCancel_clicked(void) {
FileView* view = ui.lvTransferList->currentItem();
int mode = view->mode == FileView::TM_Send ? FM_Send : FM_Receive;
XmlMessage xmlMessage;
xmlMessage.addData(XN_MODE, FileModeNames[mode]);
xmlMessage.addData(XN_FILETYPE, FileTypeNames[FT_Normal]);
xmlMessage.addData(XN_FILEOP, FileOpNames[FO_Cancel]);
xmlMessage.addData(XN_FILEID, view->id);
emit messageSent((MessageType)view->type, &view->userId, &xmlMessage);
view->state = FileView::TS_Cancel;
ui.lvTransferList->itemChanged(ui.lvTransferList->currentRow());
setButtonState(view->state);
}
示例10: checkPendingMsg
void lmcMessaging::checkPendingMsg(void) {
for(int index = 0; index < pendingList.count(); index++) {
// check if message has timed out
if(pendingList[index].active && pendingList[index].timeStamp.msecsTo(QDateTime::currentDateTime()) > nTimeout) {
if(pendingList[index].retry < nMaxRetry) {
// send the message once more
pendingList[index].retry++;
pendingList[index].timeStamp = QDateTime::currentDateTime();
resendMessage(pendingList[index].type, pendingList[index].msgId, &pendingList[index].userId, &pendingList[index].xmlMessage);
}
else {
XmlMessage statusMsg;
// max retries exceeded. mark message as failed.
switch(pendingList[index].type) {
case MT_Message:
emit messageReceived(MT_Failed, &pendingList[index].userId, &pendingList[index].xmlMessage);
break;
case MT_Ping:
statusMsg.addData(XN_STATUS, statusCode[ST_COUNT - 1]);
emit messageReceived(MT_Status, &pendingList[index].userId, &statusMsg);
emit messageReceived(MT_Depart, &pendingList[index].userId, NULL);
removeUser(pendingList[index].userId);
break;
default:
break;
}
pendingList[index].active = false;
pendingList.removeAt(index);
index--; // since next item will have this index now
}
}
}
}
示例11: raiseError
void lmcWebNetwork::raiseError(ErrorType type)
{
XmlMessage xmlMessage;
xmlMessage.addHeader(XN_TYPE, MessageTypeNames[MT_WebFailed]);
xmlMessage.addData(XN_ERROR, ErrorTypeNames[type]);
QString szMessage = xmlMessage.toString();
emit messageReceived(&szMessage);
}
示例12: sendMessage
void lmcChatRoomWindow::sendMessage(void) {
if(ui.txtMessage->document()->isEmpty())
return;
if(bConnected) {
QString szHtmlMessage(ui.txtMessage->toHtml());
encodeMessage(&szHtmlMessage);
QTextDocument docMessage;
docMessage.setHtml(szHtmlMessage);
QString szMessage = docMessage.toPlainText();
QFont font = ui.txtMessage->font();
font.setPointSize(ui.txtMessage->fontPointSize());
MessageType type = groupMode ? MT_GroupMessage : MT_PublicMessage;
XmlMessage xmlMessage;
xmlMessage.addHeader(XN_TIME, QString::number(QDateTime::currentDateTime().toMSecsSinceEpoch()));
xmlMessage.addData(XN_FONT, font.toString());
xmlMessage.addData(XN_COLOR, messageColor.name());
xmlMessage.addData(XN_MESSAGE, szMessage);
if(groupMode) {
xmlMessage.addData(XN_THREAD, threadId);
xmlMessage.addData(XN_GROUPMSGOP, GroupMsgOpNames[GMO_Message]);
}
appendMessageLog(type, &localId, &localName, &xmlMessage);
if(groupMode) {
QHash<QString, QString>::const_iterator index = peerIds.constBegin();
while (index != peerIds.constEnd()) {
QString userId = index.value();
emit messageSent(type, &userId, &xmlMessage);
index++;
}
} else
emit messageSent(type, NULL, &xmlMessage);
}
else
appendMessageLog(MT_Error, NULL, NULL, NULL);
ui.txtMessage->clear();
ui.txtMessage->setFocus();
}
示例13: removeUser
void lmcMessaging::removeUser(QString szUserId) {
for(int index = 0; index < userList.count(); index++)
if(userList.value(index).id.compare(szUserId) == 0) {
XmlMessage statusMsg;
statusMsg.addData(XN_STATUS, statusCode[ST_COUNT - 1]);
emit messageReceived(MT_Status, &szUserId, &statusMsg);
emit messageReceived(MT_Depart, &szUserId, NULL);
userList.removeAt(index);
return;
}
}
示例14: receiveProgress
void lmcMessaging::receiveProgress(QString* lpszUserId, QString* lpszData)
{
XmlMessage xmlMessage(*lpszData);
int fileMode = indexOf( FileModeNames, FM_Max, xmlMessage.data(XN_MODE) );
int fileOp = indexOf( FileOpNames, FO_Max, xmlMessage.data(XN_FILEOP) );
int fileType = indexOf( FileTypeNames, FT_Max, xmlMessage.data(XN_FILETYPE) );
QString fileId = xmlMessage.data(XN_FILEID);
// determine type of message to be sent to app layer based on file type
MessageType type;
switch(fileType)
{
case FT_Normal:
type = MT_File;
break;
case FT_Avatar:
type = MT_Avatar;
break;
default:
type = MT_Blank;
break;
}
XmlMessage reply;
switch(fileOp) {
case FO_Error:
reply.addData(XN_MODE, FileModeNames[fileMode]);
reply.addData(XN_FILETYPE, FileTypeNames[fileType]);
reply.addData(XN_FILEOP, FileOpNames[FO_Abort]);
reply.addData(XN_FILEID, fileId);
sendMessage(type, lpszUserId, &reply);
emit messageReceived(type, lpszUserId, &xmlMessage);
break;
case FO_Progress:
case FO_Complete:
emit messageReceived(type, lpszUserId, &xmlMessage);
break;
}
}
示例15: settingsChanged
void lmcMessaging::settingsChanged(void) {
nTimeout = pSettings->value(IDS_TIMEOUT, IDS_TIMEOUT_VAL).toInt() * 1000;
nMaxRetry = pSettings->value(IDS_MAXRETRIES, IDS_MAXRETRIES_VAL).toInt();
pNetwork->settingsChanged();
QString userName = getUserName();
if(localUser->name.compare(userName) != 0) {
localUser->name = userName;
XmlMessage xmlMessage;
xmlMessage.addData(XN_NAME, userName);
sendMessage(MT_UserName, NULL, &xmlMessage);
}
}