File tree Expand file tree Collapse file tree 3 files changed +10
-1
lines changed Expand file tree Collapse file tree 3 files changed +10
-1
lines changed Original file line number Diff line number Diff line change 1
1
import enum
2
+ import random
2
3
from dataclasses import dataclass , replace
3
4
from pathlib import Path
4
5
@@ -69,6 +70,7 @@ class SortingModeEnum(enum.Enum):
69
70
DATE_ADDED = "file.date_added"
70
71
FILE_NAME = "generic.filename"
71
72
PATH = "file.path"
73
+ RANDOM = "sorting.mode.random"
72
74
73
75
74
76
@dataclass
@@ -78,6 +80,7 @@ class BrowsingState:
78
80
page_index : int = 0
79
81
sorting_mode : SortingModeEnum = SortingModeEnum .DATE_ADDED
80
82
ascending : bool = True
83
+ random_seed : float = 0
81
84
82
85
query : str | None = None
83
86
@@ -133,7 +136,10 @@ def with_page_index(self, index: int) -> "BrowsingState":
133
136
return replace (self , page_index = index )
134
137
135
138
def with_sorting_mode (self , mode : SortingModeEnum ) -> "BrowsingState" :
136
- return replace (self , sorting_mode = mode )
139
+ seed = self .random_seed
140
+ if mode == SortingModeEnum .RANDOM :
141
+ seed = random .random ()
142
+ return replace (self , sorting_mode = mode , random_seed = seed )
137
143
138
144
def with_sorting_direction (self , ascending : bool ) -> "BrowsingState" :
139
145
return replace (self , ascending = ascending )
Original file line number Diff line number Diff line change @@ -921,6 +921,8 @@ def search_library(
921
921
sort_on = func .lower (Entry .filename )
922
922
case SortingModeEnum .PATH :
923
923
sort_on = func .lower (Entry .path )
924
+ case SortingModeEnum .RANDOM :
925
+ sort_on = func .sin (Entry .id * search .random_seed )
924
926
925
927
statement = statement .order_by (asc (sort_on ) if search .ascending else desc (sort_on ))
926
928
if page_size is not None :
Original file line number Diff line number Diff line change 264
264
"settings.title" : " Settings" ,
265
265
"sorting.direction.ascending" : " Ascending" ,
266
266
"sorting.direction.descending" : " Descending" ,
267
+ "sorting.mode.random" : " Random" ,
267
268
"splash.opening_library" : " Opening Library \" {library_path}\" ..." ,
268
269
"status.deleted_file_plural" : " Deleted {count} files!" ,
269
270
"status.deleted_file_singular" : " Deleted 1 file!" ,
You can’t perform that action at this time.
0 commit comments