1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- #include "fb2logs.hpp"
- #include "fb2utils.h"
- //---------------------------------------------------------------------------
- // FbLogModel::FbLogItem
- //---------------------------------------------------------------------------
- QVariant FbLogModel::FbLogItem::icon() const
- {
- switch (m_type) {
- case QtInfoMsg: return QVariant();
- case QtDebugMsg: return FbIcon("dialog-information");
- case QtWarningMsg: return FbIcon("dialog-warning");
- case QtCriticalMsg: return FbIcon("dialog-error");
- case QtFatalMsg: return FbIcon("dialog-error");
- }
- return QVariant();
- }
- //---------------------------------------------------------------------------
- // FbLogModel
- //---------------------------------------------------------------------------
- FbLogModel::FbLogModel(QObject *parent)
- : QAbstractListModel(parent)
- {
- for (FbLogItem *item: m_list) delete item;
- }
- QVariant FbLogModel::data(const QModelIndex &index, int role) const
- {
- int row = index.row();
- if (row < 0) return QVariant();
- if (row >= m_list.count()) return QVariant();
- switch (role) {
- case Qt::DisplayRole: return m_list.at(row)->msg();
- case Qt::DecorationRole: return m_list.at(row)->icon();
- }
- return QVariant();
- }
- int FbLogModel::rowCount(const QModelIndex &parent) const
- {
- if (parent.isValid()) return 0;
- return m_list.count();
- }
- void FbLogModel::add(QtMsgType type, int row, int col, const QString &msg)
- {
- int count = m_list.count();
- QModelIndex parent = QModelIndex();
- beginInsertRows(parent, count, count);
- m_list.append(new FbLogItem(type, row, col, msg));
- endInsertRows();
- emit changeCurrent(createIndex(count, 0));
- }
- void FbLogModel::add(QtMsgType type, const QString &msg)
- {
- add(type, 0, 0, msg);
- }
- //---------------------------------------------------------------------------
- // FbLogList
- //---------------------------------------------------------------------------
- FbLogList::FbLogList(QWidget *parent)
- : QListView(parent)
- {
- setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
- setViewMode(ListMode);
- }
- //---------------------------------------------------------------------------
- // FbLogDock
- //---------------------------------------------------------------------------
- FbLogDock::FbLogDock(const QString &title, QWidget *parent, Qt::WindowFlags flags)
- : QDockWidget(title, parent, flags)
- , m_model(new FbLogModel(this))
- , m_list(new FbLogList(this))
- {
- m_list->setModel(m_model);
- connect(m_model, SIGNAL(changeCurrent(QModelIndex)), m_list, SLOT(setCurrentIndex(QModelIndex)));
- setFeatures(QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetMovable|QDockWidget::DockWidgetFloatable);
- setAttribute(Qt::WA_DeleteOnClose);
- setWidget(m_list);
- }
- void FbLogDock::append(QtMsgType type, const QString &message)
- {
- m_model->add(type, message);
- }
|