2022-02-06 20:28:46 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <QWidget>
|
2022-07-19 22:31:36 +01:00
|
|
|
#include <optional>
|
2022-02-06 20:28:46 +00:00
|
|
|
|
|
|
|
|
#include "PanelWidget.hpp"
|
|
|
|
|
#include "PaneState.hpp"
|
|
|
|
|
|
|
|
|
|
namespace Bloom::Widgets
|
|
|
|
|
{
|
|
|
|
|
class PaneWidget: public QWidget
|
|
|
|
|
{
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
public:
|
2022-07-16 19:07:09 +01:00
|
|
|
bool activated = true;
|
|
|
|
|
bool attached = true;
|
2022-02-06 20:28:46 +00:00
|
|
|
PanelWidget* parentPanel = nullptr;
|
|
|
|
|
|
2022-07-16 19:07:09 +01:00
|
|
|
explicit PaneWidget(PanelWidget* parent);
|
2022-02-06 20:28:46 +00:00
|
|
|
|
2022-07-19 22:31:36 +01:00
|
|
|
[[nodiscard]] PaneState getCurrentState() const;
|
2022-07-16 19:07:09 +01:00
|
|
|
|
|
|
|
|
void activate();
|
|
|
|
|
void deactivate();
|
|
|
|
|
|
2022-07-19 22:31:36 +01:00
|
|
|
void restoreLastPaneState(const PaneState& lastPaneState);
|
|
|
|
|
|
2022-07-16 19:07:09 +01:00
|
|
|
signals:
|
|
|
|
|
void paneActivated();
|
|
|
|
|
void paneDeactivated();
|
|
|
|
|
void paneAttached();
|
|
|
|
|
void paneDetached();
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
void detach();
|
|
|
|
|
void attach();
|
2022-07-19 22:30:23 +01:00
|
|
|
|
|
|
|
|
void closeEvent(QCloseEvent* event) override;
|
2022-07-19 22:31:36 +01:00
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
std::optional<DetachedWindowState> lastDetachedWindowState;
|
|
|
|
|
|
|
|
|
|
std::optional<DetachedWindowState> getDetachedWindowState() const;
|
2022-02-06 20:28:46 +00:00
|
|
|
};
|
|
|
|
|
}
|