diff options
-rw-r--r-- | src/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/Makefile.am | 1 | ||||
-rw-r--r-- | src/events/keyevent.h | 17 | ||||
-rw-r--r-- | src/events/keyeventtype.h | 79 | ||||
-rw-r--r-- | src/gui/gui.cpp | 14 | ||||
-rw-r--r-- | src/gui/sdlinput.cpp | 6 | ||||
-rw-r--r-- | src/input/keyinput.h | 20 |
7 files changed, 102 insertions, 36 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0607b5de3..475f1cb67 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -969,6 +969,7 @@ SET(SRCS events/inputguievent.h input/key.h events/keyevent.h + events/keyeventtype.h listeners/keylistener.h gui/models/listmodel.h gui/models/magicschoolmodel.h diff --git a/src/Makefile.am b/src/Makefile.am index 94eb513ce..4e3233c9a 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -190,6 +190,7 @@ manaplus_SOURCES += events/actionevent.h \ events/inputguievent.h \ input/key.h \ events/keyevent.h \ + events/keyeventtype.h \ listeners/keylistener.h \ gui/models/listmodel.h \ gui/models/magicschoolmodel.h \ diff --git a/src/events/keyevent.h b/src/events/keyevent.h index 16bc707c1..03e85438e 100644 --- a/src/events/keyevent.h +++ b/src/events/keyevent.h @@ -64,7 +64,9 @@ #ifndef EVENTS_KEYEVENT_H #define EVENTS_KEYEVENT_H +#include "events/keyeventtype.h" #include "events/inputguievent.h" + #include "input/key.h" #include <string> @@ -78,15 +80,6 @@ class KeyEvent: public InputGuiEvent { public: /** - * Key event types. - */ - enum - { - PRESSED = 0, - RELEASED - }; - - /** * Constructor. * * @param source The source widget of the event. @@ -95,7 +88,7 @@ class KeyEvent: public InputGuiEvent * @param key The key of the event. */ KeyEvent(Widget *const source, - const unsigned int type, + KeyEventType::Type type, const int actionId, const Key &key) : InputGuiEvent(source), @@ -118,7 +111,7 @@ class KeyEvent: public InputGuiEvent * * @return The type of the event. */ - unsigned int getType() const A_WARN_UNUSED + KeyEventType::Type getType() const A_WARN_UNUSED { return mType; } /** @@ -153,7 +146,7 @@ class KeyEvent: public InputGuiEvent /** * Holds the type of the key event. */ - unsigned int mType; + KeyEventType::Type mType; int mActionId; }; diff --git a/src/events/keyeventtype.h b/src/events/keyeventtype.h new file mode 100644 index 000000000..a53231ced --- /dev/null +++ b/src/events/keyeventtype.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/>. + */ + +/* _______ __ __ __ ______ __ __ _______ __ __ + * / _____/\ / /\ / /\ / /\ / ____/\ / /\ / /\ / ___ /\ / |\/ /\ + * / /\____\// / // / // / // /\___\// /_// / // /\_/ / // , |/ / / + * / / /__ / / // / // / // / / / ___ / // ___ / // /| ' / / + * / /_// /\ / /_// / // / // /_/_ / / // / // /\_/ / // / | / / + * /______/ //______/ //_/ //_____/\ /_/ //_/ //_/ //_/ //_/ /|_/ / + * \______\/ \______\/ \_\/ \_____\/ \_\/ \_\/ \_\/ \_\/ \_\/ \_\/ + * + * Copyright (c) 2004 - 2008 Olof Naessén and Per Larsson + * + * + * Per Larsson a.k.a finalman + * Olof Naessén a.k.a jansem/yakslem + * + * Visit: http://guichan.sourceforge.net + * + * License: (BSD) + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of Guichan nor the names of its contributors may + * be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef EVENTS_KEYEVENTTYPE_H +#define EVENTS_KEYEVENTTYPE_H + +namespace KeyEventType +{ + /** + * Key event types. + */ + enum Type + { + PRESSED = 0, + RELEASED + }; +} // namespace KeyEventType + +#endif // EVENTS_KEYEVENTTYPE_H diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 1fb4cb79f..17ad60ac0 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -439,7 +439,7 @@ bool Gui::handleKeyInput() // change focus. if (!eventConsumed && keyInput.getActionId() == static_cast<int>(InputAction::GUI_TAB) - && keyInput.getType() == KeyInput::PRESSED) + && keyInput.getType() == KeyEventType::PRESSED) { if (inputManager.isActionActive(InputAction::GUI_MOD)) mFocusHandler->tabPrevious(); @@ -1252,17 +1252,17 @@ void Gui::distributeKeyEvent(KeyEvent &event) const std::list<KeyListener*> keyListeners = widget->getKeyListeners(); - const unsigned int eventType = event.getType(); + const KeyEventType::Type eventType = event.getType(); // Send the event to all key listeners of the source widget. FOR_EACH (std::list<KeyListener*>::const_iterator, it, keyListeners) { switch (eventType) { - case KeyEvent::PRESSED: + case KeyEventType::PRESSED: (*it)->keyPressed(event); break; - case KeyEvent::RELEASED: + case KeyEventType::RELEASED: (*it)->keyReleased(event); break; default: @@ -1285,15 +1285,15 @@ void Gui::distributeKeyEvent(KeyEvent &event) const void Gui::distributeKeyEventToGlobalKeyListeners(KeyEvent& event) { BLOCK_START("Gui::distributeKeyEventToGlobalKeyListeners") - const unsigned int eventType = event.getType(); + const KeyEventType::Type eventType = event.getType(); FOR_EACH (KeyListenerListIterator, it, mKeyListeners) { switch (eventType) { - case KeyEvent::PRESSED: + case KeyEventType::PRESSED: (*it)->keyPressed(event); break; - case KeyEvent::RELEASED: + case KeyEventType::RELEASED: (*it)->keyReleased(event); break; default: diff --git a/src/gui/sdlinput.cpp b/src/gui/sdlinput.cpp index 6d3121451..665617c8d 100644 --- a/src/gui/sdlinput.cpp +++ b/src/gui/sdlinput.cpp @@ -134,7 +134,7 @@ void SDLInput::pushInput(const SDL_Event &event) { case SDL_KEYDOWN: { - keyInput.setType(KeyInput::PRESSED); + keyInput.setType(KeyEventType::PRESSED); convertKeyEventToKey(event, keyInput); mKeyInputQueue.push(keyInput); break; @@ -142,7 +142,7 @@ void SDLInput::pushInput(const SDL_Event &event) case SDL_KEYUP: { - keyInput.setType(KeyInput::RELEASED); + keyInput.setType(KeyEventType::RELEASED); convertKeyEventToKey(event, keyInput); mKeyInputQueue.push(keyInput); break; @@ -150,7 +150,7 @@ void SDLInput::pushInput(const SDL_Event &event) #ifdef USE_SDL2 case SDL_TEXTINPUT: - keyInput.setType(KeyInput::PRESSED); + keyInput.setType(KeyEventType::PRESSED); keyInput.setKey(Key(Key::TEXTINPUT)); keyInput.setText(event.text.text); mKeyInputQueue.push(keyInput); diff --git a/src/input/keyinput.h b/src/input/keyinput.h index b7b7a7936..89a3b71d2 100644 --- a/src/input/keyinput.h +++ b/src/input/keyinput.h @@ -64,6 +64,8 @@ #ifndef INPUT_KEYINPUT_H #define INPUT_KEYINPUT_H +#include "events/keyeventtype.h" + #include "input/key.h" #include <string> @@ -75,7 +77,7 @@ class KeyInput final public: KeyInput() : mKey(0), - mType(0), + mType(KeyEventType::PRESSED), #ifdef USE_SDL2 mText(), #endif @@ -85,22 +87,12 @@ class KeyInput final ~KeyInput() { } - /** - * Key input types. This enum corresponds to the enum with event - * types on KeyEvent for easy mapping. - */ - enum - { - PRESSED = 0, - RELEASED - }; - - void setType(unsigned int type) + void setType(KeyEventType::Type type) { mType = type; } - int getType() const + KeyEventType::Type getType() const { return mType; } @@ -146,7 +138,7 @@ class KeyInput final /** * Holds the type of the key input. */ - unsigned int mType; + KeyEventType::Type mType; #ifdef USE_SDL2 std::string mText; |