mirror of
https://github.com/Fishwaldo/ozw-admin.git
synced 2025-03-15 19:31:38 +00:00
Fix Up Log Window with new QTOZWLog AbstractItemModel
This commit is contained in:
parent
826a2f47cc
commit
81f9e21fb8
11 changed files with 122 additions and 20 deletions
|
@ -1,6 +1,5 @@
|
|||
#include <QTableWidgetItem>
|
||||
#include <QTime>
|
||||
#include <QTimer>
|
||||
|
||||
#include "eventwindow.h"
|
||||
#include "ui_eventwindow.h"
|
||||
|
@ -18,7 +17,8 @@ EventWindow::EventWindow(QWidget *parent) :
|
|||
ui->eventTable->setHorizontalHeaderItem(1, new QTableWidgetItem("Message"));
|
||||
ui->eventTable->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
|
||||
ui->eventTable->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
|
||||
|
||||
this->m_scrollTimer.setInterval(500);
|
||||
connect(&this->m_scrollTimer, &QTimer::timeout, this, &EventWindow::scrollWindow);
|
||||
}
|
||||
|
||||
EventWindow::~EventWindow()
|
||||
|
@ -39,5 +39,16 @@ void EventWindow::newEvent(QString Msg) {
|
|||
this->ui->eventTable->setItem(this->ui->eventTable->rowCount() -1,
|
||||
1,
|
||||
message);
|
||||
QTimer::singleShot(10, this->ui->eventTable, &QTableWidget::scrollToBottom);
|
||||
if (!this->m_scrollTimer.isActive())
|
||||
this->m_scrollTimer.start();
|
||||
|
||||
|
||||
}
|
||||
|
||||
void EventWindow::scrollWindow()
|
||||
{
|
||||
if (this->ui->pauseScroll->isChecked())
|
||||
this->ui->eventTable->scrollToBottom();
|
||||
|
||||
this->m_scrollTimer.stop();
|
||||
}
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
#define EVENTWINDOW_H
|
||||
|
||||
#include <QWidget>
|
||||
#include <QTimer>
|
||||
|
||||
|
||||
namespace Ui {
|
||||
class EventWindow;
|
||||
|
@ -17,8 +19,11 @@ public:
|
|||
|
||||
public slots:
|
||||
void newEvent(QString);
|
||||
private slots:
|
||||
void scrollWindow();
|
||||
private:
|
||||
Ui::EventWindow *ui;
|
||||
QTimer m_scrollTimer;
|
||||
};
|
||||
|
||||
#endif // EVENTWINDOW_H
|
||||
|
|
|
@ -13,7 +13,31 @@
|
|||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QToolButton" name="pauseScroll">
|
||||
<property name="text">
|
||||
<string>...</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="ozwadmin-main.qrc">
|
||||
<normaloff>:/res/buttonIcons/play.svg</normaloff>
|
||||
<normalon>:/res/buttonIcons/pause.svg</normalon>:/res/buttonIcons/play.svg</iconset>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>12</width>
|
||||
<height>12</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTableWidget" name="eventTable">
|
||||
<property name="columnCount">
|
||||
|
@ -25,6 +49,8 @@
|
|||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<resources>
|
||||
<include location="ozwadmin-main.qrc"/>
|
||||
</resources>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
|
|
@ -14,31 +14,39 @@ LogWindow::LogWindow(QWidget *parent) :
|
|||
this->ui->logview->horizontalHeader()->setStretchLastSection(true);
|
||||
this->ui->logview->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
|
||||
this->ui->logview->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
|
||||
// this->ui->logview->resizeColumnsToContents();
|
||||
|
||||
this->m_log = OZWCore::get()->getQTOZWManager()->getLog();
|
||||
connect(this->m_log, &QTOZWLog::newLogLine, this, &LogWindow::newMsg);
|
||||
this->m_log->syncroniseLogs();
|
||||
|
||||
this->m_scrollTimer.setInterval(500);
|
||||
connect(&this->m_scrollTimer, &QTimer::timeout, this, &LogWindow::scrollWindow);
|
||||
}
|
||||
|
||||
LogWindow::~LogWindow()
|
||||
{
|
||||
this->m_scrollTimer.stop();
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void LogWindow::newMsg(QDateTime time, LogLevels::Level level, quint8 s_node, QString s_msg) {
|
||||
qCDebug(ozwadmin) << time << level << s_node << s_msg;
|
||||
Q_UNUSED(time);
|
||||
Q_UNUSED(level);
|
||||
Q_UNUSED(s_node);
|
||||
Q_UNUSED(s_msg);
|
||||
if (!this->m_scrollTimer.isActive())
|
||||
this->m_scrollTimer.start();
|
||||
}
|
||||
|
||||
void LogWindow::scrollWindow()
|
||||
{
|
||||
if (this->ui->pauseScroll->isChecked())
|
||||
this->ui->logview->scrollToBottom();
|
||||
|
||||
void LogWindow::setModel(QAbstractItemModel *model) {
|
||||
this->ui->logview->setModel(model);
|
||||
// this->ui->logview->resizeColumnsToContents();
|
||||
connect(this->ui->logview->model(), &QAbstractItemModel::rowsAboutToBeInserted,
|
||||
this->ui->logview, [&] {
|
||||
auto bar = this->ui->logview->verticalScrollBar();
|
||||
viewAtBottom = bar ? (bar->value() == bar->maximum()) : false;
|
||||
});
|
||||
connect(this->ui->logview->model(), &QAbstractItemModel::rowsInserted,
|
||||
this->ui->logview, [&]{ if (viewAtBottom) this->ui->logview->scrollToBottom(); });
|
||||
this->m_scrollTimer.stop();
|
||||
}
|
||||
|
||||
void LogWindow::init() {
|
||||
this->m_logModel = new QTOZWLogModel(this->m_log, this);
|
||||
this->ui->logview->setModel(this->m_logModel);
|
||||
}
|
||||
|
|
|
@ -16,13 +16,16 @@ class LogWindow : public QWidget
|
|||
public:
|
||||
explicit LogWindow(QWidget *parent = nullptr);
|
||||
~LogWindow();
|
||||
void setModel(QAbstractItemModel *model);
|
||||
void init();
|
||||
private slots:
|
||||
void newMsg(QDateTime time, LogLevels::Level level, quint8 s_node, QString s_msg);
|
||||
void scrollWindow();
|
||||
private:
|
||||
Ui::LogWindow *ui;
|
||||
bool viewAtBottom = true;
|
||||
QTOZWLog *m_log;
|
||||
QTOZWLogModel *m_logModel;
|
||||
QTimer m_scrollTimer;
|
||||
};
|
||||
|
||||
#endif // LOGWINDOW_H
|
||||
|
|
|
@ -14,6 +14,33 @@
|
|||
<string>OZW Log</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QToolButton" name="pauseScroll">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="ozwadmin-main.qrc">
|
||||
<normaloff>:/res/buttonIcons/play.svg</normaloff>
|
||||
<normalon>:/res/buttonIcons/pause.svg</normalon>:/res/buttonIcons/play.svg</iconset>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>12</width>
|
||||
<height>12</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="autoRaise">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTableView" name="logview">
|
||||
<property name="font">
|
||||
|
@ -53,6 +80,8 @@ QHeaderView::section:horizontal {margin-right: 2; border: 1px solid}</string>
|
|||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<resources>
|
||||
<include location="ozwadmin-main.qrc"/>
|
||||
</resources>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
|
|
@ -177,6 +177,9 @@ void MainWindow::openDefaultWindows() {
|
|||
this->ui->menuWindow->addAction(logWindowDW->toggleViewAction());
|
||||
this->m_DockManager->addDockWidget(ads::CenterDockWidgetArea, logWindowDW, BottomDockWidget);
|
||||
|
||||
lw->init();
|
||||
|
||||
|
||||
/* set Active Tabs */
|
||||
RightDockWidget->setCurrentDockWidget(DeviceInfoDW);
|
||||
BottomDockWidget->setCurrentDockWidget(eventViewDW);
|
||||
|
|
|
@ -53,7 +53,7 @@ void nodeTableWidget::setModel(QAbstractItemModel *model)
|
|||
connect(ui->nodeList->selectionModel(), &QItemSelectionModel::currentRowChanged, this, &nodeTableWidget::currentRowChanged);
|
||||
connect(proxyNodeList, &QTOZW_proxyNodeModel::rowsInserted, this, &nodeTableWidget::resizeContents);
|
||||
connect(proxyNodeList, &QTOZW_proxyNodeModel::rowsRemoved, this, &nodeTableWidget::resizeContents);
|
||||
QTimer::singleShot(100, this, &nodeTableWidget::resizeContents);
|
||||
QTimer::singleShot(500, this, &nodeTableWidget::resizeContents);
|
||||
}
|
||||
|
||||
QModelIndex nodeTableWidget::currentIndex()
|
||||
|
|
|
@ -12,5 +12,7 @@
|
|||
<file>res/nodeflags/Sleeping.svg</file>
|
||||
<file>res/nodeflags/zwaveplus.png</file>
|
||||
<file>res/start.svg</file>
|
||||
<file>res/buttonIcons/pause.svg</file>
|
||||
<file>res/buttonIcons/play.svg</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
|
8
ozwadmin-main/res/buttonIcons/pause.svg
Normal file
8
ozwadmin-main/res/buttonIcons/pause.svg
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="100pt" height="100pt" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
||||
<g>
|
||||
<path d="m50 0c27.668 0 50 22.332 50 50s-22.332 50-50 50-50-22.332-50-50 22.332-50 50-50zm0 3.7227c25.566 0 46.277 20.711 46.277 46.277s-20.711 46.277-46.277 46.277-46.277-20.711-46.277-46.277 20.711-46.277 46.277-46.277z" fill-rule="evenodd"/>
|
||||
<path d="m43.852 22.168v55.664h-16.18v-55.664h16.18zm-2.9141 2.9141h-10.52v49.84h10.52z"/>
|
||||
<path d="m72.332 22.168v55.664h-16.18v-55.664h16.18zm-2.9141 2.9141h-10.355v49.84h10.355z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 598 B |
7
ozwadmin-main/res/buttonIcons/play.svg
Normal file
7
ozwadmin-main/res/buttonIcons/play.svg
Normal file
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="100pt" height="100pt" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
||||
<g>
|
||||
<path d="m50 94c-11.668 0-22.859-4.6367-31.113-12.887-8.25-8.2539-12.887-19.445-12.887-31.113s4.6367-22.859 12.887-31.113c8.2539-8.25 19.445-12.887 31.113-12.887s22.859 4.6367 31.113 12.887c8.25 8.2539 12.887 19.445 12.887 31.113-0.011719 11.664-4.6523 22.848-12.902 31.098s-19.434 12.891-31.098 12.902zm0-84c-10.609 0-20.781 4.2148-28.285 11.715-7.5 7.5039-11.715 17.676-11.715 28.285s4.2148 20.781 11.715 28.285c7.5039 7.5 17.676 11.715 28.285 11.715s20.781-4.2148 28.285-11.715c7.5-7.5039 11.715-17.676 11.715-28.285s-4.2148-20.781-11.715-28.285c-7.5039-7.5-17.676-11.715-28.285-11.715z"/>
|
||||
<path d="m36.199 73v-46l39.852 23zm4-39.09v32.168l27.852-16.078z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 828 B |
Loading…
Add table
Reference in a new issue