diff options
author | 2016-06-03 08:47:23 -0700 | |
---|---|---|
committer | 2016-06-03 08:47:24 -0700 | |
commit | b73c24b01a411843a98d4ccab7a39341d927e7fd (patch) | |
tree | 26867a3f082b22f41be97c46143878a0204f886c /tools/viewer/sk_app | |
parent | 5cebf8c82dfe3fc4110944f0db03d7fc85b7142a (diff) |
Add Softkey UIState to Viewer
We can use this to simulate any key/command on Android UI.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2035923002
Review-Url: https://codereview.chromium.org/2035923002
Diffstat (limited to 'tools/viewer/sk_app')
-rw-r--r-- | tools/viewer/sk_app/CommandSet.cpp | 18 | ||||
-rw-r--r-- | tools/viewer/sk_app/CommandSet.h | 8 |
2 files changed, 26 insertions, 0 deletions
diff --git a/tools/viewer/sk_app/CommandSet.cpp b/tools/viewer/sk_app/CommandSet.cpp index e426eaab21..4805e6aafe 100644 --- a/tools/viewer/sk_app/CommandSet.cpp +++ b/tools/viewer/sk_app/CommandSet.cpp @@ -71,6 +71,16 @@ bool CommandSet::onChar(SkUnichar c, uint32_t modifiers) { return false; } +bool CommandSet::onSoftkey(const SkString& softkey) { + for (const Command& cmd : fCommands) { + if (cmd.getSoftkeyString().equals(softkey)) { + cmd.fFunction(); + return true; + } + } + return false; +} + void CommandSet::addCommand(SkUnichar c, const char* group, const char* description, std::function<void(void)> function) { fCommands.push_back(Command(c, group, description, function)); @@ -154,4 +164,12 @@ void CommandSet::drawHelp(SkCanvas* canvas) { } } +std::vector<SkString> CommandSet::getCommandsAsSoftkeys() const { + std::vector<SkString> result; + for(const Command& command : fCommands) { + result.push_back(command.getSoftkeyString()); + } + return result; +} + } // namespace sk_app diff --git a/tools/viewer/sk_app/CommandSet.h b/tools/viewer/sk_app/CommandSet.h index 5e6373c935..4cbb367e01 100644 --- a/tools/viewer/sk_app/CommandSet.h +++ b/tools/viewer/sk_app/CommandSet.h @@ -12,6 +12,7 @@ #include "Window.h" #include <functional> +#include <vector> class SkCanvas; @@ -40,6 +41,7 @@ public: void attach(Window* window); bool onKey(sk_app::Window::Key key, sk_app::Window::InputState state, uint32_t modifiers); bool onChar(SkUnichar, uint32_t modifiers); + bool onSoftkey(const SkString& softkey); void addCommand(SkUnichar c, const char* group, const char* description, std::function<void(void)> function); @@ -48,6 +50,8 @@ public: void drawHelp(SkCanvas* canvas); + std::vector<SkString> getCommandsAsSoftkeys() const; + private: struct Command { enum CommandType { @@ -86,6 +90,10 @@ private: SkString fGroup; SkString fDescription; std::function<void(void)> fFunction; + + SkString getSoftkeyString() const { + return SkStringPrintf("%s (%s)", fKeyName.c_str(), fDescription.c_str()); + } }; static bool compareCommandKey(const Command& first, const Command& second); |