148
147
d->h = new EDBHandle(d->pa->edb());
149
148
connect(d->h, SIGNAL(finished()), SLOT(edb_finished()));
151
QVBoxLayout *vb1 = new QVBoxLayout(this, 8);
150
QVBoxLayout *vb1 = new QVBoxLayout(this);
152
151
d->lv = new HistoryView(this);
153
152
d->lv->setVScrollBarMode(Q3ScrollView::AlwaysOn);
154
153
connect(d->lv, SIGNAL(aOpenEvent(PsiEvent *)), SLOT(actionOpenEvent(PsiEvent *)));
155
154
QSizePolicy sp = d->lv->sizePolicy();
155
sp.setVerticalStretch(1);
157
156
d->lv->setSizePolicy(sp);
158
157
vb1->addWidget(d->lv);
160
QHBoxLayout *hb1 = new QHBoxLayout(vb1);
162
QVBoxLayout *vb2 = new QVBoxLayout(hb1);
163
QHBoxLayout *hb2 = new QHBoxLayout(vb2);
159
QHBoxLayout *hb1 = new QHBoxLayout;
162
QVBoxLayout *vb2 = new QVBoxLayout;
165
QHBoxLayout *hb2 = new QHBoxLayout;
165
168
//d->busy = new BusyWidget(this);
166
169
//hb1->addWidget(d->busy);
180
183
connect(d->pb_next, SIGNAL(clicked()), SLOT(doNext()));
181
184
hb2->addWidget(d->pb_next);
183
QHBoxLayout *hb3 = new QHBoxLayout(vb2);
186
QHBoxLayout *hb3 = new QHBoxLayout;
185
189
d->le_find = new QLineEdit(this);
186
190
connect(d->le_find, SIGNAL(textChanged(const QString &)), SLOT(le_textChanged(const QString &)));
196
200
sep->setFrameShape(QFrame::VLine);
197
201
hb1->addWidget(sep);
199
QVBoxLayout *vb3 = new QVBoxLayout(hb1);
203
QVBoxLayout *vb3 = new QVBoxLayout;
200
206
QPushButton *pb_save = new QPushButton(tr("&Export..."), this);
201
207
connect(pb_save, SIGNAL(clicked()), SLOT(doSave()));
202
208
vb3->addWidget(pb_save);
338
345
//d->lv->setUpdatesEnabled(false);
340
Q3PtrListIterator<EDBItem> it(*r);
341
if(direction == EDB::Forward)
347
int i = (direction == EDB::Forward) ? r->count()-1 : 0;
344
for(EDBItem *i; (i = it.current()) && (max == -1 ? true : at < max);) {
345
PsiEvent *e = i->event();
346
/*printf(" id=%s", i->id().latin1());
348
printf(", prevId=%s", i->prevId().latin1());
350
printf(", nextId=%s", i->nextId().latin1());
352
if(e->type() == PsiEvent::Message) {
353
MessageEvent *me = (MessageEvent *)e;
354
printf(" body: [%s]\n", me->message().body().latin1());
356
else if(e->type() == PsiEvent::Auth) {
357
AuthEvent *ae = (AuthEvent *)e;
358
printf(" authType: [%s]\n", ae->authType().latin1());
361
printf(" unknown event type\n");
365
d->lv->addEvent(e, i->prevId());
349
while (i >= 0 && i <= r->count()-1 && (max == -1 ? true : at < max)) {
350
EDBItem* item = r->value(i);
351
PsiEvent* e = item->event();
352
d->lv->addEvent(e, item->prevId());
367
if(direction == EDB::Backward)
354
i += (direction == EDB::Forward) ? -1 : +1;
372
356
//d->lv->setUpdatesEnabled(true);
373
357
//d->lv->repaint(true);
379
363
if(d->h->lastRequestType() == EDBHandle::Read && r) {
380
364
//printf("EDB: retrieved %d events:\n", r->count());
381
365
if(r->count() > 0) {
382
Q3PtrListIterator<EDBItem> it(*r);
383
366
if(d->reqtype == 0 || d->reqtype == 1) {
384
367
// events are in backward order
385
368
// first entry is the end event
387
d->id_end = it.current()->id();
388
d->id_next = it.current()->nextId();
369
EDBItem* it = r->first();
370
d->id_end = it->id();
371
d->id_next = it->nextId();
389
372
// last entry is the begin event
391
d->id_begin = it.current()->id();
392
d->id_prev = it.current()->prevId();
374
d->id_begin = it->id();
375
d->id_prev = it->prevId();
393
376
displayResult(r, EDB::Backward);
394
377
//printf("[%s],[%s],[%s],[%s]\n", d->id_prev.latin1(), d->id_begin.latin1(), d->id_end.latin1(), d->id_next.latin1());
396
379
else if(d->reqtype == 2) {
397
380
// events are in forward order
398
381
// last entry is the end event
400
d->id_end = it.current()->id();
401
d->id_next = it.current()->nextId();
382
EDBItem* it = r->last();
383
d->id_end = it->id();
384
d->id_next = it->nextId();
402
385
// first entry is the begin event
404
d->id_begin = it.current()->id();
405
d->id_prev = it.current()->prevId();
387
d->id_begin = it->id();
388
d->id_prev = it->prevId();
406
389
displayResult(r, EDB::Forward);
408
391
else if(d->reqtype == 3) {
409
392
// should only be one entry
410
EDBItem *ei = it.current();
393
EDBItem *ei = r->first();
412
395
d->h->get(d->jid, ei->id(), EDB::Backward, 50);
413
396
//printf("EDB: requesting 50 events backward, starting at %s\n", d->id_prev.latin1());
510
493
// events are in forward order
511
Q3PtrListIterator<EDBItem> it(*r);
512
for(EDBItem *i; (i = it.current()); ++it) {
513
id = it.current()->nextId();
514
PsiEvent *e = i->event();
494
for(int i = 0; i < r->count(); ++i) {
495
EDBItem* item = r->value(i);
497
PsiEvent *e = item->event();
517
500
QDateTime dt = e->timeStamp();
531
514
MessageEvent *me = (MessageEvent *)e;
532
515
stream << heading << endl;
534
QStringList lines = QStringList::split('\n', me->message().body(), true);
535
for(QStringList::ConstIterator lit = lines.begin(); lit != lines.end(); ++lit) {
536
QStringList sub = wrapString(*lit, 72);
537
for(QStringList::ConstIterator lit2 = sub.begin(); lit2 != sub.end(); ++lit2) {
538
txt += QString(" ") + *lit2 + '\n';
517
QStringList lines = me->message().body().split('\n', QString::KeepEmptyParts);
518
foreach(const QString& str, lines) {
519
QStringList sub = wrapString(str, 72);
520
foreach(const QString& str2, sub) {
521
txt += QString(" ") + str2 + '\n';
756
739
QColorGroup mycg = cg;
757
740
if(e->originLocal())
758
mycg.setColor(QColorGroup::Text, Qt::red);
742
mycg.setColor(QColorGroup::Text, PsiOptions::instance()->getOption("options.ui.look.colors.messages.sent").toString() );
760
mycg.setColor(QColorGroup::Text, Qt::blue);
746
mycg.setColor(QColorGroup::Text,PsiOptions::instance()->getOption("options.ui.look.colors.messages.received").toString() );
762
749
if(column == 3) {