From: Dirk H Bartley Date: Thu, 15 May 2008 01:45:05 +0000 (+0000) Subject: Riccardo's patch of joblog. X-Git-Tag: Release-7.0.0~4581 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=791999098f3fde8943c9fe31f193d0e415ef10c0;p=bacula%2Fbacula Riccardo's patch of joblog. git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@6976 91ce42f0-d328-0410-95d8-f526ca767f89 --- diff --git a/bacula/src/qt-console/joblog/joblog.cpp b/bacula/src/qt-console/joblog/joblog.cpp index 7756d0b012..3d9c5f2f01 100644 --- a/bacula/src/qt-console/joblog/joblog.cpp +++ b/bacula/src/qt-console/joblog/joblog.cpp @@ -41,7 +41,7 @@ JobLog::JobLog(QString &jobId, QTreeWidgetItem *parentTreeWidgetItem) { setupUi(this); - m_name = "JobLog"; + m_name = tr("JobLog"); m_closeable = true; pgInitialize(parentTreeWidgetItem); QTreeWidgetItem* thisitem = mainWin->getFromHash(this); @@ -76,56 +76,98 @@ void JobLog::getFont() */ void JobLog::populateText() { - QString heading("Log records for job "); - heading += m_jobId + "
\n"; - textEdit->insertHtml(heading); - if (!m_console->preventInUseConnect()) - return; - - QString query(""); - query = "SELECT Time,LogText FROM Log WHERE JobId='" + m_jobId + "' ORDER by Time"; - + return; + + QString query; + query = "SELECT Time, LogText FROM Log WHERE JobId='" + m_jobId + "' order by Time"; + + /* This could be a log item */ + if (mainWin->m_sqlDebug) { + Pmsg1(000, "Log query cmd : %s\n", query.toUtf8().data()); + } + QStringList results; if (m_console->sql_cmd(query, results)) { - QString field; - QStringList fieldlist; - int resultcount = 0; + if (!results.size()) { + QMessageBox::warning(this, tr("Bat"), + tr("There were no results!\n" + "It is possible you may need to add \"catalog = all\" " + "to the Messages resource for this job.\n"), QMessageBox::Ok); + return; + } + + QString jobstr("JobId "); /* FIXME: should this be translated ? */ + jobstr += m_jobId; + + QString htmlbuf("" + tr("Log records for job %1").arg(m_jobId) ); + htmlbuf += ""; + /* Iterate through the lines of results. */ + QString field; + QStringList fieldlist; + QString lastTime; + QString lastSvc; foreach (QString resultline, results) { - int column = 0; fieldlist = resultline.split("\t"); - /* Iterate through fields in the record */ - foreach (field, fieldlist) { - display_text(field); - if (column == 0) display_text(" "); - column++; - } /* foreach field */ - resultcount++; + + if (fieldlist.size() < 2) + continue; + + htmlbuf +=""; + + QString curTime = fieldlist[0].trimmed(); + + field = fieldlist[1].trimmed(); + int colon = field.indexOf(":"); + if (colon > 0) { + /* string is like : ..." + * we split at ':' then remove the jobId xxxx string (always the same) */ + QString curSvc(field.left(colon).replace(jobstr,"").trimmed()); + if (curSvc == lastSvc && curTime == lastTime) { + curTime.clear(); + curSvc.clear(); + } else { + lastTime = curTime; + lastSvc = curSvc; + } + htmlbuf += ""; + htmlbuf += ""; + + /* rest of string is marked as pre-formatted (here trimming should + * be avoided, to preserve original formatting) */ + QString msg(field.mid(colon+2)); + if (msg.startsWith( tr("Error:")) ) { /* FIXME: should really be translated ? */ + /* error msg, use a specific class */ + htmlbuf += ""; + } else { + htmlbuf += ""; + } + } else { + /* non standard string, place as-is */ + if (curTime == lastTime) { + curTime.clear(); + } else { + lastTime = curTime; + } + htmlbuf += ""; + htmlbuf += ""; + } + + htmlbuf += ""; + } /* foreach resultline */ - if (resultcount == 0) { - /* show a message about configuration item */ - QMessageBox::warning(this, "Bat", - tr("There were no results!\n" -"It is possible you may need to add \"catalog = all\" to the Messages resource" -" for this job.\n"), QMessageBox::Ok); - } - } /* if results from query */ - textEdit->scrollToAnchor("top"); -} -/* - * Put text into the joblog window with an overload - */ -void JobLog::display_text(const QString buf) -{ - m_cursor->movePosition(QTextCursor::End); - m_cursor->insertText(buf); -} + htmlbuf += "
" + curTime + "

" + curSvc + "

" + msg + "
" + msg + "
" + curTime + "
" + field + "
"; -void JobLog::display_text(const char *buf) -{ - m_cursor->movePosition(QTextCursor::End); - m_cursor->insertText(buf); + /* full text ready. Here a custom sheet is used to align columns */ + QString logSheet("p,pre,.err {margin-left: 10px} .err {color:#FF0000;}"); + textEdit->document()->setDefaultStyleSheet(logSheet); + textEdit->document()->setHtml(htmlbuf); + textEdit->moveCursor(QTextCursor::Start); + + } /* if results from query */ + } + diff --git a/bacula/src/qt-console/joblog/joblog.h b/bacula/src/qt-console/joblog/joblog.h index 56dece3bd4..47ce925dbe 100644 --- a/bacula/src/qt-console/joblog/joblog.h +++ b/bacula/src/qt-console/joblog/joblog.h @@ -49,8 +49,6 @@ public slots: private slots: private: - void display_text(const char *buf); - void display_text(const QString buf); void populateText(); void getFont(); QTextCursor *m_cursor;