test_sdk/gui/gtl_gui_dock.cpp

66 lines
1.7 KiB
C++

#include "gtl_gui_dock.h"
namespace gtl
{
namespace gui
{
dock::dock(QWidget* parent)
: QDockWidget(parent)
{
_title = new dock_title(this);
setTitleBarWidget(_title);
connect(_title, &dock_title::close, this, &QDockWidget::close);
connect(_title, &dock_title::pin, this, &dock::pin);
connect(_title, &dock_title::maximize, this, &dock::maximize);
connect(this, &QDockWidget::topLevelChanged, this, &dock::floating_changed);
}
void dock::set_title(QString title)
{
_title->set_text(title);
}
void dock::pin(bool value)
{
setFloating(!value);
setAllowedAreas(value ? Qt::LeftDockWidgetArea : Qt::NoDockWidgetArea);
// if (value)
// set_is_maximized(false);
_title->set_pin_status(!value);
}
void dock::floating_changed(bool value)
{
setAllowedAreas(value ? Qt::LeftDockWidgetArea : Qt::NoDockWidgetArea);
_title->set_pin_status(value);
}
void dock::maximize(bool value)
{
if (value)
{
_state = saveGeometry();
_is_floating = isFloating();
setFloating(true);
setAllowedAreas(Qt::NoDockWidgetArea);
showMaximized();
}
else
{
restoreGeometry(_state);
setFloating(_is_floating);
setAllowedAreas(!_is_floating ? Qt::LeftDockWidgetArea : Qt::NoDockWidgetArea);
}
}
}
}