kalarm/lib
label.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "kalarm.h"
00022 #include <QRadioButton>
00023 #include "label.moc"
00024
00025
00026 Label::Label(QWidget* parent, Qt::WFlags f)
00027 : QLabel(parent, f),
00028 mRadioButton(0),
00029 mFocusWidget(0)
00030 { }
00031
00032 Label::Label(const QString& text, QWidget* parent, Qt::WFlags f)
00033 : QLabel(text, parent, f),
00034 mRadioButton(0),
00035 mFocusWidget(0)
00036 { }
00037
00038 Label::Label(QWidget* buddy, const QString& text, QWidget* parent, Qt::WFlags f)
00039 : QLabel(text, parent, f),
00040 mRadioButton(0),
00041 mFocusWidget(0)
00042 {
00043 setBuddy(buddy);
00044 }
00045
00046
00047
00048
00049
00050
00051
00052 void Label::setBuddy(QWidget* bud)
00053 {
00054 if (mRadioButton)
00055 disconnect(mRadioButton, SIGNAL(destroyed()), this, SLOT(buddyDead()));
00056 QWidget* w = bud;
00057 if (w)
00058 {
00059 while (w->focusProxy())
00060 w = w->focusProxy();
00061 if (!qobject_cast<QRadioButton*>(w))
00062 w = 0;
00063 }
00064 if (!w)
00065 {
00066
00067 QLabel::setBuddy(bud);
00068 delete mFocusWidget;
00069 mFocusWidget = 0;
00070 mRadioButton = 0;
00071 }
00072 else
00073 {
00074
00075 if (!mFocusWidget)
00076 mFocusWidget = new LabelFocusWidget(this);
00077 QLabel::setBuddy(mFocusWidget);
00078 mRadioButton = (QRadioButton*)bud;
00079 connect(mRadioButton, SIGNAL(destroyed()), this, SLOT(buddyDead()));
00080 }
00081 }
00082
00083 void Label::buddyDead()
00084 {
00085 delete mFocusWidget;
00086 mFocusWidget = 0;
00087 mRadioButton = 0;
00088 }
00089
00090
00091
00092
00093
00094 void Label::activated()
00095 {
00096 if (mFocusWidget && mRadioButton)
00097 {
00098 mRadioButton->setFocus();
00099 mRadioButton->setChecked(true);
00100 }
00101 }
00102
00103
00104
00105
00106
00107
00108 LabelFocusWidget::LabelFocusWidget(QWidget* parent)
00109 : QWidget(parent)
00110 {
00111 setFocusPolicy(Qt::ClickFocus);
00112 setFixedSize(QSize(1,1));
00113 }
00114
00115 void LabelFocusWidget::focusInEvent(QFocusEvent*)
00116 {
00117 Label* parent = (Label*)parentWidget();
00118 parent->activated();
00119
00120 }