update
parent
546a2db848
commit
daf53fdebc
|
@ -94,6 +94,29 @@ extern "C" {
|
|||
|
||||
#[allow(dead_code)]
|
||||
pub fn finclip_close_all_applet() -> c_int;
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub fn finclip_batch_app_info(
|
||||
appid: *const c_char,
|
||||
req_list: *const c_char,
|
||||
callback: ApiCallback,
|
||||
input: *mut c_void,
|
||||
) -> c_int;
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub fn finclip_search_app(
|
||||
appid: *const c_char,
|
||||
search_text: *const c_char,
|
||||
callback: ApiCallback,
|
||||
input: *mut c_void,
|
||||
) -> c_int;
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub fn finclip_callback_res(
|
||||
appid: *const c_char,
|
||||
callback_id: c_int,
|
||||
result: *mut c_void,
|
||||
) -> c_int;
|
||||
}
|
||||
|
||||
fn str_to_cstr(k: &str) -> Result<CString, NulError> {
|
||||
|
@ -176,7 +199,10 @@ pub mod wrapper {
|
|||
|
||||
#[allow(dead_code)]
|
||||
pub fn params_del(params: *mut FinclipParams, key: &str) -> Result<(), NulError> {
|
||||
unsafe { finclip_params_del(params, str_to_cstr(key)?.as_ptr()); Ok(()) }
|
||||
unsafe {
|
||||
finclip_params_del(params, str_to_cstr(key)?.as_ptr());
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
|
@ -196,7 +222,7 @@ pub mod wrapper {
|
|||
pub fn config_packer_get_config(
|
||||
packer: *mut IFinConfigPacker,
|
||||
appstore: &str,
|
||||
) -> Result<*mut FinclipParams,NulError> {
|
||||
) -> Result<*mut FinclipParams, NulError> {
|
||||
unsafe {
|
||||
let ret = finclip_config_packer_get_config(packer, str_to_cstr(appstore)?.as_ptr());
|
||||
Ok(ret)
|
||||
|
@ -204,13 +230,28 @@ pub mod wrapper {
|
|||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub fn set_position(appid: &str, left: c_int, top: c_int, width: c_int, height: c_int)->Result<(),NulError> {
|
||||
unsafe { finclip_set_position(str_to_cstr(appid)?.as_ptr(), left, top, width, height);Ok(()) }
|
||||
pub fn set_position(
|
||||
appid: &str,
|
||||
left: c_int,
|
||||
top: c_int,
|
||||
width: c_int,
|
||||
height: c_int,
|
||||
) -> Result<(), NulError> {
|
||||
unsafe {
|
||||
finclip_set_position(str_to_cstr(appid)?.as_ptr(), left, top, width, height);
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub fn start_applet(appstore: &str, appid: &str) -> Result<c_int,NulError> {
|
||||
unsafe { let ret = finclip_start_applet(str_to_cstr(appstore)?.as_ptr(), str_to_cstr(appid)?.as_ptr());Ok(ret) }
|
||||
pub fn start_applet(appstore: &str, appid: &str) -> Result<c_int, NulError> {
|
||||
unsafe {
|
||||
let ret = finclip_start_applet(
|
||||
str_to_cstr(appstore)?.as_ptr(),
|
||||
str_to_cstr(appid)?.as_ptr(),
|
||||
);
|
||||
Ok(ret)
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
|
@ -220,7 +261,7 @@ pub mod wrapper {
|
|||
apis: &str,
|
||||
handle: ApiHandler,
|
||||
input: *mut c_void,
|
||||
) ->Result<(),NulError>{
|
||||
) -> Result<(), NulError> {
|
||||
unsafe {
|
||||
finclip_register_api(
|
||||
packer,
|
||||
|
@ -241,7 +282,7 @@ pub mod wrapper {
|
|||
params: &str,
|
||||
callback: ApiCallback,
|
||||
input: *mut c_void,
|
||||
) -> Result<c_int,NulError> {
|
||||
) -> Result<c_int, NulError> {
|
||||
unsafe {
|
||||
let ret = finclip_invoke_api(
|
||||
typ as c_int,
|
||||
|
@ -256,8 +297,11 @@ pub mod wrapper {
|
|||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub fn close_applet(appid: &str) -> Result<c_int,NulError> {
|
||||
unsafe { let ret=finclip_close_applet(str_to_cstr(appid)?.as_ptr()); Ok(ret) }
|
||||
pub fn close_applet(appid: &str) -> Result<c_int, NulError> {
|
||||
unsafe {
|
||||
let ret = finclip_close_applet(str_to_cstr(appid)?.as_ptr());
|
||||
Ok(ret)
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
|
@ -266,7 +310,7 @@ pub mod wrapper {
|
|||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub fn applet_set_params(params: *mut FinclipParams, from: &AppParams) -> Result<(),NulError> {
|
||||
pub fn applet_set_params(params: *mut FinclipParams, from: &AppParams) -> Result<(), NulError> {
|
||||
for k in &from.params {
|
||||
params_set(params, k.0.as_str(), k.1.as_str())?;
|
||||
}
|
||||
|
@ -281,4 +325,56 @@ pub mod wrapper {
|
|||
params_set(params, "show_loading", from.show_loading.as_str())?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub fn batch_app_info(
|
||||
appid: &str,
|
||||
req_list: &str,
|
||||
callback: ApiCallback,
|
||||
input: *mut c_void,
|
||||
) -> Result<c_int, NulError> {
|
||||
unsafe {
|
||||
let ret = finclip_batch_app_info(
|
||||
str_to_cstr(appid)?.as_ptr(),
|
||||
str_to_cstr(req_list)?.as_ptr(),
|
||||
callback,
|
||||
input,
|
||||
);
|
||||
Ok(ret)
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub fn search_app(
|
||||
appid: &str,
|
||||
search_text: &str,
|
||||
callback: ApiCallback,
|
||||
input: *mut c_void,
|
||||
) -> Result<c_int, NulError> {
|
||||
unsafe {
|
||||
let ret = finclip_search_app(
|
||||
str_to_cstr(appid)?.as_ptr(),
|
||||
str_to_cstr(search_text)?.as_ptr(),
|
||||
callback,
|
||||
input,
|
||||
);
|
||||
Ok(ret)
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub fn callback_res(
|
||||
appid: &str,
|
||||
callback_id: c_int,
|
||||
result: *mut FinclipParams,
|
||||
) -> Result<c_int, NulError> {
|
||||
unsafe {
|
||||
let ret = finclip_callback_res(
|
||||
str_to_cstr(appid)?.as_ptr(),
|
||||
callback_id,
|
||||
result as *mut c_void,
|
||||
);
|
||||
Ok(ret)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ extern crate serde_json;
|
|||
mod finclip;
|
||||
|
||||
use anyhow::Result;
|
||||
use finclip::wrapper;
|
||||
use finclip::*;
|
||||
use finclip::FinClipApiType;
|
||||
use fltk::dialog;
|
||||
use fltk::enums::{Align, Event};
|
||||
|
@ -34,7 +34,7 @@ extern "C" fn web_api_callback(res: *const c_char, input: *mut c_void) {
|
|||
}
|
||||
}
|
||||
|
||||
extern "C" fn web_api_example(
|
||||
extern "C" fn openapi_search(
|
||||
event: *const c_char,
|
||||
param: *const c_char,
|
||||
input: *mut c_void,
|
||||
|
@ -42,16 +42,23 @@ extern "C" fn web_api_example(
|
|||
) {
|
||||
unsafe {
|
||||
let data = &*(input as *mut Arc<Mutex<WinElem>>);
|
||||
let appid = {
|
||||
let d = &mut data.lock().unwrap();
|
||||
d.appid.buffer().unwrap().text()
|
||||
};
|
||||
wrapper::batch_app_info(&appid,
|
||||
"62f5c1e08f13e800017fa823,62f47da680b7ba0001de5701,62f47ce980b7ba0001de56fc,62f479dc80b7ba0001de56f8,62f625408f13e800017fa873",
|
||||
batch_app_info_callback, input).unwrap();
|
||||
println!(
|
||||
">> web_api_example {} {} {}",
|
||||
">> openapi_search {} {} {}",
|
||||
CStr::from_ptr(event).to_str().unwrap(),
|
||||
CStr::from_ptr(param).to_str().unwrap(),
|
||||
data.lock().unwrap().appid.buffer().unwrap().text(),
|
||||
appid,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" fn app_api_example(
|
||||
extern "C" fn mock_login(
|
||||
event: *const c_char,
|
||||
param: *const c_char,
|
||||
input: *mut c_void,
|
||||
|
@ -68,6 +75,66 @@ extern "C" fn app_api_example(
|
|||
}
|
||||
}
|
||||
|
||||
extern "C" fn navigate_to_mini_program(
|
||||
event: *const c_char,
|
||||
param: *const c_char,
|
||||
input: *mut c_void,
|
||||
_res: *mut c_void,
|
||||
) {
|
||||
unsafe {
|
||||
let data = &*(input as *mut Arc<Mutex<WinElem>>);
|
||||
println!(
|
||||
">> app_api_example {} {} {}",
|
||||
CStr::from_ptr(event).to_str().unwrap(),
|
||||
CStr::from_ptr(param).to_str().unwrap(),
|
||||
data.lock().unwrap().appid.buffer().unwrap().text(),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" fn get_domain(
|
||||
event: *const c_char,
|
||||
param: *const c_char,
|
||||
input: *mut c_void,
|
||||
_res: *mut c_void,
|
||||
) {
|
||||
unsafe {
|
||||
let data = &*(input as *mut Arc<Mutex<WinElem>>);
|
||||
println!(
|
||||
">> app_api_example {} {} {}",
|
||||
CStr::from_ptr(event).to_str().unwrap(),
|
||||
CStr::from_ptr(param).to_str().unwrap(),
|
||||
data.lock().unwrap().appid.buffer().unwrap().text(),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" fn batch_app_info_callback(res: *const c_char, input: *mut c_void) {
|
||||
unsafe {
|
||||
let data = &*(input as *mut Arc<Mutex<WinElem>>);
|
||||
let appid =
|
||||
data.lock().unwrap().appid.buffer().unwrap().text();
|
||||
|
||||
println!(
|
||||
">> batch_app_info_callback {}",
|
||||
CStr::from_ptr(res).to_str().unwrap()
|
||||
);
|
||||
let result = wrapper::create_params();
|
||||
wrapper::params_set(result, "data", CStr::from_ptr(res).to_str().unwrap()).unwrap();
|
||||
//wrapper::callback_res(&appid, 0, result).unwrap(); //TODO:
|
||||
wrapper::destory_params(result);
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" fn search_app_callback(res: *const c_char, _input: *mut c_void) {
|
||||
unsafe {
|
||||
println!(
|
||||
">> search app {}",
|
||||
CStr::from_ptr(res).to_str().unwrap()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
fn start_normal(win_elems: Arc<Mutex<WinElem>>, cfg: &finclip::AppParams) -> Result<()> {
|
||||
let factory = wrapper::get_packer_factory();
|
||||
let packer = wrapper::packer_factory_get_config_packer(factory);
|
||||
|
@ -75,16 +142,30 @@ fn start_normal(win_elems: Arc<Mutex<WinElem>>, cfg: &finclip::AppParams) -> Res
|
|||
let cfg_ptr = &win_elems as *const _ as *mut c_void;
|
||||
wrapper::register_api(
|
||||
packer,
|
||||
FinClipApiType::WebView,
|
||||
"test",
|
||||
web_api_example,
|
||||
FinClipApiType::Applet,
|
||||
"openapi_search",
|
||||
openapi_search,
|
||||
cfg_ptr,
|
||||
)?;
|
||||
wrapper::register_api(
|
||||
packer,
|
||||
FinClipApiType::Applet,
|
||||
"test",
|
||||
app_api_example,
|
||||
"mock_login",
|
||||
mock_login,
|
||||
cfg_ptr,
|
||||
)?;
|
||||
wrapper::register_api(
|
||||
packer,
|
||||
FinClipApiType::Applet,
|
||||
"navigate_to_mini_program",
|
||||
navigate_to_mini_program,
|
||||
cfg_ptr,
|
||||
)?;
|
||||
wrapper::register_api(
|
||||
packer,
|
||||
FinClipApiType::Applet,
|
||||
"get_domain",
|
||||
get_domain,
|
||||
cfg_ptr,
|
||||
)?;
|
||||
let res = wrapper::initialize(packer);
|
||||
|
@ -151,12 +232,14 @@ struct WinElem {
|
|||
btn_start: Button,
|
||||
btn_close: Button,
|
||||
btn_call: Button,
|
||||
btn_batch: Button,
|
||||
btn_search: Button,
|
||||
}
|
||||
|
||||
impl WinElem {
|
||||
fn new() -> Result<WinElem> {
|
||||
let wind = {
|
||||
const SIZE: (i32, i32) = (655, 460);
|
||||
const SIZE: (i32, i32) = (655, 490);
|
||||
let (x, y) = center(SIZE.0, SIZE.1);
|
||||
Window::new(x, y, SIZE.0, SIZE.1, "rustdemo")
|
||||
};
|
||||
|
@ -172,6 +255,8 @@ impl WinElem {
|
|||
btn_start: Button::new(100, 420, 130, 25, "启动"),
|
||||
btn_close: Button::new(255, 420, 130, 25, "关闭所有小程序"),
|
||||
btn_call: Button::new(400, 420, 130, 25, "调用webview api"),
|
||||
btn_batch: Button::new(100, 455, 130, 25, "批量获取app"),
|
||||
btn_search: Button::new(255, 455, 130, 25, "搜索app"),
|
||||
};
|
||||
let align = Align::Left | Align::Inside;
|
||||
Frame::new(10, 42, 100, 20, "appid").with_align(align);
|
||||
|
@ -320,6 +405,44 @@ impl WinElem {
|
|||
}
|
||||
});
|
||||
|
||||
elems.btn_batch.set_callback({
|
||||
let data = this.clone();
|
||||
move |_| {
|
||||
let appid = {
|
||||
let d = &mut data.lock().unwrap();
|
||||
d.appid.buffer().unwrap().text()
|
||||
};
|
||||
let cfg_ptr = &data as *const _ as *mut c_void;
|
||||
let res = wrapper::batch_app_info(
|
||||
appid.as_str(),
|
||||
"62f5c1e08f13e800017fa823,62f47da680b7ba0001de5701,62f47ce980b7ba0001de56fc,62f479dc80b7ba0001de56f8,62f625408f13e800017fa873",
|
||||
batch_app_info_callback,
|
||||
cfg_ptr,
|
||||
)
|
||||
.unwrap();
|
||||
println!("batch app info. result: {}", res);
|
||||
}
|
||||
});
|
||||
|
||||
elems.btn_search.set_callback({
|
||||
let data = this.clone();
|
||||
move |_| {
|
||||
let appid = {
|
||||
let d = &mut data.lock().unwrap();
|
||||
d.appid.buffer().unwrap().text()
|
||||
};
|
||||
let cfg_ptr = &data as *const _ as *mut c_void;
|
||||
let res = wrapper::search_app(
|
||||
appid.as_str(),
|
||||
"实例",
|
||||
search_app_callback,
|
||||
cfg_ptr,
|
||||
)
|
||||
.unwrap();
|
||||
println!("search app. result: {}", res);
|
||||
}
|
||||
});
|
||||
|
||||
elems.load_config()?;
|
||||
Ok(())
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue