/*************************************************************************** * logwindow.cpp * ------------------- * * Revision : $Id$ * begin : Tue Jan 29 2002 * copyright : (C) 2002 by Patrick Charbonnier * : Based On Caitoo v.0.7.3 (c) 1998 - 2000, Matej Koss * email : pch@freeshell.org * ****************************************************************************/ /************************************************************************** * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * ***************************************************************************/ #include #include #include #include #include #include "transfer.h" #include "tdemainwidget.h" #include "logwindow.h" #include #include // // Replace regular space with nbsp // TQString replaceSpaces(const TQString &str) { // TQString res = str; // res.simplifyWhiteSpace(); // int pos; // while ( (pos = res.find(' ')) != -1) { // res.replace(pos, 1, new TQChar( 0x00a0 ), 1); // } // return res; // } static TQString removeHTML(const TQString & str) { TQString res = str; int pos; // replace
with a newline while ((pos = res.find("
")) != -1) { res.replace(pos, 4, "\n"); } // remove all tags while ((pos = res.find('<')) != -1) { int pos2 = res.find('>', pos); if (pos2 == -1) { pos2 = res.length() + 1; } res.remove(pos, pos2 - pos + 1); } return res; } SeparatedLog::SeparatedLog(TQWidget * parent):TQWidget(parent) { idSelected = 0; TQGridLayout *topGridLayout = new TQGridLayout(this, 1, 2, 0, KDialog::spacingHint()); topGridLayout->setRowStretch(0, 5); topGridLayout->setColStretch(0, 3); topGridLayout->setColStretch(1, 10); lv_log = new TQListView(this); lv_log->setMultiSelection(false); lv_log->setAllColumnsShowFocus(true); lv_log->setSorting(-1); lv_log->addColumn(i18n("Id"), 40); lv_log->addColumn(i18n("Name"), 100); topGridLayout->addWidget(lv_log, 0, 0); connect(lv_log, TQT_SIGNAL(selectionChanged(TQListViewItem *)), TQT_SLOT(transferSelected(TQListViewItem *))); ml_log = new TQTextEdit(this); ml_log->setTextFormat(LogText); ml_log->setMinimumSize(300, 200); ml_log->setVScrollBarMode(TQScrollView::Auto); ml_log->setWordWrap(TQTextEdit::NoWrap); topGridLayout->addWidget(ml_log, 0, 1); } void SeparatedLog::addLog(uint id, const TQString & filename, const TQString & message) { if (!trMap.contains(id)) { trMap.insert(id, message); TQListViewItem *last=lv_log->lastItem(); new TQListViewItem(lv_log, last); last=lv_log->lastItem(); last->setText(0, TQString::number(id)); last->setText(1, filename); // if I don't do this, ID#10 gets sorted between ID#1 and ID#2, ugly. } else { trMap[id] += ("\n"+message); } if (idSelected == id) { refresh(); } } void SeparatedLog::transferSelected(TQListViewItem * item) { if (item) { idSelected = item->text(0).toUInt(); // kapp->lock(); ml_log->setText(trMap[idSelected]); // kapp->unlock(); } } void SeparatedLog::refresh() { if (idSelected > 0) { // kapp->lock(); ml_log->setText(trMap[idSelected]); // kapp->unlock(); } } //////////////////////// LogWindow::LogWindow():KDialogBase(Tabbed, i18n("Log Window"), Close, Close, 0, "", false) { // add pages TQFrame *page = addPage(i18n("Mixed")); TQVBoxLayout *topLayout = new TQVBoxLayout(page, 0, spacingHint()); mixed_log = new TQTextEdit(page); mixed_log->setTextFormat(LogText); mixed_log->setVScrollBarMode(TQScrollView::Auto); mixed_log->setWordWrap(TQTextEdit::NoWrap); topLayout->addWidget(mixed_log); page = addPage(i18n("Separated")); topLayout = new TQVBoxLayout(page, 0, spacingHint()); sep_log = new SeparatedLog(page); topLayout->addWidget(sep_log); connect(this, TQT_SIGNAL(closeClicked()), this, TQT_SLOT(close())); // resize( 500, 300 ); } void LogWindow::closeEvent(TQCloseEvent *e) { tdemain->m_paShowLog->setChecked(false); tdemain->b_viewLogWindow = false; KDialogBase::closeEvent( e ); } void LogWindow::logGeneral(const TQString & message) { TQString tmps = "" + TQTime::currentTime().toString() + " : " + message + ""; mixed_log->append(tmps); } void LogWindow::logTransfer(uint id, const TQString & filename, const TQString & message) { TQString mixed_msg, single_msg, job_id; job_id = TQString("Job[%1] : ").arg(id); mixed_msg = "" + TQTime::currentTime().toString() + " : " + job_id + message; single_msg = "" + TQTime::currentTime().toString() + " : " + message; mixed_log->append(mixed_msg); sep_log->addLog(id, filename, single_msg); } TQString LogWindow::getText() const { return removeHTML(mixed_log->text()); } #include "logwindow.moc"