summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2020-08-02 22:00:48 +0200
committerGitHub <noreply@github.com>2020-08-02 22:00:48 +0200
commit234eaa0ff98cf51fd67514c3fe31c268c83ebd02 (patch)
tree623ce9215205d31f8035daac70c08f155db7abe0 /Source/Android/app/src/main/java
parentbf3d1fa2d84b75e3a4e5e17fde6d0072244755e9 (diff)
parentfdcc6a436b48ffa2b0b09c9f21045cd4f8945f88 (diff)
Merge pull request #7252 from Ebola16/Log
Android: Add Log Configuration to UI
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java7
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Setting.java1
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java6
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.java1
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java10
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java1
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java66
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/CheckBoxSettingViewHolder.java12
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java4
9 files changed, 106 insertions, 2 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java
index ff4521ffdb..85f632878f 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java
@@ -15,6 +15,7 @@ import org.dolphinemu.dolphinemu.utils.Log;
import org.dolphinemu.dolphinemu.utils.Rumble;
import java.lang.ref.WeakReference;
+import java.util.LinkedHashMap;
/**
* Class which contains methods that interact
@@ -370,6 +371,8 @@ public final class NativeLibrary
public static native int DefaultCPUCore();
+ public static native int GetMaxLogLevel();
+
public static native void ReloadConfig();
/**
@@ -452,6 +455,10 @@ public final class NativeLibrary
public static native void ReloadWiimoteConfig();
+ public static native LinkedHashMap<String, String> GetLogTypeNames();
+
+ public static native void ReloadLoggerConfig();
+
public static native boolean InstallWAD(String file);
public static native String FormatSize(long bytes, int decimals);
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Setting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Setting.java
index df24648ab3..6dcc49478c 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Setting.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Setting.java
@@ -39,7 +39,6 @@ public abstract class Setting
return mSection;
}
-
/**
* @return A representation of this Setting's backing value converted to a String (e.g. for serialization).
*/
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java
index 36e38dd203..b07a3d2917 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java
@@ -23,6 +23,9 @@ public class Settings
public static final String SECTION_INI_INTERFACE = "Interface";
public static final String SECTION_INI_DSP = "DSP";
+ public static final String SECTION_LOGGER_LOGS = "Logs";
+ public static final String SECTION_LOGGER_OPTIONS = "Options";
+
public static final String SECTION_GFX_SETTINGS = "Settings";
public static final String SECTION_GFX_ENHANCEMENTS = "Enhancements";
public static final String SECTION_GFX_HACKS = "Hacks";
@@ -57,6 +60,8 @@ public class Settings
configFileSectionsMap.put(SettingsFile.FILE_NAME_GFX,
Arrays.asList(SECTION_GFX_SETTINGS, SECTION_GFX_ENHANCEMENTS, SECTION_GFX_HACKS,
SECTION_STEREOSCOPY));
+ configFileSectionsMap.put(SettingsFile.FILE_NAME_LOGGER,
+ Arrays.asList(SECTION_LOGGER_LOGS, SECTION_LOGGER_OPTIONS));
configFileSectionsMap.put(SettingsFile.FILE_NAME_WIIMOTE,
Arrays.asList(SECTION_WIIMOTE + 1, SECTION_WIIMOTE + 2, SECTION_WIIMOTE + 3,
SECTION_WIIMOTE + 4));
@@ -226,6 +231,7 @@ public class Settings
// Notify the native code of the changes
NativeLibrary.ReloadConfig();
NativeLibrary.ReloadWiimoteConfig();
+ NativeLibrary.ReloadLoggerConfig();
if (modifiedSettings.contains(SettingsFile.KEY_RECURSIVE_ISO_PATHS))
{
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.java
index f96bdbb33b..aa6f9a48f4 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.java
@@ -10,6 +10,7 @@ public enum MenuTag
CONFIG_GAME_CUBE("config_gamecube"),
CONFIG_WII("config_wii"),
CONFIG_ADVANCED("config_advanced"),
+ CONFIG_LOG("config_log"),
WIIMOTE("wiimote"),
WIIMOTE_EXTENSION("wiimote_extension"),
GCPAD_TYPE("gc_pad_type"),
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java
index 7f38ed9162..e2b387a049 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java
@@ -50,6 +50,7 @@ import org.dolphinemu.dolphinemu.utils.Log;
import java.security.InvalidParameterException;
import java.util.ArrayList;
import java.util.HashSet;
+import java.util.Map;
public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolder>
implements DialogInterface.OnClickListener, SeekBar.OnSeekBarChangeListener
@@ -369,6 +370,15 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
sView.onSettingChanged(null);
}
+ public static void setAllLogTypes(String value)
+ {
+ for (Map.Entry<String, String> entry : SettingsFragmentPresenter.LOG_TYPE_NAMES.entrySet())
+ {
+ sView.putSetting(new StringSetting(entry.getKey(), Settings.SECTION_LOGGER_LOGS, value));
+ }
+ sView.onSettingChanged(null);
+ }
+
private void handleMenuTag(MenuTag menuTag, int value)
{
if (menuTag != null)
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java
index 8292058add..3c1767b45e 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java
@@ -48,6 +48,7 @@ public final class SettingsFragment extends Fragment implements SettingsFragment
titles.put(MenuTag.GCPAD_TYPE, R.string.grid_menu_gcpad_settings);
titles.put(MenuTag.GRAPHICS, R.string.grid_menu_graphics_settings);
titles.put(MenuTag.HACKS, R.string.hacks_submenu);
+ titles.put(MenuTag.CONFIG_LOG, R.string.log_submenu);
titles.put(MenuTag.DEBUG, R.string.debug_submenu);
titles.put(MenuTag.ENHANCEMENTS, R.string.enhancements_submenu);
titles.put(MenuTag.STEREOSCOPY, R.string.stereoscopy_submenu);
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
index 80718eb7b4..fd3d943def 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
@@ -31,11 +31,16 @@ import org.dolphinemu.dolphinemu.utils.Log;
import java.io.File;
import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.Map;
public final class SettingsFragmentPresenter
{
private SettingsFragmentView mView;
+ public static final LinkedHashMap<String, String> LOG_TYPE_NAMES =
+ NativeLibrary.GetLogTypeNames();
+
public static final String ARG_CONTROLLER_TYPE = "controller_type";
private MenuTag mMenuTag;
private String mGameID;
@@ -176,6 +181,10 @@ public final class SettingsFragmentPresenter
addHackSettings(sl);
break;
+ case CONFIG_LOG:
+ addLogConfigurationSettings(sl);
+ break;
+
case DEBUG:
addDebugSettings(sl);
break;
@@ -223,6 +232,7 @@ public final class SettingsFragmentPresenter
sl.add(new SubmenuSetting(null, null, R.string.gamecube_submenu, MenuTag.CONFIG_GAME_CUBE));
sl.add(new SubmenuSetting(null, null, R.string.wii_submenu, MenuTag.CONFIG_WII));
sl.add(new SubmenuSetting(null, null, R.string.advanced_submenu, MenuTag.CONFIG_ADVANCED));
+ sl.add(new SubmenuSetting(null, null, R.string.log_submenu, MenuTag.CONFIG_LOG));
sl.add(new SubmenuSetting(null, null, R.string.debug_submenu, MenuTag.DEBUG));
sl.add(new HeaderSetting(null, null, R.string.gametdb_thanks, 0));
}
@@ -729,6 +739,36 @@ public final class SettingsFragmentPresenter
fastDepth));
}
+ private void addLogConfigurationSettings(ArrayList<SettingsItem> sl)
+ {
+ SettingSection logsSection = mSettings.getSection(Settings.SECTION_LOGGER_LOGS);
+ SettingSection optionsSection = mSettings.getSection(Settings.SECTION_LOGGER_OPTIONS);
+ Setting enableLogging = optionsSection.getSetting(SettingsFile.KEY_ENABLE_LOGGING);
+ Setting logVerbosity = optionsSection.getSetting(SettingsFile.KEY_LOG_VERBOSITY);
+
+ sl.add(new CheckBoxSetting(SettingsFile.KEY_ENABLE_LOGGING, Settings.SECTION_LOGGER_OPTIONS,
+ R.string.enable_logging, R.string.enable_logging_description, false, enableLogging));
+ sl.add(new SingleChoiceSetting(SettingsFile.KEY_LOG_VERBOSITY, Settings.SECTION_LOGGER_OPTIONS,
+ R.string.log_verbosity, 0, getLogVerbosityEntries(), getLogVerbosityValues(), 1,
+ logVerbosity));
+ sl.add(new ConfirmRunnable(R.string.log_enable_all, 0, R.string.log_enable_all_confirmation, 0,
+ () -> SettingsAdapter.setAllLogTypes("True")));
+ sl.add(
+ new ConfirmRunnable(R.string.log_disable_all, 0, R.string.log_disable_all_confirmation,
+ 0,
+ () -> SettingsAdapter.setAllLogTypes("False")));
+
+ sl.add(new HeaderSetting(null, null, R.string.log_types, 0));
+ for (Map.Entry<String, String> entry : LOG_TYPE_NAMES.entrySet())
+ {
+ Setting setting = logsSection.getSetting(entry.getKey());
+ // TitleID is handled by special case in CheckBoxSettingViewHolder.
+ sl.add(
+ new CheckBoxSetting(entry.getKey(), Settings.SECTION_LOGGER_LOGS, 0, 0, false,
+ setting));
+ }
+ }
+
private void addDebugSettings(ArrayList<SettingsItem> sl)
{
SettingSection debugSection = mSettings.getSection(Settings.SECTION_DEBUG);
@@ -1599,4 +1639,30 @@ public final class SettingsFragmentPresenter
{
return DirectoryInitialization.getUserDirectory() + "/Wii/sd.raw";
}
+
+ private static int getLogVerbosityEntries()
+ {
+ // Value obtained from LOG_LEVELS in Common/Logging/Log.h
+ if (NativeLibrary.GetMaxLogLevel() == 5)
+ {
+ return R.array.logVerbosityEntriesMaxLevelDebug;
+ }
+ else
+ {
+ return R.array.logVerbosityEntriesMaxLevelInfo;
+ }
+ }
+
+ private static int getLogVerbosityValues()
+ {
+ // Value obtained from LOG_LEVELS in Common/Logging/Log.h
+ if (NativeLibrary.GetMaxLogLevel() == 5)
+ {
+ return R.array.logVerbosityValuesMaxLevelDebug;
+ }
+ else
+ {
+ return R.array.logVerbosityValuesMaxLevelInfo;
+ }
+ }
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/CheckBoxSettingViewHolder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/CheckBoxSettingViewHolder.java
index e2b5c2e42d..1e5ed6cf15 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/CheckBoxSettingViewHolder.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/CheckBoxSettingViewHolder.java
@@ -5,9 +5,11 @@ import android.widget.CheckBox;
import android.widget.TextView;
import org.dolphinemu.dolphinemu.R;
+import org.dolphinemu.dolphinemu.features.settings.model.Settings;
import org.dolphinemu.dolphinemu.features.settings.model.view.CheckBoxSetting;
import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsItem;
import org.dolphinemu.dolphinemu.features.settings.ui.SettingsAdapter;
+import org.dolphinemu.dolphinemu.features.settings.ui.SettingsFragmentPresenter;
public final class CheckBoxSettingViewHolder extends SettingViewHolder
{
@@ -36,7 +38,15 @@ public final class CheckBoxSettingViewHolder extends SettingViewHolder
{
mItem = (CheckBoxSetting) item;
- mTextSettingName.setText(item.getNameId());
+ // Special case for LogTypes retrieved via JNI since those aren't string references.
+ if (item.getNameId() == 0 && item.getSection().equals(Settings.SECTION_LOGGER_LOGS))
+ {
+ mTextSettingName.setText(SettingsFragmentPresenter.LOG_TYPE_NAMES.get(item.getKey()));
+ }
+ else
+ {
+ mTextSettingName.setText(item.getNameId());
+ }
if (item.getDescriptionId() > 0)
{
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java
index e4bc8b9bd9..8f1d1ea468 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java
@@ -36,6 +36,7 @@ public final class SettingsFile
{
public static final String FILE_NAME_DOLPHIN = "Dolphin";
public static final String FILE_NAME_GFX = "GFX";
+ public static final String FILE_NAME_LOGGER = "Logger";
public static final String FILE_NAME_GCPAD = "GCPadNew";
public static final String FILE_NAME_WIIMOTE = "WiimoteNew";
@@ -286,6 +287,9 @@ public final class SettingsFile
public static final String KEY_WIIMOTE_SCAN = "WiimoteContinuousScanning";
public static final String KEY_WIIMOTE_SPEAKER = "WiimoteEnableSpeaker";
+ public static final String KEY_ENABLE_LOGGING = "WriteToFile";
+ public static final String KEY_LOG_VERBOSITY = "Verbosity";
+
private static BiMap<String, String> sectionsMap = new BiMap<>();
static