summaryrefslogtreecommitdiffstats
path: root/kget/logwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kget/logwindow.cpp')
-rw-r--r--kget/logwindow.cpp218
1 files changed, 218 insertions, 0 deletions
diff --git a/kget/logwindow.cpp b/kget/logwindow.cpp
new file mode 100644
index 00000000..5d6f77ad
--- /dev/null
+++ b/kget/logwindow.cpp
@@ -0,0 +1,218 @@
+/***************************************************************************
+* 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
+*
+****************************************************************************/
+
+/**************************************************************************
+ *
+ * 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 <qlayout.h>
+#include <qlistview.h>
+
+#include <klocale.h>
+#include <kdialog.h>
+#include <kaction.h>
+
+#include "transfer.h"
+#include "kmainwidget.h"
+#include "logwindow.h"
+
+#include <kapplication.h>
+#include <qtextedit.h>
+
+// // Replace regular space with nbsp
+// QString replaceSpaces(const QString &str) {
+// QString res = str;
+// res.simplifyWhiteSpace();
+
+// int pos;
+// while ( (pos = res.find(' ')) != -1) {
+// res.replace(pos, 1, new QChar( 0x00a0 ), 1);
+// }
+
+// return res;
+// }
+
+
+static QString removeHTML(const QString & str)
+{
+ QString res = str;
+ int pos;
+
+ // replace <br/> with a newline
+ while ((pos = res.find("<br/>")) != -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(QWidget * parent):QWidget(parent)
+{
+ idSelected = 0;
+
+ QGridLayout *topGridLayout = new QGridLayout(this, 1, 2, 0, KDialog::spacingHint());
+
+ topGridLayout->setRowStretch(0, 5);
+
+ topGridLayout->setColStretch(0, 3);
+ topGridLayout->setColStretch(1, 10);
+
+ lv_log = new QListView(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, SIGNAL(selectionChanged(QListViewItem *)), SLOT(transferSelected(QListViewItem *)));
+
+ ml_log = new QTextEdit(this);
+ ml_log->setTextFormat(LogText);
+ ml_log->setMinimumSize(300, 200);
+ ml_log->setVScrollBarMode(QScrollView::Auto);
+ ml_log->setWordWrap(QTextEdit::NoWrap);
+
+ topGridLayout->addWidget(ml_log, 0, 1);
+}
+
+
+void SeparatedLog::addLog(uint id, const QString & filename, const QString & message)
+{
+ if (!trMap.contains(id)) {
+ trMap.insert(id, message);
+ QListViewItem *last=lv_log->lastItem();
+ new QListViewItem(lv_log, last);
+ last=lv_log->lastItem();
+ last->setText(0, QString::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(QListViewItem * 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
+ QFrame *page = addPage(i18n("Mixed"));
+ QVBoxLayout *topLayout = new QVBoxLayout(page, 0, spacingHint());
+
+ mixed_log = new QTextEdit(page);
+ mixed_log->setTextFormat(LogText);
+ mixed_log->setVScrollBarMode(QScrollView::Auto);
+ mixed_log->setWordWrap(QTextEdit::NoWrap);
+ topLayout->addWidget(mixed_log);
+
+ page = addPage(i18n("Separated"));
+ topLayout = new QVBoxLayout(page, 0, spacingHint());
+ sep_log = new SeparatedLog(page);
+ topLayout->addWidget(sep_log);
+
+ connect(this, SIGNAL(closeClicked()), this, SLOT(close()));
+
+ // resize( 500, 300 );
+}
+
+
+void LogWindow::closeEvent(QCloseEvent *e)
+{
+ kmain->m_paShowLog->setChecked(false);
+ kmain->b_viewLogWindow = false;
+ KDialogBase::closeEvent( e );
+}
+
+
+void LogWindow::logGeneral(const QString & message)
+{
+ QString tmps = "<font color=\"blue\">" + QTime::currentTime().toString() + "</font> : <b>" + message + "</b>";
+
+ mixed_log->append(tmps);
+}
+
+
+void LogWindow::logTransfer(uint id, const QString & filename, const QString & message)
+{
+ QString mixed_msg, single_msg, job_id;
+
+ job_id = QString("Job[<font color=\"red\">%1</font>] : ").arg(id);
+ mixed_msg = "<font color=\"blue\">" + QTime::currentTime().toString() + "</font> : " + job_id + message;
+
+ single_msg = "<font color=\"blue\">" + QTime::currentTime().toString() + "</font> : " + message;
+
+ mixed_log->append(mixed_msg);
+ sep_log->addLog(id, filename, single_msg);
+}
+
+
+QString LogWindow::getText() const
+{
+ return removeHTML(mixed_log->text());
+}
+
+#include "logwindow.moc"