diff options
Diffstat (limited to 'akregator/src/tagaction.cpp')
-rw-r--r-- | akregator/src/tagaction.cpp | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/akregator/src/tagaction.cpp b/akregator/src/tagaction.cpp new file mode 100644 index 000000000..4222bf2d7 --- /dev/null +++ b/akregator/src/tagaction.cpp @@ -0,0 +1,114 @@ +/* + This file is part of Akregator. + + Copyright (C) 2005 Frank Osterfeld <frank.osterfeld@kdemail.net> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + As a special exception, permission is given to link this program + with any edition of Qt, and distribute the resulting executable, + without including the source code for Qt in the source distribution. +*/ + +//#include "menuitems.h" +#include "tag.h" +#include "tagaction.h" + +#include <kapplication.h> +#include <kdebug.h> +#include <kpopupmenu.h> + +#include <qmap.h> +#include <qpopupmenu.h> + + +namespace Akregator { + +class TagAction::TagActionPrivate +{ + public: + Tag tag; + //QMap<int, QPopupMenu*> idToPopup; + //QMap<QPopupMenu*, int> popupToId; +}; + +TagAction::TagAction(const Tag& tag, const QObject *receiver, const char *slot, QObject *parent) +//KAction (const QString &text, const KShortcut &cut, const QObject *receiver, const char *slot, QObject *parent, const char *name=0) + : KToggleAction(tag.name(), KShortcut(), 0, 0, parent), d(new TagActionPrivate) +{ + d->tag = tag; + connect(this, SIGNAL(toggled(const Tag&, bool)), receiver, slot); + connect(this, SIGNAL(toggled(bool)), this, SLOT(slotToggled(bool))); +} + +TagAction::~TagAction() +{ + delete d; + d = 0; +} + +Tag TagAction::tag() const +{ + return d->tag; +} + +/* +void TagAction::unplug(QWidget* widget) +{ + KToggleAction::unplug(widget); + + QPopupMenu* popup = ::qt_cast<QPopupMenu *>(widget); + if (popup) + { + d->idToPopup.remove(d->popupToId[popup]); + d->popupToId.remove(popup); + } +}*/ + +/* +int TagAction::plug(QWidget* widget, int index) +{ + QPopupMenu* popup = ::qt_cast<QPopupMenu *>( widget ); + if (!popup) + { + kdWarning() << "Can not plug KToggleAction in " << widget->className() << endl; + return -1; + } + if (kapp && !kapp->authorizeKAction(name())) + return -1; + + TagMenuItem* item = new TagMenuItem(d->tag); + int id = popup->insertItem(TagMenuItem::checkBoxIconSet(isChecked(), popup->colorGroup()), item, -1, index); + + + popup->connectItem (id, this, SLOT(slotActivated())); + + d->popupToId[popup] = id; + d->idToPopup[id] = popup; + + if ( id == -1 ) + return id; + + return id; +} +*/ +void TagAction::slotToggled(bool enabled) +{ + emit toggled(d->tag, enabled); +} + +} // namespace Akregator + +#include "tagaction.moc" |