diff options
author | Thierry Crozat | 2019-08-04 16:00:19 +0100 |
---|---|---|
committer | Thierry Crozat | 2019-08-04 19:03:34 +0100 |
commit | 0ddcb9de7bd72ca2db82d12c1d9d56493169766b (patch) | |
tree | 784d0e89455614d15ade82eba142929ec52094a9 /backends/platform/ios7/ios7_osys_video.mm | |
parent | 0448f5608fda54ef92d9826728af537450bc339d (diff) | |
download | scummvm-rg350-0ddcb9de7bd72ca2db82d12c1d9d56493169766b.tar.gz scummvm-rg350-0ddcb9de7bd72ca2db82d12c1d9d56493169766b.tar.bz2 scummvm-rg350-0ddcb9de7bd72ca2db82d12c1d9d56493169766b.zip |
IOS7: Implement copy to clipboard and paste from clipboard
Diffstat (limited to 'backends/platform/ios7/ios7_osys_video.mm')
-rw-r--r-- | backends/platform/ios7/ios7_osys_video.mm | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/backends/platform/ios7/ios7_osys_video.mm b/backends/platform/ios7/ios7_osys_video.mm index 20cf687709..05093e5428 100644 --- a/backends/platform/ios7/ios7_osys_video.mm +++ b/backends/platform/ios7/ios7_osys_video.mm @@ -28,6 +28,7 @@ #include "graphics/conversion.h" #include "backends/platform/ios7/ios7_app_delegate.h" +#include "common/translation.h" @interface iOS7AlertHandler : NSObject<UIAlertViewDelegate> @end @@ -603,3 +604,41 @@ void OSystem_iOS7::setShowKeyboard(bool show) { bool OSystem_iOS7::isKeyboardShown() const { return [[iOS7AppDelegate iPhoneView] isKeyboardShown]; } + + +bool OSystem_iOS7::hasTextInClipboard() { + return [[UIPasteboard generalPasteboard] containsPasteboardTypes:UIPasteboardTypeListString]; +} + +Common::String OSystem_iOS7::getTextFromClipboard() { + if (!hasTextInClipboard()) + return Common::String(); + + UIPasteboard *pb = [UIPasteboard generalPasteboard]; + NSString *str = pb.string; + if (str == nil) + return Common::String(); + + // If translations are supported, use the current TranslationManager charset and otherwise + // use ASCII. If the string cannot be represented using the requested encoding we get a null + // pointer below, which is fine as ScummVM would not know what to do with the string anyway. +#ifdef USE_TRANSLATION + NSString* encStr = [NSString stringWithCString:TransMan.getCurrentCharset().c_str() encoding:NSASCIIStringEncoding]; + NSStringEncoding encoding = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((CFStringRef)encStr)); +#else + NSStringEncoding encoding = NSISOLatin1StringEncoding; +#endif + return Common::String([str cStringUsingEncoding:encoding]); +} + +bool OSystem_iOS7::setTextInClipboard(const Common::String &text) { +#ifdef USE_TRANSLATION + NSString* encStr = [NSString stringWithCString:TransMan.getCurrentCharset().c_str() encoding:NSASCIIStringEncoding]; + NSStringEncoding encoding = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((CFStringRef)encStr)); +#else + NSStringEncoding encoding = NSISOLatin1StringEncoding; +#endif + UIPasteboard *pb = [UIPasteboard generalPasteboard]; + [pb setString:[NSString stringWithCString:text.c_str() encoding:encoding]]; + return true; +} |