diff --git a/CMakeLists.txt b/CMakeLists.txt index 383fbe30af..a4c0b09b8d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -206,6 +206,7 @@ qt6_wrap_ui( src/mainwindow.ui src/widget/about/aboutfriendform.ui src/widget/form/debug/debuglog.ui + src/widget/form/debug/debugnetprof.ui src/widget/form/debug/debugobjecttree.ui src/widget/form/loadhistorydialog.ui src/widget/form/profileform.ui @@ -518,6 +519,8 @@ set(${BINARY_NAME}_SOURCES src/widget/form/chatform.h src/widget/form/debug/debuglog.cpp src/widget/form/debug/debuglog.h + src/widget/form/debug/debugnetprof.cpp + src/widget/form/debug/debugnetprof.h src/widget/form/debug/debugobjecttree.cpp src/widget/form/debug/debugobjecttree.h src/widget/form/debugwidget.cpp diff --git a/src/BUILD.bazel b/src/BUILD.bazel index d1404751b8..e0f7872dd2 100644 --- a/src/BUILD.bazel +++ b/src/BUILD.bazel @@ -81,6 +81,7 @@ qt_moc( "widget/form/conferenceinviteform.h", "widget/form/conferenceinvitewidget.h", "widget/form/debug/debuglog.h", + "widget/form/debug/debugnetprof.h", "widget/form/debug/debugobjecttree.h", "widget/form/debugwidget.h", "widget/form/filesform.h", diff --git a/src/widget/form/debug/debuglog.cpp b/src/widget/form/debug/debuglog.cpp index 42a9b73a8b..fb9ef0a992 100644 --- a/src/widget/form/debug/debuglog.cpp +++ b/src/widget/form/debug/debuglog.cpp @@ -16,7 +16,6 @@ #include #include #include -#include #include #include diff --git a/src/widget/form/debug/debugnetprof.cpp b/src/widget/form/debug/debugnetprof.cpp new file mode 100644 index 0000000000..c8008ef242 --- /dev/null +++ b/src/widget/form/debug/debugnetprof.cpp @@ -0,0 +1,44 @@ +/* SPDX-License-Identifier: GPL-3.0-or-later + * Copyright © 2014-2019 by The qTox Project Contributors + * Copyright © 2024 The TokTok team. + */ + +#include "debugnetprof.h" +#include "ui_debugnetprof.h" + +#include "src/model/debug/debuglogmodel.h" +#include "src/persistence/paths.h" +#include "src/widget/style.h" +#include "src/widget/translator.h" + +#include + +#include + +#include + +DebugNetProfForm::DebugNetProfForm(Style& style, QWidget* parent) + : GenericForm{QPixmap(":/img/settings/general.png"), style, parent} + , ui_{std::make_unique()} + , reloadTimer_{new QTimer(this)} +{ + ui_->setupUi(this); + + // Reload logs every 5 seconds + reloadTimer_->start(5000); + + Translator::registerHandler([this] { retranslateUi(); }, this); +} + +DebugNetProfForm::~DebugNetProfForm() +{ + Translator::unregister(this); +} + +/** + * @brief Retranslate all elements in the form. + */ +void DebugNetProfForm::retranslateUi() +{ + ui_->retranslateUi(this); +} diff --git a/src/widget/form/debug/debugnetprof.h b/src/widget/form/debug/debugnetprof.h new file mode 100644 index 0000000000..f13206336a --- /dev/null +++ b/src/widget/form/debug/debugnetprof.h @@ -0,0 +1,36 @@ +/* SPDX-License-Identifier: GPL-3.0-or-later + * Copyright © 2024 The TokTok team. + */ + +#pragma once + +#include "src/widget/form/settings/genericsettings.h" + +#include + +class Paths; +class QTimer; +class Style; + +namespace Ui { +class DebugNetProf; +} + +class DebugNetProfForm final : public GenericForm +{ + Q_OBJECT +public: + DebugNetProfForm(Style& style, QWidget* parent); + ~DebugNetProfForm() override; + QString getFormName() final + { + return tr("Network Profiler"); + } + +private: + void retranslateUi(); + +private: + std::unique_ptr ui_; + QTimer* reloadTimer_; +}; diff --git a/src/widget/form/debug/debugnetprof.ui b/src/widget/form/debug/debugnetprof.ui new file mode 100644 index 0000000000..33c648074b --- /dev/null +++ b/src/widget/form/debug/debugnetprof.ui @@ -0,0 +1,60 @@ + + + DebugNetProf + + + + 0 + 0 + 530 + 553 + + + + + 0 + 0 + + + + Form + + + + + + + + + 0 + 1 + + + + Network Profile + + + + + + + + Auto-reload + + + + + + + + + + + + + + + + + + diff --git a/src/widget/form/debugwidget.cpp b/src/widget/form/debugwidget.cpp index 3f1a7e4a7b..4aaf7571e8 100644 --- a/src/widget/form/debugwidget.cpp +++ b/src/widget/form/debugwidget.cpp @@ -6,6 +6,7 @@ #include "src/widget/contentlayout.h" #include "src/widget/form/debug/debuglog.h" +#include "src/widget/form/debug/debugnetprof.h" #include "src/widget/form/debug/debugobjecttree.h" #include "src/widget/translator.h" #include "src/widget/widget.h" @@ -29,6 +30,7 @@ DebugWidget::DebugWidget(Paths& paths, Style& style, Widget* parent) dbgForms = { new DebugLogForm(paths, style, this), new DebugObjectTree(style, this), + new DebugNetProfForm(style, this), }; for (auto* dbgForm : dbgForms) diff --git a/src/widget/form/debugwidget.h b/src/widget/form/debugwidget.h index 8debaded22..ed52182a95 100644 --- a/src/widget/form/debugwidget.h +++ b/src/widget/form/debugwidget.h @@ -36,6 +36,6 @@ private slots: private: QVBoxLayout* bodyLayout; QTabWidget* debugWidgets; - std::array dbgForms; + std::array dbgForms; int currentIndex; };