(&self, name: &str)
| 918 | let mut new_item = item.clone(); |
| 919 | new_item.x_offset = x_offset; |
| 920 | new_item.y_offset = y_offset; |
| 921 | model.set_row_data(i, new_item); |
| 922 | break; |
| 923 | } |
| 924 | } |
| 925 | Ok(()) |
| 926 | } |
| 927 | |
| 928 | fn clean_fg(&self, target: &str) -> Result<(), EngineError> { |
| 929 | let model = self.figure_items.clone(); |
| 930 | |
| 931 | if target == "All" { |
| 932 | while model.row_count() > 0 { |
| 933 | model.remove(0); |
| 934 | } |
| 935 | } else { |
| 936 | // 从后往前删,避免索引错位 |
| 937 | let mut i = model.row_count(); |
| 938 | while i > 0 { |
| 939 | i -= 1; |
| 940 | let item = model.row_data(i).unwrap(); |
| 941 | if item.name == target { |
| 942 | model.remove(i); |
| 943 | } |
| 944 | } |
| 945 | } |
| 946 | |
| 947 | Ok(()) |
| 948 | } |
| 949 | |
| 950 | fn start_video(&self, name: &str) -> Result<(), EngineError> { |
| 951 | let path = format!( |
| 952 | "{}{}.{}", |
| 953 | ENGINE_CONFIG.video_path(), |
| 954 | name, |
| 955 | ENGINE_CONFIG.video_extension() |
| 956 | ); |
| 957 | |
| 958 | self.media_player.borrow().stop_all(); |
| 959 | |
| 960 | let player = VideoPlayer::play(&path)?; |
| 961 | let mut video_context = self.video_context.borrow_mut(); |
| 962 | video_context.set_video_player(player); |
| 963 | |
| 964 | if let Some(window) = self.weak.upgrade() { |
| 965 | window.set_is_video(true); |
| 966 | } |
| 967 | |
| 968 | let timer = slint::Timer::default(); |
| 969 | let weak = self.weak.clone(); |
| 970 | let video_player = self.video_context.clone(); |
| 971 | let executor_for_finish = self.clone(); |
| 972 | timer.start( |
no test coverage detected