termux-app

Форк
0
91 строка · 2.6 Кб
1
package com.termux.shared.theme;
2

3
import androidx.annotation.NonNull;
4
import androidx.annotation.Nullable;
5
import androidx.appcompat.app.AppCompatDelegate;
6

7
import com.termux.shared.logger.Logger;
8

9
/** The modes used by to decide night mode for themes. */
10
public enum NightMode {
11

12
    /** Night theme should be enabled. */
13
    TRUE("true", AppCompatDelegate.MODE_NIGHT_YES),
14

15
    /** Dark theme should be enabled. */
16
    FALSE("false", AppCompatDelegate.MODE_NIGHT_NO),
17

18
    /**
19
     * Use night or dark theme depending on system night mode.
20
     * https://developer.android.com/guide/topics/resources/providing-resources#NightQualifier
21
     */
22
    SYSTEM("system", AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);
23

24
    /** The current app wide night mode used by various libraries. Defaults to {@link #SYSTEM}. */
25
    private static NightMode APP_NIGHT_MODE;
26

27
    private static final String LOG_TAG = "NightMode";
28

29
    private final String name;
30
    private final @AppCompatDelegate.NightMode int mode;
31

32
    NightMode(final String name, int mode) {
33
        this.name = name;
34
        this.mode = mode;
35
    }
36

37
    public String getName() {
38
        return name;
39
    }
40

41
    public int getMode() {
42
        return mode;
43
    }
44

45

46
    /** Get {@link NightMode} for {@code name} if found, otherwise {@code null}. */
47
    @Nullable
48
    public static NightMode modeOf(String name) {
49
        for (NightMode v : NightMode.values()) {
50
            if (v.name.equals(name)) {
51
                return v;
52
            }
53
        }
54

55
        return null;
56
    }
57

58
    /** Get {@link NightMode} for {@code name} if found, otherwise {@code def}. */
59
    @NonNull
60
    public static NightMode modeOf(@Nullable String name, @NonNull NightMode def) {
61
        NightMode nightMode = modeOf(name);
62
        return nightMode != null ? nightMode : def;
63
    }
64

65

66
    /** Set {@link #APP_NIGHT_MODE}. */
67
    public static void setAppNightMode(@Nullable String name) {
68
        if (name == null || name.isEmpty()) {
69
            APP_NIGHT_MODE = SYSTEM;
70
        } else {
71
            NightMode nightMode = NightMode.modeOf(name);
72
            if (nightMode == null) {
73
                Logger.logError(LOG_TAG, "Invalid APP_NIGHT_MODE \"" + name + "\"");
74
                return;
75
            }
76
            APP_NIGHT_MODE = nightMode;
77
        }
78

79
        Logger.logVerbose(LOG_TAG, "Set APP_NIGHT_MODE to \"" + APP_NIGHT_MODE.getName() + "\"");
80
    }
81

82
    /** Get {@link #APP_NIGHT_MODE}. */
83
    @NonNull
84
    public static NightMode getAppNightMode() {
85
        if (APP_NIGHT_MODE == null)
86
            APP_NIGHT_MODE =  SYSTEM;
87

88
        return APP_NIGHT_MODE;
89
    }
90

91
}
92

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.