00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include <util/string.h>
00029 #include "logtreeitem.h"
00030 #include "logtreewidget.h"
00031
00032
00033 #define DATETIME_FMT "MMM dd hh:mm:ss:zzz"
00034
00035
00036 #define COL_TIME LogTreeWidget::TimeColumn
00037 #define COL_TYPE LogTreeWidget::TypeColumn
00038 #define COL_MESG LogTreeWidget::MessageColumn
00039 #define ROLE_TYPE Qt::UserRole
00040
00041
00042 #if defined(Q_WS_MAC)
00043
00044
00045 #define VERTICAL_PADDING 1
00046 #else
00047 #define VERTICAL_PADDING 10
00048 #endif
00049
00050
00051
00052 LogTreeItem::LogTreeItem(LogEvent::Severity type, QString message,
00053 QDateTime timestamp)
00054 : QTreeWidgetItem()
00055 {
00056
00057 setTimestamp(timestamp);
00058
00059 setSeverity(type);
00060
00061 setMessage(message);
00062
00063 #if QT_VERSION > 0x040100
00064
00065
00066
00067 int rowHeight = font(COL_MESG).pointSize()+VERTICAL_PADDING;
00068 setSizeHint(COL_TIME, QSize(sizeHint(COL_TIME).width(), rowHeight));
00069 #endif
00070 }
00071
00072
00073 QString
00074 LogTreeItem::toString()
00075 {
00076 return QString("%1 [%2] %3\n").arg(text(COL_TIME))
00077 .arg(text(COL_TYPE))
00078 .arg(text(COL_MESG).trimmed());
00079 }
00080
00081
00082 void
00083 LogTreeItem::setTimestamp(QDateTime timestamp)
00084 {
00085 QString strtime = timestamp.toString(DATETIME_FMT);
00086 setText(COL_TIME, strtime);
00087 setToolTip(COL_TIME, strtime);
00088 }
00089
00090
00091 void
00092 LogTreeItem::setSeverity(LogEvent::Severity type)
00093 {
00094
00095 if (type == LogEvent::Error) {
00096
00097 for (int i = 0; i < 3; i++) {
00098 setBackgroundColor(i, Qt::red);
00099 setTextColor(i, Qt::white);
00100 }
00101 } else if (type == LogEvent::Warn) {
00102
00103 for (int i = 0; i < 3; i++) {
00104 setBackgroundColor(i, Qt::yellow);
00105 }
00106 }
00107
00108 setTextAlignment(COL_TYPE, Qt::AlignCenter);
00109 setText(COL_TYPE, LogEvent::severityToString(type));
00110 setData(COL_TYPE, ROLE_TYPE, (uint)type);
00111 }
00112
00113
00114 void
00115 LogTreeItem::setMessage(QString message)
00116 {
00117 setText(COL_MESG, message);
00118 setToolTip(COL_MESG, string_wrap(message, 80, " ", "\r\n"));
00119 }
00120
00121
00122 LogEvent::Severity
00123 LogTreeItem::severity()
00124 {
00125 return (LogEvent::Severity)data(COL_TYPE, ROLE_TYPE).toUInt();
00126 }
00127
00128
00129 QDateTime
00130 LogTreeItem::timestamp() const
00131 {
00132 return QDateTime::fromString(text(COL_TIME), DATETIME_FMT);
00133 }
00134
00135
00136 QString
00137 LogTreeItem::message()
00138 {
00139 return text(COL_MESG);
00140 }
00141