From 3658d5a5564db6f0854ec9378c485aef8acc8992 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 14 Aug 2014 12:32:29 +0300 Subject: Add setupbutton object. Add upload log button in settings. --- src/CMakeLists.txt | 4 ++ src/Makefile.am | 4 ++ src/gui/widgets/setupbuttonitem.cpp | 96 ++++++++++++++++++++++++++++++++++++ src/gui/widgets/setupbuttonitem.h | 79 +++++++++++++++++++++++++++++ src/gui/widgets/tabs/setup_other.cpp | 7 +++ src/listeners/uploadlistener.cpp | 35 +++++++++++++ src/listeners/uploadlistener.h | 38 ++++++++++++++ 7 files changed, 263 insertions(+) create mode 100644 src/gui/widgets/setupbuttonitem.cpp create mode 100644 src/gui/widgets/setupbuttonitem.h create mode 100644 src/listeners/uploadlistener.cpp create mode 100644 src/listeners/uploadlistener.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d98668b7d..a0d19c0c7 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -231,6 +231,8 @@ SET(SRCS gui/widgets/scrollarea.cpp gui/widgets/scrollarea.h gui/widgets/serverslistbox.h + gui/widgets/setupbuttonitem.cpp + gui/widgets/setupbuttonitem.h gui/widgets/setupitem.cpp gui/widgets/setupitem.h gui/widgets/tabs/setuptab.cpp @@ -1032,6 +1034,8 @@ SET(SRCS listeners/tablemodellistener.h listeners/updatestatuslistener.cpp listeners/updatestatuslistener.h + listeners/uploadlistener.cpp + listeners/uploadlistener.h utils/sdlpixel.h gui/widgets/widget.h listeners/weightlistener.h diff --git a/src/Makefile.am b/src/Makefile.am index 88480779b..5af667174 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -214,6 +214,8 @@ manaplus_SOURCES += events/actionevent.h \ listeners/tablemodellistener.h \ listeners/updatestatuslistener.cpp \ listeners/updatestatuslistener.h \ + listeners/uploadlistener.cpp \ + listeners/uploadlistener.h \ utils/sdlpixel.h \ gui/widgets/widget.h \ listeners/weightlistener.h \ @@ -360,6 +362,8 @@ manaplus_SOURCES += gui/widgets/avatarlistbox.cpp \ gui/widgets/scrollarea.cpp \ gui/widgets/scrollarea.h \ gui/widgets/serverslistbox.h \ + gui/widgets/setupbuttonitem.cpp \ + gui/widgets/setupbuttonitem.h \ gui/widgets/setupitem.cpp \ gui/widgets/setupitem.h \ gui/widgets/tabs/setuptab.cpp \ diff --git a/src/gui/widgets/setupbuttonitem.cpp b/src/gui/widgets/setupbuttonitem.cpp new file mode 100644 index 000000000..ad2c6548b --- /dev/null +++ b/src/gui/widgets/setupbuttonitem.cpp @@ -0,0 +1,96 @@ +/* + * 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 . + */ + +#include "gui/widgets/setupbuttonitem.h" + +#include "gui/widgets/button.h" +#include "gui/widgets/horizontcontainer.h" +#include "gui/widgets/vertcontainer.h" + +#include "gui/widgets/tabs/setuptabscroll.h" + +#include "utils/mathutils.h" + +#include "debug.h" + +SetupButtonItem::SetupButtonItem(const std::string &restrict text, + const std::string &restrict actionEventId, + SetupTabScroll *restrict const parent, + const std::string &restrict eventName, + ActionListener *const listener) : + SetupItem(text, "", "", parent, eventName, false), + mHorizont(nullptr), + mButton(nullptr) +{ + mValueType = VSTR; + mWidget = new Button(this, text, actionEventId, listener); + createControls(); +} + +SetupButtonItem::~SetupButtonItem() +{ + mHorizont = nullptr; + mWidget = nullptr; + mButton = nullptr; +} + +void SetupButtonItem::save() +{ +} + +void SetupButtonItem::cancel(const std::string &eventName A_UNUSED) +{ +} + +void SetupButtonItem::externalUpdated(const std::string &eventName A_UNUSED) +{ +} + +void SetupButtonItem::rereadValue() +{ +} + +void SetupButtonItem::createControls() +{ + mHorizont = new HorizontContainer(this, 32, 2); + + // TRANSLATORS: setup item button + mHorizont->add(mWidget); + + mParent->getContainer()->add2(mHorizont, true, 4); + mParent->addControl(this); +// mWidget->addActionListener(this); +} + +void SetupButtonItem::fromWidget() +{ +} + +void SetupButtonItem::toWidget() +{ +} + +void SetupButtonItem::action(const ActionEvent &event A_UNUSED) +{ +} + +void SetupButtonItem::apply(const std::string &eventName A_UNUSED) +{ +} diff --git a/src/gui/widgets/setupbuttonitem.h b/src/gui/widgets/setupbuttonitem.h new file mode 100644 index 000000000..9e9a7837b --- /dev/null +++ b/src/gui/widgets/setupbuttonitem.h @@ -0,0 +1,79 @@ +/* + * 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 . + */ + +#ifndef GUI_WIDGETS_SETUPBUTTONITEM_H +#define GUI_WIDGETS_SETUPBUTTONITEM_H + +#include "gui/widgets/setupitem.h" + +#include "listeners/actionlistener.h" + +class Button; +class CheckBox; +class Configuration; +class DropDown; +class EditDialog; +class HorizontContainer; +class IntTextField; +class Label; +class ListModel; +class SetupTabScroll; +class Slider; +class SliderList; +class TextField; + +class SetupButtonItem final : public SetupItem +{ + public: + SetupButtonItem(const std::string &restrict text, + const std::string &restrict actionEventId, + SetupTabScroll *restrict const parent, + const std::string &restrict eventName, + ActionListener *const listener); + + A_DELETE_COPY(SetupButtonItem) + + ~SetupButtonItem(); + + void createControls(); + + void fromWidget() override final; + + void toWidget() override final; + + void action(const ActionEvent &event) override final; + + void apply(const std::string &eventName) override final; + + void cancel(const std::string &eventName A_UNUSED) override final; + + void externalUpdated(const std::string &eventName A_UNUSED) + override final; + + void rereadValue() override final; + + void save() override final; + + protected: + HorizontContainer *mHorizont; + Button *mButton; +}; + +#endif // GUI_WIDGETS_SETUPBUTTONITEM_H diff --git a/src/gui/widgets/tabs/setup_other.cpp b/src/gui/widgets/tabs/setup_other.cpp index 2142d13f9..a3a939489 100644 --- a/src/gui/widgets/tabs/setup_other.cpp +++ b/src/gui/widgets/tabs/setup_other.cpp @@ -26,9 +26,12 @@ #include "gui/widgets/containerplacer.h" #include "gui/widgets/layouthelper.h" +#include "gui/widgets/setupbuttonitem.h" #include "gui/widgets/setupitem.h" #include "gui/widgets/scrollarea.h" +#include "listeners/uploadlistener.h" + #include "configuration.h" #include "resources/map/mapconsts.h" @@ -369,6 +372,10 @@ Setup_Other::Setup_Other(const Widget2 *const widget) : new SetupItemCheckBox(_("Enable input log"), "", "logInput", this, "logInputEvent"); + // TRANSLATORS: settings option + new SetupButtonItem(_("Upload log file"), "upload", + this, "uploadLog", &uploadListener); + // TRANSLATORS: settings option new SetupItemCheckBox(_("Low traffic mode"), "", "lowTraffic", this, "lowTrafficEvent"); diff --git a/src/listeners/uploadlistener.cpp b/src/listeners/uploadlistener.cpp new file mode 100644 index 000000000..cf4f325dd --- /dev/null +++ b/src/listeners/uploadlistener.cpp @@ -0,0 +1,35 @@ +/* + * 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 . + */ + +#include "listeners/uploadlistener.h" + +#include "commandhandler.h" +#include "commands.h" +#include "logger.h" + +#include "debug.h" + +UploadListener uploadListener; + +void UploadListener::action(const ActionEvent &event A_UNUSED) +{ + if (commandHandler) + commandHandler->invokeCommand(COMMAND_UPLOADLOG, ""); +} diff --git a/src/listeners/uploadlistener.h b/src/listeners/uploadlistener.h new file mode 100644 index 000000000..9189599ca --- /dev/null +++ b/src/listeners/uploadlistener.h @@ -0,0 +1,38 @@ +/* + * The ManaPlus Client + * Copyright (C) 2004-2009 The Mana World Development Team + * Copyright (C) 2009-2010 The Mana Developers + * 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 . + */ + +#ifndef LISTENERS_UPLOADLISTENER_H +#define LISTENERS_UPLOADLISTENER_H + +#include "listeners/actionlistener.h" + +#include "localconsts.h" + +class UploadListener final : public ActionListener +{ + public: + void action(const ActionEvent &event A_UNUSED) override final; +}; + +extern UploadListener uploadListener; + +#endif // LISTENERS_UPLOADLISTENER_H -- cgit v1.2.3-60-g2f50