/***************************************************************************
- * Copyright (C) 2005-08 by the Quassel Project *
+ * Copyright (C) 2005-09 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* Parts of this implementation are based on KDE's KActionCollection. *
***************************************************************************/
+#ifndef HAVE_KDE
+
#include <QAction>
+#include <QDebug>
#include "actioncollection.h"
#include "action.h"
+#include "uisettings.h"
ActionCollection::ActionCollection(QObject *parent) : QObject(parent) {
_connectTriggered = _connectHovered = false;
}
Action *ActionCollection::addAction(const QString &name, Action *action) {
- QAction *act = addAction(name, action);
+ QAction *act = addAction(name, static_cast<QAction *>(action));
+ Q_UNUSED(act);
Q_ASSERT(act == action);
return action;
}
else
action->setObjectName(indexName);
if(indexName.isEmpty())
- indexName = QString("unnamed-%1").arg((int)action, 16);
+ indexName = indexName.sprintf("unnamed-%p", (void *)action);
// do we already have this action?
if(_actionByName.value(indexName, 0) == action)
}
void ActionCollection::readSettings() {
-
+ ShortcutSettings s;
+ QStringList savedShortcuts = s.savedShortcuts();
+
+ foreach(const QString &name, _actionByName.keys()) {
+ if(!savedShortcuts.contains(name))
+ continue;
+ Action *action = qobject_cast<Action *>(_actionByName.value(name));
+ if(action)
+ action->setShortcut(s.loadShortcut(name), Action::ActiveShortcut);
+ }
}
void ActionCollection::writeSettings() const {
-
-
+ ShortcutSettings s;
+ foreach(const QString &name, _actionByName.keys()) {
+ Action *action = qobject_cast<Action *>(_actionByName.value(name));
+ if(!action)
+ continue;
+ if(!action->isShortcutConfigurable())
+ continue;
+ if(action->shortcut(Action::ActiveShortcut) == action->shortcut(Action::DefaultShortcut))
+ continue;
+ s.saveShortcut(name, action->shortcut(Action::ActiveShortcut));
+ }
}
void ActionCollection::slotActionTriggered() {
_associatedWidgets.clear();
}
+void ActionCollection::associatedWidgetDestroyed(QObject *obj) {
+ _associatedWidgets.removeAll(static_cast<QWidget *>(obj));
+}
+
bool ActionCollection::unlistAction(QAction *action) {
// This might be called with a partly destroyed QAction!
return true;
}
+
+#endif /* HAVE_KDE */