Beispiel #1
0
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();
}
Beispiel #2
0
//	send the broadcast message to all selected users
void lmcBroadcastWindow::sendMessage(void) {
	//	return if text box is empty
	if(ui.txtMessage->document()->isEmpty())
		return;

	//	send only if connected
	if(bConnected) {
		QString szHtmlMessage(ui.txtMessage->toHtml());
		encodeMessage(&szHtmlMessage);
		QTextDocument docMessage;
		docMessage.setHtml(szHtmlMessage);
		QString szMessage(docMessage.toPlainText());
		
		//	send broadcast
		int sendCount = 0;
		XmlMessage xmlMessage;
		xmlMessage.addData(XN_BROADCAST, szMessage);
		for(int index = 0; index < ui.tvUserList->topLevelItemCount(); index++) {
			for(int childIndex = 0; childIndex < ui.tvUserList->topLevelItem(index)->childCount(); childIndex++) {
				QTreeWidgetItem* item = ui.tvUserList->topLevelItem(index)->child(childIndex);
				if(item->checkState(0) == Qt::Checked) {
                    QString szUserId = item->data(0, IdRole).toString();
					emit messageSent(MT_Broadcast, &szUserId, &xmlMessage);
					sendCount++;
				}
			}
		}

		if(sendCount == 0) {
			QMessageBox::warning(this, tr("No recipient selected"), 
				tr("Please select at least one recipient to send a broadcast."));
			return;
		}

		ui.txtMessage->clear();
		close();
	}
}