1 /* 2 * groupbox.cpp - checkable group box with read-only option 3 * Program: kalarm 4 * SPDX-FileCopyrightText: 2011, 2019 David Jarvie <djarvie@kde.org> 5 * 6 * SPDX-License-Identifier: GPL-2.0-or-later 7 */ 8 9 #include "groupbox.h" 10 11 #include <QMouseEvent> 12 #include <QKeyEvent> 13 14 GroupBox(QWidget * parent)15GroupBox::GroupBox(QWidget* parent) 16 : QGroupBox(parent) 17 { } 18 GroupBox(const QString & title,QWidget * parent)19GroupBox::GroupBox(const QString& title, QWidget* parent) 20 : QGroupBox(title, parent) 21 { } 22 setReadOnly(bool ro)23void GroupBox::setReadOnly(bool ro) 24 { 25 mReadOnly = ro; 26 } 27 mousePressEvent(QMouseEvent * e)28void GroupBox::mousePressEvent(QMouseEvent* e) 29 { 30 if (mReadOnly) 31 { 32 // Swallow up the event if it's the left button 33 if (e->button() == Qt::LeftButton) 34 return; 35 } 36 QGroupBox::mousePressEvent(e); 37 } 38 mouseReleaseEvent(QMouseEvent * e)39void GroupBox::mouseReleaseEvent(QMouseEvent* e) 40 { 41 if (mReadOnly) 42 { 43 // Swallow up the event if it's the left button 44 if (e->button() == Qt::LeftButton) 45 return; 46 } 47 QGroupBox::mouseReleaseEvent(e); 48 } 49 mouseMoveEvent(QMouseEvent * e)50void GroupBox::mouseMoveEvent(QMouseEvent* e) 51 { 52 if (!mReadOnly) 53 QGroupBox::mouseMoveEvent(e); 54 } 55 keyPressEvent(QKeyEvent * e)56void GroupBox::keyPressEvent(QKeyEvent* e) 57 { 58 if (mReadOnly) 59 { 60 switch (e->key()) 61 { 62 case Qt::Key_Up: 63 case Qt::Key_Left: 64 case Qt::Key_Right: 65 case Qt::Key_Down: 66 // Process keys which shift the focus 67 break; 68 default: 69 return; 70 } 71 } 72 QGroupBox::keyPressEvent(e); 73 } 74 keyReleaseEvent(QKeyEvent * e)75void GroupBox::keyReleaseEvent(QKeyEvent* e) 76 { 77 if (!mReadOnly) 78 QGroupBox::keyReleaseEvent(e); 79 } 80 81 // vim: et sw=4: 82