customaction.cpp 2.67 KB
Newer Older
1 2 3 4 5
/***************************************************************************
                           customaction.cpp  -  description
                             -------------------
    begin                : Wed Feb 6 2002
    copyright            : (C) 2002 by Scott Wheeler
6
    email                : wheeler@kde.org
7
***************************************************************************/
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

/***************************************************************************
 *                                                                         *
 *   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.                                   *
 *                                                                         *
 ***************************************************************************/

#include "customaction.h"

////////////////////////////////////////////////////////////////////////////////
// public members
////////////////////////////////////////////////////////////////////////////////

CustomAction::CustomAction(const QString &text, QObject *parent, const char *name)
25
    : KAction(text, 0, parent, name)
26
{
27
    toolbar=NULL;
28 29 30 31
}

CustomAction::~CustomAction()
{
32

33 34 35 36
}

int CustomAction::plug(QWidget *parent, int index)
{
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
    customWidget = createWidget(parent);

    if(customWidget) {
        // the check for null makes sure that there is only one toolbar that this is
        // "plugged" in to
        if (parent->inherits("KToolBar") && !toolbar) {
            toolbar = static_cast<KToolBar *>(parent);
            int id = KAction::getToolButtonID();

            toolbar->insertWidget(id, customWidget->width(), customWidget, index);

            addContainer(toolbar, id);
            connect(toolbar, SIGNAL(destroyed()), this, SLOT(slotDestroyed()));

            return (containerCount() - 1);
        }

        return(-1);
    }
    else {
        return(-1);
58 59 60 61 62 63
    }
}


void CustomAction::unplug(QWidget *parent)
{
64 65 66 67 68 69 70 71 72 73
    if (parent->inherits("KToolBar")) {
        toolbar = static_cast<KToolBar *>(parent);

        int index = findContainer(toolbar);
        if (index != -1) {
            toolbar->removeItem(itemId(index));
            removeContainer(index);

            toolbar = 0;
        }
74 75 76 77 78 79 80 81 82
    }
}

////////////////////////////////////////////////////////////////////////////////
// protected members
////////////////////////////////////////////////////////////////////////////////

KToolBar *CustomAction::getToolBar()
{
83
    return(toolbar);
84
}
85
#include "customaction.moc"