From f96b12702ceaced81a15e434ff541b95c3c0efc1 Mon Sep 17 00:00:00 2001 From: maddimax Date: Thu, 14 Feb 2019 15:42:45 +0100 Subject: [PATCH] Stack View * Stack implementation for Mac / IOS / Android * Updating reddit app to use stack view * Fixing merge errors --- examples/CMakeLists.txt | 1 + examples/StackDemo/CMakeLists.txt | 30 ++ .../AppIcon.appiconset/Contents.json | 116 ++++++ .../AppIcon.appiconset/ico_1024.png | Bin 0 -> 29246 bytes .../AppIcon.appiconset/ico_120-1.png | Bin 0 -> 2341 bytes .../AppIcon.appiconset/ico_120-2.png | Bin 0 -> 2341 bytes .../AppIcon.appiconset/ico_120.png | Bin 0 -> 2341 bytes .../AppIcon.appiconset/ico_167.png | Bin 0 -> 3934 bytes .../AppIcon.appiconset/ico_180.png | Bin 0 -> 4221 bytes .../AppIcon.appiconset/ico_29.png | Bin 0 -> 706 bytes .../AppIcon.appiconset/ico_40-1.png | Bin 0 -> 851 bytes .../AppIcon.appiconset/ico_40-2.png | Bin 0 -> 851 bytes .../AppIcon.appiconset/ico_40-3.png | Bin 0 -> 851 bytes .../AppIcon.appiconset/ico_40.png | Bin 0 -> 851 bytes .../AppIcon.appiconset/ico_58-1.png | Bin 0 -> 1218 bytes .../AppIcon.appiconset/ico_58.png | Bin 0 -> 1218 bytes .../AppIcon.appiconset/ico_76.png | Bin 0 -> 1623 bytes .../AppIcon.appiconset/ico_80-1.png | Bin 0 -> 1591 bytes .../AppIcon.appiconset/ico_80.png | Bin 0 -> 1591 bytes .../AppIcon.appiconset/ico_87.png | Bin 0 -> 1702 bytes .../AppIcon.appiconset/icon_152.png | Bin 0 -> 3580 bytes .../ios-assets/Assets.xcassets/Contents.json | 6 + .../Base.lproj/LaunchScreen.storyboard | 50 +++ examples/StackDemo/src/stackdemo.cpp | 241 ++++++++++++ examples/reddit/src/reddit.cpp | 93 +++-- .../android/include/bdn/android/JActivity.h | 41 -- .../android/include/bdn/android/JContext.h | 7 +- .../android/include/bdn/java/JObject.h | 28 ++ .../android/include/bdn/java/MethodId.h | 2 +- framework/ui/include/bdn/Stack.h | 36 ++ framework/ui/include/bdn/StackCore.h | 14 + .../android/include/bdn/android/JActivity.h | 21 + .../include/bdn/android/JNativeRootView.h | 34 +- .../android/include/bdn/android/JView.h | 18 + .../android/include/bdn/android/JWindow.h | 40 ++ .../android/include/bdn/android/StackCore.h | 48 +++ .../android/include/bdn/android/WindowCore.h | 334 +++------------- .../android/NativeEditTextTextWatcher.java | 0 .../boden => }/android/NativeListAdapter.java | 0 .../android/NativeRootActivity.java | 28 +- .../io/boden => }/android/NativeRootView.java | 22 +- .../boden => }/android/NativeScrollView.java | 0 .../NativeTextViewOnEditorActionListener.java | 0 .../android/NativeViewCoreClickListener.java | 0 .../boden => }/android/NativeViewGroup.java | 1 - .../platforms/android/src/JNativeRootView.cpp | 14 + .../ui/platforms/android/src/StackCore.cpp | 92 +++++ .../ui/platforms/android/src/UIProvider.cpp | 2 + .../ui/platforms/android/src/WindowCore.cpp | 360 ++++++++++++++++++ .../ios/include/bdn/ios/StackCore.hh | 38 ++ framework/ui/platforms/ios/src/StackCore.mm | 82 ++++ framework/ui/platforms/ios/src/UIProvider.mm | 35 +- .../mac/include/bdn/mac/StackCore.hh | 45 +++ .../ui/platforms/mac/src/ScrollViewCore.mm | 1 + framework/ui/platforms/mac/src/StackCore.mm | 144 +++++++ framework/ui/platforms/mac/src/UIProvider.mm | 2 + framework/ui/src/Stack.cpp | 44 +++ 57 files changed, 1651 insertions(+), 419 deletions(-) create mode 100644 examples/StackDemo/CMakeLists.txt create mode 100644 examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_1024.png create mode 100644 examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_120-1.png create mode 100644 examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_120-2.png create mode 100644 examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_120.png create mode 100644 examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_167.png create mode 100644 examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_180.png create mode 100644 examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_29.png create mode 100644 examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_40-1.png create mode 100644 examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_40-2.png create mode 100644 examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_40-3.png create mode 100644 examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_40.png create mode 100644 examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_58-1.png create mode 100644 examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_58.png create mode 100644 examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_76.png create mode 100644 examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_80-1.png create mode 100644 examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_80.png create mode 100644 examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_87.png create mode 100644 examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/icon_152.png create mode 100644 examples/StackDemo/ios-assets/Assets.xcassets/Contents.json create mode 100644 examples/StackDemo/ios-assets/Base.lproj/LaunchScreen.storyboard create mode 100644 examples/StackDemo/src/stackdemo.cpp delete mode 100644 framework/foundation/platforms/android/include/bdn/android/JActivity.h create mode 100644 framework/ui/include/bdn/Stack.h create mode 100644 framework/ui/include/bdn/StackCore.h create mode 100644 framework/ui/platforms/android/include/bdn/android/JActivity.h create mode 100644 framework/ui/platforms/android/include/bdn/android/JWindow.h create mode 100644 framework/ui/platforms/android/include/bdn/android/StackCore.h rename framework/ui/platforms/android/java/io/boden/{java/io/boden => }/android/NativeEditTextTextWatcher.java (100%) rename framework/ui/platforms/android/java/io/boden/{java/io/boden => }/android/NativeListAdapter.java (100%) rename framework/ui/platforms/android/java/io/boden/{java/io/boden => }/android/NativeRootActivity.java (82%) rename framework/ui/platforms/android/java/io/boden/{java/io/boden => }/android/NativeRootView.java (83%) rename framework/ui/platforms/android/java/io/boden/{java/io/boden => }/android/NativeScrollView.java (100%) rename framework/ui/platforms/android/java/io/boden/{java/io/boden => }/android/NativeTextViewOnEditorActionListener.java (100%) rename framework/ui/platforms/android/java/io/boden/{java/io/boden => }/android/NativeViewCoreClickListener.java (100%) rename framework/ui/platforms/android/java/io/boden/{java/io/boden => }/android/NativeViewGroup.java (99%) create mode 100644 framework/ui/platforms/android/src/StackCore.cpp create mode 100644 framework/ui/platforms/ios/include/bdn/ios/StackCore.hh create mode 100644 framework/ui/platforms/ios/src/StackCore.mm create mode 100644 framework/ui/platforms/mac/include/bdn/mac/StackCore.hh create mode 100644 framework/ui/platforms/mac/src/StackCore.mm create mode 100644 framework/ui/src/Stack.cpp diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 7e69d3cc..a66e9d25 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,2 +1,3 @@ add_subdirectory(uidemo) add_subdirectory(reddit) +add_subdirectory(StackDemo) diff --git a/examples/StackDemo/CMakeLists.txt b/examples/StackDemo/CMakeLists.txt new file mode 100644 index 00000000..797d1819 --- /dev/null +++ b/examples/StackDemo/CMakeLists.txt @@ -0,0 +1,30 @@ +file(GLOB _STACKDEMO_SOURCES ./src/*.cpp) + +list(APPEND STACKDEMO_FILES ${_STACKDEMO_SOURCES}) + +IF ( BDN_PLATFORM_IOS ) + SET(MACOSX_BUNDLE_BUNDLE_NAME stackdemo) + SET(MACOSX_BUNDLE_GUI_IDENTIFIER "io.boden.stackdemo") + SET(MACOSX_BUNDLE_LAUNCH_STORYBOARD "LaunchScreen") + + set(STACKDEMO_ASSETS + ./ios-assets/Base.lproj/LaunchScreen.storyboard + ./ios-assets/Assets.xcassets) +endif() + +add_universal_executable(stackdemo No ${STACKDEMO_FILES} ${STACKDEMO_ASSETS}) + +set_xcode_property(stackdemo CODE_SIGN_STYLE Automatic) +set_xcode_property(stackdemo ASSETCATALOG_COMPILER_APPICON_NAME AppIcon) +set_xcode_property(stackdemo CODE_SIGN_IDENTITY "iPhone Developer") +#set_xcode_property(stackdemo DEVELOPMENT_TEAM ) + +use_boden_template_info_plist(stackdemo) + +group_sources_automatically(${CMAKE_CURRENT_SOURCE_DIR} ${STACKDEMO_FILES}) + +target_link_libraries(stackdemo PRIVATE ui foundation) + +install(TARGETS stackdemo + DESTINATION examples + COMPONENT Examples) diff --git a/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/Contents.json b/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..3f971ad2 --- /dev/null +++ b/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,116 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "ico_40.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "ico_120-1.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "ico_58.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "ico_87.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "ico_80.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "ico_120.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "ico_120-2.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "ico_180.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "ico_40-1.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "ico_40-2.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "ico_29.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "ico_58-1.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "ico_40-3.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "ico_80-1.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "ico_76.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "icon_152.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "ico_167.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "ico_1024.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_1024.png b/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_1024.png new file mode 100644 index 0000000000000000000000000000000000000000..b01c8fa4a08fb0b1583ec05371667c6e844da667 GIT binary patch literal 29246 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 LNkvXXu0mjfhv#`A literal 0 HcmV?d00001 diff --git a/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_120-2.png b/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_120-2.png new file mode 100644 index 0000000000000000000000000000000000000000..4f58ed069af5779293fae2b838ffde595eca443b GIT binary patch literal 2341 zcmV+=3EK9FP) zd$3hg9LK+r$yFgK!`qvqXIjQ3hX#4u;Zw}j-vuQjtcBJ zjSKmDXSM@Iboc(RJRCUa0C9_w2Y>DX*8Bv_-3ZjI0_JSUzZMy)WQekvxRQasM+4(7 z270xLzegz^OSb|yP6HNf%Du>(yXc{nz^9{C+)~22W}UO{b0sH%`y2&Kxm=i)62ZDZ z^{CuFD<^@+T_j9OiQ&-LAOdsTJ^4ssR!YoCZ9OeaG4`TIo*+#BbJ?4~`)fV#PbnPE zMlR?C)Q*TQidvXDT*fV!Q=up*?&MV}ZZTn9vQCG;5nX7U7Eu@r+`W}B)$!h1VN#03 z^q9Ks(OQ^dF&4NYCWx_1TW*7~`|s$Io8%Cl(om)2sKAb+0y~Zh>^Lg0YVLm=7{F7JmOz>*EXy!F7tOJWLegtF?Q*;0!kZZ=vU z44mHscxV`~?M`6AK%jHeEN`-u#E-!g`?|A$IX3|J^%j?{C-DONP-wR3d86EF%_?w+ zew~2#ulAfg7bsgVIupK!{QGX;t1Zztc5MqZYm(X1j)M-`^HsnFFWc{NTPJX%2Zbps zY>gLn0{R~3wNMi%GFx)T=SunQicccC=$StPcg+XRmOw$hMBtDlmWn9fc_ku3p(XPA6VqcFz~~6y`KOSuIS~ka&R~IXm-u zF{50MFBE2LNVLGr;;iZ;%xO$oX!kTKu>w=v8wLn-8p}6&v1*&KGG(U_IOeij&en37 zJ6#oXgn~^ZMqmodb=@JoybQ`raNNDE){O|4vjSJQ16m&BEfR3ci)lhVr$jC!+xb{0 z@ZLOVW>V{jB7tN5<*B2A8N=P# z$q**-kt{~BxYO|CF~G8GJ?G3N5-)HNw&>Td1>SV%R9)-FV3Rag1Wp6UXTLFnAnV%e z-lTm(KGPU>yMvDR@|!ytp7Y527T*eto(N3ZC@xz=BD&~FshBc1l5uYmr$r`ke17^e z-MV5GoDvP54BR})i&|xaVNLEbw3Wmj}kU4Lgjrv>GMw%`CJ>%!Uc zxylU{*l|=~$I&r3fJvmvNAZKOy& z9>6A4-~a;*9-;nSfi0@kXcwJ=o6$_BK;xGQQymOp4(=n+TuQ)lsvQ^;JzNIVs3bTM~$Kf0;zPDzi%>AMeJi54F>KNl0t3+{v zpLfZ!U%EsdfgCRTns?;y<)Z?_t3;F5``Q=jKT`l^dj#{mxVF6LTkkawCHIABbBHJ| zBL`QciyM4QQ1Fk5*Pj{eWvN7wc!8PpZgNOCg&P|>%7Fs-;9yf|nDF=L#pcO= zKK}Mr3j5T|^l~|!LGlI&!$;@92eRgMXdeUyF^$Hm|uMwGZnCH!4q zli&QA%a=?m3YW`}D(%5ChjbTjuOo2+^RJ(+mI>~rt*T~`Oq~r@XjJPCLP1OpJPq^e zg7~qO_F$Q9V}^i4bkX_bMf*^^5z~bkz1!Ent~Gdi8kZuoohlF}&SUpku^FgJy^c%p zw@zSot8_ND{03}_nUm5%sXW4a9rwje;P@AHj01atpi?$)lencQ#I;_Zu-6@hbprb> zFw4Q zD}h=0bpm7v8k7rM#kr(cy;nbB6o81m#D1tU(}AZAi8@&YaPKrvSc=DgjE>#1w*HBz z{$c}C%YXRxC?gu{n)uSK`b#mIZY#$`eC*F%L6pGw`yw^g58_MYm zaN5O<=24-}Qk@#m2oLPt380y{5+d#h!BS=DEBT=<*l|=~$1!%YcI^Qw4iM%#8?PzF zXaD_xt4@@~{_`*JN|vQWA7g=6{s^2B@qoq)I{}jo63Ud^8CnUvI846n^UdZ08+Xxj zW1=**BY@%EqFc9;AFRtuy8>^GjDCBZ7Eu_t;5WVmZjVVVrN~O@s99^OkE@0kb#cUvNPJE9H-d zDji1!b{rMhaa3T(QGp#t1$G=2*l|=~$Ki6JAL!Vb^vZCI3IO;IZ5c@3el~FG00000 LNkvXXu0mjfhv#`A literal 0 HcmV?d00001 diff --git a/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_120.png b/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_120.png new file mode 100644 index 0000000000000000000000000000000000000000..4f58ed069af5779293fae2b838ffde595eca443b GIT binary patch literal 2341 zcmV+=3EK9FP) zd$3hg9LK+r$yFgK!`qvqXIjQ3hX#4u;Zw}j-vuQjtcBJ zjSKmDXSM@Iboc(RJRCUa0C9_w2Y>DX*8Bv_-3ZjI0_JSUzZMy)WQekvxRQasM+4(7 z270xLzegz^OSb|yP6HNf%Du>(yXc{nz^9{C+)~22W}UO{b0sH%`y2&Kxm=i)62ZDZ z^{CuFD<^@+T_j9OiQ&-LAOdsTJ^4ssR!YoCZ9OeaG4`TIo*+#BbJ?4~`)fV#PbnPE zMlR?C)Q*TQidvXDT*fV!Q=up*?&MV}ZZTn9vQCG;5nX7U7Eu@r+`W}B)$!h1VN#03 z^q9Ks(OQ^dF&4NYCWx_1TW*7~`|s$Io8%Cl(om)2sKAb+0y~Zh>^Lg0YVLm=7{F7JmOz>*EXy!F7tOJWLegtF?Q*;0!kZZ=vU z44mHscxV`~?M`6AK%jHeEN`-u#E-!g`?|A$IX3|J^%j?{C-DONP-wR3d86EF%_?w+ zew~2#ulAfg7bsgVIupK!{QGX;t1Zztc5MqZYm(X1j)M-`^HsnFFWc{NTPJX%2Zbps zY>gLn0{R~3wNMi%GFx)T=SunQicccC=$StPcg+XRmOw$hMBtDlmWn9fc_ku3p(XPA6VqcFz~~6y`KOSuIS~ka&R~IXm-u zF{50MFBE2LNVLGr;;iZ;%xO$oX!kTKu>w=v8wLn-8p}6&v1*&KGG(U_IOeij&en37 zJ6#oXgn~^ZMqmodb=@JoybQ`raNNDE){O|4vjSJQ16m&BEfR3ci)lhVr$jC!+xb{0 z@ZLOVW>V{jB7tN5<*B2A8N=P# z$q**-kt{~BxYO|CF~G8GJ?G3N5-)HNw&>Td1>SV%R9)-FV3Rag1Wp6UXTLFnAnV%e z-lTm(KGPU>yMvDR@|!ytp7Y527T*eto(N3ZC@xz=BD&~FshBc1l5uYmr$r`ke17^e z-MV5GoDvP54BR})i&|xaVNLEbw3Wmj}kU4Lgjrv>GMw%`CJ>%!Uc zxylU{*l|=~$I&r3fJvmvNAZKOy& z9>6A4-~a;*9-;nSfi0@kXcwJ=o6$_BK;xGQQymOp4(=n+TuQ)lsvQ^;JzNIVs3bTM~$Kf0;zPDzi%>AMeJi54F>KNl0t3+{v zpLfZ!U%EsdfgCRTns?;y<)Z?_t3;F5``Q=jKT`l^dj#{mxVF6LTkkawCHIABbBHJ| zBL`QciyM4QQ1Fk5*Pj{eWvN7wc!8PpZgNOCg&P|>%7Fs-;9yf|nDF=L#pcO= zKK}Mr3j5T|^l~|!LGlI&!$;@92eRgMXdeUyF^$Hm|uMwGZnCH!4q zli&QA%a=?m3YW`}D(%5ChjbTjuOo2+^RJ(+mI>~rt*T~`Oq~r@XjJPCLP1OpJPq^e zg7~qO_F$Q9V}^i4bkX_bMf*^^5z~bkz1!Ent~Gdi8kZuoohlF}&SUpku^FgJy^c%p zw@zSot8_ND{03}_nUm5%sXW4a9rwje;P@AHj01atpi?$)lencQ#I;_Zu-6@hbprb> zFw4Q zD}h=0bpm7v8k7rM#kr(cy;nbB6o81m#D1tU(}AZAi8@&YaPKrvSc=DgjE>#1w*HBz z{$c}C%YXRxC?gu{n)uSK`b#mIZY#$`eC*F%L6pGw`yw^g58_MYm zaN5O<=24-}Qk@#m2oLPt380y{5+d#h!BS=DEBT=<*l|=~$1!%YcI^Qw4iM%#8?PzF zXaD_xt4@@~{_`*JN|vQWA7g=6{s^2B@qoq)I{}jo63Ud^8CnUvI846n^UdZ08+Xxj zW1=**BY@%EqFc9;AFRtuy8>^GjDCBZ7Eu_t;5WVmZjVVVrN~O@s99^OkE@0kb#cUvNPJE9H-d zDji1!b{rMhaa3T(QGp#t1$G=2*l|=~$Ki6JAL!Vb^vZCI3IO;IZ5c@3el~FG00000 LNkvXXu0mjfhv#`A literal 0 HcmV?d00001 diff --git a/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_167.png b/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_167.png new file mode 100644 index 0000000000000000000000000000000000000000..6ef0af0731abb8da5b3bf9d20484606bd329c06f GIT binary patch literal 3934 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 literal 0 HcmV?d00001 diff --git a/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_180.png b/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_180.png new file mode 100644 index 0000000000000000000000000000000000000000..739be7fe5c8abc1f38dc259fd285ef0f6215689b GIT binary patch literal 4221 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 NW2kGYgSqJv`yadf1YZCE literal 0 HcmV?d00001 diff --git a/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_29.png b/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_29.png new file mode 100644 index 0000000000000000000000000000000000000000..5c4390490431c6c671656f0bb76923783e78b981 GIT binary patch literal 706 zcmV;z0zLhSP)6g$A@I1+i3mXgw4WFJ7#8@TT}*K?{~bYejoC;=xuAf(H*4 zg`T`r3A6_lBbIuKh4c_FY1JZ{MlGh1=VY^+jJs<#X+H=vlX>%gd9(B0YFg#TfscdO>rTT)x?-dC6&2d1pDB)N$^mjvDEwnVMxrJ|# z`U)@N(ECzb;)<*2rXcKUR{gmJ)yfZ$@8r|n3O!>myQD3(#Z}Zwc*GpY4%|7SgopRT z(Px^uEq=QRHy$V9(Q9SYwbRA81ka+v+@fkj>$NFIDiZAqt9B--O*vB5Gd0)|g44U9 zrwx{V!Qg~u;z(Jdx$DJa5$qd>=qJt8k+MXsDbu)7JooJ1_Q(bH+@J6MLOY@LW$ueSF|_%ILm-l#l1->L-U1WUhYeMz}= z6%{A{lM2s2s#XLgQYR`tNCuKZkqK2SHq)$ literal 0 HcmV?d00001 diff --git a/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_40-1.png b/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_40-1.png new file mode 100644 index 0000000000000000000000000000000000000000..8b1d4c2e28f2c3c6e8f66ba3b74645e4b30ff003 GIT binary patch literal 851 zcmV-Z1FZasP)g3!{{kf9 zOgdtL42Oyn(qe#V&FmbeVuPhzDu${8SidHEBESBGrd~MzT_Y_0vwI6v?t;?~!2MYpX0Jeh zYTSWs*E%T8Q9nS0HXnoWX7EgCUyY8y>+dxabgOM}vJethLv0~=9%`e)!g41$fEZ zGk5i%n#nU|&^8p=X=3>ji}1R~W?N2^NU$XiipX$JlTVYH$%k$E;8LfFM1lHzv%O(~ zOPXbIFqp(RWstD55XtdoN97|}8>bD-vqhjdiYrz9-M`G7ur*Y61eul#tjJPcY|!$? zv|l@?S8z1f z94E^xqM!6ZeFt1FgDd;NeIr7FjTM?Hfcw30xJ_A(WGiPm*QM?%9*;_D{V|Tl@(~q3 z4Z;%m!3&$yLVKp9R%74c-6*sSgbvOtxk!a2&^IG(nt4g?4no~5+$%Sic)3L7UMw>w zr%TaR=&Xj!6y*$)ztrPTa9awPKa2wAM6D`+l-vf-i1r@aNQs9X>F|3FUId1vZvjgz zB`~Qnb)JZxIDZ d)UhJL`v=_Z)u@;&))@c*002ovPDHLkV1lhzkLLgY literal 0 HcmV?d00001 diff --git a/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_40-2.png b/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_40-2.png new file mode 100644 index 0000000000000000000000000000000000000000..8b1d4c2e28f2c3c6e8f66ba3b74645e4b30ff003 GIT binary patch literal 851 zcmV-Z1FZasP)g3!{{kf9 zOgdtL42Oyn(qe#V&FmbeVuPhzDu${8SidHEBESBGrd~MzT_Y_0vwI6v?t;?~!2MYpX0Jeh zYTSWs*E%T8Q9nS0HXnoWX7EgCUyY8y>+dxabgOM}vJethLv0~=9%`e)!g41$fEZ zGk5i%n#nU|&^8p=X=3>ji}1R~W?N2^NU$XiipX$JlTVYH$%k$E;8LfFM1lHzv%O(~ zOPXbIFqp(RWstD55XtdoN97|}8>bD-vqhjdiYrz9-M`G7ur*Y61eul#tjJPcY|!$? zv|l@?S8z1f z94E^xqM!6ZeFt1FgDd;NeIr7FjTM?Hfcw30xJ_A(WGiPm*QM?%9*;_D{V|Tl@(~q3 z4Z;%m!3&$yLVKp9R%74c-6*sSgbvOtxk!a2&^IG(nt4g?4no~5+$%Sic)3L7UMw>w zr%TaR=&Xj!6y*$)ztrPTa9awPKa2wAM6D`+l-vf-i1r@aNQs9X>F|3FUId1vZvjgz zB`~Qnb)JZxIDZ d)UhJL`v=_Z)u@;&))@c*002ovPDHLkV1lhzkLLgY literal 0 HcmV?d00001 diff --git a/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_40-3.png b/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_40-3.png new file mode 100644 index 0000000000000000000000000000000000000000..8b1d4c2e28f2c3c6e8f66ba3b74645e4b30ff003 GIT binary patch literal 851 zcmV-Z1FZasP)g3!{{kf9 zOgdtL42Oyn(qe#V&FmbeVuPhzDu${8SidHEBESBGrd~MzT_Y_0vwI6v?t;?~!2MYpX0Jeh zYTSWs*E%T8Q9nS0HXnoWX7EgCUyY8y>+dxabgOM}vJethLv0~=9%`e)!g41$fEZ zGk5i%n#nU|&^8p=X=3>ji}1R~W?N2^NU$XiipX$JlTVYH$%k$E;8LfFM1lHzv%O(~ zOPXbIFqp(RWstD55XtdoN97|}8>bD-vqhjdiYrz9-M`G7ur*Y61eul#tjJPcY|!$? zv|l@?S8z1f z94E^xqM!6ZeFt1FgDd;NeIr7FjTM?Hfcw30xJ_A(WGiPm*QM?%9*;_D{V|Tl@(~q3 z4Z;%m!3&$yLVKp9R%74c-6*sSgbvOtxk!a2&^IG(nt4g?4no~5+$%Sic)3L7UMw>w zr%TaR=&Xj!6y*$)ztrPTa9awPKa2wAM6D`+l-vf-i1r@aNQs9X>F|3FUId1vZvjgz zB`~Qnb)JZxIDZ d)UhJL`v=_Z)u@;&))@c*002ovPDHLkV1lhzkLLgY literal 0 HcmV?d00001 diff --git a/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_40.png b/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_40.png new file mode 100644 index 0000000000000000000000000000000000000000..8b1d4c2e28f2c3c6e8f66ba3b74645e4b30ff003 GIT binary patch literal 851 zcmV-Z1FZasP)g3!{{kf9 zOgdtL42Oyn(qe#V&FmbeVuPhzDu${8SidHEBESBGrd~MzT_Y_0vwI6v?t;?~!2MYpX0Jeh zYTSWs*E%T8Q9nS0HXnoWX7EgCUyY8y>+dxabgOM}vJethLv0~=9%`e)!g41$fEZ zGk5i%n#nU|&^8p=X=3>ji}1R~W?N2^NU$XiipX$JlTVYH$%k$E;8LfFM1lHzv%O(~ zOPXbIFqp(RWstD55XtdoN97|}8>bD-vqhjdiYrz9-M`G7ur*Y61eul#tjJPcY|!$? zv|l@?S8z1f z94E^xqM!6ZeFt1FgDd;NeIr7FjTM?Hfcw30xJ_A(WGiPm*QM?%9*;_D{V|Tl@(~q3 z4Z;%m!3&$yLVKp9R%74c-6*sSgbvOtxk!a2&^IG(nt4g?4no~5+$%Sic)3L7UMw>w zr%TaR=&Xj!6y*$)ztrPTa9awPKa2wAM6D`+l-vf-i1r@aNQs9X>F|3FUId1vZvjgz zB`~Qnb)JZxIDZ d)UhJL`v=_Z)u@;&))@c*002ovPDHLkV1lhzkLLgY literal 0 HcmV?d00001 diff --git a/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_58-1.png b/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_58-1.png new file mode 100644 index 0000000000000000000000000000000000000000..831ceb332c75e1547b9cfc827f0c946004bb8a80 GIT binary patch literal 1218 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 VnF0&F@l*f+002ovPDHLkV1i}~3Jd@M literal 0 HcmV?d00001 diff --git a/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_80-1.png b/examples/StackDemo/ios-assets/Assets.xcassets/AppIcon.appiconset/ico_80-1.png new file mode 100644 index 0000000000000000000000000000000000000000..c23c7a936c89a735c1b94670c49983e3ba227b29 GIT binary patch literal 1591 zcmV-72FUq|P) zU2GLa6vzLVYWcV=;s;n0S}cMRg2;nWsZ~?7DoPA7CXM(JktZRI)&%2&Xdph&q$DK8 zL`5`y_C*^d!TQx&YOfNasC|)QvDKzpFw~ZUR39+^J9pc?JF{~y?7h2p_UC*>sICBF7fIcrVf`G2AL-K2FlPqP zyc&3D+0=+uRRTM{QIAkN1L-jAJk=I%@d(GqaoVXamoA$`D`07H>i5S_Ntc8Y=QvA> z-AAbvFd{vXfF6ki^hhM2N3>x~HmJEASaK<_;!5$umXrZ8n^C^b;o**r0e}82J|FA{ zM$Z5T2Z5H~@-yc@zy8vxF(?6So52*8{t2 zr0&2l&IZmZ7D9Hf0~XJcx_u|-OIXFJ383YG=r}Z#dO_tS!0hS5RxU3Wf~i=!2>9eN zVByP(P9F(Gz`kK%L%Ybz4VtX6Veq7PvBY_A=PrC71 zsd*A+uerN$W~(hY^PX)DcIjFKA|O3!bDh+j5uf$|^=eQv4NbKcYok6;+EA?lP?(O zL>L3I{KE;CcMwj+H~~2mS>mChs#4LIV~os5fANddlweT?XCt(gXI~Uw*}zBv-72+I z$<|yGor!qFsJ*a-AKSRkGt6=uDIj+$DpW_F=S%I|ncZmQ5?-@ZYD#c;SZc~S#?3$$ z5^;a5qGu@ex^11MbvVrUthrvqmrUS(-K)++8YLiY z-)j%5lM58cD*d1s+t-TgteR_P!5eDRFLTy!|F~Xc!+9<5W$DOW%Yd#5v8A+&XpDe7 zSbFI`_fVy|L;OvVE%CVRJsfBau*2oR$yrjYLUmYW-RC^$3PeDw;@&H&114*LnFy5)jEnA%)5zaPZ@2#OFUo zfx!`BC%XqTuRu65EPnPK%uvUr?#V~avPI4X^!u!$aleS!XbYW>K=5oO8@AU@=&~`K zsXIOspDEUGg9wcKo)m$!)t4CgzpWPXH>KTj!mS#`sA{iz+b1O%R&doxyP1tI62`ipmqs&IjY}x z-Xq@Z6J|I*jx$9EP2jGbfgSz8y|&~fALnq|JD5;*3Q7DxOk6VA;a-EX+j^Z zfaKBE!WEJ459IiDXyZUTe1j$5=EfJ2&Ad?R4h^UO6SkkrHY;zijL;JW(jJKf^hhM2 pM zU2GLa6vzLVYWcV=;s;n0S}cMRg2;nWsZ~?7DoPA7CXM(JktZRI)&%2&Xdph&q$DK8 zL`5`y_C*^d!TQx&YOfNasC|)QvDKzpFw~ZUR39+^J9pc?JF{~y?7h2p_UC*>sICBF7fIcrVf`G2AL-K2FlPqP zyc&3D+0=+uRRTM{QIAkN1L-jAJk=I%@d(GqaoVXamoA$`D`07H>i5S_Ntc8Y=QvA> z-AAbvFd{vXfF6ki^hhM2N3>x~HmJEASaK<_;!5$umXrZ8n^C^b;o**r0e}82J|FA{ zM$Z5T2Z5H~@-yc@zy8vxF(?6So52*8{t2 zr0&2l&IZmZ7D9Hf0~XJcx_u|-OIXFJ383YG=r}Z#dO_tS!0hS5RxU3Wf~i=!2>9eN zVByP(P9F(Gz`kK%L%Ybz4VtX6Veq7PvBY_A=PrC71 zsd*A+uerN$W~(hY^PX)DcIjFKA|O3!bDh+j5uf$|^=eQv4NbKcYok6;+EA?lP?(O zL>L3I{KE;CcMwj+H~~2mS>mChs#4LIV~os5fANddlweT?XCt(gXI~Uw*}zBv-72+I z$<|yGor!qFsJ*a-AKSRkGt6=uDIj+$DpW_F=S%I|ncZmQ5?-@ZYD#c;SZc~S#?3$$ z5^;a5qGu@ex^11MbvVrUthrvqmrUS(-K)++8YLiY z-)j%5lM58cD*d1s+t-TgteR_P!5eDRFLTy!|F~Xc!+9<5W$DOW%Yd#5v8A+&XpDe7 zSbFI`_fVy|L;OvVE%CVRJsfBau*2oR$yrjYLUmYW-RC^$3PeDw;@&H&114*LnFy5)jEnA%)5zaPZ@2#OFUo zfx!`BC%XqTuRu65EPnPK%uvUr?#V~avPI4X^!u!$aleS!XbYW>K=5oO8@AU@=&~`K zsXIOspDEUGg9wcKo)m$!)t4CgzpWPXH>KTj!mS#`sA{iz+b1O%R&doxyP1tI62`ipmqs&IjY}x z-Xq@Z6J|I*jx$9EP2jGbfgSz8y|&~fALnq|JD5;*3Q7DxOk6VA;a-EX+j^Z zfaKBE!WEJ459IiDXyZUTe1j$5=EfJ2&Ad?R4h^UO6SkkrHY;zijL;JW(jJKf^hhM2 pM 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 literal 0 HcmV?d00001 diff --git a/examples/StackDemo/ios-assets/Assets.xcassets/Contents.json b/examples/StackDemo/ios-assets/Assets.xcassets/Contents.json new file mode 100644 index 00000000..da4a164c --- /dev/null +++ b/examples/StackDemo/ios-assets/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/examples/StackDemo/ios-assets/Base.lproj/LaunchScreen.storyboard b/examples/StackDemo/ios-assets/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..3f1399c4 --- /dev/null +++ b/examples/StackDemo/ios-assets/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/StackDemo/src/stackdemo.cpp b/examples/StackDemo/src/stackdemo.cpp new file mode 100644 index 00000000..fccb879a --- /dev/null +++ b/examples/StackDemo/src/stackdemo.cpp @@ -0,0 +1,241 @@ +#include +#include + +#include + +using namespace bdn; + +class MainViewController : public Base +{ + public: + void addControlWithHeading(String headingText, std::shared_ptr control, + std::shared_ptr container, bool single) + { + auto header = std::make_shared(); + header->text = headingText; + header->horizontalAlignment = View::HorizontalAlignment::left; + + if (single) { + control->horizontalAlignment = View::HorizontalAlignment::right; + control->verticalAlignment = View::VerticalAlignment::middle; + header->verticalAlignment = View::VerticalAlignment::middle; + auto row = std::make_shared(); + row->margin = UIMargin(15, 15, 15, 15); + row->horizontalAlignment = View::HorizontalAlignment::expand; + header->horizontalAlignment = View::HorizontalAlignment::expand; + row->addChildView(header); + row->addChildView(control); + container->addChildView(row); + } else { + header->margin = UIMargin(15 + 6, 15, 18, 15); + control->margin = UIMargin(2, 15, 15, 15); + control->horizontalAlignment = View::HorizontalAlignment::expand; + + container->addChildView(header); + container->addChildView(control); + } + } + + std::shared_ptr createHugeView() + { + auto mainColumn = std::make_shared(); + mainColumn->preferredSizeMinimum = Size(250, 0); + + addControlWithHeading("Switch", std::make_shared(), mainColumn, true); + addControlWithHeading("Checkbox", std::make_shared(), mainColumn, true); + + auto btn = std::make_shared