Skip to content

Commit f92ba91

Browse files
committed
[*] refactor
1 parent 8771309 commit f92ba91

File tree

5 files changed

+67
-12
lines changed

5 files changed

+67
-12
lines changed

todo.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
## 问题
2-
- segment 向右拖拽时,segment长度有时会发生跳变。检查有哪些缓存变量没有及时更新,导致segment长度跳变
3-
42
- 焦点获取问题,很多地方或获取程序焦点,导致快捷键无法成功使用
53

64
- 圆形裁剪有问题,现在是椭圆形,不是圆形。宽和高不一致。

wayshot/ui/panel/desktop/video-editor/left-panel/media-library.slint

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -203,8 +203,6 @@ export component MediaLibrary inherits Rectangle {
203203
}
204204

205205
if Store.video-editor-media-library-in-edit-mode: VerticalLayout {
206-
alignment: end;
207-
208206
Divider { }
209207

210208
HorizontalLayout {

wayshot/ui/panel/desktop/video-editor/preview/preview-crop-layers.slint

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,21 @@ export component PreviewCropLayers inherits Rectangle {
2525
private property <CropDetail> crop: layer.crop;
2626
private property <bool> is-edited-track: Store.video-editor-current-edited-track-index == layer.track-index;
2727

28+
function keep-circle-size() {
29+
let img-width = img.source.width;
30+
let img-height = img.source.height;
31+
32+
let px-width = crop.width * img-width;
33+
let px-height = crop.height * img-height;
34+
35+
if (px-width == px-height) {
36+
return;
37+
}
38+
let diameter-px = min(px-width, px-height);
39+
crop.width = diameter-px / img-width;
40+
crop.height = diameter-px / img-height;
41+
}
42+
2843
container-rec := Rectangle {
2944
width: img.width;
3045
height: img.height;
@@ -297,7 +312,7 @@ export component PreviewCropLayers inherits Rectangle {
297312
}
298313
}
299314

300-
Rectangle {
315+
if crop.shape == 0: Rectangle {
301316
x: top-line.x;
302317
y: top-line.y;
303318
width: top-line.width;
@@ -307,13 +322,19 @@ export component PreviewCropLayers inherits Rectangle {
307322
}
308323

309324
if crop.shape == 1: Rectangle {
325+
init => {
326+
keep-circle-size();
327+
}
328+
310329
x: top-line.x;
311330
y: top-line.y;
312331
width: top-line.width;
313332
height: left-line.height;
314333
border-radius: self.width / 2;
315334
border-width: 2px;
316335
border-color: Theme.danger-color;
336+
background: Theme.hover-background;
337+
opacity: Theme.golden-ratio;
317338
}
318339

319340
top-line := HorizontalLayout {

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

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -265,10 +265,27 @@ component SegmentFilterList inherits Rectangle {
265265
border-radius: Theme.border-radius;
266266
background: selected-index == index ? Theme.checked-background.darker(20%) : (ta.has-hover ? Theme.thirdly-background : mod(index, 2) == 0 ? Theme.table-item-first : Theme.table-item-second);
267267

268+
private property <bool> is-manual-clicked;
269+
private property inner-selected-index <=> root.selected-index;
270+
changed inner-selected-index => {
271+
if (is-manual-clicked) {
272+
is-manual-clicked = false;
273+
return;
274+
}
275+
is-manual-clicked = false;
276+
277+
VEFilter.selected-filter = filter;
278+
VEFilter.is-in-edit-mode = VEFilter.is-edit-mode-filter(filter.name);
279+
Store.video-editor-segment-filter-flag = !Store.video-editor-segment-filter-flag;
280+
root.filter-selected(filter.ty);
281+
}
282+
268283
ta := TouchArea {
269284
mouse-cursor: MouseCursor.pointer;
270285

271286
clicked => {
287+
is-manual-clicked = true;
288+
272289
if (selected-index == index) {
273290
selected-index = -1;
274291
VEFilter.selected-filter = { };
@@ -417,6 +434,10 @@ component SegmentFilter inherits Rectangle {
417434
}
418435
}
419436

437+
public function update-selected-index() {
438+
sl.selected-index = segment.filters.length - 1;
439+
}
440+
420441
clip: true;
421442

422443
tab := FilterDetailTab {
@@ -469,12 +490,10 @@ component SegmentFilter inherits Rectangle {
469490
rec := Rectangle {
470491
y: td.y + td.height;
471492
visible: sl.selected-index >= 0;
472-
// visible: true; // todo
473493
max-height: root.height - tab.height;
474494
height: root.height * 2 / 3;
475495
background: Theme.secondary-background;
476496

477-
// todo
478497
if tab.checked-index == 0: FilterVideoDetail {
479498
y: 0;
480499
selected-filter: selected-filter;
@@ -494,7 +513,6 @@ component SegmentFilter inherits Rectangle {
494513
}
495514
}
496515

497-
// todo
498516
if sl.selected-index < 0: NoDataImg {
499517
y: td.y + td.height;
500518
height: root.height * 2 / 3;
@@ -671,17 +689,21 @@ component FilterSelector inherits VerticalLayout {
671689
export component Filter inherits Rectangle {
672690
private property <bool> is-show-selector;
673691
private property <FilterType> filter-tab-type;
692+
private property <bool> update-selected-filter-flag;
674693
private property <bool> is-subtitle-track: Logic.video-editor-is-subtitle-track(Store.video-editor-current-edited-track-index);
675694
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;
676695

677-
// private property <bool> is-subtitle-track: true; // todo
678-
// private property <bool> is-show-segment-filter: true; // todo
679-
680696
if !is-show-segment-filter && !is-subtitle-track: NoDataImg {
681697
text: Logic.tr("No Filter");
682698
}
683699

684700
if is-show-segment-filter: SegmentFilter {
701+
private property flag <=> root.update-selected-filter-flag;
702+
703+
changed flag => {
704+
self.update-selected-index();
705+
}
706+
685707
open-filters-selector(ty) => {
686708
is-show-selector = true;
687709
filter-tab-type = ty;
@@ -699,6 +721,7 @@ export component Filter inherits Rectangle {
699721
clicked(entry) => {
700722
VEFilter.add-filter(entry);
701723
is-show-selector = false;
724+
root.update-selected-filter-flag = !root.update-selected-filter-flag;
702725
}
703726

704727
preset-clicked(filter) => {
@@ -718,6 +741,7 @@ export component Filter inherits Rectangle {
718741
clicked(entry) => {
719742
VEFilter.add-filter(entry);
720743
is-show-selector = false;
744+
root.update-selected-filter-flag = !root.update-selected-filter-flag;
721745
}
722746

723747
preset-clicked(filter) => {
@@ -737,6 +761,7 @@ export component Filter inherits Rectangle {
737761
clicked(entry) => {
738762
VEFilter.add-filter(entry);
739763
is-show-selector = false;
764+
root.update-selected-filter-flag = !root.update-selected-filter-flag;
740765
}
741766

742767
preset-clicked(filter) => {

wayshot/ui/store.slint

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -836,7 +836,20 @@ export global Store {
836836

837837
in-out property <bool> video-editor-playlist-in-edit-mode;
838838
in-out property <bool> video-editor-media-library-in-edit-mode;
839-
in-out property <[VideoEditorPlaylistItem]> video-editor-playlist: [];
839+
in-out property <[VideoEditorPlaylistItem]> video-editor-playlist: [
840+
// {
841+
// file-path: "xxxx",
842+
// name: "xxxxxx",
843+
// media-type: MediaType.Video,
844+
// file-size: "10M",
845+
// },
846+
// {
847+
// file-path: "xxxx",
848+
// name: "xxxxxx",
849+
// media-type: MediaType.Video,
850+
// file-size: "10M",
851+
// },
852+
];
840853
in-out property <[VideoEditorPlaylistItem]> video-editor-media-library: [];
841854

842855
in-out property <bool> video-editor-is-recording-audio;

0 commit comments

Comments
 (0)