File indexing completed on 2024-04-28 05:26:22
0001 /* 0002 * SPDX-FileCopyrightText: 2014 Hugo Pereira Da Costa <hugo.pereira@free.fr> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "breezemnemonics.h" 0008 0009 #include <QKeyEvent> 0010 #include <QWidget> 0011 0012 namespace Breeze 0013 { 0014 //____________________________________________________ 0015 void Mnemonics::setMode(int mode) 0016 { 0017 switch (mode) { 0018 case StyleConfigData::MN_NEVER: 0019 qApp->removeEventFilter(this); 0020 setEnabled(false); 0021 break; 0022 0023 default: 0024 case StyleConfigData::MN_ALWAYS: 0025 qApp->removeEventFilter(this); 0026 setEnabled(true); 0027 break; 0028 0029 case StyleConfigData::MN_AUTO: 0030 qApp->removeEventFilter(this); 0031 qApp->installEventFilter(this); 0032 setEnabled(false); 0033 break; 0034 } 0035 } 0036 0037 //____________________________________________________ 0038 bool Mnemonics::eventFilter(QObject *, QEvent *event) 0039 { 0040 switch (event->type()) { 0041 case QEvent::KeyPress: 0042 if (static_cast<QKeyEvent *>(event)->key() == Qt::Key_Alt) { 0043 setEnabled(true); 0044 } 0045 break; 0046 0047 case QEvent::KeyRelease: 0048 if (static_cast<QKeyEvent *>(event)->key() == Qt::Key_Alt) { 0049 setEnabled(false); 0050 } 0051 break; 0052 0053 case QEvent::ApplicationStateChange: 0054 setEnabled(false); 0055 break; 0056 0057 default: 0058 break; 0059 } 0060 0061 return false; 0062 } 0063 0064 //____________________________________________________ 0065 void Mnemonics::setEnabled(bool value) 0066 { 0067 if (_enabled == value) { 0068 return; 0069 } 0070 0071 _enabled = value; 0072 0073 // update all top level widgets 0074 const auto widgets = qApp->topLevelWidgets(); 0075 for (QWidget *widget : widgets) { 0076 widget->update(); 0077 } 0078 } 0079 0080 }