KDEUI
kshortcuteditwidget.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
00022
00023
00024
00025 #include "kshortcutsdialog_p.h"
00026
00027 #include <QPainter>
00028 #include <QPen>
00029 #include <QGridLayout>
00030 #include <QRadioButton>
00031 #include <QLabel>
00032
00033 #include "kkeysequencewidget.h"
00034 #include "klocale.h"
00035
00036 void TabConnectedWidget::paintEvent(QPaintEvent *e)
00037 {
00038 QWidget::paintEvent(e);
00039 QPainter p(this);
00040 QPen pen(QPalette().highlight().color());
00041 pen.setWidth(6);
00042 p.setPen(pen);
00043 p.drawLine(0, 0, width(), 0);
00044 p.drawLine(0, 0, 0, height());
00045 }
00046
00047 ShortcutEditWidget::ShortcutEditWidget(QWidget *viewport, const QKeySequence &defaultSeq,
00048 const QKeySequence &activeSeq, bool allowLetterShortcuts)
00049 : TabConnectedWidget(viewport),
00050 m_defaultKeySequence(defaultSeq),
00051 m_isUpdating(false)
00052 {
00053 QGridLayout *layout = new QGridLayout(this);
00054
00055 m_defaultRadio = new QRadioButton(i18n("Default:"), this);
00056 QString defaultText = defaultSeq.toString(QKeySequence::NativeText);
00057 if (defaultText.isEmpty())
00058 defaultText = i18n("None");
00059 QLabel *defaultLabel = new QLabel(defaultText, this);
00060
00061 m_customRadio = new QRadioButton(i18n("Custom:"), this);
00062 m_customEditor = new KKeySequenceWidget(this);
00063 m_customEditor->setModifierlessAllowed(allowLetterShortcuts);
00064
00065 if (activeSeq == defaultSeq) {
00066 m_defaultRadio->setChecked(true);
00067 } else {
00068 m_customRadio->setChecked(true);
00069 m_customEditor->setKeySequence(activeSeq);
00070 }
00071
00072 layout->addWidget(m_defaultRadio, 0, 0);
00073 layout->addWidget(defaultLabel, 0, 1);
00074 layout->addWidget(m_customRadio, 1, 0);
00075 layout->addWidget(m_customEditor, 1, 1);
00076 layout->setColumnStretch(2, 1);
00077
00078 connect(m_defaultRadio, SIGNAL(toggled(bool)),
00079 this, SLOT(defaultToggled(bool)));
00080 connect(m_customEditor, SIGNAL(keySequenceChanged(const QKeySequence &)),
00081 this, SLOT(setCustom(const QKeySequence &)));
00082 }
00083
00084
00085
00086 void ShortcutEditWidget::defaultToggled(bool checked)
00087 {
00088 if (m_isUpdating)
00089 return;
00090
00091 m_isUpdating = true;
00092 m_customEditor->clearKeySequence();
00093 if (checked) {
00094 emit keySequenceChanged(m_defaultKeySequence);
00095 } else {
00096
00097 emit keySequenceChanged(QKeySequence());
00098 }
00099 m_isUpdating = false;
00100 }
00101
00102
00103
00104 void ShortcutEditWidget::setCustom(const QKeySequence &seq)
00105 {
00106 if (m_isUpdating)
00107 return;
00108
00109 m_isUpdating = true;
00110 if (seq != m_defaultKeySequence)
00111 m_customRadio->setChecked(true);
00112 else
00113 m_defaultRadio->setChecked(true);
00114 emit keySequenceChanged(seq);
00115 m_isUpdating = false;
00116 }
00117