termux_gui/components/
image_view.rs1use serde_json::json;
4use crate::activity::Activity;
5use crate::view::View;
6use crate::error::Result;
7
8pub struct ImageView {
10 view: View,
11 aid: i64,
12}
13
14impl ImageView {
15 pub fn new(activity: &mut Activity, parent: Option<i64>) -> Result<Self> {
17 let mut params = json!({
18 "aid": activity.id()
19 });
20
21 if let Some(parent_id) = parent {
23 params["parent"] = json!(parent_id);
24 }
25
26 let response = activity.send_read(&json!({
27 "method": "createImageView",
28 "params": params
29 }))?;
30
31 let id = response
32 .as_i64()
33 .ok_or_else(|| crate::error::GuiError::InvalidResponse("Invalid id".to_string()))?;
34
35 Ok(ImageView {
36 view: View::new(id),
37 aid: activity.id(),
38 })
39 }
40
41 pub fn id(&self) -> i64 {
43 self.view.id()
44 }
45
46 pub fn view(&self) -> &View {
48 &self.view
49 }
50
51 pub fn set_image(&self, activity: &mut Activity, img_base64: &str) -> Result<()> {
56 activity.send(&json!({
57 "method": "setImage",
58 "params": {
59 "aid": self.aid,
60 "id": self.view.id(),
61 "img": img_base64
62 }
63 }))?;
64 Ok(())
65 }
66
67 pub fn refresh(&self, activity: &mut Activity) -> Result<()> {
71 activity.send(&json!({
72 "method": "refreshImageView",
73 "params": {
74 "aid": self.aid,
75 "id": self.view.id()
76 }
77 }))?;
78 Ok(())
79 }
80}