@@ -69,6 +69,8 @@ pub struct ModificationWindow {
69
69
#[ template_child]
70
70
pub view_components_amount_input : TemplateChild < SpinButton > ,
71
71
#[ template_child]
72
+ pub view_position_input : TemplateChild < SpinButton > ,
73
+ #[ template_child]
72
74
pub view_modifier_listbox : TemplateChild < ListBox > ,
73
75
#[ template_child]
74
76
pub button_row : TemplateChild < ActionRow > ,
@@ -146,6 +148,9 @@ impl ModificationWindow {
146
148
let new_view_title: String = self . new_view_title . take ( ) ;
147
149
self . new_view_title . set ( new_view_title. clone ( ) ) ;
148
150
151
+ // Get old ID
152
+ let old_id: i32 = self . old_view_id . clone ( ) . get ( ) . expect ( "`old-view-id` invalid.." ) . to_owned ( ) ;
153
+
149
154
// If present in saved settings
150
155
if stored_views_data. len ( ) == 0 {
151
156
// no views exist
@@ -155,9 +160,7 @@ impl ModificationWindow {
155
160
for index in 0 ..stored_views_data. len ( ) {
156
161
// Split current viewconfig
157
162
let sub_items: Vec < & str > = stored_views_data[ index] . split ( ':' ) . collect ( ) ;
158
- // println!("current title: `{}`", sub_items[2]); //TEST
159
- // println!("searching for old title: `{}`", old_view_title); //TEST
160
- // println!("searching for new title: `{}`", new_view_title); //TEST
163
+ // println!("current item: `{}`", stored_views_data[index]); //TEST
161
164
162
165
// If viewconfig is for this GPU (i.e. has valid UUID) and IS NOT the current view
163
166
if ( sub_items[ 0 ] == uuid, sub_items[ 2 ] != new_view_title) == ( true , true ) {
@@ -202,22 +205,29 @@ impl ModificationWindow {
202
205
// println!("edit required"); //TEST
203
206
// println!("reorder"); //TEST
204
207
205
- // If same position & re-order
206
- new_id += 1 ; // Modify order
208
+ // If same position & re-order, we need to check direction of change
209
+ if old_id < new_id {
210
+ new_id -= 1 ; // Modify order
211
+ } else if old_id > new_id {
212
+ new_id += 1 ; // Modify order
213
+ }
207
214
208
215
// Update record
209
216
stored_views_data[ index] =
210
217
uuid. clone ( ) + ":" + & new_id. to_string ( ) + ":" + sub_items[ 2 ] ;
211
218
}
212
219
_ => {
220
+ // println!("tuple `{} {} {}`", new_id > this_id, new_id == this_id, remove);
221
+
213
222
// otherwise ignore
214
- // println!("NO edit required"); //TEST
223
+ //println!("NO edit required"); //TEST
215
224
}
216
225
}
217
226
}
218
227
}
219
228
220
229
// Update stored viewconfigs
230
+ // println!("updated views: `{:?}`", stored_views_data); //TEST
221
231
self . update_setting :: < Vec < String > > ( "viewconfigs" , stored_views_data) ;
222
232
}
223
233
}
@@ -512,7 +522,7 @@ impl ModificationWindow {
512
522
// println!("viewconfig updated.."); //TEST
513
523
514
524
// Re-order remaining views
515
- self . reorder_data ( true ) ;
525
+ self . reorder_data ( false ) ;
516
526
}
517
527
// MATCH name is the same, id is different
518
528
( true , false ) => {
@@ -532,7 +542,7 @@ impl ModificationWindow {
532
542
// println!("viewconfig updated.."); //TEST
533
543
534
544
// Re-order remaining views
535
- self . reorder_data ( true ) ;
545
+ self . reorder_data ( false ) ;
536
546
}
537
547
// MATCH name is the same, id is the same
538
548
( true , true ) => {
@@ -718,7 +728,7 @@ impl ModificationWindow {
718
728
self . update_setting :: < Vec < String > > ( "viewconfigs" , stored_views_data) ;
719
729
720
730
// Re-order remaining views
721
- self . reorder_data ( true ) ;
731
+ self . reorder_data ( false ) ;
722
732
723
733
// Get current components
724
734
let mut current_components: Vec < ViewComponent > = self . view_components_list . take ( ) ;
@@ -876,6 +886,35 @@ impl ModificationWindow {
876
886
// println!("NEW NAME INVALID..");
877
887
// }
878
888
}
889
+
890
+ /**
891
+ * Name:
892
+ * view_position_changed
893
+ *
894
+ * Description:
895
+ * Template callback for changing the position of the current view
896
+ *
897
+ * Made:
898
+ * 08/01/2023
899
+ *
900
+ * Made by:
901
+ * Deren Vural
902
+ *
903
+ * Notes:
904
+ *
905
+ */
906
+ #[ template_callback]
907
+ fn view_position_changed ( & self , spinbutton : & SpinButton ) {
908
+ // Validate amount
909
+ let new_amount: i32 = spinbutton. value ( ) as i32 ;
910
+ // println!("input view position: `{}`", new_amount); //TEST
911
+ // println!("new view position: `{}`", new_amount - 1); //TEST
912
+
913
+ // Update stored ID
914
+ self . new_view_id . set ( new_amount - 1 ) ;
915
+ }
916
+
917
+
879
918
/**
880
919
* Name:
881
920
* view_components_amount_changed
@@ -909,7 +948,7 @@ impl ModificationWindow {
909
948
self . view_modifier_listbox . remove (
910
949
& self
911
950
. view_modifier_listbox
912
- . row_at_index ( ( 1 + components. len ( ) ) as i32 )
951
+ . row_at_index ( ( 2 + components. len ( ) ) as i32 )
913
952
. unwrap ( ) ,
914
953
) ;
915
954
@@ -960,7 +999,7 @@ impl ModificationWindow {
960
999
// Add new item, needs defaults (i.e. None)
961
1000
let pos: i32 = components. len ( ) as i32 ;
962
1001
// println!("inserting in position: `{}`", pos); //TEST
963
- self . view_modifier_listbox . insert ( & row, 2 + pos) ;
1002
+ self . view_modifier_listbox . insert ( & row, 3 + pos) ;
964
1003
965
1004
// Create new item
966
1005
let new_item: ViewComponent = ViewComponent {
0 commit comments