示例#1
0
 void Console::customEvent ( QEvent * event )
 {
     if ( event->type() ==  MessageEvent::eventClassType() )
     {
         MessageEvent * me = (MessageEvent*) event;
         if ( me->isCustomCharFormatSet() )
             append( me->message(), me->msgType(), me->charFormat() );
         else
             append( me->message(), me->msgType() );
     }
 }
示例#2
0
文件: historydlg.cpp 项目: AlekSi/psi
void HistoryDlg::exportHistory(const QString &fname)
{
	QFile f(fname);
	if(!f.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text)) {
		QMessageBox::information(this, tr("Error"), tr("Error writing to file."));
		return;
	}
	QTextStream stream(&f);

	QString us = d->pa->nick();
	UserListItem *u = d->pa->findFirstRelevant(d->jid);
	QString them = JIDUtil::nickOrJid(u->name(), u->jid().full());

	d->exp = new EDBHandle(d->pa->edb());
	QString id;
	while(1) {
		if(id.isEmpty()) {
			d->exp->getOldest(d->jid, 1000);
		} else {
			d->exp->get(d->jid, id, EDB::Forward, 1000);
		}
		while(d->exp->busy()) {
			qApp->processEvents();
		}

		const EDBResult *r = d->exp->result();
		if(!r) {
			break;
		}
		if(r->count() <= 0) {
			break;
		}

		// events are in forward order
		for(int i = 0; i < r->count(); ++i) {
			EDBItem* item = r->value(i);
			id = item->nextId();
			PsiEvent *e = item->event();
			QString txt;

			QDateTime dt = e->timeStamp();
			QString ts;
			//ts.sprintf("%04d/%02d/%02d %02d:%02d:%02d", dt.date().year(), dt.date().month(), dt.date().day(), dt.time().hour(), dt.time().minute(), dt.time().second());
			ts = dt.toString(Qt::LocalDate);

			QString nick;
			if(e->originLocal()) {
				nick = us;
			} else {
				nick = them;
			}

			QString heading = QString("(%1) ").arg(ts) + nick + ": ";
			if(e->type() == PsiEvent::Message) {
				MessageEvent *me = (MessageEvent *)e;
				stream << heading << endl;

				QStringList lines = me->message().body().split('\n', QString::KeepEmptyParts);
				foreach(const QString& str, lines) {
					QStringList sub = wrapString(str, 72);
					foreach(const QString& str2, sub) {
						txt += QString("    ") + str2 + '\n';
					}
				}
			}