From 3658d5a5564db6f0854ec9378c485aef8acc8992 Mon Sep 17 00:00:00 2001
From: Andrei Karas <akaras@inbox.ru>
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

(limited to 'src')

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 <http://www.gnu.org/licenses/>.
+ */
+
+#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 <http://www.gnu.org/licenses/>.
+ */
+
+#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 <http://www.gnu.org/licenses/>.
+ */
+
+#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 <http://www.gnu.org/licenses/>.
+ */
+
+#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-70-g09d2