Skip to content
Permalink
Browse files
Merge pull request #6672 from spycrab/qt_dynamic
Qt: Make toolbar more dynamic
  • Loading branch information
leoetlino committed Apr 20, 2018
2 parents 2fcc633 + 264c995 commit dabfecf
Show file tree
Hide file tree
Showing 13 changed files with 86 additions and 1 deletion.
@@ -19,6 +19,8 @@
LogConfigWidget::LogConfigWidget(QWidget* parent) : QDockWidget(parent)
{
setWindowTitle(tr("Log Configuration"));
setObjectName(QStringLiteral("logconfig"));

setHidden(!Settings::Instance().IsLogConfigVisible());
setAllowedAreas(Qt::AllDockWidgetAreas);

@@ -29,6 +29,8 @@ constexpr int TIMESTAMP_LENGTH = 10;
LogWidget::LogWidget(QWidget* parent) : QDockWidget(parent), m_timer(new QTimer(this))
{
setWindowTitle(tr("Log"));
setObjectName(QStringLiteral("log"));

setHidden(!Settings::Instance().IsLogVisible());
setAllowedAreas(Qt::AllDockWidgetAreas);

@@ -25,6 +25,8 @@
BreakpointWidget::BreakpointWidget(QWidget* parent) : QDockWidget(parent)
{
setWindowTitle(tr("Breakpoints"));
setObjectName(QStringLiteral("breakpoints"));

setAllowedAreas(Qt::AllDockWidgetAreas);

auto& settings = Settings::GetQSettings();
@@ -27,6 +27,8 @@
CodeWidget::CodeWidget(QWidget* parent) : QDockWidget(parent)
{
setWindowTitle(tr("Code"));
setObjectName(QStringLiteral("code"));

setAllowedAreas(Qt::AllDockWidgetAreas);

auto& settings = Settings::GetQSettings();
@@ -32,6 +32,8 @@
MemoryWidget::MemoryWidget(QWidget* parent) : QDockWidget(parent)
{
setWindowTitle(tr("Memory"));
setObjectName(QStringLiteral("memory"));

setAllowedAreas(Qt::AllDockWidgetAreas);

CreateWidgets();
@@ -18,6 +18,7 @@
RegisterWidget::RegisterWidget(QWidget* parent) : QDockWidget(parent)
{
setWindowTitle(tr("Registers"));
setObjectName(QStringLiteral("registers"));
setAllowedAreas(Qt::AllDockWidgetAreas);

auto& settings = Settings::GetQSettings();
@@ -26,6 +26,8 @@ WatchWidget::WatchWidget(QWidget* parent) : QDockWidget(parent)
// i18n: This kind of "watch" is used for watching emulated memory.
// It's not related to timekeeping devices.
setWindowTitle(tr("Watch"));
setObjectName(QStringLiteral("watch"));

setAllowedAreas(Qt::AllDockWidgetAreas);

auto& settings = Settings::GetQSettings();
@@ -109,6 +109,10 @@ MainWindow::MainWindow(std::unique_ptr<BootParameters> boot_parameters) : QMainW

if (boot_parameters)
StartGame(std::move(boot_parameters));

QSettings& settings = Settings::GetQSettings();

restoreState(settings.value(QStringLiteral("mainwindow/state")).toByteArray());
}

MainWindow::~MainWindow()
@@ -117,6 +121,10 @@ MainWindow::~MainWindow()
ShutdownControllers();

Config::Save();

QSettings& settings = Settings::GetQSettings();

settings.setValue(QStringLiteral("mainwindow/state"), saveState());
}

void MainWindow::InitControllers()
@@ -348,9 +348,23 @@ void MenuBar::AddViewMenu()
connect(show_log_config, &QAction::toggled, &Settings::Instance(),
&Settings::SetLogConfigVisible);

QAction* show_toolbar = view_menu->addAction(tr("Show &Toolbar"));
show_toolbar->setCheckable(true);
show_toolbar->setChecked(Settings::Instance().IsToolBarVisible());

connect(show_toolbar, &QAction::toggled, &Settings::Instance(), &Settings::SetToolBarVisible);

connect(&Settings::Instance(), &Settings::LogVisibilityChanged, show_log, &QAction::setChecked);
connect(&Settings::Instance(), &Settings::LogConfigVisibilityChanged, show_log_config,
&QAction::setChecked);
connect(&Settings::Instance(), &Settings::ToolBarVisibilityChanged, show_toolbar,
&QAction::setChecked);

QAction* lock_widgets = view_menu->addAction(tr("&Lock Widgets In Place"));
lock_widgets->setCheckable(true);
lock_widgets->setChecked(Settings::Instance().AreWidgetsLocked());

connect(lock_widgets, &QAction::toggled, &Settings::Instance(), &Settings::SetWidgetsLocked);

view_menu->addSeparator();

@@ -366,3 +366,33 @@ bool Settings::IsAnalyticsEnabled() const
{
return SConfig::GetInstance().m_analytics_enabled;
}

void Settings::SetToolBarVisible(bool visible)
{
if (IsToolBarVisible() == visible)
return;

GetQSettings().setValue(QStringLiteral("toolbar/visible"), visible);

emit ToolBarVisibilityChanged(visible);
}

bool Settings::IsToolBarVisible() const
{
return GetQSettings().value(QStringLiteral("toolbar/visible")).toBool();
}

void Settings::SetWidgetsLocked(bool locked)
{
if (AreWidgetsLocked() == locked)
return;

GetQSettings().setValue(QStringLiteral("widgets/locked"), locked);

emit WidgetLockChanged(locked);
}

bool Settings::AreWidgetsLocked() const
{
return GetQSettings().value(QStringLiteral("widgets/locked"), true).toBool();
}
@@ -52,6 +52,10 @@ class Settings final : public QObject
void SetLogConfigVisible(bool visible);
bool IsControllerStateNeeded() const;
void SetControllerStateNeeded(bool needed);
void SetToolBarVisible(bool visible);
bool IsToolBarVisible() const;
void SetWidgetsLocked(bool visible);
bool AreWidgetsLocked() const;

// GameList
QStringList GetPaths() const;
@@ -125,6 +129,8 @@ class Settings final : public QObject
void RegistersVisibilityChanged(bool visible);
void LogVisibilityChanged(bool visible);
void LogConfigVisibilityChanged(bool visible);
void ToolBarVisibilityChanged(bool visible);
void WidgetLockChanged(bool locked);
void EnableCheatsChanged(bool enabled);
void WatchVisibilityChanged(bool visible);
void BreakpointsVisibilityChanged(bool visible);
@@ -18,10 +18,13 @@ static QSize ICON_SIZE(32, 32);
ToolBar::ToolBar(QWidget* parent) : QToolBar(parent)
{
setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
setMovable(false);
setMovable(!Settings::Instance().AreWidgetsLocked());
setFloatable(false);
setIconSize(ICON_SIZE);

setWindowTitle(tr("Toolbar"));
setObjectName(QStringLiteral("toolbar"));

MakeActions();
connect(&Settings::Instance(), &Settings::ThemeChanged, this, &ToolBar::UpdateIcons);
UpdateIcons();
@@ -31,6 +34,11 @@ ToolBar::ToolBar(QWidget* parent) : QToolBar(parent)

connect(&Settings::Instance(), &Settings::DebugModeToggled, this, &ToolBar::OnDebugModeToggled);

connect(&Settings::Instance(), &Settings::ToolBarVisibilityChanged, this, &ToolBar::setVisible);

connect(&Settings::Instance(), &Settings::WidgetLockChanged, this,
[this](bool locked) { setMovable(!locked); });

OnEmulationStateChanged(Core::GetState());
OnDebugModeToggled(Settings::Instance().IsDebugModeEnabled());
}
@@ -49,6 +57,11 @@ void ToolBar::OnEmulationStateChanged(Core::State state)
m_pause_action->setVisible(playing);
}

void ToolBar::closeEvent(QCloseEvent*)
{
Settings::Instance().SetToolBarVisible(false);
}

void ToolBar::OnDebugModeToggled(bool enabled)
{
m_step_action->setVisible(enabled);
@@ -20,6 +20,7 @@ class ToolBar final : public QToolBar
public:
explicit ToolBar(QWidget* parent = nullptr);

void closeEvent(QCloseEvent*) override;
signals:
void OpenPressed();
void PlayPressed();

0 comments on commit dabfecf

Please sign in to comment.