| #pragma once |
| #include <pch.h> |
| |
| using namespace Platform; |
| using namespace Windows::Storage; |
| |
| namespace RingClientUWP |
| { |
| namespace Utils { |
| |
| task<bool> |
| fileExists(StorageFolder^ folder, String^ fileName) |
| { |
| return create_task(folder->GetFileAsync(fileName)) |
| .then([](task<StorageFile^> taskResult) |
| { |
| bool exists; |
| try { |
| taskResult.get(); |
| exists = true; |
| } |
| catch (COMException ^e) { |
| if (e->HResult == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)) { |
| exists = false; |
| } |
| else { |
| throw; |
| } |
| } |
| return exists; |
| }); |
| } |
| |
| std::string makeString(const std::wstring& wstr) |
| { |
| auto wideData = wstr.c_str(); |
| int bufferSize = WideCharToMultiByte(CP_UTF8, 0, wideData, -1, nullptr, 0, NULL, NULL); |
| |
| std::unique_ptr<char[]> utf8; |
| utf8.reset(new char[bufferSize]); |
| |
| if (WideCharToMultiByte(CP_UTF8, 0, wideData, -1, utf8.get(), bufferSize, NULL, NULL) == 0) { |
| return std::string(); |
| } |
| |
| return std::string(utf8.get()); |
| } |
| |
| std::wstring makeWString(const std::string& str) |
| { |
| auto utf8Data = str.c_str(); |
| int bufferSize = MultiByteToWideChar(CP_UTF8, 0, utf8Data, -1, nullptr, 0); |
| |
| std::unique_ptr<wchar_t[]> wide; |
| wide.reset(new wchar_t[bufferSize]); |
| |
| if (MultiByteToWideChar(CP_UTF8, 0, utf8Data, -1, wide.get(), bufferSize) == 0) { |
| return std::wstring(); |
| } |
| |
| return std::wstring(wide.get());; |
| } |
| |
| std::string toString(Platform::String ^str) |
| { |
| std::wstring wsstr(str->Data()); |
| return makeString(wsstr); |
| } |
| |
| Platform::String^ toPlatformString(const std::string& str) |
| { |
| std::wstring wsstr = makeWString(str); |
| return ref new Platform::String(wsstr.c_str(), wsstr.length()); |
| } |
| } |
| } |