1 package org.dolphinemu.dolphinemu.features.settings.ui;
2 
3 import androidx.annotation.NonNull;
4 
5 public enum MenuTag
6 {
7   CONFIG("config"),
8   CONFIG_GENERAL("config_general"),
9   CONFIG_INTERFACE("config_interface"),
10   CONFIG_AUDIO("config_audio"),
11   CONFIG_PATHS("config_paths"),
12   CONFIG_GAME_CUBE("config_gamecube"),
13   CONFIG_WII("config_wii"),
14   CONFIG_ADVANCED("config_advanced"),
15   CONFIG_LOG("config_log"),
16   WIIMOTE("wiimote"),
17   WIIMOTE_EXTENSION("wiimote_extension"),
18   GCPAD_TYPE("gc_pad_type"),
19   GRAPHICS("graphics"),
20   HACKS("hacks"),
21   DEBUG("debug"),
22   ENHANCEMENTS("enhancements"),
23   STEREOSCOPY("stereoscopy"),
24   GCPAD_1("gcpad", 0),
25   GCPAD_2("gcpad", 1),
26   GCPAD_3("gcpad", 2),
27   GCPAD_4("gcpad", 3),
28   WIIMOTE_1("wiimote", 4),
29   WIIMOTE_2("wiimote", 5),
30   WIIMOTE_3("wiimote", 6),
31   WIIMOTE_4("wiimote", 7),
32   WIIMOTE_EXTENSION_1("wiimote_extension", 4),
33   WIIMOTE_EXTENSION_2("wiimote_extension", 5),
34   WIIMOTE_EXTENSION_3("wiimote_extension", 6),
35   WIIMOTE_EXTENSION_4("wiimote_extension", 7);
36 
37   private String tag;
38   private int subType = -1;
39 
MenuTag(String tag)40   MenuTag(String tag)
41   {
42     this.tag = tag;
43   }
44 
MenuTag(String tag, int subtype)45   MenuTag(String tag, int subtype)
46   {
47     this.tag = tag;
48     this.subType = subtype;
49   }
50 
51   @NonNull
52   @Override
toString()53   public String toString()
54   {
55     if (subType != -1)
56     {
57       return tag + subType;
58     }
59 
60     return tag;
61   }
62 
getTag()63   public String getTag()
64   {
65     return tag;
66   }
67 
getSubType()68   public int getSubType()
69   {
70     return subType;
71   }
72 
isGCPadMenu()73   public boolean isGCPadMenu()
74   {
75     return this == GCPAD_1 || this == GCPAD_2 || this == GCPAD_3 || this == GCPAD_4;
76   }
77 
isWiimoteMenu()78   public boolean isWiimoteMenu()
79   {
80     return this == WIIMOTE_1 || this == WIIMOTE_2 || this == WIIMOTE_3 || this == WIIMOTE_4;
81   }
82 
isWiimoteExtensionMenu()83   public boolean isWiimoteExtensionMenu()
84   {
85     return this == WIIMOTE_EXTENSION_1 || this == WIIMOTE_EXTENSION_2
86             || this == WIIMOTE_EXTENSION_3 || this == WIIMOTE_EXTENSION_4;
87   }
88 
getGCPadMenuTag(int subtype)89   public static MenuTag getGCPadMenuTag(int subtype)
90   {
91     return getMenuTag("gcpad", subtype);
92   }
93 
getWiimoteMenuTag(int subtype)94   public static MenuTag getWiimoteMenuTag(int subtype)
95   {
96     return getMenuTag("wiimote", subtype);
97   }
98 
getWiimoteExtensionMenuTag(int subtype)99   public static MenuTag getWiimoteExtensionMenuTag(int subtype)
100   {
101     return getMenuTag("wiimote_extension", subtype);
102   }
103 
getMenuTag(String tag, int subtype)104   private static MenuTag getMenuTag(String tag, int subtype)
105   {
106     for (MenuTag menuTag : MenuTag.values())
107     {
108       if (menuTag.tag.equals(tag) && menuTag.subType == subtype) return menuTag;
109     }
110 
111     throw new IllegalArgumentException("You are asking for a menu that is not available or " +
112             "passing a wrong subtype");
113   }
114 }
115