1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
//
// toggle_window.cpp: Toggle-able window.
//
// CEN64D: Cycle-Accurate Nintendo 64 Debugger
// Copyright (C) 2015, Tyler J. Stachecki.
//
// This file is subject to the terms and conditions defined in
// 'LICENSE', which is part of this source code package.
//
#include "toggle_window.h"
ToggleWindow::ToggleWindow(const QString &windowTitle,
QAction *toggleAction, bool initiallyVisible) : toggleAction(toggleAction) {
setWindowTitle(windowTitle);
// Create states and connect signals to slots.
windowHiddenState.addTransition(toggleAction,
SIGNAL(triggered()), &windowExposedState);
windowExposedState.addTransition(toggleAction,
SIGNAL(triggered()), &windowHiddenState);
QObject::connect(&windowHiddenState, SIGNAL(entered()), this, SLOT(hide()));
QObject::connect(&windowExposedState, SIGNAL(entered()), this, SLOT(show()));
if (toggleAction->isCheckable())
toggleAction->setChecked(initiallyVisible);
// Setup the state machine.
windowMachine.addState(&windowHiddenState);
windowMachine.addState(&windowExposedState);
windowMachine.setInitialState(initiallyVisible
? &windowExposedState
: &windowHiddenState);
windowMachine.start();
}
ToggleWindow::~ToggleWindow() {
}
void ToggleWindow::closeEvent(QCloseEvent *event) {
toggleAction->trigger();
event->accept();
}
|