void QtControlWidget::closeEvent(QCloseEvent* event) { typedef IShellListener::Events::ShellEventType::ListenerList ListenerList; ShellEvent::Pointer shellEvent(new ShellEvent(Shell::Pointer(controller->shell))); ListenerList closedListeners(controller->shellEvents.shellClosed.GetListeners()); for (ListenerList::iterator listener = closedListeners.begin(); listener != closedListeners.end(); ++listener) { (*listener)->Execute(shellEvent); if (!shellEvent->doit) { //event->accept(); return; } } event->accept(); }
void QtMainWindowControl::closeEvent(QCloseEvent* event) { if (!controller->shell) return QMainWindow::changeEvent(event); typedef IShellListener::Events::ShellEventType::ListenerList ListenerList; ShellEvent::Pointer shellEvent(new ShellEvent(Shell::Pointer(controller->shell))); ListenerList closedListeners(controller->shellEvents.shellClosed.GetListeners()); for (ListenerList::iterator listener = closedListeners.begin(); listener != closedListeners.end(); ++listener) { (*listener)->Execute(shellEvent); if (!shellEvent->doit) { event->ignore(); return; } } QMainWindow::closeEvent(event); }
void QtMainWindowControl::changeEvent(QEvent* event) { if (!controller->shell) return QMainWindow::changeEvent(event); typedef IShellListener::Events::ShellEventType::ListenerList ListenerList; ShellEvent::Pointer shellEvent(new ShellEvent(Shell::Pointer(controller->shell))); switch (event->type()) { case QEvent::ActivationChange: { if (isActiveWindow()) { ListenerList activatedListeners(controller->shellEvents.shellActivated.GetListeners()); for (ListenerList::iterator listener = activatedListeners.begin(); listener != activatedListeners.end(); ++listener) { (*listener)->Execute(shellEvent); if (!shellEvent->doit) { event->accept(); return; } } } else { ListenerList deactivatedListeners(controller->shellEvents.shellDeactivated.GetListeners()); for (ListenerList::iterator listener = deactivatedListeners.begin(); listener != deactivatedListeners.end(); ++listener) { (*listener)->Execute(shellEvent); if (!shellEvent->doit) { event->accept(); return; } } } } break; case QEvent::WindowStateChange: { QWindowStateChangeEvent* stateEvent = dynamic_cast<QWindowStateChangeEvent*>(event); Qt::WindowStates oldState = stateEvent->oldState(); if (this->isMinimized() && !(oldState & Qt::WindowMinimized)) { ListenerList iconifiedListeners(controller->shellEvents.shellIconified.GetListeners()); for (ListenerList::iterator listener = iconifiedListeners.begin(); listener != iconifiedListeners.end(); ++listener) { (*listener)->Execute(shellEvent); if (!shellEvent->doit) { event->accept(); return; } } } else if (oldState & Qt::WindowMinimized && !this->isMinimized()) { ListenerList deiconifiedListeners(controller->shellEvents.shellDeiconified.GetListeners()); for (ListenerList::iterator listener = deiconifiedListeners.begin(); listener != deiconifiedListeners.end(); ++listener) { (*listener)->Execute(shellEvent); if (!shellEvent->doit) return; } } } break; default: break; } QMainWindow::changeEvent(event); }