aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/viewer/sk_app
diff options
context:
space:
mode:
authorGravatar liyuqian <liyuqian@google.com>2016-06-03 08:47:23 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-06-03 08:47:24 -0700
commitb73c24b01a411843a98d4ccab7a39341d927e7fd (patch)
tree26867a3f082b22f41be97c46143878a0204f886c /tools/viewer/sk_app
parent5cebf8c82dfe3fc4110944f0db03d7fc85b7142a (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.cpp18
-rw-r--r--tools/viewer/sk_app/CommandSet.h8
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);