kalarm/lib
radiobutton.cpp00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "radiobutton.moc"
00022
00023
00024 RadioButton::RadioButton(QWidget* parent, const char* name)
00025 : QRadioButton(parent, name),
00026 mFocusPolicy(focusPolicy()),
00027 mFocusWidget(0),
00028 mReadOnly(false)
00029 { }
00030
00031 RadioButton::RadioButton(const QString& text, QWidget* parent, const char* name)
00032 : QRadioButton(text, parent, name),
00033 mFocusPolicy(focusPolicy()),
00034 mFocusWidget(0),
00035 mReadOnly(false)
00036 { }
00037
00038
00039
00040
00041
00042 void RadioButton::setReadOnly(bool ro)
00043 {
00044 if ((int)ro != (int)mReadOnly)
00045 {
00046 mReadOnly = ro;
00047 setFocusPolicy(ro ? QWidget::NoFocus : mFocusPolicy);
00048 if (ro)
00049 clearFocus();
00050 }
00051 }
00052
00053
00054
00055
00056 void RadioButton::setFocusWidget(QWidget* w, bool enable)
00057 {
00058 mFocusWidget = w;
00059 mFocusWidgetEnable = enable;
00060 if (w)
00061 connect(this, SIGNAL(clicked()), SLOT(slotClicked()));
00062 else
00063 disconnect(this, SIGNAL(clicked()), this, SLOT(slotClicked()));
00064 }
00065
00066
00067
00068
00069
00070 void RadioButton::slotClicked()
00071 {
00072 if (mFocusWidget && isChecked())
00073 {
00074 if (mFocusWidgetEnable)
00075 mFocusWidget->setEnabled(true);
00076 mFocusWidget->setFocus();
00077 }
00078 }
00079
00080
00081
00082
00083
00084 void RadioButton::mousePressEvent(QMouseEvent* e)
00085 {
00086 if (mReadOnly)
00087 {
00088
00089 if (e->button() == LeftButton)
00090 return;
00091 }
00092 QRadioButton::mousePressEvent(e);
00093 }
00094
00095 void RadioButton::mouseReleaseEvent(QMouseEvent* e)
00096 {
00097 if (mReadOnly)
00098 {
00099
00100 if (e->button() == LeftButton)
00101 return;
00102 }
00103 QRadioButton::mouseReleaseEvent(e);
00104 }
00105
00106 void RadioButton::mouseMoveEvent(QMouseEvent* e)
00107 {
00108 if (!mReadOnly)
00109 QRadioButton::mouseMoveEvent(e);
00110 }
00111
00112 void RadioButton::keyPressEvent(QKeyEvent* e)
00113 {
00114 if (mReadOnly)
00115 switch (e->key())
00116 {
00117 case Key_Up:
00118 case Key_Left:
00119 case Key_Right:
00120 case Key_Down:
00121
00122 case Key_Escape:
00123 break;
00124 default:
00125 return;
00126 }
00127 QRadioButton::keyPressEvent(e);
00128 }
00129
00130 void RadioButton::keyReleaseEvent(QKeyEvent* e)
00131 {
00132 if (!mReadOnly)
00133 QRadioButton::keyReleaseEvent(e);
00134 }
|