28 #include "kaction_p.h"
29 #include "kglobalaccel_p.h"
35 #include <QtGui/QApplication>
36 #include <QtGui/QHBoxLayout>
37 #include <QtGui/QShortcutEvent>
38 #include <QtGui/QToolBar>
49 void KActionPrivate::init(
KAction *q_ptr)
52 globalShortcutEnabled =
false;
53 neverSetGlobalShortcut =
true;
55 QObject::connect(q, SIGNAL(triggered(
bool)), q, SLOT(slotTriggered()));
57 q->setProperty(
"isShortcutConfigurable",
true);
60 void KActionPrivate::setActiveGlobalShortcutNoEnable(
const KShortcut &
cut)
67 void KActionPrivate::slotTriggered()
72 emit q->triggered(QApplication::mouseButtons(), QApplication::keyboardModifiers());
81 emit q->authorized(authAction);
89 void KActionPrivate::authStatusChanged(
int status)
96 if(!oldIcon.isNull()) {
103 oldIcon =
KIcon(q->icon());
104 q->setIcon(
KIcon(
"dialog-password"));
107 q->setEnabled(
false);
108 if(!oldIcon.isNull()) {
117 if (event->type() == QEvent::Shortcut) {
118 QShortcutEvent *se =
static_cast<QShortcutEvent*
>(
event);
119 if(se->isAmbiguous()) {
122 i18n(
"The key sequence '%1' is ambiguous. Use 'Configure Shortcuts'\n"
123 "from the 'Settings' menu to solve the ambiguity.\n"
124 "No action will be triggered.",
125 se->key().toString(QKeySequence::NativeText)),
126 i18n(
"Ambiguous shortcut detected"));
162 if (d->globalShortcutEnabled) {
164 d->globalShortcutEnabled =
false;
175 return property(
"isShortcutConfigurable").toBool();
180 setProperty(
"isShortcutConfigurable", b);
188 QKeySequence primary = property(
"defaultPrimaryShortcut").value<QKeySequence>();
189 QKeySequence secondary = property(
"defaultAlternateShortcut").value<QKeySequence>();
193 QKeySequence primary = shortcuts().value(0);
194 QKeySequence secondary = shortcuts().value(1);
203 setProperty(
"defaultPrimaryShortcut", shortcut.
primary());
204 setProperty(
"defaultAlternateShortcut", shortcut.
alternate());
217 setProperty(
"defaultPrimaryShortcut", keySeq);
234 return d->defaultGlobalShortcut;
236 return d->globalShortcut;
243 bool changed =
false;
248 for (
int i = 0; i < 4; i++) {
249 shortcutKeys[i] = shortcut.
primary()[i];
250 shortcutKeys[i + 4] = shortcut.
alternate()[i];
252 for (
int i = 0; i < 8; i++) {
253 if (shortcutKeys[i] == -1) {
254 kWarning(283) <<
"Encountered garbage keycode (keycode = -1) in input, not doing anything.";
259 if (!d->globalShortcutEnabled) {
261 if (objectName().isEmpty() || objectName().startsWith(QLatin1String(
"unnamed-"))) {
262 kWarning(283) <<
"Attempt to set global shortcut for action without objectName()."
263 " Read the setGlobalShortcut() documentation.";
266 d->globalShortcutEnabled =
true;
270 if ((type &
DefaultShortcut) && d->defaultGlobalShortcut != shortcut) {
271 d->defaultGlobalShortcut =
shortcut;
283 if (changed || d->neverSetGlobalShortcut) {
285 d->neverSetGlobalShortcut =
false;
289 #ifndef KDE_NO_DEPRECATED
292 return d->globalShortcutEnabled;
298 return d->globalShortcutEnabled;
301 #ifndef KDE_NO_DEPRECATED
316 if (d->globalShortcutEnabled) {
317 d->globalShortcutEnabled =
false;
318 d->neverSetGlobalShortcut =
true;
327 return d->defaultShapeGesture;
329 return d->shapeGesture;
336 return d->defaultRockerGesture;
338 return d->rockerGesture;
346 d->defaultShapeGesture = gest;
350 kDebug(283) <<
"New mouse gesture already in use, won't change gesture.";
355 d->shapeGesture = gest;
364 d->defaultRockerGesture = gest;
368 kDebug(283) <<
"New mouse gesture already in use, won't change gesture.";
373 d->rockerGesture = gest;
387 return d->authAction;
392 if (actionName.isEmpty()) {
402 if (d->authAction == action) {
407 disconnect(d->authAction->watcher(), SIGNAL(statusChanged(
int)),
408 this, SLOT(authStatusChanged(
int)));
412 if (!d->oldIcon.isNull()) {
414 d->oldIcon =
KIcon();
419 d->authAction = action;
422 d->authAction->setParentWidget(parentWidget());
424 connect(d->authAction->watcher(), SIGNAL(statusChanged(
int)),
425 this, SLOT(authStatusChanged(
int)));
426 d->authStatusChanged(d->authAction->status());
433 #include "kaction.moc"