diff --git a/examples/ggwave-gui/common.cpp b/examples/ggwave-gui/common.cpp index 2862c63..2777eb7 100644 --- a/examples/ggwave-gui/common.cpp +++ b/examples/ggwave-gui/common.cpp @@ -253,6 +253,9 @@ GGSock::Communicator g_fileClient(false); int g_shareId = 0; ShareInfo g_shareInfo; +int g_openId = 0; +OpenInfo g_openInfo; + int g_deleteId = 0; DeleteInfo g_deleteInfo; @@ -266,6 +269,14 @@ ShareInfo getShareInfo() { return g_shareInfo; } +int getOpenId() { + return g_openId; +} + +OpenInfo getOpenInfo() { + return g_openInfo; +} + int getDeleteId() { return g_deleteId; } @@ -726,7 +737,7 @@ void renderMain() { const auto sendButtonText = ICON_FA_PLAY_CIRCLE " Send"; const double tShowKeyboard = 0.2f; -#if defined(IOS) || defined(ANDROID) +#if defined(IOS) const float statusBarHeight = displaySize.x < displaySize.y ? 2.0f*style.ItemSpacing.y : 0.1f; #else const float statusBarHeight = 0.1f; @@ -1222,6 +1233,18 @@ void renderMain() { } ImGui::SameLine(); +#ifdef ANDROID + if (ImGui::Button(ICON_FA_EYE " VIEW")) { + g_openInfo.uri = fileInfo.second.uri; + g_openInfo.filename = fileInfo.second.filename; + const auto & fileData = g_fileServer.getFileData(g_openInfo.uri); + g_openInfo.dataBuffer = fileData.data.data(); + g_openInfo.dataSize = fileData.data.size(); + g_openId++; + } + ImGui::SameLine(); +#endif + if (ImGui::Button(ICON_FA_TRASH " Clear")) { g_deleteInfo.uri = fileInfo.second.uri.data(); g_deleteInfo.filename = fileInfo.second.filename.data(); diff --git a/examples/ggwave-gui/common.h b/examples/ggwave-gui/common.h index a3d37de..99cba87 100644 --- a/examples/ggwave-gui/common.h +++ b/examples/ggwave-gui/common.h @@ -21,6 +21,18 @@ struct ShareInfo { int getShareId(); ShareInfo getShareInfo(); +// open info + +struct OpenInfo { + std::string uri; + std::string filename; + const char * dataBuffer; + size_t dataSize; +}; + +int getOpenId(); +OpenInfo getOpenInfo(); + // delete file struct DeleteInfo { diff --git a/examples/ggwave-gui/interface.cpp b/examples/ggwave-gui/interface.cpp index f2afada..e8b3cbc 100644 --- a/examples/ggwave-gui/interface.cpp +++ b/examples/ggwave-gui/interface.cpp @@ -1,6 +1,7 @@ #include "interface.h" int g_lastShareId = 0; +int g_lastOpenId = 0; int g_lastDeleteId = 0; int g_lastReceivedId = 0; int g_frameCount = 0; @@ -18,6 +19,18 @@ void updateMain() { g_lastShareId = curShareId; } + auto curOpenId = getOpenId(); + if (curOpenId != g_lastOpenId) { + auto openInfo = getOpenInfo(); + interface_openFile( + openInfo.uri.data(), + openInfo.filename.data(), + openInfo.dataBuffer, + openInfo.dataSize); + + g_lastOpenId = curOpenId; + } + auto curDeleteId = getDeleteId(); if (curDeleteId != g_lastDeleteId) { auto deleteInfo = getDeleteInfo(); diff --git a/examples/ggwave-gui/interface.h b/examples/ggwave-gui/interface.h index fd22300..5e6d520 100644 --- a/examples/ggwave-gui/interface.h +++ b/examples/ggwave-gui/interface.h @@ -21,6 +21,12 @@ void interface_shareFile( const char * dataBuffer, size_t dataSize); +void interface_openFile( + const char * uri, + const char * filename, + const char * dataBuffer, + size_t dataSize); + void interface_deleteFile( const char * uri, const char * filename);