1+ use crate :: { Callabler , CurrentTab , GuiState , MainWindow , SelectMode , Settings , SortMode , SortModel , Translations , flk, localizer_krokiet} ;
2+ use czkawka_core:: TOOLS_NUMBER ;
13use i18n_embed:: unic_langid:: LanguageIdentifier ;
24use log:: error;
35use slint:: { ComponentHandle , ModelRc , SharedString , VecModel } ;
46
5- use crate :: { Callabler , MainWindow , Settings , Translations , flk, localizer_krokiet} ;
6-
77struct Language {
88 long_name : & ' static str ,
99 short_name : & ' static str ,
10+ left_panel_size : f32 , // Currently don't know how to automatically calculate this, so each language has its own size
1011}
1112
1213const LANGUAGE_LIST : & [ Language ] = & [
1314 Language {
1415 long_name : "English" ,
1516 short_name : "en" ,
17+ left_panel_size : 120.0 ,
1618 } ,
1719 Language {
1820 long_name : "Polski (Polish)" ,
1921 short_name : "pl" ,
22+ left_panel_size : 150.0 ,
2023 } ,
2124] ;
2225
@@ -38,15 +41,16 @@ fn change_language(app: &MainWindow) {
3841 ] ;
3942
4043 let lang = app. global :: < Settings > ( ) . get_language_index ( ) ;
41- let language = LANGUAGE_LIST [ lang as usize ] . short_name ;
44+ let lang_items = & LANGUAGE_LIST [ lang as usize ] ;
4245
43- let lang_identifier = vec ! [ LanguageIdentifier :: from_bytes( language . as_bytes( ) ) . expect( "Failed to create LanguageIdentifier" ) ] ;
46+ let lang_identifier = vec ! [ LanguageIdentifier :: from_bytes( lang_items . short_name . as_bytes( ) ) . expect( "Failed to create LanguageIdentifier" ) ] ;
4447 for ( lib, localizer) in localizers {
4548 if let Err ( error) = localizer. select ( & lang_identifier) {
4649 error ! ( "Error while loadings languages for {lib} {error:?}" ) ;
4750 }
4851 }
4952
53+ app. global :: < GuiState > ( ) . set_left_panel_width ( lang_items. left_panel_size ) ;
5054 translate_items ( app) ;
5155}
5256
@@ -109,7 +113,13 @@ fn translate_items(app: &MainWindow) {
109113 translation. set_sort_reverse_text ( flk ! ( "sort_reverse" ) . into ( ) ) ;
110114 translation. set_selection_all_text ( flk ! ( "selection_all" ) . into ( ) ) ;
111115 translation. set_selection_deselect_all_text ( flk ! ( "selection_deselect_all" ) . into ( ) ) ;
116+ translation. set_selection_invert_selection_text ( flk ! ( "selection_invert_selection" ) . into ( ) ) ;
117+ translation. set_selection_the_biggest_size_text ( flk ! ( "selection_the_biggest_size" ) . into ( ) ) ;
118+ translation. set_selection_the_biggest_resolution_text ( flk ! ( "selection_the_biggest_resolution" ) . into ( ) ) ;
119+ translation. set_selection_the_smallest_size_text ( flk ! ( "selection_the_smallest_size" ) . into ( ) ) ;
112120 translation. set_selection_the_smallest_resolution_text ( flk ! ( "selection_the_smallest_resolution" ) . into ( ) ) ;
121+ translation. set_selection_newest_text ( flk ! ( "selection_newest" ) . into ( ) ) ;
122+ translation. set_selection_oldest_text ( flk ! ( "selection_oldest" ) . into ( ) ) ;
113123 translation. set_stage_current_text ( flk ! ( "stage_current" ) . into ( ) ) ;
114124 translation. set_stage_all_text ( flk ! ( "stage_all" ) . into ( ) ) ;
115125 translation. set_subsettings_text ( flk ! ( "subsettings" ) . into ( ) ) ;
@@ -192,4 +202,67 @@ fn translate_items(app: &MainWindow) {
192202 translation. set_delete_confirmation_text ( flk ! ( "delete_confirmation" ) . into ( ) ) ;
193203 translation. set_stopping_scan_text ( flk ! ( "stopping_scan" ) . into ( ) ) ;
194204 translation. set_searching_text ( flk ! ( "searching" ) . into ( ) ) ;
205+
206+ let tools_model: [ ( SharedString , CurrentTab ) ; TOOLS_NUMBER ] = [
207+ ( flk ! ( "tool_duplicate_files" ) . into ( ) , CurrentTab :: DuplicateFiles ) ,
208+ ( flk ! ( "tool_empty_folders" ) . into ( ) , CurrentTab :: EmptyFolders ) ,
209+ ( flk ! ( "tool_big_files" ) . into ( ) , CurrentTab :: BigFiles ) ,
210+ ( flk ! ( "tool_empty_files" ) . into ( ) , CurrentTab :: EmptyFiles ) ,
211+ ( flk ! ( "tool_temporary_files" ) . into ( ) , CurrentTab :: TemporaryFiles ) ,
212+ ( flk ! ( "tool_similar_images" ) . into ( ) , CurrentTab :: SimilarImages ) ,
213+ ( flk ! ( "tool_similar_videos" ) . into ( ) , CurrentTab :: SimilarVideos ) ,
214+ ( flk ! ( "tool_music_duplicates" ) . into ( ) , CurrentTab :: SimilarMusic ) ,
215+ ( flk ! ( "tool_invalid_symlinks" ) . into ( ) , CurrentTab :: InvalidSymlinks ) ,
216+ ( flk ! ( "tool_broken_files" ) . into ( ) , CurrentTab :: BrokenFiles ) ,
217+ ( flk ! ( "tool_bad_extensions" ) . into ( ) , CurrentTab :: BadExtensions ) ,
218+ ] ;
219+ let gui_state = app. global :: < GuiState > ( ) ;
220+ gui_state. set_tools_model ( ModelRc :: new ( VecModel :: from ( tools_model. to_vec ( ) ) ) ) ;
221+
222+ let sort_model: [ SortModel ; 7 ] = [
223+ SortModel {
224+ data : SortMode :: ItemName ,
225+ name : flk ! ( "sort_by_item_name" ) . into ( ) ,
226+ } ,
227+ SortModel {
228+ data : SortMode :: ParentName ,
229+ name : flk ! ( "sort_by_parent_name" ) . into ( ) ,
230+ } ,
231+ SortModel {
232+ data : SortMode :: FullName ,
233+ name : flk ! ( "sort_by_full_name" ) . into ( ) ,
234+ } ,
235+ SortModel {
236+ data : SortMode :: Size ,
237+ name : flk ! ( "sort_by_size" ) . into ( ) ,
238+ } ,
239+ SortModel {
240+ data : SortMode :: ModificationDate ,
241+ name : flk ! ( "sort_by_modification_date" ) . into ( ) ,
242+ } ,
243+ SortModel {
244+ data : SortMode :: Selection ,
245+ name : flk ! ( "sort_by_selection" ) . into ( ) ,
246+ } ,
247+ SortModel {
248+ data : SortMode :: Reverse ,
249+ name : flk ! ( "sort_reverse" ) . into ( ) ,
250+ } ,
251+ ] ;
252+
253+ gui_state. set_sort_results_list ( ModelRc :: new ( VecModel :: from ( sort_model. to_vec ( ) ) ) ) ;
254+ }
255+
256+ pub ( crate ) fn translate_select_mode ( select_mode : SelectMode ) -> SharedString {
257+ match select_mode {
258+ SelectMode :: SelectAll => flk ! ( "selection_all_text" ) . into ( ) ,
259+ SelectMode :: UnselectAll => flk ! ( "selection_deselect_all_text" ) . into ( ) ,
260+ SelectMode :: InvertSelection => flk ! ( "selection_invert_selection_text" ) . into ( ) ,
261+ SelectMode :: SelectTheBiggestSize => flk ! ( "selection_the_biggest_size_text" ) . into ( ) ,
262+ SelectMode :: SelectTheBiggestResolution => flk ! ( "selection_the_biggest_resolution_text" ) . into ( ) ,
263+ SelectMode :: SelectTheSmallestSize => flk ! ( "selection_the_smallest_size_text" ) . into ( ) ,
264+ SelectMode :: SelectTheSmallestResolution => flk ! ( "selection_the_smallest_resolution_text" ) . into ( ) ,
265+ SelectMode :: SelectNewest => flk ! ( "selection_newest_text" ) . into ( ) ,
266+ SelectMode :: SelectOldest => flk ! ( "selection_oldest_text" ) . into ( ) ,
267+ }
195268}
0 commit comments