Support scroll in csharp binder. 20/251320/2
authorhuayong.xu <huayong.xu@samsung.com>
Tue, 12 Jan 2021 12:27:21 +0000 (20:27 +0800)
committerhuayong.xu <huayong.xu@samsung.com>
Wed, 13 Jan 2021 07:23:16 +0000 (15:23 +0800)
Some new APIS are added for scroll support.

Change-Id: Id5cfeaa8ca5e1bbdf3fcc2d9753c478aa176f2b6

dali-csharp-binder/src/dali_wrap.cpp
dali-csharp-binder/src/web-view-signal-converter.h [changed mode: 0644->0755]

index 4396742..fbe5c9c 100755 (executable)
@@ -58195,6 +58195,18 @@ SWIGEXPORT int SWIGSTDCALL CSharp_Dali_WebView_Property_DEFAULT_FONT_SIZE_get()
   return (int) Dali::Toolkit::WebView::Property::DEFAULT_FONT_SIZE;
 }
 
+SWIGEXPORT int SWIGSTDCALL CSharp_Dali_WebView_Property_SCROLL_POSITION_get() {
+  return (int)Dali::Toolkit::WebView::Property::SCROLL_POSITION;
+}
+
+SWIGEXPORT int SWIGSTDCALL CSharp_Dali_WebView_Property_SCROLL_SIZE_get() {
+  return (int)Dali::Toolkit::WebView::Property::SCROLL_SIZE;
+}
+
+SWIGEXPORT int SWIGSTDCALL CSharp_Dali_WebView_Property_CONTENT_SIZE_get() {
+  return (int)Dali::Toolkit::WebView::Property::CONTENT_SIZE;
+}
+
 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_WebView_LoadUrl(void * jarg1, char * jarg2) {
   Dali::Toolkit::WebView *arg1 = (Dali::Toolkit::WebView *) 0 ;
   std::string *arg2;
@@ -58277,6 +58289,17 @@ SWIGEXPORT void SWIGSTDCALL CSharp_Dali_WebView_Resume(void * jarg1) {
   }
 }
 
+SWIGEXPORT void SWIGSTDCALL CSharp_Dali_WebView_ScrollBy( void* jarg1, int jarg2, int jarg3 ) {
+  Dali::Toolkit::WebView* arg1 = (Dali::Toolkit::WebView*) 0;
+
+  arg1 = (Dali::Toolkit::WebView*)jarg1;
+  {
+    try {
+      (arg1)->ScrollBy( jarg2, jarg3 );
+    } CALL_CATCH_EXCEPTION();
+  }
+}
+
 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_WebView_GoBack(void * jarg1) {
   Dali::Toolkit::WebView *arg1 = (Dali::Toolkit::WebView *) 0 ;
 
@@ -58505,6 +58528,46 @@ SWIGEXPORT void SWIGSTDCALL CSharp_Dali_WebViewPageLoadErrorSignal_Disconnect(vo
   }
 }
 
+SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_new_WebViewScrollEdgeReachedSignal_ScrollEdgeReached( void* jarg1 ) {
+  Dali::Toolkit::WebView* webview = (Dali::Toolkit::WebView*) jarg1;
+  SignalConverter::WebViewScrollEdgeReachedSignal* result = NULL;
+  {
+    try {
+      result = new SignalConverter::WebViewScrollEdgeReachedSignal(&webview->ScrollEdgeReachedSignal());
+    } CALL_CATCH_EXCEPTION(0);
+  }
+  return (void*)result;
+}
+
+SWIGEXPORT void SWIGSTDCALL CSharp_Dali_delete_WebViewScrollEdgeReachedSignal( void* jarg1 ) {
+  SignalConverter::WebViewScrollEdgeReachedSignal* object = (SignalConverter::WebViewScrollEdgeReachedSignal*) jarg1;
+  {
+    try {
+      delete object;
+    } CALL_CATCH_EXCEPTION();
+  }
+}
+
+SWIGEXPORT void SWIGSTDCALL CSharp_Dali_WebViewScrollEdgeReachedSignal_Connect( void* jarg1, void* jarg2 ) {
+  SignalConverter::WebViewScrollEdgeReachedSignal* proxy = (SignalConverter::WebViewScrollEdgeReachedSignal*) jarg1;
+  SignalConverter::WebViewScrollEdgeReachedSignal::CallbackType callback = (SignalConverter::WebViewScrollEdgeReachedSignal::CallbackType) jarg2;
+  {
+    try {
+      proxy->Connect(callback);
+    } CALL_CATCH_EXCEPTION();
+  }
+}
+
+SWIGEXPORT void SWIGSTDCALL CSharp_Dali_WebViewScrollEdgeReachedSignal_Disconnect( void* jarg1, void* jarg2 ) {
+  SignalConverter::WebViewScrollEdgeReachedSignal* proxy = (SignalConverter::WebViewScrollEdgeReachedSignal*) jarg1;
+  SignalConverter::WebViewScrollEdgeReachedSignal::CallbackType callback = (SignalConverter::WebViewScrollEdgeReachedSignal::CallbackType) jarg2;
+  {
+    try {
+      proxy->Disconnect(callback);
+    } CALL_CATCH_EXCEPTION();
+  }
+}
+
 SWIGEXPORT char * SWIGSTDCALL CSharp_Dali_GetEnvironmentVariable(char * jarg1) {
   const char * result = EnvironmentVariable::GetEnvironmentVariable(jarg1);
   char * jresult = SWIG_csharp_string_callback((const char *)result);
old mode 100644 (file)
new mode 100755 (executable)
index e200522..2bb8a17
@@ -131,6 +131,57 @@ private:
   ProxySignalType   mProxySignal;
 };
 
+// Proxy class of WebViewScrollEdgeReachedSignal.
+// WebViewScrollEdgeReachedSignal has an argument of enum type which is not supported at C# side.
+// The purpose of this class is to convert signal argument of enum type safely.
+class WebViewScrollEdgeReachedSignal : public Dali::ConnectionTracker
+{
+public:
+  typedef Dali::Signal< void(Dali::Toolkit::WebView, Dali::WebEnginePlugin::ScrollEdge) > NativeSignalType;
+  typedef Dali::Signal< void(Dali::Toolkit::WebView, int) > ProxySignalType;
+  typedef void (*CallbackType)(Dali::Toolkit::WebView, int);
+
+  WebViewScrollEdgeReachedSignal( NativeSignalType* signal )
+    : mNativeSignalPtr( signal )
+  {
+  }
+
+  ~WebViewScrollEdgeReachedSignal()
+  {
+    if ( !mProxySignal.Empty() )
+    {
+       mNativeSignalPtr->Disconnect( this, &SignalConverter::WebViewScrollEdgeReachedSignal::OnEmit );
+    }
+  }
+
+  void Connect( CallbackType csharpCallback )
+  {
+    if ( mNativeSignalPtr->Empty() )
+    {
+       mNativeSignalPtr->Connect( this, &SignalConverter::WebViewScrollEdgeReachedSignal::OnEmit );
+    }
+    mProxySignal.Connect( csharpCallback );
+  }
+
+  void Disconnect( CallbackType csharpCallback )
+  {
+    mProxySignal.Disconnect( csharpCallback );
+    if ( mProxySignal.Empty() )
+    {
+       mNativeSignalPtr->Disconnect( this, &SignalConverter::WebViewScrollEdgeReachedSignal::OnEmit );
+    }
+  }
+
+  void OnEmit( Dali::Toolkit::WebView webview, Dali::WebEnginePlugin::ScrollEdge edge )
+  {
+    mProxySignal.Emit( webview, static_cast< int >( edge ) );
+  }
+
+private:
+  NativeSignalType* mNativeSignalPtr;
+  ProxySignalType   mProxySignal;
+};
+
 } // namespace SignalConverter
 
-#endif // __DALI_CSHARP_BINDER_WEB_VIEW_SIGNAL_CONVERTER_H__
\ No newline at end of file
+#endif // __DALI_CSHARP_BINDER_WEB_VIEW_SIGNAL_CONVERTER_H__