From 3436558bfd7bbbe0c63a0a89330b099b7c9da7ed Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 3 Jan 2011 05:36:14 +0200 Subject: Add inventory filter control with only value All. --- src/gui/widgets/horizontcontainer.cpp | 53 ++++++++++++++++++++++++++++++++++ src/gui/widgets/horizontcontainer.h | 54 +++++++++++++++++++++++++++++++++++ src/gui/widgets/inventoryfilter.cpp | 41 ++++++++++++++++++++++++++ src/gui/widgets/inventoryfilter.h | 52 +++++++++++++++++++++++++++++++++ 4 files changed, 200 insertions(+) create mode 100644 src/gui/widgets/horizontcontainer.cpp create mode 100644 src/gui/widgets/horizontcontainer.h create mode 100644 src/gui/widgets/inventoryfilter.cpp create mode 100644 src/gui/widgets/inventoryfilter.h (limited to 'src/gui/widgets') diff --git a/src/gui/widgets/horizontcontainer.cpp b/src/gui/widgets/horizontcontainer.cpp new file mode 100644 index 000000000..6ecd3f933 --- /dev/null +++ b/src/gui/widgets/horizontcontainer.cpp @@ -0,0 +1,53 @@ +/* + * The Mana Client + * Copyright (C) 2009-2010 The Mana Developers + * Copyright (C) 2011 The ManaPlus Developers + * + * This file is part of The Mana Client. + * + * 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 + * 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, see . + */ + +#include "gui/widgets/horizontcontainer.h" + +HorizontContainer::HorizontContainer(int height, int spacing): + mSpacing(spacing), + mCount(0), + mLastX(0) +{ + setHeight(height); + addWidgetListener(this); +} + +void HorizontContainer::add(gcn::Widget *widget) +{ + if (!widget) + return; + + Container::add(widget); + widget->setPosition(mLastX, 0); + mCount++; + mLastX += widget->getWidth() + mSpacing; +} + +void HorizontContainer::clear() +{ + Container::clear(); + + mCount = 0; +} + +void HorizontContainer::widgetResized(const gcn::Event &event _UNUSED_) +{ +} diff --git a/src/gui/widgets/horizontcontainer.h b/src/gui/widgets/horizontcontainer.h new file mode 100644 index 000000000..b8325a564 --- /dev/null +++ b/src/gui/widgets/horizontcontainer.h @@ -0,0 +1,54 @@ +/* + * The Mana Client + * Copyright (C) 2009-2010 The Mana Developers + * Copyright (C) 2011 The ManaPlus Developers + * + * This file is part of The Mana Client. + * + * 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 + * 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, see . + */ + +#ifndef GUI_HORIZONTCONTAINER_H +#define GUI_HORIZONTCONTAINER_H + +#include "gui/widgets/container.h" + +#include + +#ifdef __GNUC__ +#define _UNUSED_ __attribute__ ((unused)) +#else +#define _UNUSED_ +#endif + +/** + * A widget container. + * + * This container places it's contents veritcally. + */ +class HorizontContainer : public Container, public gcn::WidgetListener +{ + public: + HorizontContainer(int height, int spacing); + virtual void add(gcn::Widget *widget); + virtual void clear(); + void widgetResized(const gcn::Event &event); + + protected: + int mSpacing; + int mCount; + int mLastX; +}; + +#endif diff --git a/src/gui/widgets/inventoryfilter.cpp b/src/gui/widgets/inventoryfilter.cpp new file mode 100644 index 000000000..406860719 --- /dev/null +++ b/src/gui/widgets/inventoryfilter.cpp @@ -0,0 +1,41 @@ +/* + * The Mana Client + * Copyright (C) 2011 The ManaPlus Developers + * + * This file is part of The Mana Client. + * + * 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 + * 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, see . + */ + +#include "gui/widgets/inventoryfilter.h" + +#include "gui/widgets/horizontcontainer.h" +#include "gui/widgets/radiobutton.h" + + +InventoryFilter::InventoryFilter(std::string group, int height, int spacing): + HorizontContainer(height, spacing), + mGroup(group) +{ +} + +void InventoryFilter::add(std::string tag) +{ + if (tag.empty()) + return; + + RadioButton *radio = new RadioButton(tag, mGroup, mCount == 0); + radio->adjustSize(); + HorizontContainer::add(radio); +} diff --git a/src/gui/widgets/inventoryfilter.h b/src/gui/widgets/inventoryfilter.h new file mode 100644 index 000000000..36112d374 --- /dev/null +++ b/src/gui/widgets/inventoryfilter.h @@ -0,0 +1,52 @@ +/* + * The Mana Client + * Copyright (C) 2009-2010 The Mana Developers + * Copyright (C) 2011 The ManaPlus Developers + * + * This file is part of The Mana Client. + * + * 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 + * 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, see . + */ + +#ifndef GUI_INVENTORYFILTER_H +#define GUI_INVENTORYFILTER_H + +#include + +#include "gui/widgets/horizontcontainer.h" + +#ifdef __GNUC__ +#define _UNUSED_ __attribute__ ((unused)) +#else +#define _UNUSED_ +#endif + +//class HorizontContainer; + +/** + * A widget container. + * + * This container places it's contents veritcally. + */ +class InventoryFilter : public HorizontContainer +{ + public: + InventoryFilter(std::string group, int height, int spacing); + void add(std::string tag); + + private: + std::string mGroup; +}; + +#endif -- cgit v1.2.3-70-g09d2