File indexing completed on 2024-04-28 16:44:49
0001 /* 0002 SPDX-FileCopyrightText: 2008 Michael Jansen <kde@michael-jansen.biz> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "window_trigger_widget.h" 0008 #include "helper_widgets/window_definition_list_widget.h" 0009 #include "windows_helper/window_selection_list.h" 0010 #include "windows_helper/window_selection_rules.h" 0011 0012 #include "windows_handler.h" 0013 0014 #include "kdebug.h" 0015 0016 WindowTriggerWidget::WindowTriggerWidget(KHotKeys::WindowTrigger *trigger, QWidget *parent) 0017 : TriggerWidgetBase(trigger, parent) 0018 , _windowdef_widget(nullptr) 0019 { 0020 window_trigger_ui.setupUi(this); 0021 0022 if (trigger->windows()->count() == 0) { 0023 trigger->windows()->insert(0, new KHotKeys::Windowdef_simple("", "")); 0024 } 0025 0026 QHBoxLayout *layout = new QHBoxLayout(); 0027 _windowdef_widget = new WindowDefinitionListWidget(trigger->windows(), window_trigger_ui.window_group); 0028 layout->addWidget(_windowdef_widget); 0029 window_trigger_ui.window_group->setLayout(layout); 0030 0031 connect(window_trigger_ui.window_appears, SIGNAL(toggled(bool)), _changedSignals, SLOT(map())); 0032 _changedSignals->setMapping(window_trigger_ui.window_appears, "appears"); 0033 connect(window_trigger_ui.window_disappears, SIGNAL(toggled(bool)), _changedSignals, SLOT(map())); 0034 _changedSignals->setMapping(window_trigger_ui.window_disappears, "disappears"); 0035 connect(window_trigger_ui.window_gets_focus, SIGNAL(toggled(bool)), _changedSignals, SLOT(map())); 0036 _changedSignals->setMapping(window_trigger_ui.window_gets_focus, "gets focus"); 0037 connect(window_trigger_ui.window_lost_focus, SIGNAL(toggled(bool)), _changedSignals, SLOT(map())); 0038 _changedSignals->setMapping(window_trigger_ui.window_lost_focus, "lost focus"); 0039 0040 connect(_windowdef_widget, SIGNAL(changed(bool)), SLOT(slotWindowSelectionChanged(bool))); 0041 } 0042 0043 WindowTriggerWidget::~WindowTriggerWidget() 0044 { 0045 } 0046 0047 KHotKeys::WindowTrigger *WindowTriggerWidget::trigger() 0048 { 0049 return static_cast<KHotKeys::WindowTrigger *>(_trigger); 0050 } 0051 0052 const KHotKeys::WindowTrigger *WindowTriggerWidget::trigger() const 0053 { 0054 return static_cast<const KHotKeys::WindowTrigger *>(_trigger); 0055 } 0056 0057 void WindowTriggerWidget::doCopyFromObject() 0058 { 0059 Q_ASSERT(trigger()); 0060 _windowdef_widget->copyFromObject(); 0061 0062 window_trigger_ui.window_appears->setChecked(trigger()->triggers_on(KHotKeys::WindowTrigger::WINDOW_APPEARS)); 0063 window_trigger_ui.window_disappears->setChecked(trigger()->triggers_on(KHotKeys::WindowTrigger::WINDOW_DISAPPEARS)); 0064 window_trigger_ui.window_gets_focus->setChecked(trigger()->triggers_on(KHotKeys::WindowTrigger::WINDOW_ACTIVATES)); 0065 window_trigger_ui.window_lost_focus->setChecked(trigger()->triggers_on(KHotKeys::WindowTrigger::WINDOW_DEACTIVATES)); 0066 } 0067 0068 void WindowTriggerWidget::doCopyToObject() 0069 { 0070 Q_ASSERT(trigger()); 0071 _windowdef_widget->copyToObject(); 0072 0073 KHotKeys::WindowTrigger::WindowEvents events; 0074 if (window_trigger_ui.window_appears->isChecked()) 0075 events |= KHotKeys::WindowTrigger::WINDOW_APPEARS; 0076 if (window_trigger_ui.window_disappears->isChecked()) 0077 events |= KHotKeys::WindowTrigger::WINDOW_DISAPPEARS; 0078 if (window_trigger_ui.window_gets_focus->isChecked()) 0079 events |= KHotKeys::WindowTrigger::WINDOW_ACTIVATES; 0080 if (window_trigger_ui.window_lost_focus->isChecked()) 0081 events |= KHotKeys::WindowTrigger::WINDOW_DEACTIVATES; 0082 0083 trigger()->setOnWindowEvents(events); 0084 } 0085 0086 bool WindowTriggerWidget::isChanged() const 0087 { 0088 Q_ASSERT(trigger()); 0089 0090 if (window_trigger_ui.window_appears->isChecked() != trigger()->triggers_on(KHotKeys::WindowTrigger::WINDOW_APPEARS) 0091 || window_trigger_ui.window_disappears->isChecked() != trigger()->triggers_on(KHotKeys::WindowTrigger::WINDOW_DISAPPEARS) 0092 || window_trigger_ui.window_gets_focus->isChecked() != trigger()->triggers_on(KHotKeys::WindowTrigger::WINDOW_ACTIVATES) 0093 || window_trigger_ui.window_lost_focus->isChecked() != trigger()->triggers_on(KHotKeys::WindowTrigger::WINDOW_DEACTIVATES)) 0094 return true; 0095 0096 return _windowdef_widget->isChanged(); 0097 } 0098 0099 void WindowTriggerWidget::slotWindowSelectionChanged(bool isChanged) const 0100 { 0101 emit changed(isChanged); 0102 } 0103 0104 #include "moc_window_trigger_widget.cpp"