Skip to content

Commit e3ad790

Browse files
authored
Gallery Grid size preference (#237)
* Gallery grid size preference * Update icon previews
1 parent d2fbfd9 commit e3ad790

File tree

24 files changed

+379
-84
lines changed

24 files changed

+379
-84
lines changed

core/localization/src/main/res/values-ru/strings.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@
1717
<string name="close">Закрыть</string>
1818
<string name="next">Далее</string>
1919

20+
<string name="two">Два</string>
21+
<string name="three">Три</string>
22+
<string name="four">Четыре</string>
23+
<string name="five">Пять</string>
24+
2025
<string name="version">Версия %1$s</string>
2126

2227
<string name="splash_status_initializing">Инициализация…</string>
@@ -199,6 +204,7 @@
199204
<string name="settings_item_clear_cache">Очистить кэш</string>
200205

201206
<string name="settings_item_lf_lang">Язык</string>
207+
<string name="settings_item_lf_gallery_grid">Размер сетки галереи</string>
202208
<string name="settings_item_lf_dynamic_colors">Системные цвета</string>
203209
<string name="settings_item_lf_system_dark_theme">Системная тема</string>
204210
<string name="settings_item_lf_dark_theme">Темная тема</string>

core/localization/src/main/res/values-tr/strings.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@
1717
<string name="close">Kapalı</string>
1818
<string name="next">Sonraki</string>
1919

20+
<string name="two">İki</string>
21+
<string name="three">Üç</string>
22+
<string name="four">Dört</string>
23+
<string name="five">Beş</string>
24+
2025
<string name="version">Versiyon %1$s</string>
2126

2227
<string name="splash_status_initializing">Başlatılıyor…</string>
@@ -199,6 +204,7 @@
199204
<string name="settings_item_clear_cache">Uygulama ve galeri önbelleğini temizleyin</string>
200205

201206
<string name="settings_item_lf_lang">Dil</string>
207+
<string name="settings_item_lf_gallery_grid">Galeri ızgara boyutu</string>
202208
<string name="settings_item_lf_dynamic_colors">Dinamik renkler</string>
203209
<string name="settings_item_lf_system_dark_theme">Sistemin koyu teması</string>
204210
<string name="settings_item_lf_dark_theme">Koyu tema</string>

core/localization/src/main/res/values-uk/strings.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@
1717
<string name="close">Закрити</string>
1818
<string name="next">Далі</string>
1919

20+
<string name="two">Два</string>
21+
<string name="three">Три</string>
22+
<string name="four">Чотири</string>
23+
<string name="five">П\'ять</string>
24+
2025
<string name="version">Версія %1$s</string>
2126

2227
<string name="splash_status_initializing">Ініціалізація…</string>
@@ -199,6 +204,7 @@
199204
<string name="settings_item_clear_cache">Очистити кеш</string>
200205

201206
<string name="settings_item_lf_lang">Мова</string>
207+
<string name="settings_item_lf_gallery_grid">Розмір сітки галереї</string>
202208
<string name="settings_item_lf_dynamic_colors">Системні кольори</string>
203209
<string name="settings_item_lf_system_dark_theme">Системна тема</string>
204210
<string name="settings_item_lf_dark_theme">Темна тема</string>

core/localization/src/main/res/values-zh/strings.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@
2222
<string name="close">关闭</string>
2323
<string name="next">下一步</string>
2424

25+
<string name="two">二</string>
26+
<string name="three">三</string>
27+
<string name="four">四</string>
28+
<string name="five">五</string>
29+
2530
<!-- 设置和配置 -->
2631
<string name="version">版本 %1$s</string>
2732

@@ -244,6 +249,7 @@
244249

245250
<!-- 外观和感觉设置 -->
246251
<string name="settings_item_lf_lang">语言</string>
252+
<string name="settings_item_lf_gallery_grid">图库网格大小</string>
247253
<string name="settings_item_lf_dynamic_colors">动态颜色</string>
248254
<string name="settings_item_lf_system_dark_theme">系统暗主题</string>
249255
<string name="settings_item_lf_dark_theme">暗主题</string>

core/localization/src/main/res/values/strings.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@
2121
<string name="close">Close</string>
2222
<string name="next">Next</string>
2323

24+
<string name="two">Two</string>
25+
<string name="three">Three</string>
26+
<string name="four">Four</string>
27+
<string name="five">Five</string>
28+
2429
<string name="version">Version %1$s</string>
2530

2631
<string name="splash_status_initializing">Initializing…</string>
@@ -219,6 +224,7 @@
219224
<string name="settings_item_clear_cache">Clear app &amp; gallery cache</string>
220225

221226
<string name="settings_item_lf_lang">Language</string>
227+
<string name="settings_item_lf_gallery_grid">Gallery grid size</string>
222228
<string name="settings_item_lf_dynamic_colors">Dynamic colors</string>
223229
<string name="settings_item_lf_system_dark_theme">System dark theme</string>
224230
<string name="settings_item_lf_dark_theme">Dark theme</string>

data/src/main/java/com/shifthackz/aisdv1/data/preference/PreferenceManagerImpl.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.shifthackz.aisdv1.core.common.extensions.shouldUseNewMediaStore
66
import com.shifthackz.aisdv1.domain.entity.ColorToken
77
import com.shifthackz.aisdv1.domain.entity.DarkThemeToken
88
import com.shifthackz.aisdv1.domain.entity.FeatureTag
9+
import com.shifthackz.aisdv1.domain.entity.Grid
910
import com.shifthackz.aisdv1.domain.entity.HuggingFaceModel
1011
import com.shifthackz.aisdv1.domain.entity.ServerSource
1112
import com.shifthackz.aisdv1.domain.entity.Settings
@@ -211,6 +212,13 @@ class PreferenceManagerImpl(
211212
.apply()
212213
.also { onPreferencesChanged() }
213214

215+
override var galleryGrid: Grid
216+
get() = preferences.getInt(KEY_GALLERY_GRID, 0).let { Grid.entries[it] }
217+
set(value) = preferences.edit()
218+
.putInt(KEY_GALLERY_GRID, value.ordinal)
219+
.apply()
220+
.also { onPreferencesChanged() }
221+
214222
override fun observe(): Flowable<Settings> = preferencesChangedSubject
215223
.toFlowable(BackpressureStrategy.LATEST)
216224
.map {
@@ -232,6 +240,7 @@ class PreferenceManagerImpl(
232240
designDarkTheme = designDarkTheme,
233241
designColorToken = designColorToken,
234242
designDarkThemeToken = designDarkThemeToken,
243+
galleryGrid = galleryGrid,
235244
)
236245
}
237246

@@ -264,5 +273,6 @@ class PreferenceManagerImpl(
264273
const val KEY_DESIGN_COLOR_TOKEN = "key_design_color_token_theme"
265274
const val KEY_DESIGN_DARK_TOKEN = "key_design_dark_color_token_theme"
266275
const val KEY_BACKGROUND_GENERATION = "key_background_generation"
276+
const val KEY_GALLERY_GRID = "key_gallery_grid"
267277
}
268278
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.shifthackz.aisdv1.domain.entity
2+
3+
enum class Grid(val size: Int) {
4+
Fixed2(2),
5+
Fixed3(3),
6+
Fixed4(4),
7+
Fixed5(5);
8+
}

domain/src/main/java/com/shifthackz/aisdv1/domain/entity/Settings.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,5 @@ data class Settings(
1818
val designDarkTheme: Boolean = false,
1919
val designColorToken: String = "",
2020
val designDarkThemeToken: String = "",
21+
val galleryGrid: Grid = Grid.Fixed2,
2122
)

domain/src/main/java/com/shifthackz/aisdv1/domain/preference/PreferenceManager.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.shifthackz.aisdv1.domain.preference
22

3+
import com.shifthackz.aisdv1.domain.entity.Grid
34
import com.shifthackz.aisdv1.domain.entity.ServerSource
45
import com.shifthackz.aisdv1.domain.entity.Settings
56
import io.reactivex.rxjava3.core.Flowable
@@ -31,6 +32,7 @@ interface PreferenceManager {
3132
var designColorToken: String
3233
var designDarkThemeToken: String
3334
var backgroundGeneration: Boolean
35+
var galleryGrid: Grid
3436

3537
fun observe(): Flowable<Settings>
3638
}

presentation/src/main/java/com/shifthackz/aisdv1/presentation/modal/ModalRenderer.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import com.shifthackz.aisdv1.presentation.core.ImageToImageIntent
2424
import com.shifthackz.aisdv1.presentation.modal.crop.CropImageModal
2525
import com.shifthackz.aisdv1.presentation.modal.embedding.EmbeddingScreen
2626
import com.shifthackz.aisdv1.presentation.modal.extras.ExtrasScreen
27+
import com.shifthackz.aisdv1.presentation.modal.grid.GridBottomSheet
2728
import com.shifthackz.aisdv1.presentation.modal.history.InputHistoryScreen
2829
import com.shifthackz.aisdv1.presentation.modal.language.LanguageBottomSheet
2930
import com.shifthackz.aisdv1.presentation.modal.tag.EditTagDialog
@@ -318,5 +319,18 @@ fun ModalRenderer(
318319
context.openAppSettings()
319320
},
320321
)
322+
323+
is Modal.GalleryGrid -> ModalBottomSheet(
324+
onDismissRequest = dismiss,
325+
shape = RectangleShape,
326+
) {
327+
GridBottomSheet(
328+
currentGrid = screenModal.grid,
329+
onSelected = {
330+
processIntent(SettingsIntent.Action.GalleryGrid.Set(it))
331+
dismiss()
332+
}
333+
)
334+
}
321335
}
322336
}

0 commit comments

Comments
 (0)