plasma-framework/toolbox.cpp
Marco Martin 311d2bafd2 added toggled() signal in the toolbox emitted upon mouse click.
will be needed for the panel toolbox.
and removing two pure virtual methods already declared in QGraphicsItem

svn path=/trunk/KDE/kdebase/workspace/libs/plasma/; revision=801445
2008-04-26 17:31:49 +00:00

173 lines
3.6 KiB
C++

/*
* Copyright 2007 by Aaron Seigo <aseigo@kde.org>
* Copyright 2008 by Marco Martin <notmart@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as
* published by the Free Software Foundation; either version 2, 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 Library 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.
*/
#include "toolbox_p.h"
#include <QGraphicsSceneHoverEvent>
#include <QPainter>
#include <QRadialGradient>
#include <plasma/theme.h>
#include <KColorScheme>
#include <KDebug>
namespace Plasma
{
// used with QGrahphicsItem::setData
static const int ToolName = 7001;
class Toolbox::Private
{
public:
Private()
: size(50),
iconSize(32, 32),
hidden(false),
showing(false),
orientation(Qt::Horizontal)
{}
int size;
QSize iconSize;
bool hidden;
bool showing;
Qt::Orientation orientation;
};
Toolbox::Toolbox(QGraphicsItem *parent)
: QGraphicsItem(parent),
d(new Private)
{
setAcceptsHoverEvents(true);
}
void Toolbox::addTool(QGraphicsItem *tool, const QString &name)
{
if (!tool) {
return;
}
tool->hide();
const int height = static_cast<int>(tool->boundingRect().height());
tool->setPos(QPoint( d->size*2,-height));
tool->setZValue(zValue() + 1);
tool->setParentItem(this);
tool->setData(ToolName, name);
}
void Toolbox::enableTool(const QString &toolName, bool visible)
{
//kDebug() << (visible? "enabling" : "disabling") << "tool" << toolName;
QGraphicsItem *t = tool(toolName);
if (t && t->isEnabled() != visible) {
t->setEnabled(visible);
// adjust the visible items
if ( d->showing) {
d->showing = false;
showToolbox();
}
}
}
bool Toolbox::isToolEnabled(const QString &toolName) const
{
QGraphicsItem *t = tool(toolName);
if (t) {
return t->isEnabled();
}
return false;
}
QGraphicsItem* Toolbox::tool(const QString &toolName) const
{
foreach (QGraphicsItem *child, QGraphicsItem::children()) {
//kDebug() << "checking tool" << child << child->data(ToolName);
if (child->data(ToolName).toString() == toolName) {
//kDebug() << "tool found!";
return child;
}
}
return 0;
}
int Toolbox::size() const
{
return d->size;
}
void Toolbox::setSize(const int newSize)
{
d->size = newSize;
}
QSize Toolbox::iconSize() const
{
return d->iconSize;
}
void Toolbox::setIconSize(const QSize newSize)
{
d->iconSize = newSize;
}
bool Toolbox::showing() const
{
return d->showing;
}
void Toolbox::setShowing(const bool show)
{
d->showing = show;
}
Qt::Orientation Toolbox::orientation() const
{
return d->orientation;
}
void Toolbox::setOrientation( Qt::Orientation orient )
{
d->orientation = orient;
}
void Toolbox::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
event->accept();
}
void Toolbox::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
if (boundingRect().contains(event->pos())) {
emit toggled();
}
}
} // plasma namespace
#include "toolbox_p.moc"