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() ); } }
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'; } } }