diff options
-rw-r--r-- | src/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/Makefile.am | 1 | ||||
-rw-r--r-- | src/gui/widgets/tabs/socialattacktab.h | 128 | ||||
-rw-r--r-- | src/gui/windows/socialwindow.cpp | 97 |
4 files changed, 131 insertions, 96 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1fd0fda91..6427bdd32 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -260,6 +260,7 @@ SET(SRCS gui/widgets/sliderlist.h gui/widgets/tabs/shortcuttab.h gui/widgets/tabs/skilltab.h + gui/widgets/tabs/socialattacktab.h gui/widgets/tabs/socialguildtab.h gui/widgets/tabs/socialguildtab2.h gui/widgets/tabs/socialnavigationtab.h diff --git a/src/Makefile.am b/src/Makefile.am index 37b82de0f..7387cfe1f 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -358,6 +358,7 @@ manaplus_SOURCES += gui/widgets/avatarlistbox.cpp \ gui/widgets/sliderlist.h \ gui/widgets/tabs/shortcuttab.h \ gui/widgets/tabs/skilltab.h \ + gui/widgets/tabs/socialattacktab.h \ gui/widgets/tabs/socialguildtab.h \ gui/widgets/tabs/socialguildtab2.h \ gui/widgets/tabs/socialnavigationtab.h \ diff --git a/src/gui/widgets/tabs/socialattacktab.h b/src/gui/widgets/tabs/socialattacktab.h new file mode 100644 index 000000000..6c0b6ea68 --- /dev/null +++ b/src/gui/widgets/tabs/socialattacktab.h @@ -0,0 +1,128 @@ +/* + * The ManaPlus Client + * Copyright (C) 2011-2014 The ManaPlus Developers + * + * This file is part of The ManaPlus 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 <http://www.gnu.org/licenses/>. + */ + +#ifndef GUI_WIDGETS_TABS_SOCIALATTACKTAB_H +#define GUI_WIDGETS_TABS_SOCIALATTACKTAB_H + +#include "gui/widgets/tabs/socialtab.h" + +#include "utils/delete2.h" +#include "utils/gettext.h" + +#include "localconsts.h" + +#define addAvatars(mob, str, type) \ +{\ + ava = new Avatar(str);\ + ava->setOnline(false);\ + ava->setLevel(-1);\ + ava->setType(MapItem::SEPARATOR);\ + ava->setX(0);\ + ava->setY(0);\ + avatars->push_back(ava);\ + mobs = actorManager->get##mob##s();\ + i = mobs.begin();\ + i_end = mobs.end();\ + while (i != i_end)\ + {\ + std::string name;\ + int level = -1;\ + if (*i == "")\ + {\ + name = _("(default)");\ + level = 0;\ + }\ + else\ + {\ + name = *i;\ + }\ + ava = new Avatar(name);\ + ava->setOnline(true);\ + ava->setLevel(level);\ + ava->setType(MapItem::type);\ + ava->setX(0);\ + ava->setY(0);\ + avatars->push_back(ava);\ + ++ i;\ + }\ +} + +#define updateAtkListStart() \ + if (!socialWindow || !player_node || !actorManager)\ + return;\ + std::vector<Avatar*> *const avatars = mBeings->getMembers();\ + std::vector<Avatar*>::iterator ia = avatars->begin();\ + while (ia != avatars->end())\ + {\ + delete *ia;\ + ++ ia;\ + }\ + avatars->clear();\ + Avatar *ava = nullptr;\ + std::list<std::string> mobs;\ + std::list<std::string>::const_iterator i;\ + std::list<std::string>::const_iterator i_end; + +class SocialAttackTab final : public SocialTab +{ + public: + SocialAttackTab(const Widget2 *const widget, + const bool showBackground) : + SocialTab(widget), + mBeings(new BeingsListModel) + { + mList = new AvatarListBox(this, mBeings); + mList->postInit(); + mScroll = new ScrollArea(this, mList, showBackground, + "social_background.xml"); + + mScroll->setHorizontalScrollPolicy(ScrollArea::SHOW_AUTO); + mScroll->setVerticalScrollPolicy(ScrollArea::SHOW_ALWAYS); + + // TRANSLATORS: Attack filter tab name in social window. + // TRANSLATORS: Should be small + setCaption(_("Atk")); + } + + A_DELETE_COPY(SocialAttackTab) + + ~SocialAttackTab() + { + delete2(mList) + delete2(mScroll) + delete2(mBeings) + } + + void updateList() override final + { + updateAtkListStart(); + // TRANSLATORS: mobs group name in social window + addAvatars(PriorityAttackMob, _("Priority mobs"), PRIORITY); + // TRANSLATORS: mobs group name in social window + addAvatars(AttackMob, _("Attack mobs"), ATTACK); + // TRANSLATORS: mobs group name in social window + addAvatars(IgnoreAttackMob, _("Ignore mobs"), IGNORE_); + } + + private: + BeingsListModel *mBeings; +}; + +#endif // GUI_WIDGETS_TABS_SOCIALATTACKTAB_H diff --git a/src/gui/windows/socialwindow.cpp b/src/gui/windows/socialwindow.cpp index 987e0639b..db37bb626 100644 --- a/src/gui/windows/socialwindow.cpp +++ b/src/gui/windows/socialwindow.cpp @@ -55,6 +55,7 @@ #include "gui/widgets/tabbedarea.h" #include "gui/widgets/tabs/chattab.h" +#include "gui/widgets/tabs/socialattacktab.h" #include "gui/widgets/tabs/socialguildtab.h" #include "gui/widgets/tabs/socialguildtab2.h" #include "gui/widgets/tabs/socialnavigationtab.h" @@ -99,102 +100,6 @@ namespace } friendSorter; } // namespace -#define addAvatars(mob, str, type) \ -{\ - ava = new Avatar(str);\ - ava->setOnline(false);\ - ava->setLevel(-1);\ - ava->setType(MapItem::SEPARATOR);\ - ava->setX(0);\ - ava->setY(0);\ - avatars->push_back(ava);\ - mobs = actorManager->get##mob##s();\ - i = mobs.begin();\ - i_end = mobs.end();\ - while (i != i_end)\ - {\ - std::string name;\ - int level = -1;\ - if (*i == "")\ - {\ - name = _("(default)");\ - level = 0;\ - }\ - else\ - {\ - name = *i;\ - }\ - ava = new Avatar(name);\ - ava->setOnline(true);\ - ava->setLevel(level);\ - ava->setType(MapItem::type);\ - ava->setX(0);\ - ava->setY(0);\ - avatars->push_back(ava);\ - ++ i;\ - }\ -} - -#define updateAtkListStart() \ - if (!socialWindow || !player_node || !actorManager)\ - return;\ - std::vector<Avatar*> *const avatars = mBeings->getMembers();\ - std::vector<Avatar*>::iterator ia = avatars->begin();\ - while (ia != avatars->end())\ - {\ - delete *ia;\ - ++ ia;\ - }\ - avatars->clear();\ - Avatar *ava = nullptr;\ - std::list<std::string> mobs;\ - std::list<std::string>::const_iterator i;\ - std::list<std::string>::const_iterator i_end; - -class SocialAttackTab final : public SocialTab -{ -public: - SocialAttackTab(const Widget2 *const widget, - const bool showBackground) : - SocialTab(widget), - mBeings(new BeingsListModel) - { - mList = new AvatarListBox(this, mBeings); - mList->postInit(); - mScroll = new ScrollArea(this, mList, showBackground, - "social_background.xml"); - - mScroll->setHorizontalScrollPolicy(ScrollArea::SHOW_AUTO); - mScroll->setVerticalScrollPolicy(ScrollArea::SHOW_ALWAYS); - - // TRANSLATORS: Attack filter tab name in social window. Should be small - setCaption(_("Atk")); - } - - A_DELETE_COPY(SocialAttackTab) - - ~SocialAttackTab() - { - delete2(mList) - delete2(mScroll) - delete2(mBeings) - } - - void updateList() override final - { - updateAtkListStart(); - // TRANSLATORS: mobs group name in social window - addAvatars(PriorityAttackMob, _("Priority mobs"), PRIORITY); - // TRANSLATORS: mobs group name in social window - addAvatars(AttackMob, _("Attack mobs"), ATTACK); - // TRANSLATORS: mobs group name in social window - addAvatars(IgnoreAttackMob, _("Ignore mobs"), IGNORE_); - } - -private: - BeingsListModel *mBeings; -}; - class SocialPickupTab final : public SocialTab { public: |