mirror of
https://gitee.com/zhangsken/AndroidIDE.git
synced 2026-10-16 07:49:44 +08:00
Fix #132: Added a preference to disable visible password input flag
This commit is contained in:
Generated
+1
@@ -30,6 +30,7 @@
|
||||
<entry key="..\:/Projects/AndroidStudioProjects/AndroidIDE/app/src/main/res/drawable/ic_github.xml" value="0.21837606837606838" />
|
||||
<entry key="..\:/Projects/AndroidStudioProjects/AndroidIDE/app/src/main/res/drawable/ic_linear_layout.xml" value="0.175" />
|
||||
<entry key="..\:/Projects/AndroidStudioProjects/AndroidIDE/app/src/main/res/drawable/ic_min_sdk.xml" value="0.147" />
|
||||
<entry key="..\:/Projects/AndroidStudioProjects/AndroidIDE/app/src/main/res/drawable/ic_password_input.xml" value="0.147" />
|
||||
<entry key="..\:/Projects/AndroidStudioProjects/AndroidIDE/app/src/main/res/drawable/ic_pick_color.xml" value="0.147" />
|
||||
<entry key="..\:/Projects/AndroidStudioProjects/AndroidIDE/app/src/main/res/drawable/ic_relative_layout.xml" value="0.175" />
|
||||
<entry key="..\:/Projects/AndroidStudioProjects/AndroidIDE/app/src/main/res/drawable/ic_save.xml" value="0.26205128205128203" />
|
||||
|
||||
@@ -20,6 +20,7 @@ package com.itsaky.androidide.fragments.preferences;
|
||||
import static com.itsaky.androidide.managers.PreferenceManager.KEY_EDITOR_AUTO_SAVE;
|
||||
import static com.itsaky.androidide.managers.PreferenceManager.KEY_EDITOR_DRAW_HEX;
|
||||
import static com.itsaky.androidide.managers.PreferenceManager.KEY_EDITOR_FLAG_LINE_BREAK;
|
||||
import static com.itsaky.androidide.managers.PreferenceManager.KEY_EDITOR_FLAG_PASSWORD;
|
||||
import static com.itsaky.androidide.managers.PreferenceManager.KEY_EDITOR_FLAG_WS_EMPTY_LINE;
|
||||
import static com.itsaky.androidide.managers.PreferenceManager.KEY_EDITOR_FLAG_WS_INNER;
|
||||
import static com.itsaky.androidide.managers.PreferenceManager.KEY_EDITOR_FLAG_WS_LEADING;
|
||||
@@ -35,10 +36,12 @@ import static com.itsaky.androidide.models.PrefBasedJavaServerSettings.KEY_JAVA_
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceCategory;
|
||||
import androidx.preference.SwitchPreference;
|
||||
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
import com.itsaky.androidide.R;
|
||||
import com.itsaky.androidide.app.StudioApp;
|
||||
@@ -71,6 +74,7 @@ public class EditorPreferences extends BasePreferenceFragment
|
||||
final var usePopupActions = new SwitchPreference(getContext());
|
||||
final var horizontalPopup = new SwitchPreference(getContext());
|
||||
final var useGoogleCodeStyle = new SwitchPreference(getContext());
|
||||
final var visiblePasswordFlag = new SwitchPreference(getContext());
|
||||
|
||||
final var javaMatchLower = new SwitchPreference(getContext());
|
||||
|
||||
@@ -127,9 +131,15 @@ public class EditorPreferences extends BasePreferenceFragment
|
||||
useGoogleCodeStyle.setTitle(getString(R.string.idepref_java_useGoogleStyle_title));
|
||||
useGoogleCodeStyle.setSummary(getString(R.string.idepref_java_useGoogleStyle_summary));
|
||||
|
||||
visiblePasswordFlag.setIcon(R.drawable.ic_password_input);
|
||||
visiblePasswordFlag.setKey(KEY_EDITOR_FLAG_PASSWORD);
|
||||
visiblePasswordFlag.setTitle(getString(R.string.idepref_visiblePassword_title));
|
||||
visiblePasswordFlag.setSummary(getString(R.string.idepref_visiblePassword_summary));
|
||||
|
||||
commonCategory.setTitle(getString(R.string.idepref_editor_category_common));
|
||||
commonCategory.addPreference(fontSize);
|
||||
commonCategory.addPreference(fontLigatures);
|
||||
commonCategory.addPreference(visiblePasswordFlag);
|
||||
commonCategory.addPreference(usePopupActions);
|
||||
commonCategory.addPreference(horizontalPopup);
|
||||
commonCategory.addPreference(nonPrintable);
|
||||
@@ -153,6 +163,7 @@ public class EditorPreferences extends BasePreferenceFragment
|
||||
autoSave.setOnPreferenceChangeListener(this);
|
||||
javaMatchLower.setOnPreferenceChangeListener(this);
|
||||
useGoogleCodeStyle.setOnPreferenceChangeListener(this);
|
||||
visiblePasswordFlag.setOnPreferenceChangeListener(this);
|
||||
|
||||
fontLigatures.setChecked(getPrefManager().getBoolean(KEY_EDITOR_FONT_LIGATURES, true));
|
||||
usePopupActions.setChecked(getPrefManager().getBoolean(KEY_EDITOR_USE_POPUP, false));
|
||||
@@ -162,6 +173,7 @@ public class EditorPreferences extends BasePreferenceFragment
|
||||
javaMatchLower.setChecked(getPrefManager().getBoolean(KEY_JAVA_PREF_MATCH_LOWER, false));
|
||||
useGoogleCodeStyle.setChecked(
|
||||
getPrefManager().getBoolean(KEY_JAVA_PREF_GOOGLE_CODE_STYLE, false));
|
||||
visiblePasswordFlag.setChecked(getPrefManager().getBoolean(KEY_EDITOR_FLAG_PASSWORD, true));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -169,6 +181,9 @@ public class EditorPreferences extends BasePreferenceFragment
|
||||
final boolean value = (boolean) newValue;
|
||||
|
||||
switch (preference.getKey()) {
|
||||
case KEY_EDITOR_FLAG_PASSWORD:
|
||||
ConstantsBridge.EDITOR_PREF_VISIBLE_PASSWORD_CHANGED = true;
|
||||
break;
|
||||
case KEY_EDITOR_DRAW_HEX:
|
||||
ConstantsBridge.EDITOR_PREF_DRAW_HEX_CHANGED = true;
|
||||
break;
|
||||
|
||||
@@ -291,6 +291,8 @@ public class CodeEditorView extends FrameLayout {
|
||||
boolean ligaturesChanged = isFirstCreate || ConstantsBridge.EDITOR_PREF_LIGATURES_CHANGED;
|
||||
boolean flagsChanged = isFirstCreate || ConstantsBridge.EDITOR_PREF_FLAGS_CHANGED;
|
||||
boolean drawHexChanged = isFirstCreate || ConstantsBridge.EDITOR_PREF_DRAW_HEX_CHANGED;
|
||||
boolean inputFlagsChanged =
|
||||
isFirstCreate || ConstantsBridge.EDITOR_PREF_VISIBLE_PASSWORD_CHANGED;
|
||||
final PreferenceManager prefs = StudioApp.getInstance().getPrefManager();
|
||||
|
||||
if (sizeChanged) {
|
||||
@@ -335,6 +337,11 @@ public class CodeEditorView extends FrameLayout {
|
||||
ConstantsBridge.EDITOR_PREF_FLAGS_CHANGED = false;
|
||||
}
|
||||
|
||||
if (inputFlagsChanged) {
|
||||
binding.editor.setInputType(IDEEditor.createInputFlags());
|
||||
ConstantsBridge.EDITOR_PREF_VISIBLE_PASSWORD_CHANGED = false;
|
||||
}
|
||||
|
||||
if (drawHexChanged) {
|
||||
// TODO Do something about this
|
||||
// Maybe use spans...
|
||||
|
||||
@@ -106,12 +106,21 @@ public class IDEEditor extends CodeEditor {
|
||||
subscribeEvent(
|
||||
ContentChangeEvent.class, (event, unsubscribe) -> handleContentChange(event));
|
||||
|
||||
// default editor input type + no suggestions flag
|
||||
setInputType(
|
||||
setInputType(createInputFlags());
|
||||
}
|
||||
|
||||
public static int createInputFlags() {
|
||||
var flags =
|
||||
EditorInfo.TYPE_CLASS_TEXT
|
||||
| EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE
|
||||
| EditorInfo.TYPE_TEXT_FLAG_NO_SUGGESTIONS
|
||||
| EditorInfo.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
|
||||
| EditorInfo.TYPE_TEXT_FLAG_NO_SUGGESTIONS;
|
||||
if (StudioApp.getInstance()
|
||||
.getPrefManager()
|
||||
.getBoolean(PreferenceManager.KEY_EDITOR_FLAG_PASSWORD, true)) {
|
||||
flags |= EditorInfo.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD;
|
||||
}
|
||||
|
||||
return flags;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
<!-- drawable/form_textbox_password.xml -->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:height="24dp"
|
||||
android:width="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path android:fillColor="#fff" android:pathData="M17,7H22V17H17V19A1,1 0 0,0 18,20H20V22H17.5C16.95,22 16,21.55 16,21C16,21.55 15.05,22 14.5,22H12V20H14A1,1 0 0,0 15,19V5A1,1 0 0,0 14,4H12V2H14.5C15.05,2 16,2.45 16,3C16,2.45 16.95,2 17.5,2H20V4H18A1,1 0 0,0 17,5V7M2,7H13V9H4V15H13V17H2V7M20,15V9H17V15H20M8.5,12A1.5,1.5 0 0,0 7,10.5A1.5,1.5 0 0,0 5.5,12A1.5,1.5 0 0,0 7,13.5A1.5,1.5 0 0,0 8.5,12M13,10.89C12.39,10.33 11.44,10.38 10.88,11C10.32,11.6 10.37,12.55 11,13.11C11.55,13.63 12.43,13.63 13,13.11V10.89Z" />
|
||||
</vector>
|
||||
@@ -347,6 +347,8 @@
|
||||
<string name="title_format_code">Format code</string>
|
||||
<string name="idepref_java_useGoogleStyle_title">Use Google Java Style code formatting</string>
|
||||
<string name="idepref_java_useGoogleStyle_summary">Use Google Java Style code formatting configuration for formatting Java source code.</string>
|
||||
<string name="idepref_visiblePassword_title">Visible password flag</string>
|
||||
<string name="idepref_visiblePassword_summary">Use for visible password input type flag in editor. This makes sure that no suggestions are proposed by soft keyboard.</string>
|
||||
</resources>
|
||||
|
||||
|
||||
|
||||
@@ -23,16 +23,12 @@ import android.content.SharedPreferences;
|
||||
|
||||
public class PreferenceManager {
|
||||
|
||||
private final SharedPreferences prefs;
|
||||
|
||||
public static final String KEY_FRAMEWORK_DOWNLOADED = "framework_downloaded";
|
||||
public static final String KEY_FRAMEWORK_INSTALLED = "framework_installed";
|
||||
public static final String KEY_IS_FIRST_PROJECT_BUILD = "project_isFirstBuild";
|
||||
|
||||
public static final String KEY_OPEN_PROJECTS = "idepref_general_autoOpenProjects";
|
||||
public static final String KEY_CONFIRM_PROJECT_OPEN = "idepref_general_confirmProjectOpen";
|
||||
public static final String KEY_TERMINAL_USE_SYSTEM_SHELL = "idepref_general_terminalShell";
|
||||
|
||||
public static final String KEY_EDITOR_FLAG_WS_LEADING = "idepref_editor_wsLeading";
|
||||
public static final String KEY_EDITOR_FLAG_WS_TRAILING = "idepref_editor_wsTrailing";
|
||||
public static final String KEY_EDITOR_FLAG_WS_INNER = "idepref_editor_wsInner";
|
||||
@@ -46,15 +42,15 @@ public class PreferenceManager {
|
||||
public static final String KEY_EDITOR_FONT_LIGATURES = "idepref_editor_fontLigatures";
|
||||
public static final String KEY_EDITOR_USE_POPUP = "idepref_editor_usePopup";
|
||||
public static final String KEY_EDITOR_HORIZONTAL_POPUP = "idepref_editor_horizontalPopup";
|
||||
|
||||
public static final String KEY_EDITOR_FLAG_PASSWORD = "idepref_editor_flagPassword";
|
||||
public static final String KEY_GRADLE_CMD_STACK_TRACE = "idepref_gradleCmd_stacktrace";
|
||||
public static final String KEY_GRADLE_CMD_DEBUG = "idepref_gradleCmd_debug";
|
||||
public static final String KEY_GRADLE_CMD_SCAN = "idepref_gradleCmd_scan";
|
||||
public static final String KEY_GRADLE_CMD_INFO = "idepref_gradleCmd_info";
|
||||
public static final String KEY_GRADLE_CMD_WARNING_MODE = "idepref_gradleCmd_warningMode";
|
||||
|
||||
public static final String KEY_LAST_OPENED_PROJECT = "ide_last_project";
|
||||
public static final String NO_OPENED_PROJECT = "<NO_OPENED_PROJECT>";
|
||||
private final SharedPreferences prefs;
|
||||
|
||||
@SuppressLint("CommitPrefEdits")
|
||||
public PreferenceManager(Context ctx) {
|
||||
@@ -113,14 +109,14 @@ public class PreferenceManager {
|
||||
return prefs.getString(key, defaultValue);
|
||||
}
|
||||
|
||||
public PreferenceManager setOpenedProject(String root) {
|
||||
return putString(KEY_LAST_OPENED_PROJECT, root);
|
||||
}
|
||||
|
||||
public String getOpenedProject() {
|
||||
return getString(KEY_LAST_OPENED_PROJECT, NO_OPENED_PROJECT);
|
||||
}
|
||||
|
||||
public PreferenceManager setOpenedProject(String root) {
|
||||
return putString(KEY_LAST_OPENED_PROJECT, root);
|
||||
}
|
||||
|
||||
public boolean wasProjectOpened() {
|
||||
return !getOpenedProject().equals(NO_OPENED_PROJECT);
|
||||
}
|
||||
@@ -141,38 +137,38 @@ public class PreferenceManager {
|
||||
return getBoolean(KEY_GRADLE_CMD_INFO, true);
|
||||
}
|
||||
|
||||
public boolean isGradleDebugEnabled() {
|
||||
return getBoolean(KEY_GRADLE_CMD_DEBUG);
|
||||
}
|
||||
|
||||
public boolean isGradleScanEnabled() {
|
||||
return getBoolean(KEY_GRADLE_CMD_SCAN);
|
||||
}
|
||||
|
||||
public boolean isGradleWarningEnabled() {
|
||||
return getBoolean(KEY_GRADLE_CMD_WARNING_MODE);
|
||||
}
|
||||
|
||||
public PreferenceManager setGradleStacktraceEnabled(boolean enabled) {
|
||||
return putBoolean(KEY_GRADLE_CMD_STACK_TRACE, enabled);
|
||||
}
|
||||
|
||||
public PreferenceManager setGradleInfoEnabled(boolean enabled) {
|
||||
return putBoolean(KEY_GRADLE_CMD_INFO, enabled);
|
||||
}
|
||||
|
||||
public boolean isGradleDebugEnabled() {
|
||||
return getBoolean(KEY_GRADLE_CMD_DEBUG);
|
||||
}
|
||||
|
||||
public PreferenceManager setGradleDebugEnabled(boolean enabled) {
|
||||
return putBoolean(KEY_GRADLE_CMD_DEBUG, enabled);
|
||||
}
|
||||
|
||||
public boolean isGradleScanEnabled() {
|
||||
return getBoolean(KEY_GRADLE_CMD_SCAN);
|
||||
}
|
||||
|
||||
public PreferenceManager setGradleScanEnabled(boolean enabled) {
|
||||
return putBoolean(KEY_GRADLE_CMD_SCAN, enabled);
|
||||
}
|
||||
|
||||
public boolean isGradleWarningEnabled() {
|
||||
return getBoolean(KEY_GRADLE_CMD_WARNING_MODE);
|
||||
}
|
||||
|
||||
public PreferenceManager setGradleWarningEnabled(boolean enabled) {
|
||||
return putBoolean(KEY_GRADLE_CMD_WARNING_MODE, enabled);
|
||||
}
|
||||
|
||||
public PreferenceManager setGradleStacktraceEnabled(boolean enabled) {
|
||||
return putBoolean(KEY_GRADLE_CMD_STACK_TRACE, enabled);
|
||||
}
|
||||
|
||||
public int getEditorTabSize() {
|
||||
return getInt(KEY_EDITOR_TAB_SIZE, 4);
|
||||
}
|
||||
|
||||
@@ -19,17 +19,6 @@ package com.itsaky.androidide.models;
|
||||
|
||||
public class ConstantsBridge {
|
||||
|
||||
public static boolean EDITOR_PREF_SIZE_CHANGED = false;
|
||||
public static boolean EDITOR_PREF_LIGATURES_CHANGED = false;
|
||||
public static boolean EDITOR_PREF_FLAGS_CHANGED = false;
|
||||
public static boolean EDITOR_PREF_DRAW_HEX_CHANGED = false;
|
||||
public static boolean CLASS_LOAD_SUCCESS = true;
|
||||
|
||||
public static boolean SPLASH_TO_MAIN = false;
|
||||
|
||||
// Always compared in lowercase
|
||||
public static final String CUSTOM_COMMENT_WARNING_TOKEN = "#warn ";
|
||||
|
||||
public static final String VIRTUAL_KEYS =
|
||||
"["
|
||||
+ "\n ["
|
||||
@@ -57,4 +46,11 @@ public class ConstantsBridge {
|
||||
+ "\n \"PGDN\""
|
||||
+ "\n ]"
|
||||
+ "\n]";
|
||||
public static boolean EDITOR_PREF_SIZE_CHANGED = false;
|
||||
public static boolean EDITOR_PREF_LIGATURES_CHANGED = false;
|
||||
public static boolean EDITOR_PREF_FLAGS_CHANGED = false;
|
||||
public static boolean EDITOR_PREF_DRAW_HEX_CHANGED = false;
|
||||
public static boolean EDITOR_PREF_VISIBLE_PASSWORD_CHANGED = false;
|
||||
public static boolean CLASS_LOAD_SUCCESS = true;
|
||||
public static boolean SPLASH_TO_MAIN = false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user