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)15 GroupBox::GroupBox(QWidget* parent)
16     : QGroupBox(parent)
17 { }
18 
GroupBox(const QString & title,QWidget * parent)19 GroupBox::GroupBox(const QString& title, QWidget* parent)
20     : QGroupBox(title, parent)
21 { }
22 
setReadOnly(bool ro)23 void GroupBox::setReadOnly(bool ro)
24 {
25     mReadOnly = ro;
26 }
27 
mousePressEvent(QMouseEvent * e)28 void 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)39 void 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)50 void GroupBox::mouseMoveEvent(QMouseEvent* e)
51 {
52     if (!mReadOnly)
53         QGroupBox::mouseMoveEvent(e);
54 }
55 
keyPressEvent(QKeyEvent * e)56 void 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)75 void GroupBox::keyReleaseEvent(QKeyEvent* e)
76 {
77     if (!mReadOnly)
78         QGroupBox::keyReleaseEvent(e);
79 }
80 
81 // vim: et sw=4:
82