Skip to content

Commit 3c1308e

Browse files
committed
[*] refactor
1 parent 4bd2019 commit 3c1308e

File tree

11 files changed

+82
-26
lines changed

11 files changed

+82
-26
lines changed

wayshot/src/logic/video_editor.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ mod common_type;
33
mod conversion;
44
mod export;
55
mod filters;
6+
mod font;
67
mod library;
78
mod playlist;
89
mod preview;
@@ -24,4 +25,5 @@ pub fn init(ui: &crate::slint_generatedAppWindow::AppWindow) {
2425
subtitle::init(ui);
2526
preview::init(ui);
2627
record_audio::init(ui);
28+
font::init(ui);
2729
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
use crate::{
2+
global_store, global_ve_filter,
3+
logic::{toast, tr::tr},
4+
logic_cb,
5+
slint_generatedAppWindow::{AppWindow, FontInfo as UIFontInfo},
6+
};
7+
8+
#[macro_export]
9+
macro_rules! store_font_infos {
10+
($ui:expr) => {
11+
crate::global_store!($ui)
12+
.get_font_infos()
13+
.as_any()
14+
.downcast_ref::<VecModel<UIFontInfo>>()
15+
.expect("We know we set a VecModel<UIFontInfo> earlier")
16+
};
17+
}
18+
19+
fn init(ui: &AppWindow) {}

wayshot/src/logic/video_editor/playlist.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use super::{
44
segment::refresh_affected_segments,
55
};
66
use crate::{
7-
global_store,
7+
global_store, global_ve_filter,
88
logic::{toast, tr::tr},
99
logic_cb,
1010
slint_generatedAppWindow::{
@@ -15,7 +15,7 @@ use crate::{
1515
};
1616
use anyhow::Result;
1717
use slint::{ComponentHandle, Model, VecModel, Weak};
18-
use std::{path::PathBuf, sync::Arc, time::Duration};
18+
use std::{cell::Cell, path::PathBuf, sync::Arc, time::Duration};
1919
use uuid::Uuid;
2020
use video_editor::{
2121
commands::{
@@ -154,6 +154,7 @@ pub fn async_add_item_to_track(ui_weak: Weak<AppWindow>, name: String, file_path
154154
global_store!(ui).get_video_editor_current_edited_track_index();
155155
let timeline_offset_ms = global_store!(ui).get_video_editor_timeline_offset();
156156
let timeline_offset = Duration::from_millis(timeline_offset_ms as u64);
157+
let created_new_tracks = Cell::new(false);
157158

158159
let result: Result<ExecuteResult> = with_history_manager(|state| {
159160
// Check if current track matches metadata type
@@ -243,6 +244,7 @@ pub fn async_add_item_to_track(ui_weak: Weak<AppWindow>, name: String, file_path
243244
return Ok(execute_result);
244245
}
245246

247+
created_new_tracks.set(true);
246248
let tracks = Track::new(&metadata.path)
247249
.map_err(|e| video_editor::Error::InvalidConfig(e.to_string()))?;
248250

@@ -265,6 +267,11 @@ pub fn async_add_item_to_track(ui_weak: Weak<AppWindow>, name: String, file_path
265267
sync_manager_to_ui(&ui);
266268
refresh_affected_segments(&ui, execute_result.affected_segments);
267269

270+
if created_new_tracks.get() {
271+
global_store!(ui).set_video_editor_current_edited_track_index(-1);
272+
global_ve_filter!(ui).set_selected_filter_index(-1);
273+
}
274+
268275
if matches!(metadata.get_type(), MetadataType::Video) || metadata.is_image() {
269276
refresh_preview(&ui);
270277
}

wayshot/ui/panel/def.slint

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ import {
6464
VideoEditorSegmentMetadata,
6565
VideoEditorRecordAudioConfig,
6666
VideoEditorLayerImage,
67+
FontInfo,
6768
} from "../store.slint";
6869

69-
export { Theme, Logic, Store, Util, Icons, VEFilter, StartupTab, TabIndex, PopupIndex, SettingPreference, SettingBackup, SettingDetailIndex, MobileSettingDetailIndex, DeviceType, MobileTabIndex, SettingRecorder, SettingCursorTracker, TransitionType, SettingPlayer, FeatureType, SettingShareScreen, SettingShareScreenClient, ConnectionStatus, SettingPushStream, SettingCamera, MixPositionWithPadding, MixPositionWithPaddingTag, RealtimeImageEffect, BackgroundRemoverModel, Downloader, DownloaderState, Transcribe, TranscribeProgressType, FileType, Subtitle, SettingTranscribe, SettingAiModel, VideoEditorTrackType, VideoEditorTrackSegment, VideoEditorTrack, VideoEditorTracksManager, SelectedTrackIndex, SelectedSegmentIndex, VideoEditorPlaylistItem, MediaType, VideoEditorExportQueueItem, VideoEditorExportVideoConfig, VideoEditorExportAudioConfig, SubtitleType, VideoEditorSubtitle, VideoEditorNewProjectConfig, VideoEditorPreviewConfig, VideoPreviewSize, VideoEditorPreferenceTrackConfig, VideoEditorPreferenceCacheConfig, VideoEditorPreferenceConfig, VideoEditorSegmentMetadata, VideoEditorRecordAudioConfig, VideoEditorLayerImage, TransformDetail, CropDetail, ZoomDetail, FlyInDetail, FilterType }
70+
export { Theme, Logic, Store, Util, Icons, VEFilter, StartupTab, TabIndex, PopupIndex, SettingPreference, SettingBackup, SettingDetailIndex, MobileSettingDetailIndex, DeviceType, MobileTabIndex, SettingRecorder, SettingCursorTracker, TransitionType, SettingPlayer, FeatureType, SettingShareScreen, SettingShareScreenClient, ConnectionStatus, SettingPushStream, SettingCamera, MixPositionWithPadding, MixPositionWithPaddingTag, RealtimeImageEffect, BackgroundRemoverModel, Downloader, DownloaderState, Transcribe, TranscribeProgressType, FileType, Subtitle, SettingTranscribe, SettingAiModel, VideoEditorTrackType, VideoEditorTrackSegment, VideoEditorTrack, VideoEditorTracksManager, SelectedTrackIndex, SelectedSegmentIndex, VideoEditorPlaylistItem, MediaType, VideoEditorExportQueueItem, VideoEditorExportVideoConfig, VideoEditorExportAudioConfig, SubtitleType, VideoEditorSubtitle, VideoEditorNewProjectConfig, VideoEditorPreviewConfig, VideoPreviewSize, VideoEditorPreferenceTrackConfig, VideoEditorPreferenceCacheConfig, VideoEditorPreferenceConfig, VideoEditorSegmentMetadata, VideoEditorRecordAudioConfig, VideoEditorLayerImage, TransformDetail, CropDetail, ZoomDetail, FlyInDetail, FilterType, FontInfo }
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import {
2+
Theme,
3+
Store,
4+
Logic,
5+
Util,
6+
Icons,
7+
VideoEditorSubtitle,
8+
FontInfo,
9+
} from "../../def.slint";
10+
import { NoDataImg, MovingDialog } from "../../../base/widgets.slint";
11+
import { ListView } from "std-widgets.slint";
12+
import { CenterLayout } from "../../../base/center-layout.slint";
13+
14+
export component FontDialog inherits MovingDialog {
15+
title: Logic.tr("Font");
16+
icon: Icons.font-light;
17+
header-width: Theme.default-font-size * 36;
18+
height: 600px;
19+
20+
private property <[FontInfo]> font-infos;
21+
22+
CenterLayout {
23+
NoDataImg {
24+
width: root.header-width * Theme.golden-ratio;
25+
text: Logic.tr("No found system fonts");
26+
font-size: Theme.default-font-size;
27+
}
28+
}
29+
30+
ListView { }
31+
}

wayshot/ui/panel/desktop/video-editor/right-panel/filter/filter.slint

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -588,10 +588,10 @@ component FilterSelector inherits VerticalLayout {
588588
export component Filter inherits Rectangle {
589589
private property <bool> is-show-selector;
590590
private property <FilterType> filter-tab-type;
591-
private property <bool> is-subtitle-track: Logic.video-editor-is-subtitle-track(Store.video-editor-current-edited-track-index);
591+
// private property <bool> is-subtitle-track: Logic.video-editor-is-subtitle-track(Store.video-editor-current-edited-track-index);
592592
private property <bool> is-show-segment-filter: Store.video-editor-current-edited-track-index >= 0 && Store.video-editor-selected-segments-index.length > 0 && !is-subtitle-track;
593593

594-
// private property <bool> is-subtitle-track: true; // todo
594+
private property <bool> is-subtitle-track: true; // todo
595595
// private property <bool> is-show-segment-filter: true; // todo
596596

597597
if !is-show-segment-filter && !is-subtitle-track: NoDataImg {

wayshot/ui/panel/desktop/video-editor/right-panel/filter/subtitle/font-path.slint

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export component FontPath inherits Rectangle {
4343
text: Util.file-name(config.font-path);
4444

4545
clicked => {
46-
Store.video-editor-font-dialog-toggle-flag = !Store.video-editor-font-dialog-toggle-flag;
46+
Store.video-editor-is-show-font-dialog = !Store.video-editor-is-show-font-dialog;
4747
}
4848
}
4949
}

wayshot/ui/panel/desktop/video-editor/right-panel/font.slint

Lines changed: 0 additions & 17 deletions
This file was deleted.

wayshot/ui/panel/desktop/video-editor/right-panel/right-panel.slint

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import {
88
import {
99
TabBtns,
1010
} from "../../../../base/widgets.slint";
11-
import { Font } from "font.slint";
1211
import { Filter } from "filter/filter.slint";
1312
import { Subtitle } from "subtitle.slint";
1413
import { VEFilter } from "../filter.slint";

wayshot/ui/panel/desktop/video-editor/video-editor.slint

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
} from "../../../base/widgets.slint";
1515
import { Header } from "header.slint";
1616
import { Tracks } from "tracks/tracks.slint";
17+
import { FontDialog } from "font-dialog.slint";
1718
import { LeftPanel } from "left-panel/left-panel.slint";
1819
import { RightPanel } from "right-panel/right-panel.slint";
1920
import { NewProject } from "new-project.slint";
@@ -245,6 +246,13 @@ export component VideoEditor inherits Rectangle {
245246
}
246247
}
247248

249+
if Store.video-editor-is-show-font-dialog: FontDialog {
250+
close => {
251+
Store.video-editor-is-show-font-dialog = false;
252+
fs.focus();
253+
}
254+
}
255+
248256
if Store.video-editor-is-show-new-project-dialog || Store.video-editor-is-show-unsave-change-dialog || Store.video-editor-is-show-recovery-dialog || Store.video-editor-is-show-preview-setting-dialog || Store.video-editor-is-show-preference-setting-dialog: Blanket {
249257
clicked => {
250258
Store.video-editor-is-show-new-project-dialog = false;

0 commit comments

Comments
 (0)