Mercurial > minori
view include/gui/window.h @ 187:9613d72b097e
*: multiple performance improvements
like marking `static const` when it makes sense...
date: change old stupid heap-based method to a structure which should
make copying the thing actually make a copy.
also many performance-based changes, like removing the std::tie
dependency and forward-declaring nlohmann json
*: replace every instance of QString::fromUtf8 to Strings::ToQString.
the main difference is that our function will always convert exactly
what is in the string, while some other times it would only convert
up to the nearest NUL byte
| author | Paper <mrpapersonic@gmail.com> |
|---|---|
| date | Wed, 06 Dec 2023 13:43:54 -0500 |
| parents | c8375765f0fc |
| children | 4d461ef7d424 |
line wrap: on
line source
#ifndef __window_h #define __window_h #include "core/config.h" #include <QMainWindow> #include <memory> /* *could* be forward-declared, but this causes any file that #includes this to have to #include these as well due to unique_ptr */ #include <QWidget> #include <QStackedWidget> #include <QCloseEvent> #include <QThread> #include "gui/widgets/sidebar.h" Q_DECLARE_METATYPE(std::vector<std::string>); class PlayingThread : public QThread { Q_OBJECT public: PlayingThread(QObject* object = nullptr) : QThread(object) {} private: void run() override; signals: void Done(const std::vector<std::string>& files); }; class MainWindow final : public QMainWindow { Q_OBJECT public: MainWindow(QWidget* parent = nullptr); void SetActivePage(QWidget* page); void CreateBars(); void AddMainWidgets(); void RetranslateUI(); void AsyncSynchronize(QStackedWidget* stack); void changeEvent(QEvent* event) override; void showEvent(QShowEvent* event) override; void closeEvent(QCloseEvent* event) override; private: std::unique_ptr<QWidget> main_widget = nullptr; std::unique_ptr<QStackedWidget> stack = nullptr; std::unique_ptr<SideBar> sidebar = nullptr; std::unique_ptr<PlayingThread> thread = nullptr; }; #endif // __window_h
