mirror of
https://github.com/beemdevelopment/Aegis.git
synced 2025-05-03 03:44:52 +00:00
parent
29ea2df696
commit
eae31ef94b
70 changed files with 818 additions and 760 deletions
|
@ -153,7 +153,7 @@ dependencies {
|
|||
implementation "com.github.topjohnwu.libsu:core:${libsuVersion}"
|
||||
implementation "com.github.topjohnwu.libsu:io:${libsuVersion}"
|
||||
implementation "com.google.guava:guava:${guavaVersion}-android"
|
||||
implementation 'com.google.android.material:material:1.2.1'
|
||||
implementation 'com.google.android.material:material:1.3.0-rc01'
|
||||
implementation 'com.google.protobuf:protobuf-javalite:3.14.0'
|
||||
implementation 'com.google.zxing:core:3.4.1'
|
||||
implementation "com.mikepenz:iconics-core:3.2.5"
|
||||
|
|
|
@ -92,7 +92,7 @@ public class OverallTest extends AegisTest {
|
|||
onView(withId(R.id.rvKeyProfiles)).perform(RecyclerViewActions.actionOnItemAtPosition(1, longClick()));
|
||||
onView(withId(R.id.action_edit)).perform(click());
|
||||
onView(withId(R.id.text_name)).perform(clearText(), typeText("Bob"), closeSoftKeyboard());
|
||||
onView(withId(R.id.spinner_group)).perform(click());
|
||||
onView(withId(R.id.dropdown_group)).perform(click());
|
||||
onData(anything()).atPosition(1).perform(click());
|
||||
onView(withId(R.id.text_input)).perform(typeText(_groupName), closeSoftKeyboard());
|
||||
onView(withId(android.R.id.button1)).perform(click());
|
||||
|
@ -168,15 +168,15 @@ public class OverallTest extends AegisTest {
|
|||
if (entry.getInfo().getClass() != TotpInfo.class) {
|
||||
int i = entry.getInfo() instanceof HotpInfo ? 1 : 2;
|
||||
try {
|
||||
onView(withId(R.id.spinner_type)).perform(click());
|
||||
onView(withId(R.id.dropdown_type)).perform(click());
|
||||
onData(anything()).atPosition(i).perform(click());
|
||||
} catch (AmbiguousViewMatcherException e) {
|
||||
// for some reason, clicking twice is sometimes necessary, otherwise the test fails on the next line
|
||||
onView(withId(R.id.spinner_type)).perform(click());
|
||||
onView(withId(R.id.dropdown_type)).perform(click());
|
||||
onData(anything()).atPosition(i).perform(click());
|
||||
}
|
||||
if (entry.getInfo() instanceof HotpInfo) {
|
||||
onView(withId(R.id.text_counter)).perform(typeText("0"), closeSoftKeyboard());
|
||||
onView(withId(R.id.text_period_counter)).perform(typeText("0"), closeSoftKeyboard());
|
||||
}
|
||||
if (entry.getInfo() instanceof SteamInfo) {
|
||||
onView(withId(R.id.text_digits)).perform(clearText(), typeText("5"), closeSoftKeyboard());
|
||||
|
|
|
@ -22,8 +22,7 @@
|
|||
android:icon="@mipmap/${iconName}"
|
||||
android:label="Aegis"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme.NoActionBar"
|
||||
tools:ignore="GoogleAppIndexingWarning"
|
||||
android:theme="@style/Theme.Aegis.Launch"
|
||||
tools:replace="android:theme">
|
||||
<activity android:name=".ui.TransferEntriesActivity"
|
||||
android:label="@string/title_activity_transfer" />
|
||||
|
@ -60,11 +59,9 @@
|
|||
android:label="@string/title_activity_edit_entry" />
|
||||
<activity
|
||||
android:name=".ui.IntroActivity"
|
||||
android:theme="@style/AppTheme.NoActionBar"
|
||||
android:screenOrientation="portrait" />
|
||||
<activity
|
||||
android:name=".ui.AuthActivity"
|
||||
android:theme="@style/AppTheme.NoActionBar" />
|
||||
android:name=".ui.AuthActivity" />
|
||||
<activity
|
||||
android:name=".ui.PreferencesActivity"
|
||||
android:label="@string/title_activity_preferences" />
|
||||
|
|
|
@ -10,20 +10,20 @@ public class ThemeMap {
|
|||
}
|
||||
|
||||
public static final Map<Theme, Integer> DEFAULT = ImmutableMap.of(
|
||||
Theme.LIGHT, R.style.AppTheme,
|
||||
Theme.DARK, R.style.AppTheme_Dark,
|
||||
Theme.AMOLED, R.style.AppTheme_TrueBlack
|
||||
Theme.LIGHT, R.style.Theme_Aegis_Light_Default,
|
||||
Theme.DARK, R.style.Theme_Aegis_Dark_Default,
|
||||
Theme.AMOLED, R.style.Theme_Aegis_TrueDark_Default
|
||||
);
|
||||
|
||||
public static final Map<Theme, Integer> NO_ACTION_BAR = ImmutableMap.of(
|
||||
Theme.LIGHT, R.style.AppTheme_Light_NoActionBar,
|
||||
Theme.DARK, R.style.AppTheme_Dark_NoActionBar,
|
||||
Theme.AMOLED, R.style.AppTheme_TrueBlack_NoActionBar
|
||||
Theme.LIGHT, R.style.Theme_Aegis_Light_NoActionBar,
|
||||
Theme.DARK, R.style.Theme_Aegis_Dark_NoActionBar,
|
||||
Theme.AMOLED, R.style.Theme_Aegis_TrueDark_NoActionBar
|
||||
);
|
||||
|
||||
public static final Map<Theme, Integer> FULLSCREEN = ImmutableMap.of(
|
||||
Theme.LIGHT, R.style.AppTheme_Fullscreen,
|
||||
Theme.DARK, R.style.AppTheme_Fullscreen_Dark,
|
||||
Theme.AMOLED, R.style.AppTheme_Fullscreen_TrueBlack
|
||||
Theme.LIGHT, R.style.Theme_Aegis_Light_Fullscreen,
|
||||
Theme.DARK, R.style.Theme_Aegis_Dark_Fullscreen,
|
||||
Theme.AMOLED, R.style.Theme_Aegis_TrueDark_Fullscreen
|
||||
);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
package com.beemdevelopment.aegis.helpers;
|
||||
|
||||
import android.content.Context;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.AutoCompleteTextView;
|
||||
|
||||
import androidx.annotation.ArrayRes;
|
||||
|
||||
import com.beemdevelopment.aegis.R;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class DropdownHelper {
|
||||
private DropdownHelper() {
|
||||
|
||||
}
|
||||
|
||||
public static void fillDropdown(Context context, AutoCompleteTextView dropdown, @ArrayRes int textArrayResId) {
|
||||
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(context, textArrayResId, R.layout.dropdown_list_item);
|
||||
dropdown.setAdapter(adapter);
|
||||
}
|
||||
|
||||
public static <T> void fillDropdown(Context context, AutoCompleteTextView dropdown, List<T> items) {
|
||||
ArrayAdapter<T> adapter = new ArrayAdapter<>(context, R.layout.dropdown_list_item, items);
|
||||
dropdown.setAdapter(adapter);
|
||||
}
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
package com.beemdevelopment.aegis.helpers;
|
||||
|
||||
import android.content.Context;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.Spinner;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import androidx.annotation.ArrayRes;
|
||||
|
||||
public class SpinnerHelper {
|
||||
private SpinnerHelper() {
|
||||
|
||||
}
|
||||
|
||||
public static void fillSpinner(Context context, Spinner spinner, @ArrayRes int textArrayResId) {
|
||||
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(context, textArrayResId, android.R.layout.simple_spinner_item);
|
||||
initSpinner(spinner, adapter);
|
||||
}
|
||||
|
||||
public static <T> void fillSpinner(Context context, Spinner spinner, List<T> items) {
|
||||
ArrayAdapter adapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, items);
|
||||
initSpinner(spinner, adapter);
|
||||
}
|
||||
|
||||
private static void initSpinner(Spinner spinner, ArrayAdapter adapter) {
|
||||
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
spinner.setAdapter(adapter);
|
||||
spinner.invalidate();
|
||||
}
|
||||
}
|
|
@ -42,6 +42,7 @@ public class AboutActivity extends AegisActivity {
|
|||
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_about);
|
||||
setSupportActionBar(findViewById(R.id.toolbar));
|
||||
|
||||
if (getSupportActionBar() != null) {
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
|
|
@ -38,6 +38,7 @@ import com.beemdevelopment.aegis.ui.tasks.KeyDerivationTask;
|
|||
import com.beemdevelopment.aegis.vault.slots.PasswordSlot;
|
||||
import com.beemdevelopment.aegis.vault.slots.Slot;
|
||||
import com.beemdevelopment.aegis.vault.slots.SlotException;
|
||||
import com.google.android.material.textfield.TextInputEditText;
|
||||
import com.google.android.material.textfield.TextInputLayout;
|
||||
import com.nulabinc.zxcvbn.Strength;
|
||||
import com.nulabinc.zxcvbn.Zxcvbn;
|
||||
|
@ -190,11 +191,12 @@ public class Dialogs {
|
|||
|
||||
private static void showTextInputDialog(Context context, @StringRes int titleId, @StringRes int messageId, @StringRes int hintId, TextInputListener listener, DialogInterface.OnDismissListener dismissListener, boolean isSecret) {
|
||||
View view = LayoutInflater.from(context).inflate(R.layout.dialog_text_input, null);
|
||||
EditText input = view.findViewById(R.id.text_input);
|
||||
TextInputEditText input = view.findViewById(R.id.text_input);
|
||||
TextInputLayout inputLayout = view.findViewById(R.id.text_input_layout);
|
||||
if (isSecret) {
|
||||
input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
|
||||
}
|
||||
input.setHint(hintId);
|
||||
inputLayout.setHint(hintId);
|
||||
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(context)
|
||||
.setTitle(titleId)
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package com.beemdevelopment.aegis.ui;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Bitmap;
|
||||
|
@ -17,13 +16,10 @@ import android.view.animation.AccelerateInterpolator;
|
|||
import android.view.animation.AlphaAnimation;
|
||||
import android.view.animation.Animation;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.EditText;
|
||||
import android.widget.AutoCompleteTextView;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.TableRow;
|
||||
|
||||
import androidx.annotation.ArrayRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
|
@ -35,7 +31,7 @@ import com.beemdevelopment.aegis.R;
|
|||
import com.beemdevelopment.aegis.encoding.Base32;
|
||||
import com.beemdevelopment.aegis.encoding.EncodingException;
|
||||
import com.beemdevelopment.aegis.helpers.EditTextHelper;
|
||||
import com.beemdevelopment.aegis.helpers.SpinnerHelper;
|
||||
import com.beemdevelopment.aegis.helpers.DropdownHelper;
|
||||
import com.beemdevelopment.aegis.helpers.TextDrawableHelper;
|
||||
import com.beemdevelopment.aegis.otp.GoogleAuthInfo;
|
||||
import com.beemdevelopment.aegis.otp.HotpInfo;
|
||||
|
@ -50,6 +46,8 @@ import com.bumptech.glide.Glide;
|
|||
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
||||
import com.bumptech.glide.request.target.CustomTarget;
|
||||
import com.bumptech.glide.request.transition.Transition;
|
||||
import com.google.android.material.textfield.TextInputEditText;
|
||||
import com.google.android.material.textfield.TextInputLayout;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.util.ArrayList;
|
||||
|
@ -73,20 +71,17 @@ public class EditEntryActivity extends AegisActivity {
|
|||
private CircleImageView _iconView;
|
||||
private ImageView _saveImageButton;
|
||||
|
||||
private EditText _textName;
|
||||
private EditText _textIssuer;
|
||||
private EditText _textPeriod;
|
||||
private EditText _textCounter;
|
||||
private EditText _textDigits;
|
||||
private EditText _textSecret;
|
||||
private TextInputEditText _textName;
|
||||
private TextInputEditText _textIssuer;
|
||||
private TextInputEditText _textPeriodCounter;
|
||||
private TextInputLayout _textPeriodCounterLayout;
|
||||
private TextInputEditText _textDigits;
|
||||
private TextInputEditText _textSecret;
|
||||
|
||||
private TableRow _rowPeriod;
|
||||
private TableRow _rowCounter;
|
||||
|
||||
private Spinner _spinnerType;
|
||||
private Spinner _spinnerAlgo;
|
||||
private Spinner _spinnerGroup;
|
||||
private List<String> _spinnerGroupList = new ArrayList<>();
|
||||
private AutoCompleteTextView _dropdownType;
|
||||
private AutoCompleteTextView _dropdownAlgo;
|
||||
private AutoCompleteTextView _dropdownGroup;
|
||||
private List<String> _dropdownGroupList = new ArrayList<>();
|
||||
|
||||
private KropView _kropView;
|
||||
|
||||
|
@ -99,6 +94,7 @@ public class EditEntryActivity extends AegisActivity {
|
|||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_edit_entry);
|
||||
setSupportActionBar(findViewById(R.id.toolbar));
|
||||
|
||||
_vault = getApp().getVaultManager();
|
||||
_groups = _vault.getGroups();
|
||||
|
@ -126,19 +122,17 @@ public class EditEntryActivity extends AegisActivity {
|
|||
_saveImageButton = findViewById(R.id.iv_saveImage);
|
||||
_textName = findViewById(R.id.text_name);
|
||||
_textIssuer = findViewById(R.id.text_issuer);
|
||||
_textPeriod = findViewById(R.id.text_period);
|
||||
_textPeriodCounter = findViewById(R.id.text_period_counter);
|
||||
_textPeriodCounterLayout = findViewById(R.id.text_period_counter_layout);
|
||||
_textDigits = findViewById(R.id.text_digits);
|
||||
_rowPeriod = findViewById(R.id.row_period);
|
||||
_textCounter = findViewById(R.id.text_counter);
|
||||
_rowCounter = findViewById(R.id.row_counter);
|
||||
_textSecret = findViewById(R.id.text_secret);
|
||||
_spinnerType = findViewById(R.id.spinner_type);
|
||||
SpinnerHelper.fillSpinner(this, _spinnerType, R.array.otp_types_array);
|
||||
_spinnerAlgo = findViewById(R.id.spinner_algo);
|
||||
SpinnerHelper.fillSpinner(this, _spinnerAlgo, R.array.otp_algo_array);
|
||||
_spinnerGroup = findViewById(R.id.spinner_group);
|
||||
updateGroupSpinnerList();
|
||||
SpinnerHelper.fillSpinner(this, _spinnerGroup, _spinnerGroupList);
|
||||
_dropdownType = findViewById(R.id.dropdown_type);
|
||||
DropdownHelper.fillDropdown(this, _dropdownType, R.array.otp_types_array);
|
||||
_dropdownAlgo = findViewById(R.id.dropdown_algo);
|
||||
DropdownHelper.fillDropdown(this, _dropdownAlgo, R.array.otp_algo_array);
|
||||
_dropdownGroup = findViewById(R.id.dropdown_group);
|
||||
updateGroupDropdownList();
|
||||
DropdownHelper.fillDropdown(this, _dropdownGroup, _dropdownGroupList);
|
||||
|
||||
_advancedSettingsHeader = findViewById(R.id.accordian_header);
|
||||
_advancedSettings = findViewById(R.id.expandableLayout);
|
||||
|
@ -162,11 +156,11 @@ public class EditEntryActivity extends AegisActivity {
|
|||
|
||||
OtpInfo info = _origEntry.getInfo();
|
||||
if (info instanceof TotpInfo) {
|
||||
_textPeriod.setText(Integer.toString(((TotpInfo) info).getPeriod()));
|
||||
_rowPeriod.setVisibility(View.VISIBLE);
|
||||
_textPeriodCounterLayout.setHint(R.string.period_hint);
|
||||
_textPeriodCounter.setText(Integer.toString(((TotpInfo) info).getPeriod()));
|
||||
} else if (info instanceof HotpInfo) {
|
||||
_textCounter.setText(Long.toString(((HotpInfo) info).getCounter()));
|
||||
_rowCounter.setVisibility(View.VISIBLE);
|
||||
_textPeriodCounterLayout.setHint(R.string.counter);
|
||||
_textPeriodCounter.setText(Long.toString(((HotpInfo) info).getCounter()));
|
||||
} else {
|
||||
throw new RuntimeException(String.format("Unsupported OtpInfo type: %s", info.getClass()));
|
||||
}
|
||||
|
@ -178,11 +172,8 @@ public class EditEntryActivity extends AegisActivity {
|
|||
_textSecret.setText(secretString);
|
||||
}
|
||||
|
||||
String type = _origEntry.getInfo().getType();
|
||||
_spinnerType.setSelection(getStringResourceIndex(R.array.otp_types_array, type), false);
|
||||
|
||||
String algo = _origEntry.getInfo().getAlgorithm(false);
|
||||
_spinnerAlgo.setSelection(getStringResourceIndex(R.array.otp_algo_array, algo), false);
|
||||
_dropdownType.setText(_origEntry.getInfo().getType().toUpperCase(), false);
|
||||
_dropdownAlgo.setText(_origEntry.getInfo().getAlgorithm(false), false);
|
||||
|
||||
String group = _origEntry.getGroup();
|
||||
setGroup(group);
|
||||
|
@ -192,58 +183,20 @@ public class EditEntryActivity extends AegisActivity {
|
|||
_textName.addTextChangedListener(_iconChangeListener);
|
||||
|
||||
// show/hide period and counter fields on type change
|
||||
_spinnerType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
||||
String type = _spinnerType.getSelectedItem().toString().toLowerCase();
|
||||
switch (type) {
|
||||
case TotpInfo.ID:
|
||||
case SteamInfo.ID:
|
||||
_rowCounter.setVisibility(View.GONE);
|
||||
_rowPeriod.setVisibility(View.VISIBLE);
|
||||
break;
|
||||
case HotpInfo.ID:
|
||||
_rowPeriod.setVisibility(View.GONE);
|
||||
_rowCounter.setVisibility(View.VISIBLE);
|
||||
break;
|
||||
default:
|
||||
throw new RuntimeException(String.format("Unsupported OTP type: %s", type));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNothingSelected(AdapterView<?> parent) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
final Activity activity = this;
|
||||
_spinnerGroup.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
||||
private int prevPosition;
|
||||
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
||||
if (position == _spinnerGroupList.size() - 1) {
|
||||
Dialogs.showTextInputDialog(activity, R.string.set_group, R.string.group_name_hint, text -> {
|
||||
String str = new String(text);
|
||||
if (str.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
_groups.add(str);
|
||||
// reset the selection to "No group" to work around a quirk
|
||||
_spinnerGroup.setSelection(0, false);
|
||||
updateGroupSpinnerList();
|
||||
_spinnerGroup.setSelection(_spinnerGroupList.indexOf(str), false);
|
||||
});
|
||||
_spinnerGroup.setSelection(prevPosition, false);
|
||||
} else {
|
||||
prevPosition = position;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNothingSelected(AdapterView<?> parent) {
|
||||
|
||||
_dropdownType.setOnItemClickListener((parent, view, position, id) -> {
|
||||
String type = _dropdownType.getText().toString().toLowerCase();
|
||||
switch (type) {
|
||||
case TotpInfo.ID:
|
||||
case SteamInfo.ID:
|
||||
_textPeriodCounterLayout.setHint(R.string.period_hint);
|
||||
_textPeriodCounter.setText(String.format("%d", 30));
|
||||
break;
|
||||
case HotpInfo.ID:
|
||||
_textPeriodCounterLayout.setHint(R.string.counter);
|
||||
_textPeriodCounter.setText(String.format("%d", 0));
|
||||
break;
|
||||
default:
|
||||
throw new RuntimeException(String.format("Unsupported OTP type: %s", type));
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -258,15 +211,37 @@ public class EditEntryActivity extends AegisActivity {
|
|||
openAdvancedSettings();
|
||||
setGroup(selectedGroup);
|
||||
}
|
||||
|
||||
_dropdownGroup.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
||||
private int prevPosition = _dropdownGroupList.indexOf(_dropdownGroup.getText().toString());
|
||||
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
if (position == _dropdownGroupList.size() - 1) {
|
||||
Dialogs.showTextInputDialog(EditEntryActivity.this, R.string.set_group, R.string.group_name_hint, text -> {
|
||||
String str = new String(text);
|
||||
if (str.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
_groups.add(str);
|
||||
updateGroupDropdownList();
|
||||
_dropdownGroup.setText(_dropdownGroupList.get(position), false);
|
||||
});
|
||||
_dropdownGroup.setText(_dropdownGroupList.get(prevPosition), false);
|
||||
} else {
|
||||
prevPosition = position;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void setGroup(String groupName) {
|
||||
if (groupName == null) {
|
||||
return;
|
||||
int pos = 0;
|
||||
if (groupName != null) {
|
||||
pos = _groups.contains(groupName) ? _groups.headSet(groupName).size() + 1 : 0;
|
||||
}
|
||||
|
||||
int pos = _groups.contains(groupName) ? _groups.headSet(groupName).size() : -1;
|
||||
_spinnerGroup.setSelection(pos + 1, false);
|
||||
_dropdownGroup.setText(_dropdownGroupList.get(pos), false);
|
||||
}
|
||||
|
||||
private void openAdvancedSettings() {
|
||||
|
@ -315,12 +290,12 @@ public class EditEntryActivity extends AegisActivity {
|
|||
});
|
||||
}
|
||||
|
||||
private void updateGroupSpinnerList() {
|
||||
private void updateGroupDropdownList() {
|
||||
Resources res = getResources();
|
||||
_spinnerGroupList.clear();
|
||||
_spinnerGroupList.add(res.getString(R.string.no_group));
|
||||
_spinnerGroupList.addAll(_groups);
|
||||
_spinnerGroupList.add(res.getString(R.string.new_group));
|
||||
_dropdownGroupList.clear();
|
||||
_dropdownGroupList.add(res.getString(R.string.no_group));
|
||||
_dropdownGroupList.addAll(_groups);
|
||||
_dropdownGroupList.add(res.getString(R.string.new_group));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -493,7 +468,7 @@ public class EditEntryActivity extends AegisActivity {
|
|||
|
||||
private int parsePeriod() throws ParseException {
|
||||
try {
|
||||
return Integer.parseInt(_textPeriod.getText().toString());
|
||||
return Integer.parseInt(_textPeriodCounter.getText().toString());
|
||||
} catch (NumberFormatException e) {
|
||||
throw new ParseException("Period is not an integer.");
|
||||
}
|
||||
|
@ -504,8 +479,8 @@ public class EditEntryActivity extends AegisActivity {
|
|||
throw new ParseException("Secret is a required field.");
|
||||
}
|
||||
|
||||
String type = _spinnerType.getSelectedItem().toString();
|
||||
String algo = _spinnerAlgo.getSelectedItem().toString();
|
||||
String type = _dropdownType.getText().toString();
|
||||
String algo = _dropdownAlgo.getText().toString();
|
||||
|
||||
int digits;
|
||||
try {
|
||||
|
@ -537,7 +512,7 @@ public class EditEntryActivity extends AegisActivity {
|
|||
case HotpInfo.ID:
|
||||
long counter;
|
||||
try {
|
||||
counter = Long.parseLong(_textCounter.getText().toString());
|
||||
counter = Long.parseLong(_textPeriodCounter.getText().toString());
|
||||
} catch (NumberFormatException e) {
|
||||
throw new ParseException("Counter is not an integer.");
|
||||
}
|
||||
|
@ -558,9 +533,9 @@ public class EditEntryActivity extends AegisActivity {
|
|||
entry.setIssuer(_textIssuer.getText().toString());
|
||||
entry.setName(_textName.getText().toString());
|
||||
|
||||
int groupPos = _spinnerGroup.getSelectedItemPosition();
|
||||
int groupPos = _dropdownGroupList.indexOf(_dropdownGroup.getText().toString());
|
||||
if (groupPos != 0) {
|
||||
String group = _spinnerGroupList.get(_spinnerGroup.getSelectedItemPosition());
|
||||
String group = _dropdownGroupList.get(groupPos);
|
||||
entry.setGroup(group);
|
||||
} else {
|
||||
entry.setGroup(null);
|
||||
|
@ -624,16 +599,6 @@ public class EditEntryActivity extends AegisActivity {
|
|||
}
|
||||
};
|
||||
|
||||
private int getStringResourceIndex(@ArrayRes int id, String string) {
|
||||
String[] res = getResources().getStringArray(id);
|
||||
for (int i = 0; i < res.length; i++) {
|
||||
if (res[i].equalsIgnoreCase(string)) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
private static class ParseException extends Exception {
|
||||
public ParseException(String message) {
|
||||
super(message);
|
||||
|
|
|
@ -5,6 +5,10 @@ import android.os.Bundle;
|
|||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.beemdevelopment.aegis.R;
|
||||
import com.beemdevelopment.aegis.ui.views.GroupAdapter;
|
||||
|
||||
|
@ -12,10 +16,6 @@ import java.text.Collator;
|
|||
import java.util.ArrayList;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
public class GroupManagerActivity extends AegisActivity implements GroupAdapter.Listener {
|
||||
private GroupAdapter _adapter;
|
||||
private TreeSet<String> _groups;
|
||||
|
@ -26,6 +26,7 @@ public class GroupManagerActivity extends AegisActivity implements GroupAdapter.
|
|||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_groups);
|
||||
setSupportActionBar(findViewById(R.id.toolbar));
|
||||
|
||||
Intent intent = getIntent();
|
||||
_groups = new TreeSet<>(Collator.getInstance());
|
||||
|
|
|
@ -101,6 +101,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
|
|||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_main);
|
||||
setSupportActionBar(findViewById(R.id.toolbar));
|
||||
|
||||
_app = (AegisApplication) getApplication();
|
||||
_vault = _app.getVaultManager();
|
||||
|
|
|
@ -18,6 +18,8 @@ public class PreferencesActivity extends AegisActivity implements
|
|||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_preferences);
|
||||
setSupportActionBar(findViewById(R.id.toolbar));
|
||||
|
||||
if (getSupportActionBar() != null) {
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
@ -29,7 +31,7 @@ public class PreferencesActivity extends AegisActivity implements
|
|||
_fragment.setArguments(getIntent().getExtras());
|
||||
|
||||
getSupportFragmentManager().beginTransaction()
|
||||
.replace(android.R.id.content, _fragment)
|
||||
.replace(R.id.content, _fragment)
|
||||
.commit();
|
||||
|
||||
PreferencesFragment requestedFragment = getRequestedFragment();
|
||||
|
@ -38,7 +40,7 @@ public class PreferencesActivity extends AegisActivity implements
|
|||
showFragment(_fragment);
|
||||
}
|
||||
} else {
|
||||
_fragment = (PreferencesFragment) getSupportFragmentManager().findFragmentById(android.R.id.content);
|
||||
_fragment = (PreferencesFragment) getSupportFragmentManager().findFragmentById(R.id.content);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -96,7 +98,7 @@ public class PreferencesActivity extends AegisActivity implements
|
|||
private void showFragment(PreferencesFragment fragment) {
|
||||
getSupportFragmentManager().beginTransaction()
|
||||
.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right)
|
||||
.replace(android.R.id.content, fragment)
|
||||
.replace(R.id.content, fragment)
|
||||
.addToBackStack(null)
|
||||
.commit();
|
||||
}
|
||||
|
|
|
@ -35,6 +35,7 @@ public class SelectEntriesActivity extends AegisActivity {
|
|||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_select_entries);
|
||||
setSupportActionBar(findViewById(R.id.toolbar));
|
||||
|
||||
ActionBar bar = getSupportActionBar();
|
||||
bar.setHomeAsUpIndicator(R.drawable.ic_close);
|
||||
|
|
|
@ -39,6 +39,7 @@ public class SlotManagerActivity extends AegisActivity implements SlotAdapter.Li
|
|||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_slots);
|
||||
setSupportActionBar(findViewById(R.id.toolbar));
|
||||
_edited = false;
|
||||
|
||||
ActionBar bar = getSupportActionBar();
|
||||
|
|
|
@ -37,6 +37,7 @@ public class TransferEntriesActivity extends AegisActivity {
|
|||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_share_entry);
|
||||
setSupportActionBar(findViewById(R.id.toolbar));
|
||||
_vault = getApp().getVaultManager();
|
||||
|
||||
_qrImage = findViewById(R.id.ivQrCode);
|
||||
|
|
|
@ -7,20 +7,20 @@ import android.net.Uri;
|
|||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.AutoCompleteTextView;
|
||||
import android.widget.Button;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.ArrayRes;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.core.content.FileProvider;
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import com.beemdevelopment.aegis.BuildConfig;
|
||||
import com.beemdevelopment.aegis.R;
|
||||
import com.beemdevelopment.aegis.helpers.SpinnerHelper;
|
||||
import com.beemdevelopment.aegis.helpers.DropdownHelper;
|
||||
import com.beemdevelopment.aegis.importers.AegisImporter;
|
||||
import com.beemdevelopment.aegis.importers.DatabaseImporter;
|
||||
import com.beemdevelopment.aegis.importers.DatabaseImporterEntryException;
|
||||
|
@ -233,20 +233,13 @@ public class ToolsPreferencesFragment extends PreferencesFragment {
|
|||
TextView warningText = view.findViewById(R.id.text_export_warning);
|
||||
CheckBox checkBoxEncrypt = view.findViewById(R.id.checkbox_export_encrypt);
|
||||
CheckBox checkBoxAccept = view.findViewById(R.id.checkbox_accept);
|
||||
Spinner spinner = view.findViewById(R.id.spinner_export_format);
|
||||
SpinnerHelper.fillSpinner(getContext(), spinner, R.array.export_formats);
|
||||
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
||||
checkBoxEncrypt.setChecked(position == 0);
|
||||
checkBoxEncrypt.setEnabled(position == 0);
|
||||
warningText.setVisibility(checkBoxEncrypt.isChecked() ? View.GONE : View.VISIBLE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNothingSelected(AdapterView<?> parent) {
|
||||
|
||||
}
|
||||
AutoCompleteTextView dropdown = view.findViewById(R.id.dropdown_export_format);
|
||||
DropdownHelper.fillDropdown(getContext(), dropdown, R.array.export_formats);
|
||||
dropdown.setText(getString(R.string.export_format_aegis), false);
|
||||
dropdown.setOnItemClickListener((parent, view1, position, id) -> {
|
||||
checkBoxEncrypt.setChecked(position == 0);
|
||||
checkBoxEncrypt.setEnabled(position == 0);
|
||||
warningText.setVisibility(checkBoxEncrypt.isChecked() ? View.GONE : View.VISIBLE);
|
||||
});
|
||||
|
||||
AlertDialog dialog = new AlertDialog.Builder(getContext())
|
||||
|
@ -281,8 +274,9 @@ public class ToolsPreferencesFragment extends PreferencesFragment {
|
|||
return;
|
||||
}
|
||||
|
||||
int requestCode = getExportRequestCode(spinner.getSelectedItemPosition(), checkBoxEncrypt.isChecked());
|
||||
VaultBackupManager.FileInfo fileInfo = getExportFileInfo(spinner.getSelectedItemPosition(), checkBoxEncrypt.isChecked());
|
||||
int pos = getStringResourceIndex(R.array.export_formats, dropdown.getText().toString());
|
||||
int requestCode = getExportRequestCode(pos, checkBoxEncrypt.isChecked());
|
||||
VaultBackupManager.FileInfo fileInfo = getExportFileInfo(pos, checkBoxEncrypt.isChecked());
|
||||
Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT)
|
||||
.addCategory(Intent.CATEGORY_OPENABLE)
|
||||
.setType(getExportMimeType(requestCode))
|
||||
|
@ -293,13 +287,14 @@ public class ToolsPreferencesFragment extends PreferencesFragment {
|
|||
btnNeutral.setOnClickListener(v -> {
|
||||
dialog.dismiss();
|
||||
|
||||
int pos = getStringResourceIndex(R.array.export_formats, dropdown.getText().toString());
|
||||
if (!checkBoxEncrypt.isChecked() && !checkBoxAccept.isChecked()) {
|
||||
return;
|
||||
}
|
||||
|
||||
File file;
|
||||
try {
|
||||
VaultBackupManager.FileInfo fileInfo = getExportFileInfo(spinner.getSelectedItemPosition(), checkBoxEncrypt.isChecked());
|
||||
VaultBackupManager.FileInfo fileInfo = getExportFileInfo(pos, checkBoxEncrypt.isChecked());
|
||||
file = File.createTempFile(fileInfo.getFilename() + "-", "." + fileInfo.getExtension(), getExportCacheDir());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
|
@ -307,7 +302,7 @@ public class ToolsPreferencesFragment extends PreferencesFragment {
|
|||
return;
|
||||
}
|
||||
|
||||
int requestCode = getExportRequestCode(spinner.getSelectedItemPosition(), checkBoxEncrypt.isChecked());
|
||||
int requestCode = getExportRequestCode(pos, checkBoxEncrypt.isChecked());
|
||||
startExportVault(requestCode, cb -> {
|
||||
try (OutputStream stream = new FileOutputStream(file)) {
|
||||
cb.exportVault(stream);
|
||||
|
@ -463,6 +458,16 @@ public class ToolsPreferencesFragment extends PreferencesFragment {
|
|||
});
|
||||
}
|
||||
|
||||
private int getStringResourceIndex(@ArrayRes int id, String string) {
|
||||
String[] res = getResources().getStringArray(id);
|
||||
for (int i = 0; i < res.length; i++) {
|
||||
if (res[i].equalsIgnoreCase(string)) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
private class ExportResultListener implements ExportTask.Callback {
|
||||
@Override
|
||||
public void onTaskFinished(Exception e) {
|
||||
|
|
6
app/src/main/res/color/text_input_box_icon_dark.xml
Normal file
6
app/src/main/res/color/text_input_box_icon_dark.xml
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:color="?attr/iconColorPrimary" android:state_focused="true"/>
|
||||
<item android:color="?attr/iconColorPrimary" android:state_activated="true"/>
|
||||
<item android:color="?attr/iconColorPrimary"/>
|
||||
</selector>
|
6
app/src/main/res/color/text_input_box_stroke_dark.xml
Normal file
6
app/src/main/res/color/text_input_box_stroke_dark.xml
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:color="#fff" android:state_focused="true"/>
|
||||
<item android:color="#fff" android:state_hovered="true"/>
|
||||
<item android:color="#fff"/>
|
||||
</selector>
|
|
@ -1,7 +0,0 @@
|
|||
<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="#000" android:pathData="M4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M4,6V18H11V6H4M20,18V6H18.76C19,6.54 18.95,7.07 18.95,7.13C18.88,7.8 18.41,8.5 18.24,8.75L15.91,11.3L19.23,11.28L19.24,12.5L14.04,12.47L14,11.47C14,11.47 17.05,8.24 17.2,7.95C17.34,7.67 17.91,6 16.5,6C15.27,6.05 15.41,7.3 15.41,7.3L13.87,7.31C13.87,7.31 13.88,6.65 14.25,6H13V18H15.58L15.57,17.14L16.54,17.13C16.54,17.13 17.45,16.97 17.46,16.08C17.5,15.08 16.65,15.08 16.5,15.08C16.37,15.08 15.43,15.13 15.43,15.95H13.91C13.91,15.95 13.95,13.89 16.5,13.89C19.1,13.89 18.96,15.91 18.96,15.91C18.96,15.91 19,17.16 17.85,17.63L18.37,18H20M8.92,16H7.42V10.2L5.62,10.76V9.53L8.76,8.41H8.92V16Z" />
|
||||
</vector>
|
|
@ -1,9 +0,0 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M16.24,7.76C15.07,6.59 13.54,6 12,6v6l-4.24,4.24c2.34,2.34 6.14,2.34 8.49,0 2.34,-2.34 2.34,-6.14 -0.01,-8.48zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.42,0 -8,-3.58 -8,-8s3.58,-8 8,-8 8,3.58 8,8 -3.58,8 -8,8z"/>
|
||||
</vector>
|
|
@ -4,17 +4,24 @@
|
|||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="true"
|
||||
android:background="?attr/background"
|
||||
tools:context="com.beemdevelopment.aegis.ui.AboutActivity">
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="@style/ThemeOverlay.Aegis.AppBar">
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorAppBar" />
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:clipToPadding="false"
|
||||
android:isScrollContainer="true">
|
||||
|
||||
android:isScrollContainer="true"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||
<include layout="@layout/content_about" />
|
||||
|
||||
</ScrollView>
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="true"
|
||||
android:background="?attr/background"
|
||||
tools:context="com.beemdevelopment.aegis.ui.AuthActivity">
|
||||
|
||||
|
@ -68,6 +67,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/button_rounded_corners"
|
||||
android:backgroundTint="@color/colorPrimary"
|
||||
android:minWidth="125dp"
|
||||
android:text="@string/unlock"
|
||||
android:textColor="@color/primary_text_inverted"
|
||||
|
|
|
@ -1,323 +1,301 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:background="?attr/background"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/background"
|
||||
android:orientation="vertical"
|
||||
tools:context="com.beemdevelopment.aegis.ui.EditEntryActivity">
|
||||
|
||||
<LinearLayout
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:descendantFocusability="beforeDescendants"
|
||||
android:focusableInTouchMode="true">
|
||||
|
||||
<RelativeLayout
|
||||
android:theme="@style/ThemeOverlay.Aegis.AppBar">
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:background="?attr/background"
|
||||
|
||||
android:layout_height="250dp">
|
||||
|
||||
<de.hdodenhof.circleimageview.CircleImageView
|
||||
android:id="@+id/profile_drawable"
|
||||
android:layout_width="100dp"
|
||||
android:layout_height="100dp"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_centerVertical="true" />
|
||||
|
||||
<com.avito.android.krop.KropView
|
||||
android:id="@+id/krop_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:visibility="invisible"
|
||||
app:krop_aspectX="1"
|
||||
app:krop_aspectY="1"
|
||||
app:krop_offset="70dp"
|
||||
app:krop_overlayColor="#aadddddd" >
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_saveImage"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_margin="15dp"
|
||||
android:src="@drawable/ic_check_black_24dp"
|
||||
app:tint="?attr/iconColorPrimary" />
|
||||
</com.avito.android.krop.KropView>
|
||||
|
||||
</RelativeLayout>
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="@color/divider" />
|
||||
<TableLayout
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorAppBar" />
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1">
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:stretchColumns="1"
|
||||
android:layout_marginEnd="35dp">
|
||||
android:descendantFocusability="beforeDescendants"
|
||||
android:focusableInTouchMode="true">
|
||||
|
||||
<TableRow
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="5dp">
|
||||
<ImageView android:layout_column="0"
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:background="?attr/background"
|
||||
android:layout_height="250dp">
|
||||
|
||||
<de.hdodenhof.circleimageview.CircleImageView
|
||||
android:id="@+id/profile_drawable"
|
||||
android:layout_width="100dp"
|
||||
android:layout_height="100dp"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_centerVertical="true" />
|
||||
|
||||
<com.avito.android.krop.KropView
|
||||
android:id="@+id/krop_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_person_black_24dp"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:visibility="invisible"
|
||||
app:krop_aspectX="1"
|
||||
app:krop_aspectY="1"
|
||||
app:krop_offset="70dp"
|
||||
app:krop_overlayColor="#aadddddd" >
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_saveImage"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_margin="15dp"
|
||||
android:src="@drawable/ic_check_black_24dp"
|
||||
app:tint="?attr/iconColorPrimary" />
|
||||
</com.avito.android.krop.KropView>
|
||||
|
||||
</RelativeLayout>
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="@color/divider" />
|
||||
<TableLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:stretchColumns="1"
|
||||
android:layout_marginEnd="15dp">
|
||||
|
||||
<TableRow
|
||||
android:layout_marginTop="10dp"
|
||||
app:tint="?attr/iconColorPrimary"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginEnd="20dp"/>
|
||||
android:layout_marginBottom="5dp">
|
||||
<ImageView
|
||||
android:layout_column="0"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_person_black_24dp"
|
||||
app:tint="?attr/iconColorPrimary"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:layout_gravity="center_vertical"/>
|
||||
|
||||
<EditText android:layout_column="1"
|
||||
android:id="@+id/text_name"
|
||||
android:hint="@string/name"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:backgroundTint="#949494"
|
||||
android:layout_weight="1"/>
|
||||
</TableRow>
|
||||
|
||||
<TableRow
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp">
|
||||
<LinearLayout android:layout_column="1"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center_vertical">
|
||||
<EditText
|
||||
android:id="@+id/text_issuer"
|
||||
android:hint="@string/issuer"
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:layout_column="1"
|
||||
android:hint="@string/name"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:backgroundTint="#949494"
|
||||
android:layout_weight="1"/>
|
||||
<androidx.appcompat.widget.AppCompatSpinner
|
||||
android:id="@+id/spinner_group"
|
||||
android:layout_weight="1">
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/text_name"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="text"/>
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
</TableRow>
|
||||
|
||||
<TableRow
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp">
|
||||
<LinearLayout android:layout_column="1"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:backgroundTint="#949494"
|
||||
style="@style/Base.Widget.AppCompat.Spinner.Underlined"/>
|
||||
</LinearLayout>
|
||||
</TableRow>
|
||||
</TableLayout>
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center_vertical">
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:hint="@string/issuer"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:layout_weight="1">
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/text_issuer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="text"/>
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:hint="@string/group"
|
||||
style="?attr/dropdownStyle">
|
||||
<AutoCompleteTextView
|
||||
android:id="@+id/dropdown_group"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="none"/>
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
</LinearLayout>
|
||||
</TableRow>
|
||||
</TableLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:foreground="?android:attr/selectableItemBackground"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/accordian_header"
|
||||
android:focusable="true"
|
||||
android:clickable="true">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/down_btn"
|
||||
android:layout_width="wrap_content"
|
||||
<RelativeLayout
|
||||
android:foreground="?android:attr/selectableItemBackground"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="14dp"
|
||||
android:src="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||
app:tint="?attr/iconColorPrimary"/>
|
||||
android:id="@+id/accordian_header"
|
||||
android:focusable="true"
|
||||
android:clickable="true">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/accordian_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_marginStart="12dp"
|
||||
android:layout_toEndOf="@+id/down_btn"
|
||||
android:padding="16dp"
|
||||
android:text="@string/advanced"
|
||||
android:textStyle="bold" />
|
||||
<ImageView
|
||||
android:id="@+id/down_btn"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="14dp"
|
||||
android:src="@drawable/ic_keyboard_arrow_down_black_24dp"
|
||||
app:tint="?attr/iconColorPrimary"/>
|
||||
|
||||
</RelativeLayout>
|
||||
<TextView
|
||||
android:id="@+id/accordian_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_toEndOf="@+id/down_btn"
|
||||
android:padding="16dp"
|
||||
android:text="@string/advanced"
|
||||
android:textStyle="bold" />
|
||||
|
||||
</RelativeLayout>
|
||||
<RelativeLayout
|
||||
android:id="@+id/expandableLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:visibility="invisible">
|
||||
<TableLayout
|
||||
<TableLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:stretchColumns="1"
|
||||
android:layout_marginEnd="35dp">
|
||||
<TableRow
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp">
|
||||
<ImageView android:layout_column="0"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_info_outline_black_24dp"
|
||||
android:layout_marginTop="10dp"
|
||||
app:tint="?attr/iconColorPrimary"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginEnd="20dp"/>
|
||||
|
||||
<LinearLayout android:layout_column="1"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center_vertical">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatSpinner
|
||||
android:id="@+id/spinner_type"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="4"
|
||||
android:paddingEnd="6dp"
|
||||
android:gravity="start"
|
||||
android:layout_gravity="start"
|
||||
android:backgroundTint="#949494"
|
||||
style="@style/Base.Widget.AppCompat.Spinner.Underlined"/>
|
||||
<androidx.appcompat.widget.AppCompatSpinner
|
||||
android:id="@+id/spinner_algo"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="4"
|
||||
android:paddingEnd="6dp"
|
||||
android:backgroundTint="#949494"
|
||||
style="@style/Base.Widget.AppCompat.Spinner.Underlined"/>
|
||||
<EditText
|
||||
android:id="@+id/text_digits"
|
||||
android:hint="@string/digits"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingEnd="6dp"
|
||||
android:layout_weight="3"
|
||||
android:backgroundTint="#949494"/>
|
||||
</LinearLayout>
|
||||
|
||||
</TableRow>
|
||||
|
||||
<TableRow
|
||||
android:id="@+id/row_period"
|
||||
android:visibility="gone"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp">
|
||||
<ImageView android:layout_column="0"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_timelapse_black_24dp"
|
||||
android:layout_marginTop="10dp"
|
||||
app:tint="?attr/iconColorPrimary"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginEnd="20dp"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="horizontal">
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
<EditText
|
||||
android:id="@+id/text_period"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:backgroundTint="#949494"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_gravity="center"
|
||||
android:inputType="numberDecimal"/>
|
||||
<TextView
|
||||
android:id="@+id/text_hint"
|
||||
android:layout_marginEnd="15dp">
|
||||
<TableRow
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp">
|
||||
<ImageView android:layout_column="0"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:backgroundTint="#949494"
|
||||
android:layout_centerVertical="true"
|
||||
android:text="@string/seconds"
|
||||
android:textSize="18sp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:textColor="#808080"/>
|
||||
</RelativeLayout>
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"/>
|
||||
</LinearLayout>
|
||||
</TableRow>
|
||||
android:src="@drawable/ic_info_outline_black_24dp"
|
||||
app:tint="?attr/iconColorPrimary"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:layout_gravity="center_vertical"/>
|
||||
|
||||
<TableRow
|
||||
android:id="@+id/row_counter"
|
||||
android:visibility="gone"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp">
|
||||
<ImageView android:layout_column="0"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_counter_black_24dp"
|
||||
android:layout_marginTop="10dp"
|
||||
app:tint="?attr/iconColorPrimary"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginEnd="20dp"/>
|
||||
<LinearLayout android:layout_column="1"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center_vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="horizontal">
|
||||
<EditText
|
||||
android:id="@+id/text_counter"
|
||||
android:hint="@string/counter"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:backgroundTint="#949494"
|
||||
android:layout_gravity="center"
|
||||
android:inputType="numberDecimal"/>
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"/>
|
||||
</LinearLayout>
|
||||
</TableRow>
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="4"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:gravity="start"
|
||||
android:layout_gravity="start"
|
||||
android:hint="@string/type"
|
||||
style="?attr/dropdownStyle">
|
||||
<AutoCompleteTextView
|
||||
android:id="@+id/dropdown_type"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="none"/>
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="4"
|
||||
android:hint="@string/algorithm_hint"
|
||||
style="?attr/dropdownStyle">
|
||||
<AutoCompleteTextView
|
||||
android:id="@+id/dropdown_algo"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="none" />
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
</LinearLayout>
|
||||
</TableRow>
|
||||
|
||||
<TableRow
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp">
|
||||
<ImageView android:layout_column="0"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_vpn_key_black_24dp"
|
||||
android:layout_marginTop="10dp"
|
||||
app:tint="?attr/iconColorPrimary"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginEnd="20dp"/>
|
||||
<TableRow
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp">
|
||||
<LinearLayout android:layout_column="1"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center_vertical">
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/text_period_counter_layout"
|
||||
android:hint="@string/period_hint"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="4"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:gravity="start"
|
||||
android:layout_gravity="start">
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/text_period_counter"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="text"/>
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:hint="@string/digits"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="4">
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/text_digits"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="text"/>
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
</LinearLayout>
|
||||
</TableRow>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
app:passwordToggleTint="#949494"
|
||||
android:backgroundTint="#949494"
|
||||
app:hintEnabled="false"
|
||||
app:passwordToggleEnabled="true">
|
||||
<TableRow
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp">
|
||||
<ImageView android:layout_column="0"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_vpn_key_black_24dp"
|
||||
app:tint="?attr/iconColorPrimary"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:layout_gravity="center_vertical"/>
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/text_secret"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
app:passwordToggleTint="#949494"
|
||||
app:passwordToggleEnabled="true">
|
||||
|
||||
android:backgroundTint="#949494"
|
||||
android:hint="@string/secret"
|
||||
android:inputType="textPassword"/>
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
</TableRow>
|
||||
</TableLayout>
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/text_secret"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/secret"
|
||||
android:inputType="textPassword"/>
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
</TableRow>
|
||||
</TableLayout>
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
</LinearLayout>
|
||||
|
|
|
@ -4,10 +4,20 @@
|
|||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="true"
|
||||
android:background="?attr/background"
|
||||
tools:context="com.beemdevelopment.aegis.ui.GroupManagerActivity">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="@style/ThemeOverlay.Aegis.AppBar">
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorAppBar" />
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
|
|
@ -5,12 +5,23 @@
|
|||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="true"
|
||||
tools:context="com.beemdevelopment.aegis.ui.MainActivity">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="@style/ThemeOverlay.Aegis.AppBar">
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorAppBar" />
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
||||
android:orientation="vertical">
|
||||
<LinearLayout
|
||||
android:id="@+id/btn_backup_error"
|
||||
|
@ -60,6 +71,6 @@
|
|||
android:layout_gravity="bottom|end"
|
||||
android:layout_margin="@dimen/fab_margin"
|
||||
android:src="@drawable/ic_add_black_24dp"
|
||||
android:tint="@color/icon_primary_dark" />
|
||||
app:tint="@color/icon_primary_dark" />
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
|
22
app/src/main/res/layout/activity_preferences.xml
Normal file
22
app/src/main/res/layout/activity_preferences.xml
Normal file
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="@style/ThemeOverlay.Aegis.AppBar">
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorAppBar" />
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1" />
|
||||
</LinearLayout>
|
|
@ -1,14 +1,24 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="true"
|
||||
android:background="?attr/background"
|
||||
android:id="@+id/importEntriesRootView"
|
||||
tools:context="com.beemdevelopment.aegis.ui.SelectEntriesActivity">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="@style/ThemeOverlay.Aegis.AppBar">
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorAppBar" />
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/list_entries"
|
||||
android:layout_width="match_parent"
|
||||
|
@ -16,7 +26,8 @@
|
|||
android:foreground="?android:attr/selectableItemBackground"
|
||||
android:paddingBottom="60dp"
|
||||
android:clipToPadding="false"
|
||||
android:scrollbars="vertical"/>
|
||||
android:scrollbars="vertical"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
|
||||
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/fab"
|
||||
|
@ -25,5 +36,5 @@
|
|||
android:layout_gravity="bottom|end"
|
||||
android:layout_margin="@dimen/fab_margin"
|
||||
android:src="@drawable/ic_check_black_24dp"
|
||||
android:tint="@color/icon_primary_dark" />
|
||||
app:tint="@color/icon_primary_dark" />
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
|
|
@ -4,9 +4,24 @@
|
|||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/cardBackground"
|
||||
android:background="?attr/background"
|
||||
tools:context="com.beemdevelopment.aegis.ui.TransferEntriesActivity">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:id="@+id/toolbar_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
android:theme="@style/ThemeOverlay.Aegis.AppBar">
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorAppBar" />
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivQrCode"
|
||||
android:layout_width="250dp"
|
||||
|
@ -15,7 +30,7 @@
|
|||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.496"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/toolbar_layout"
|
||||
app:layout_constraintVertical_bias="0.399" />
|
||||
|
||||
<TextView
|
||||
|
|
|
@ -4,10 +4,20 @@
|
|||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="true"
|
||||
android:background="?attr/background"
|
||||
tools:context="com.beemdevelopment.aegis.ui.SlotManagerActivity">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="@style/ThemeOverlay.Aegis.AppBar">
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="?attr/colorAppBar" />
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
android:layout_centerVertical="true"
|
||||
android:src="@drawable/item_selected"
|
||||
android:visibility="gone"
|
||||
app:civ_circle_background_color="@color/colorSecondary" />
|
||||
app:civ_circle_background_color="@color/colorPrimarySelected" />
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
android:layout_centerVertical="true"
|
||||
android:src="@drawable/item_selected"
|
||||
android:visibility="gone"
|
||||
app:civ_circle_background_color="@color/colorSecondary" />
|
||||
app:civ_circle_background_color="@color/colorPrimarySelected" />
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
android:layout_centerVertical="true"
|
||||
android:src="@drawable/item_selected"
|
||||
android:visibility="gone"
|
||||
app:civ_circle_background_color="@color/colorSecondary" />
|
||||
app:civ_circle_background_color="@color/colorPrimarySelected" />
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
|
|
|
@ -49,6 +49,7 @@
|
|||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/btn_app_version"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
|
@ -63,12 +64,11 @@
|
|||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:importantForAccessibility="no"
|
||||
app:ico_color="@color/icon_about"
|
||||
app:ico_color="?attr/iconColorPrimary"
|
||||
app:ico_icon="gmi-info-outline"
|
||||
app:ico_size="16dp" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/btn_app_version"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="32dp"
|
||||
|
@ -109,7 +109,7 @@
|
|||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:importantForAccessibility="no"
|
||||
app:ico_color="@color/icon_about"
|
||||
app:ico_color="?attr/iconColorPrimary"
|
||||
app:ico_icon="gmi-time-restore"
|
||||
app:ico_size="16dp" />
|
||||
|
||||
|
@ -151,7 +151,7 @@
|
|||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:importantForAccessibility="no"
|
||||
app:ico_color="@color/icon_about"
|
||||
app:ico_color="?attr/iconColorPrimary"
|
||||
app:ico_icon="gmi-github"
|
||||
app:ico_size="16dp" />
|
||||
|
||||
|
@ -193,7 +193,7 @@
|
|||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:importantForAccessibility="no"
|
||||
app:ico_color="@color/icon_about"
|
||||
app:ico_color="?attr/iconColorPrimary"
|
||||
app:ico_icon="gmi-file-text"
|
||||
app:ico_size="16dp" />
|
||||
|
||||
|
@ -268,7 +268,7 @@
|
|||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:importantForAccessibility="no"
|
||||
app:ico_color="@color/icon_about"
|
||||
app:ico_color="?attr/iconColorPrimary"
|
||||
app:ico_icon="gmi-account"
|
||||
app:ico_size="16dp" />
|
||||
|
||||
|
@ -313,7 +313,7 @@
|
|||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:importantForAccessibility="no"
|
||||
app:ico_color="@color/icon_about"
|
||||
app:ico_color="?attr/iconColorPrimary"
|
||||
app:ico_icon="gmi-account"
|
||||
app:ico_size="16dp" />
|
||||
|
||||
|
@ -358,7 +358,7 @@
|
|||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:importantForAccessibility="no"
|
||||
app:ico_color="@color/icon_about"
|
||||
app:ico_color="?attr/iconColorPrimary"
|
||||
app:ico_icon="gmi-email"
|
||||
app:ico_size="16dp" />
|
||||
|
||||
|
@ -390,7 +390,7 @@
|
|||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:importantForAccessibility="no"
|
||||
app:ico_color="@color/icon_about"
|
||||
app:ico_color="?attr/iconColorPrimary"
|
||||
app:ico_icon="gmi-globe"
|
||||
app:ico_size="16dp" />
|
||||
<TextView
|
||||
|
@ -451,7 +451,7 @@
|
|||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:importantForAccessibility="no"
|
||||
app:ico_color="@color/icon_about"
|
||||
app:ico_color="?attr/iconColorPrimary"
|
||||
app:ico_icon="gmi-star"
|
||||
app:ico_size="16dp" />
|
||||
|
||||
|
|
|
@ -12,13 +12,20 @@
|
|||
android:layout_marginStart="25dp"
|
||||
android:layout_marginEnd="25dp"
|
||||
android:text="@string/export_help" />
|
||||
<androidx.appcompat.widget.AppCompatSpinner
|
||||
android:id="@+id/spinner_export_format"
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginEnd="20dp"
|
||||
android:layout_marginTop="5dp" />
|
||||
android:layout_marginStart="25dp"
|
||||
android:layout_marginEnd="25dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:hint="@string/export_format_hint"
|
||||
style="?attr/dropdownStyle">
|
||||
<AutoCompleteTextView
|
||||
android:id="@+id/dropdown_export_format"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="none" />
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
<CheckBox
|
||||
android:id="@+id/checkbox_export_encrypt"
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
@ -22,14 +22,14 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<EditText
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/text_password"
|
||||
android:hint="@string/password"
|
||||
android:inputType="textPassword"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<requestFocus/>
|
||||
</EditText>
|
||||
</com.google.android.material.textfield.TextInputEditText>
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
|
@ -38,7 +38,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp">
|
||||
|
||||
<EditText
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:hint="@string/confirm_password"
|
||||
android:id="@+id/text_password_confirm"
|
||||
android:inputType="textPassword"
|
||||
|
|
|
@ -6,10 +6,14 @@
|
|||
android:paddingStart="20dp"
|
||||
android:paddingEnd="20dp"
|
||||
android:paddingTop="20dp">
|
||||
<EditText
|
||||
android:id="@+id/text_input"
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/text_input_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<requestFocus/>
|
||||
</EditText>
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/text_input"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="text"/>
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
</LinearLayout>
|
||||
|
|
8
app/src/main/res/layout/dropdown_list_item.xml
Normal file
8
app/src/main/res/layout/dropdown_list_item.xml
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="16dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:textAppearance="?attr/textAppearanceSubtitle1"/>
|
|
@ -22,7 +22,7 @@
|
|||
android:text="@string/groups"
|
||||
android:layout_gravity="end"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:textAppearance="@style/AppTheme.ActionChip"
|
||||
android:textAppearance="@style/TextAppearance.Aegis.ActionChip"
|
||||
android:textColor="?attr/primaryText"
|
||||
app:chipBackgroundColor="?attr/cardBackground"
|
||||
app:chipEndPadding="6dp"
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<EditText
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/text_password"
|
||||
android:hint="@string/set_password"
|
||||
android:inputType="textPassword"
|
||||
|
@ -54,7 +54,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp">
|
||||
|
||||
<EditText
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:hint="@string/set_password_confirm"
|
||||
android:id="@+id/text_password_confirm"
|
||||
android:inputType="textPassword"
|
||||
|
|
|
@ -6,8 +6,7 @@
|
|||
android:id="@+id/mi_search"
|
||||
android:title="@string/search"
|
||||
app:showAsAction="always"
|
||||
app:actionViewClass="androidx.appcompat.widget.SearchView"
|
||||
/>
|
||||
app:actionViewClass="androidx.appcompat.widget.SearchView"/>
|
||||
<item
|
||||
android:id="@+id/action_lock"
|
||||
android:icon="@drawable/ic_lock"
|
||||
|
|
|
@ -93,7 +93,6 @@
|
|||
<string name="unlock">فتح القفل</string>
|
||||
<string name="biometrics">البيومترية</string>
|
||||
<string name="advanced">متقدم</string>
|
||||
<string name="seconds">ثواني</string>
|
||||
<string name="counter">العداد</string>
|
||||
<string name="digits">الأرقام</string>
|
||||
<string name="secret">السر</string>
|
||||
|
|
|
@ -100,7 +100,6 @@
|
|||
<string name="unlock">Odemknout</string>
|
||||
<string name="biometrics">Biometrie</string>
|
||||
<string name="advanced">Pokročilé</string>
|
||||
<string name="seconds">sekund</string>
|
||||
<string name="counter">Počítadlo</string>
|
||||
<string name="digits">Číslice</string>
|
||||
<string name="secret">Tajný klíč</string>
|
||||
|
|
|
@ -98,7 +98,6 @@
|
|||
<string name="unlock">Entsperren</string>
|
||||
<string name="biometrics">Biometrie</string>
|
||||
<string name="advanced">Fortgeschritten</string>
|
||||
<string name="seconds">Sekunden</string>
|
||||
<string name="counter">Zähler</string>
|
||||
<string name="digits">Ziffern</string>
|
||||
<string name="secret">Schlüssel</string>
|
||||
|
|
|
@ -98,7 +98,6 @@
|
|||
<string name="unlock">Ξεκλείδωμα</string>
|
||||
<string name="biometrics">Βιομετρική</string>
|
||||
<string name="advanced">Σύνθετες</string>
|
||||
<string name="seconds">δευτερόλεπτα</string>
|
||||
<string name="counter">Μετρητής</string>
|
||||
<string name="digits">Ψηφία</string>
|
||||
<string name="secret">Μυστικός κωδικός</string>
|
||||
|
|
|
@ -89,7 +89,6 @@
|
|||
<string name="unlock">Desbloquear</string>
|
||||
<string name="biometrics">Biometría</string>
|
||||
<string name="advanced">Avanzado</string>
|
||||
<string name="seconds">segundos</string>
|
||||
<string name="counter">Contador</string>
|
||||
<string name="digits">Dígitos</string>
|
||||
<string name="secret">Código secreto</string>
|
||||
|
|
|
@ -96,7 +96,6 @@
|
|||
<string name="unlock">Desblokeatu</string>
|
||||
<string name="biometrics">Biometriak</string>
|
||||
<string name="advanced">Aurreratua</string>
|
||||
<string name="seconds">segundu</string>
|
||||
<string name="counter">Kontagailua</string>
|
||||
<string name="digits">Digituak</string>
|
||||
<string name="secret">Sekretua</string>
|
||||
|
|
|
@ -96,7 +96,6 @@
|
|||
<string name="unlock">بازکردن</string>
|
||||
<string name="biometrics">بیومتریک</string>
|
||||
<string name="advanced">پیشرفته</string>
|
||||
<string name="seconds">ثانیه</string>
|
||||
<string name="counter">شمارنده</string>
|
||||
<string name="digits">ارقام</string>
|
||||
<string name="secret">رمز</string>
|
||||
|
|
|
@ -96,7 +96,6 @@
|
|||
<string name="unlock">Avaa lukitus</string>
|
||||
<string name="biometrics">Biometriikka</string>
|
||||
<string name="advanced">Edistyneet</string>
|
||||
<string name="seconds">sekuntia</string>
|
||||
<string name="counter">Laskuri</string>
|
||||
<string name="digits">Numeroa</string>
|
||||
<string name="secret">Salausavain</string>
|
||||
|
|
|
@ -98,7 +98,6 @@
|
|||
<string name="unlock">Déverrouiller</string>
|
||||
<string name="biometrics">Biométrie</string>
|
||||
<string name="advanced">Avancé</string>
|
||||
<string name="seconds">secondes</string>
|
||||
<string name="counter">Compteur</string>
|
||||
<string name="digits">Chiffres</string>
|
||||
<string name="secret">Code secret</string>
|
||||
|
|
|
@ -91,7 +91,6 @@
|
|||
<string name="unlock">अनलॉक</string>
|
||||
<string name="biometrics">बॉयोमेट्रिक्स</string>
|
||||
<string name="advanced">उन्नत</string>
|
||||
<string name="seconds">सेकण्ड्स</string>
|
||||
<string name="counter">काउंटर</string>
|
||||
<string name="digits">अंक</string>
|
||||
<string name="secret">गुप्त</string>
|
||||
|
|
|
@ -76,7 +76,6 @@
|
|||
<string name="unlock">Feloldás</string>
|
||||
<string name="biometrics">Biometrikus adatok</string>
|
||||
<string name="advanced">Speciális</string>
|
||||
<string name="seconds">másodperc</string>
|
||||
<string name="counter">Számláló</string>
|
||||
<string name="digits">Számjegy</string>
|
||||
<string name="secret">Titok</string>
|
||||
|
|
|
@ -97,7 +97,6 @@
|
|||
<string name="unlock">Buka</string>
|
||||
<string name="biometrics">Biometrik</string>
|
||||
<string name="advanced">Lanjutan</string>
|
||||
<string name="seconds">detik</string>
|
||||
<string name="counter">Penghitung</string>
|
||||
<string name="digits">Digit</string>
|
||||
<string name="secret">Rahasia</string>
|
||||
|
|
|
@ -98,7 +98,6 @@
|
|||
<string name="unlock">Sblocca</string>
|
||||
<string name="biometrics">Biometrica</string>
|
||||
<string name="advanced">Avanzate</string>
|
||||
<string name="seconds">secondi</string>
|
||||
<string name="counter">Contatore</string>
|
||||
<string name="digits">Cifre</string>
|
||||
<string name="secret">Chiave segreta</string>
|
||||
|
|
|
@ -96,7 +96,6 @@
|
|||
<string name="unlock">ロック解除</string>
|
||||
<string name="biometrics">生体認証</string>
|
||||
<string name="advanced">高度な設定</string>
|
||||
<string name="seconds">秒</string>
|
||||
<string name="counter">カウンター</string>
|
||||
<string name="digits">桁数</string>
|
||||
<string name="secret">秘密鍵</string>
|
||||
|
|
|
@ -43,7 +43,6 @@
|
|||
<string name="set_password_confirm">ದಯವಿಟ್ಟು ಗುಪ್ತಪದವನ್ನು ಖಚಿತಪಡಿಸಿ</string>
|
||||
<string name="unlock">ಬೀಗ ತೆಗೆದು ಹಾಕು</string>
|
||||
<string name="advanced">ಸುಧಾರಿತ</string>
|
||||
<string name="seconds">ಸೆಕೆಂಡುಗಳು</string>
|
||||
<string name="counter">ಎಣಿಕೆ ಮಾಡುವ ಯಂತ್ರ</string>
|
||||
<string name="digits">ಅಂಕೆಗಳು</string>
|
||||
<string name="secret">ರಹಸ್ಯ</string>
|
||||
|
|
|
@ -98,7 +98,6 @@
|
|||
<string name="unlock">Ontgrendel</string>
|
||||
<string name="biometrics">Biometrie</string>
|
||||
<string name="advanced">Geavanceerd</string>
|
||||
<string name="seconds">seconden</string>
|
||||
<string name="counter">Teller</string>
|
||||
<string name="digits">Cijfers</string>
|
||||
<string name="secret">Sleutel</string>
|
||||
|
|
|
@ -100,7 +100,6 @@
|
|||
<string name="unlock">Odblokuj</string>
|
||||
<string name="biometrics">Autoryzacja biometryczna</string>
|
||||
<string name="advanced">Zaawansowane</string>
|
||||
<string name="seconds">sekund</string>
|
||||
<string name="counter">Licznik</string>
|
||||
<string name="digits">Cyfry</string>
|
||||
<string name="secret">Klucz</string>
|
||||
|
|
|
@ -98,7 +98,6 @@
|
|||
<string name="unlock">Desbloquear</string>
|
||||
<string name="biometrics">Biometria</string>
|
||||
<string name="advanced">Avançado</string>
|
||||
<string name="seconds">segundos</string>
|
||||
<string name="counter">Contador</string>
|
||||
<string name="digits">Dígitos</string>
|
||||
<string name="secret">Secreto</string>
|
||||
|
|
|
@ -98,7 +98,6 @@
|
|||
<string name="unlock">Desbloquear</string>
|
||||
<string name="biometrics">Biometria</string>
|
||||
<string name="advanced">Avançado</string>
|
||||
<string name="seconds">segundos</string>
|
||||
<string name="counter">Contador</string>
|
||||
<string name="digits">Dígitos</string>
|
||||
<string name="secret">Secreto</string>
|
||||
|
|
|
@ -99,7 +99,6 @@
|
|||
<string name="unlock">Deblocare</string>
|
||||
<string name="biometrics">Biometrice</string>
|
||||
<string name="advanced">Avansat</string>
|
||||
<string name="seconds">secunde</string>
|
||||
<string name="counter">Contor</string>
|
||||
<string name="digits">Cifre</string>
|
||||
<string name="secret">Secret</string>
|
||||
|
|
|
@ -100,7 +100,6 @@
|
|||
<string name="unlock">Разблокировать</string>
|
||||
<string name="biometrics">Биометрия</string>
|
||||
<string name="advanced">Расширенные</string>
|
||||
<string name="seconds">секунд</string>
|
||||
<string name="counter">Счётчик</string>
|
||||
<string name="digits">Цифры</string>
|
||||
<string name="secret">Секрет</string>
|
||||
|
|
|
@ -76,7 +76,6 @@
|
|||
<string name="unlock">Kilidi aç</string>
|
||||
<string name="biometrics">Biyometrik</string>
|
||||
<string name="advanced">Gelişmiş</string>
|
||||
<string name="seconds">saniye</string>
|
||||
<string name="counter">Sayaç</string>
|
||||
<string name="digits">Haneler</string>
|
||||
<string name="secret">Gizli Anahtar</string>
|
||||
|
|
29
app/src/main/res/values-v23/styles.xml
Normal file
29
app/src/main/res/values-v23/styles.xml
Normal file
|
@ -0,0 +1,29 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<style name="Theme.Aegis.Light.NoActionBar">
|
||||
<item name="android:statusBarColor">?attr/background</item>
|
||||
<item name="android:windowLightStatusBar">true</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Aegis.Dark.Default">
|
||||
<item name="android:navigationBarColor">?attr/background</item>
|
||||
<item name="android:windowLightStatusBar">false</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Aegis.Dark.NoActionBar">
|
||||
<item name="android:statusBarColor">?attr/background</item>
|
||||
<item name="android:navigationBarColor">?attr/background</item>
|
||||
<item name="android:windowLightStatusBar">false</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Aegis.TrueDark.Default">
|
||||
<item name="android:navigationBarColor">?attr/background</item>
|
||||
<item name="android:windowLightStatusBar">false</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Aegis.TrueDark.NoActionBar">
|
||||
<item name="android:statusBarColor">?attr/background</item>
|
||||
<item name="android:navigationBarColor">?attr/background</item>
|
||||
<item name="android:windowLightStatusBar">false</item>
|
||||
</style>
|
||||
</resources>
|
|
@ -1,12 +1,37 @@
|
|||
<resources>
|
||||
<style name="AppTheme" parent="AppThemeBase">
|
||||
<item name="android:navigationBarColor">@color/background</item>
|
||||
<style name="Theme.Aegis.Light.Default">
|
||||
<item name="android:navigationBarColor">?attr/background</item>
|
||||
<item name="android:windowLightNavigationBar">true</item>
|
||||
</style>
|
||||
|
||||
<style name="AppTheme.Light.NoActionBar" parent="AppThemeBase.Light.NoActionBar">
|
||||
<item name="android:navigationBarColor">@color/background</item>
|
||||
<style name="Theme.Aegis.Light.NoActionBar">
|
||||
<item name="android:statusBarColor">?attr/background</item>
|
||||
<item name="android:windowLightStatusBar">true</item>
|
||||
<item name="android:navigationBarColor">?attr/background</item>
|
||||
<item name="android:windowLightNavigationBar">true</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Aegis.Dark.Default">
|
||||
<item name="android:navigationBarColor">?attr/background</item>
|
||||
<item name="android:windowLightNavigationBar">false</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Aegis.Dark.NoActionBar">
|
||||
<item name="android:statusBarColor">?attr/background</item>
|
||||
<item name="android:windowLightStatusBar">false</item>
|
||||
<item name="android:navigationBarColor">?attr/background</item>
|
||||
<item name="android:windowLightNavigationBar">false</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Aegis.TrueDark.Default">
|
||||
<item name="android:navigationBarColor">?attr/background</item>
|
||||
<item name="android:windowLightNavigationBar">false</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Aegis.TrueDark.NoActionBar">
|
||||
<item name="android:statusBarColor">?attr/background</item>
|
||||
<item name="android:windowLightStatusBar">false</item>
|
||||
<item name="android:navigationBarColor">?attr/background</item>
|
||||
<item name="android:windowLightNavigationBar">false</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
|
|
@ -97,7 +97,6 @@
|
|||
<string name="unlock">解锁</string>
|
||||
<string name="biometrics">生物识别</string>
|
||||
<string name="advanced">高级设置</string>
|
||||
<string name="seconds">秒</string>
|
||||
<string name="counter">计数器</string>
|
||||
<string name="digits">位数</string>
|
||||
<string name="secret">密钥</string>
|
||||
|
|
|
@ -90,7 +90,6 @@
|
|||
<string name="unlock">解鎖</string>
|
||||
<string name="biometrics">生物識別</string>
|
||||
<string name="advanced">高級設定</string>
|
||||
<string name="seconds">秒</string>
|
||||
<string name="counter">計數器</string>
|
||||
<string name="digits">位數</string>
|
||||
<string name="secret">密鑰</string>
|
||||
|
|
|
@ -9,6 +9,8 @@
|
|||
<attr name="codePrimaryText" format="color" />
|
||||
<attr name="iconColorPrimary" format="color" />
|
||||
<attr name="iconColorInverted" format="color" />
|
||||
<attr name="dropdownStyle" format="reference" />
|
||||
<attr name="colorAppBar" format="color" />
|
||||
|
||||
<declare-styleable name="SlideIndicator">
|
||||
<attr name="dot_radius" format="dimension" />
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="colorPrimary">#0d47a1</color>
|
||||
<color name="colorSecondary">#FF1565C0</color>
|
||||
<color name="colorPrimarySelected">#FF1565C0</color>
|
||||
<color name="colorSecondary">#FF5252</color>
|
||||
<color name="colorPrimaryDark">#002171</color>
|
||||
<color name="colorHeaderSuccess">#12b600</color>
|
||||
<color name="colorPrimaryLight">#5472d3</color>
|
||||
|
@ -11,7 +12,6 @@
|
|||
<color name="secondary_text">#A0A0A0</color>
|
||||
<color name="auth_text">#4c4c4c</color>
|
||||
<color name="auth_button">#0d86c1</color>
|
||||
<color name="icon_about">#757575</color>
|
||||
<color name="extra_info_text">#8e8e8e</color>
|
||||
<color name="primary_text_inverted">#ffffff</color>
|
||||
<color name="secondary_text_inverted">#efefef</color>b
|
||||
|
|
|
@ -77,6 +77,7 @@
|
|||
<string name="export_warning_accept">I understand the risk</string>
|
||||
<string name="export_format_aegis">Aegis (.JSON)</string>
|
||||
<string name="export_format_google_auth_uri">Text file (.TXT)</string>
|
||||
<string name="export_format_hint">Export format</string>
|
||||
|
||||
<string name="choose_authentication_method">Security</string>
|
||||
<string name="authentication_method_explanation">Aegis is a security-focused 2FA app. Tokens are stored in a vault, that can optionally be encrypted with a password of your choosing. If an attacker obtains your encrypted vault file, they will not be able to access the contents without knowing the password.\n\nWe\'ve preselected the option that we think would fit best for your device.</string>
|
||||
|
@ -104,13 +105,15 @@
|
|||
<string name="password_reminder">Please enter your password. We occasionally ask you to do this so that don\'t forget it.</string>
|
||||
<string name="enter_password_authy_message">It looks like your Authy tokens are encrypted. Please close Aegis, open Authy and unlock the tokens with your password. Instead, Aegis can also attempt to decrypt your Authy tokens for you, if you enter your password below.</string>
|
||||
|
||||
<string name="period_hint">Period (seconds)</string>
|
||||
<string name="algorithm_hint">Hash function</string>
|
||||
<string name="type">Type</string>
|
||||
<string name="share">Share</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="unlock">Unlock</string>
|
||||
<string name="biometrics">Biometrics</string>
|
||||
<string name="advanced">Advanced</string>
|
||||
<string name="seconds">seconds</string>
|
||||
<string name="counter">Counter</string>
|
||||
<string name="digits">Digits</string>
|
||||
<string name="secret">Secret</string>
|
||||
|
@ -221,6 +224,7 @@
|
|||
<string name="sort_custom">Custom</string>
|
||||
<string name="new_group">New group…</string>
|
||||
<string name="enter_group_name">Enter a group name</string>
|
||||
<string name="group">Group</string>
|
||||
<string name="group_name_hint">Group name</string>
|
||||
<string name="preference_manage_groups">Edit groups</string>
|
||||
<string name="preference_manage_groups_summary">Manage and delete your groups here</string>
|
||||
|
|
|
@ -1,267 +1,238 @@
|
|||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<style name="ThemeActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid">
|
||||
<item name="android:background">@null</item>
|
||||
<!-- Support library compatibility -->
|
||||
<item name="background">@null</item>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<style name="Theme.Aegis.Launch" parent="Theme.MaterialComponents.DayNight.NoActionBar">
|
||||
<!-- colorPrimary in the root theme sets the task description color (seen in task switcher) -->
|
||||
<item name="colorPrimary">@color/colorPrimary</item>
|
||||
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
|
||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||
</style>
|
||||
|
||||
<style name="AppTheme.ActionMode" parent="@style/Widget.AppCompat.ActionMode">
|
||||
<item name="android:actionModeBackground">@color/colorPrimary</item>
|
||||
</style>
|
||||
<style name="Theme.Aegis.Light" parent="Theme.MaterialComponents.Light.NoActionBar">
|
||||
<item name="colorPrimary">@color/colorPrimary</item>
|
||||
<item name="colorSecondary">@color/colorSecondary</item>
|
||||
<item name="colorAppBar">@color/colorPrimary</item>
|
||||
|
||||
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
|
||||
|
||||
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
|
||||
|
||||
<style name="AppThemeBase" parent="Theme.MaterialComponents.Light.DarkActionBar">
|
||||
<item name="primaryText">@color/primary_text</item>
|
||||
<item name="secondaryText">@color/secondary_text</item>
|
||||
<item name="cardBackground">@color/card_background</item>
|
||||
<item name="cardBackgroundFocused">@color/card_background_focused</item>
|
||||
<item name="codePrimaryText">@color/code_primary_text</item>
|
||||
<item name="colorPrimary">@color/colorPrimary</item>
|
||||
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
|
||||
<item name="preferenceTheme">@style/PreferenceTheme</item>
|
||||
<item name="colorAccent">@color/colorAccent</item>
|
||||
<item name="background">@color/background</item>
|
||||
<item name="divider">@color/divider</item>
|
||||
<item name="bottomSheetDialogTheme">@style/BottomSheetDialog_Rounded</item>
|
||||
<item name="authText">@color/auth_text</item>
|
||||
|
||||
<item name="iconColorPrimary">@color/icon_primary</item>
|
||||
<item name="iconColorInverted">@color/icon_primary_inverted</item>
|
||||
|
||||
<item name="actionModeStyle">@style/ActionModeStyle</item>
|
||||
<item name="actionBarTheme">@style/ActionBarTheme</item>
|
||||
<item name="alertDialogTheme">@style/DialogStyle</item>
|
||||
|
||||
<item name="dot_color">@color/indicator_dot</item>
|
||||
<item name="dot_color_selected">@color/indicator_dot_selected</item>
|
||||
|
||||
<item name="popupTheme">@style/ThemeOverlay.Aegis.Popup.Light</item>
|
||||
<item name="actionModeStyle">@style/Theme.Aegis.ActionMode.Light</item>
|
||||
<item name="alertDialogTheme">@style/Theme.Aegis.Dialog.Light</item>
|
||||
<item name="preferenceTheme">@style/Theme.Aegis.Preference.Light</item>
|
||||
<item name="textInputStyle">@style/Widget.Aegis.TextInput.Light</item>
|
||||
<item name="dropdownStyle">@style/Widget.Aegis.Dropdown.Light</item>
|
||||
<item name="bottomSheetDialogTheme">@style/ThemeOverLay.Aegis.BottomSheetDialog.Rounded</item>
|
||||
|
||||
<item name="windowActionModeOverlay">true</item>
|
||||
<item name="android:statusBarColor">?attr/colorAppBar</item>
|
||||
<item name="android:indeterminateTint">@color/colorSecondary</item>
|
||||
</style>
|
||||
|
||||
<style name="AppTheme" parent="AppThemeBase">
|
||||
<style name="Theme.Aegis.Light.Default" />
|
||||
|
||||
<style name="Theme.Aegis.Light.NoActionBar">
|
||||
<item name="android:statusBarColor">@android:color/black</item>
|
||||
</style>
|
||||
|
||||
<style name="AppThemeBase.Light.NoActionBar" parent="AppTheme">
|
||||
<item name="android:statusBarColor">@color/background</item>
|
||||
<item name="windowNoTitle">true</item>
|
||||
<item name="windowActionBar">false</item>
|
||||
<item name="android:windowContentOverlay">@null</item>
|
||||
<item name="primaryText">@color/primary_text</item>
|
||||
<item name="background">@color/card_background</item>
|
||||
<item name="authText">@color/auth_text</item>
|
||||
<style name="Theme.Aegis.Light.Fullscreen" parent="Theme.Aegis.Light.NoActionBar">
|
||||
<item name="android:windowNoTitle">true</item>
|
||||
<item name="android:windowFullscreen">true</item>
|
||||
</style>
|
||||
|
||||
<style name="AppTheme.Light.NoActionBar" parent="AppThemeBase.Light.NoActionBar">
|
||||
</style>
|
||||
|
||||
<style name="AppTheme.Dark.NoActionBar" parent="AppTheme.Dark">
|
||||
<item name="android:statusBarColor">@color/background_dark_statusbar</item>
|
||||
<item name="windowNoTitle">true</item>
|
||||
<item name="windowActionBar">false</item>
|
||||
<item name="android:windowContentOverlay">@null</item>
|
||||
<item name="primaryText">@color/primary_text_dark</item>
|
||||
<item name="background">@color/background_dark</item>
|
||||
<item name="authText">@color/primary_text_inverted</item>
|
||||
<item name="bottomSheetDialogTheme">@style/BottomSheetDialog_Rounded</item>
|
||||
|
||||
<item name="android:navigationBarColor" tools:targetApi="o_mr1">@color/background_dark</item>
|
||||
<item name="android:windowLightNavigationBar" tools:targetApi="o_mr1">true</item>
|
||||
</style>
|
||||
|
||||
<style name="AppTheme.TrueBlack.NoActionBar" parent="AppTheme.TrueBlack">
|
||||
<item name="android:statusBarColor">@color/background_true_dark</item>
|
||||
<item name="windowNoTitle">true</item>
|
||||
<item name="windowActionBar">false</item>
|
||||
<item name="android:windowContentOverlay">@null</item>
|
||||
<item name="primaryText">@color/primary_text_dark</item>
|
||||
<item name="background">@color/background_true_dark</item>
|
||||
<item name="authText">@color/primary_text_inverted</item>
|
||||
<item name="bottomSheetDialogTheme">@style/BottomSheetDialog_Rounded</item>
|
||||
|
||||
<item name="android:navigationBarColor" tools:targetApi="lollipop">@color/background_true_dark</item>
|
||||
<item name="android:windowLightNavigationBar" tools:targetApi="o_mr1">false</item>
|
||||
</style>
|
||||
|
||||
<style name="ActionModeStyle" parent="@style/Widget.AppCompat.Light.ActionMode.Inverse">
|
||||
<item name="background">@color/colorPrimary</item>
|
||||
<item name="titleTextStyle">@style/ActionModeTitleTextStyle</item>
|
||||
<item name="iconColorPrimary">@color/icon_primary</item>
|
||||
<item name="iconColorInverted">@color/icon_primary_inverted</item>
|
||||
</style>
|
||||
|
||||
<style name="ActionModeStyle.Dark" parent="@style/Widget.AppCompat.Light.ActionMode.Inverse">
|
||||
<style name="Theme.Aegis.Dark" parent="Theme.MaterialComponents.NoActionBar">
|
||||
<item name="colorPrimary">@color/colorPrimary</item>
|
||||
<item name="background">@color/colorPrimary</item>
|
||||
<item name="titleTextStyle">@style/ActionModeTitleTextStyle</item>
|
||||
<item name="iconColorPrimary">@color/icon_primary</item>
|
||||
<item name="iconColorInverted">@color/icon_primary_inverted</item>
|
||||
<item name="alertDialogStyle">@style/DialogStyle.Dark</item>
|
||||
</style>
|
||||
<item name="colorSecondary">@color/colorSecondary</item>
|
||||
<item name="colorAppBar">@color/colorPrimary</item>
|
||||
|
||||
<style name="ActionModeStyle.TrueBlack" parent="@style/Widget.AppCompat.Light.ActionMode.Inverse">
|
||||
<item name="colorPrimary">@color/background_true_dark</item>
|
||||
<item name="background">@color/background_true_dark</item>
|
||||
<item name="titleTextStyle">@style/ActionModeTitleTextStyle</item>
|
||||
<item name="iconColorPrimary">@color/icon_primary</item>
|
||||
<item name="iconColorInverted">@color/icon_primary_inverted</item>
|
||||
<item name="alertDialogStyle">@style/DialogStyle.TrueDark</item>
|
||||
</style>
|
||||
|
||||
<style name="ActionModeTitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionMode.Title">
|
||||
<item name="android:textColor">@android:color/white</item>
|
||||
</style>
|
||||
|
||||
<style name="AppTheme.NoActionBar" parent="Theme.MaterialComponents.DayNight.NoActionBar">
|
||||
<item name="android:windowDrawsSystemBarBackgrounds" tools:targetApi="lollipop">true</item>
|
||||
<item name="android:statusBarColor" tools:targetApi="lollipop">@android:color/transparent</item>
|
||||
</style>
|
||||
|
||||
<style name="AppTheme.TransparentActionBar">
|
||||
<item name="android:actionBarStyle">@style/ThemeActionBar</item>
|
||||
<item name="android:windowActionBarOverlay">true</item>
|
||||
<!-- Support library compatibility -->
|
||||
<item name="actionBarStyle">@style/ThemeActionBar</item>
|
||||
<item name="windowActionBarOverlay">true</item>
|
||||
</style>
|
||||
|
||||
<style name="AppTheme.Fullscreen" parent="AppTheme.TransparentActionBar">
|
||||
<item name="android:windowNoTitle">true</item>
|
||||
<item name="android:windowFullscreen">true</item>
|
||||
</style>
|
||||
|
||||
<style name="AppTheme.Fullscreen.Dark" parent="AppTheme.Dark">
|
||||
<!-- AppTheme.TransparentActionBar-->
|
||||
<item name="android:actionBarStyle">@style/ThemeActionBar</item>
|
||||
<item name="android:windowActionBarOverlay">true</item>
|
||||
<item name="actionBarStyle">@style/ThemeActionBar</item>
|
||||
<item name="windowActionBarOverlay">true</item>
|
||||
|
||||
<!-- AppTheme.Fullscreen-->
|
||||
<item name="android:windowNoTitle">true</item>
|
||||
<item name="android:windowFullscreen">true</item>
|
||||
</style>
|
||||
|
||||
<style name="AppTheme.Fullscreen.TrueBlack" parent="AppTheme.TrueBlack">
|
||||
<!-- AppTheme.TransparentActionBar-->
|
||||
<item name="android:actionBarStyle">@style/ThemeActionBar</item>
|
||||
<item name="android:windowActionBarOverlay">true</item>
|
||||
<item name="actionBarStyle">@style/ThemeActionBar</item>
|
||||
<item name="windowActionBarOverlay">true</item>
|
||||
|
||||
<!-- AppTheme.Fullscreen-->
|
||||
<item name="android:windowNoTitle">true</item>
|
||||
<item name="android:windowFullscreen">true</item>
|
||||
</style>
|
||||
|
||||
<style name="AppTheme.Dark" parent="Theme.MaterialComponents">
|
||||
<item name="primaryText">@color/primary_text_dark</item>
|
||||
<item name="secondaryText">@color/secondary_text_dark</item>
|
||||
<item name="cardBackground">@color/card_background_dark</item>
|
||||
<item name="cardBackgroundFocused">@color/card_background_focused_dark</item>
|
||||
<item name="codePrimaryText">@color/code_primary_text_dark</item>
|
||||
<item name="colorPrimary">@color/colorPrimary</item>
|
||||
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
|
||||
<item name="preferenceTheme">@style/PreferenceTheme</item>
|
||||
<item name="colorAccent">@color/colorAccent</item>
|
||||
<item name="background">@color/background_dark</item>
|
||||
<item name="divider">@color/divider_dark</item>
|
||||
<item name="authText">@color/primary_text_inverted</item>
|
||||
|
||||
<item name="iconColorPrimary">@color/icon_primary_dark</item>
|
||||
<item name="iconColorInverted">@color/icon_primary_dark_inverted</item>
|
||||
|
||||
<item name="actionModeStyle">@style/ActionModeStyle.Dark</item>
|
||||
<item name="alertDialogTheme">@style/DialogStyle.Dark</item>
|
||||
|
||||
<item name="android:navigationBarColor" tools:targetApi="lollipop">@color/background_dark</item>
|
||||
<item name="android:windowLightNavigationBar" tools:targetApi="o_mr1">false</item>
|
||||
|
||||
<item name="dot_color">@color/indicator_dot_dark</item>
|
||||
<item name="dot_color_selected">@color/indicator_dot_selected_dark</item>
|
||||
|
||||
<item name="popupTheme">@style/ThemeOverlay.MaterialComponents.Dark</item>
|
||||
<item name="actionModeStyle">@style/Theme.Aegis.ActionMode.Dark</item>
|
||||
<item name="alertDialogTheme">@style/Theme.Aegis.Dialog.Dark</item>
|
||||
<item name="preferenceTheme">@style/Theme.Aegis.Preference.Dark</item>
|
||||
<item name="textInputStyle">@style/Widget.Aegis.TextInput.Dark</item>
|
||||
<item name="dropdownStyle">@style/Widget.Aegis.Dropdown.Dark</item>
|
||||
<item name="bottomSheetDialogTheme">@style/ThemeOverLay.Aegis.BottomSheetDialog.Rounded</item>
|
||||
|
||||
<item name="windowActionModeOverlay">true</item>
|
||||
<item name="android:statusBarColor">?attr/colorAppBar</item>
|
||||
<item name="android:indeterminateTint">@color/colorSecondary</item>
|
||||
<item name="android:colorBackground">@color/background_dark</item>
|
||||
<item name="android:colorEdgeEffect">@color/background_dark</item>
|
||||
<item name="android:colorControlActivated">@color/colorSecondary</item>
|
||||
</style>
|
||||
|
||||
<style name="AppTheme.TrueBlack" parent="AppTheme.Dark">
|
||||
<item name="colorPrimary">@color/background_true_dark</item>
|
||||
<style name="Theme.Aegis.Dark.Default" />
|
||||
<style name="Theme.Aegis.Dark.NoActionBar">
|
||||
<item name="android:statusBarColor">?attr/background</item>
|
||||
<item name="android:navigationBarColor">?attr/background</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Aegis.Dark.Fullscreen" parent="Theme.Aegis.Dark.NoActionBar">
|
||||
<item name="android:windowNoTitle">true</item>
|
||||
<item name="android:windowFullscreen">true</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Aegis.TrueDark" parent="Theme.Aegis.Dark">
|
||||
<item name="colorAppBar">@color/background_true_dark</item>
|
||||
<item name="cardBackground">@color/background_true_dark</item>
|
||||
<item name="background">@color/background_true_dark</item>
|
||||
<item name="cardBackgroundFocused">@color/card_background_focused_true_dark</item>
|
||||
<item name="colorPrimaryDark">@color/background_true_dark</item>
|
||||
<item name="preferenceTheme">@style/PreferenceTheme</item>
|
||||
<item name="actionModeStyle">@style/ActionModeStyle.TrueBlack</item>
|
||||
<item name="alertDialogTheme">@style/DialogStyle.TrueDark</item>
|
||||
<item name="divider">@color/divider_true_dark</item>
|
||||
|
||||
<item name="android:navigationBarColor" tools:targetApi="lollipop">@color/background_true_dark</item>
|
||||
<item name="android:windowLightNavigationBar" tools:targetApi="o_mr1">false</item>
|
||||
<item name="popupTheme">@style/ThemeOverlay.MaterialComponents.Dark</item>
|
||||
<item name="actionModeStyle">@style/Theme.Aegis.ActionMode.TrueDark</item>
|
||||
<item name="alertDialogTheme">@style/Theme.Aegis.Dialog.TrueDark</item>
|
||||
<item name="preferenceTheme">@style/Theme.Aegis.Preference.Dark</item>
|
||||
<item name="textInputStyle">@style/Widget.Aegis.TextInput.Dark</item>
|
||||
<item name="dropdownStyle">@style/Widget.Aegis.Dropdown.Dark</item>
|
||||
<item name="bottomSheetDialogTheme">@style/ThemeOverLay.Aegis.BottomSheetDialog.Rounded</item>
|
||||
|
||||
<item name="windowActionModeOverlay">true</item>
|
||||
<item name="android:statusBarColor">@color/background_true_dark</item>
|
||||
<item name="android:windowBackground">@color/background_true_dark</item>
|
||||
<item name="android:colorBackground">@color/background_true_dark</item>
|
||||
<item name="android:colorEdgeEffect">@color/background_true_dark</item>
|
||||
</style>
|
||||
|
||||
<style name="AppTheme.Dark.TransparentActionBar">
|
||||
<item name="android:actionBarStyle">@style/ThemeActionBar</item>
|
||||
<item name="android:windowActionBarOverlay">true</item>
|
||||
<!-- Support library compatibility -->
|
||||
<item name="actionBarStyle">@style/ThemeActionBar</item>
|
||||
<item name="windowActionBarOverlay">true</item>
|
||||
<style name="Theme.Aegis.TrueDark.Default" />
|
||||
<style name="Theme.Aegis.TrueDark.NoActionBar">
|
||||
<item name="android:statusBarColor">?attr/background</item>
|
||||
<item name="android:navigationBarColor">?attr/background</item>
|
||||
</style>
|
||||
|
||||
<style name="fab_label_style">
|
||||
<item name="android:background">@drawable/fab_label_background</item>
|
||||
<item name="android:textColor">#FFFFFF</item>
|
||||
<style name="Theme.Aegis.TrueDark.Fullscreen" parent="Theme.Aegis.TrueDark.NoActionBar">
|
||||
<item name="android:windowNoTitle">true</item>
|
||||
<item name="android:windowFullscreen">true</item>
|
||||
</style>
|
||||
|
||||
<style name="DialogStyle" parent="Theme.MaterialComponents.Light.Dialog.Alert">
|
||||
<style name="Theme.Aegis.Preference.Light" parent="@style/PreferenceThemeOverlay.v14.Material">
|
||||
<item name="android:tint">@color/icon_primary</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Aegis.Preference.Dark" parent="@style/PreferenceThemeOverlay.v14.Material">
|
||||
<item name="android:tint">@color/icon_primary_dark</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Aegis.ActionMode.Light" parent="@style/Widget.AppCompat.Light.ActionMode.Inverse">
|
||||
<item name="background">@color/colorPrimary</item>
|
||||
<item name="titleTextStyle">@style/Theme.Aegis.ActionMode.Title</item>
|
||||
<item name="iconColorPrimary">@color/icon_primary</item>
|
||||
<item name="iconColorInverted">@color/icon_primary_inverted</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Aegis.ActionMode.Dark" parent="@style/Widget.AppCompat.Light.ActionMode.Inverse">
|
||||
<item name="colorPrimary">@color/colorPrimary</item>
|
||||
<item name="background">@color/colorPrimary</item>
|
||||
<item name="titleTextStyle">@style/Theme.Aegis.ActionMode.Title</item>
|
||||
<item name="iconColorPrimary">@color/icon_primary</item>
|
||||
<item name="iconColorInverted">@color/icon_primary_inverted</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Aegis.ActionMode.TrueDark" parent="@style/Widget.AppCompat.Light.ActionMode.Inverse">
|
||||
<item name="colorPrimary">@color/background_true_dark</item>
|
||||
<item name="background">@color/background_true_dark</item>
|
||||
<item name="titleTextStyle">@style/Theme.Aegis.ActionMode.Title</item>
|
||||
<item name="iconColorPrimary">@color/icon_primary</item>
|
||||
<item name="iconColorInverted">@color/icon_primary_inverted</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Aegis.ActionMode.Title" parent="@style/TextAppearance.AppCompat.Widget.ActionMode.Title">
|
||||
<item name="android:textColor">@android:color/white</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Aegis.Dialog.Light" parent="Theme.MaterialComponents.Light.Dialog.Alert">
|
||||
<item name="android:background">@color/card_background</item>
|
||||
<item name="colorAccent">@color/colorAccent</item>
|
||||
<item name="colorSecondary">@color/colorSecondary</item>
|
||||
<item name="textColorAlertDialogListItem">@color/primary_text</item>
|
||||
|
||||
<item name="buttonBarPositiveButtonStyle">@style/Widget.Aegis.DialogButton</item>
|
||||
<item name="buttonBarNegativeButtonStyle">@style/Widget.Aegis.DialogButton</item>
|
||||
<item name="buttonBarNeutralButtonStyle">@style/Widget.Aegis.DialogButton</item>
|
||||
</style>
|
||||
|
||||
<style name="DialogStyle.Dark" parent="Theme.MaterialComponents.Dialog">
|
||||
<style name="Theme.Aegis.Dialog.Dark" parent="Theme.MaterialComponents.Dialog.Alert">
|
||||
<item name="android:background">@color/card_background_dark</item>
|
||||
<item name="colorAccent">@color/colorAccent</item>
|
||||
<item name="colorSecondary">@color/colorSecondary</item>
|
||||
<item name="textColorAlertDialogListItem">@color/primary_text_dark</item>
|
||||
|
||||
<item name="buttonBarPositiveButtonStyle">@style/Widget.Aegis.DialogButton</item>
|
||||
<item name="buttonBarNegativeButtonStyle">@style/Widget.Aegis.DialogButton</item>
|
||||
<item name="buttonBarNeutralButtonStyle">@style/Widget.Aegis.DialogButton</item>
|
||||
|
||||
<!--The following lines are needed because the non-light version of this parent changes the
|
||||
min width to 80% or something. Looks weird.-->
|
||||
<item name="android:windowMinWidthMajor">97%</item>
|
||||
<item name="android:windowMinWidthMinor">97%</item>
|
||||
</style>
|
||||
|
||||
<style name="DialogStyle.TrueDark" parent="DialogStyle.Dark">
|
||||
<style name="Theme.Aegis.Dialog.TrueDark" parent="Theme.Aegis.Dialog.Dark">
|
||||
<item name="android:background">@color/card_background_focused_true_dark</item>
|
||||
</style>
|
||||
|
||||
<style name="AppTheme.NoActionBar.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
|
||||
|
||||
<style name="AppTheme.NoActionBar.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
|
||||
|
||||
<style name="PreferenceTheme" parent="@style/PreferenceThemeOverlay.v14.Material">
|
||||
<item name="android:tint">?attr/iconColorPrimary</item>
|
||||
<style name="ThemeOverlay.Aegis.AppBar" parent="ThemeOverlay.MaterialComponents.Dark.ActionBar">
|
||||
<item name="android:tint">@color/icon_primary_inverted</item>
|
||||
</style>
|
||||
|
||||
<style name="ActionBarTheme" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
|
||||
<item name="android:tint">?attr/iconColorInverted</item>
|
||||
<style name="ThemeOverlay.Aegis.Popup.Light" parent="ThemeOverlay.MaterialComponents.Light">
|
||||
<item name="android:tint">@color/icon_primary</item>
|
||||
</style>
|
||||
|
||||
<style name="AppTheme.ActionChip" parent="TextAppearance.MaterialComponents.Chip">
|
||||
<style name="ThemeOverLay.Aegis.BottomSheetDialog.Rounded" parent="@style/ThemeOverlay.MaterialComponents.BottomSheetDialog">
|
||||
<item name="bottomSheetStyle">@style/Widget.Aegis.BottomSheet.Rounded</item>
|
||||
</style>
|
||||
|
||||
<style name="Widget.Aegis.Dropdown.Light" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"/>
|
||||
<style name="Widget.Aegis.Dropdown.Dark" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu">
|
||||
<item name="boxStrokeColor">@color/text_input_box_stroke_dark</item>
|
||||
<item name="hintTextColor">@color/text_input_box_stroke_dark</item>
|
||||
<item name="endIconTint">@color/text_input_box_icon_dark</item>
|
||||
</style>
|
||||
|
||||
<style name="Widget.Aegis.TextInput.Light" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"/>
|
||||
<style name="Widget.Aegis.TextInput.Dark" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense">
|
||||
<item name="boxStrokeColor">@color/text_input_box_stroke_dark</item>
|
||||
<item name="hintTextColor">@color/text_input_box_stroke_dark</item>
|
||||
</style>
|
||||
|
||||
<style name="Widget.Aegis.DialogButton" parent="Widget.MaterialComponents.Button.TextButton.Dialog">
|
||||
<item name="rippleColor">@color/colorSecondary</item>
|
||||
<item name="android:textColor">@color/colorSecondary</item>
|
||||
</style>
|
||||
|
||||
<style name="Widget.Aegis.BottomSheet.Rounded" parent="Widget.MaterialComponents.BottomSheet">
|
||||
<item name="shapeAppearanceOverlay">@style/ShapeAppearanceOverlay.Aegis.BottomSheetDialog.Rounded</item>
|
||||
<item name="android:background">@android:color/transparent</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance.Aegis.ActionChip" parent="TextAppearance.MaterialComponents.Chip">
|
||||
<item name="android:textSize">12sp</item>
|
||||
</style>
|
||||
|
||||
<style name="BottomSheetDialog_Rounded" parent="@style/ThemeOverlay.MaterialComponents.BottomSheetDialog">
|
||||
<item name="bottomSheetStyle">@style/BottomSheet_Rounded</item>
|
||||
</style>
|
||||
|
||||
<style name="BottomSheet_Rounded" parent="Widget.MaterialComponents.BottomSheet">
|
||||
<item name="shapeAppearanceOverlay">@style/ShapeAppearanceBottomSheetDialog_Rounded</item>
|
||||
<item name="android:background">@android:color/transparent</item>
|
||||
|
||||
</style>
|
||||
|
||||
<style name="ChipUncheckedText" parent="TextAppearance.MaterialComponents.Chip">
|
||||
<item name="android:textColor">@color/card_background</item>
|
||||
</style>
|
||||
|
||||
<style name="ShapeAppearanceBottomSheetDialog_Rounded" parent="">
|
||||
<style name="ShapeAppearanceOverlay.Aegis.BottomSheetDialog.Rounded" parent="">
|
||||
<item name="cornerFamily">rounded</item>
|
||||
<item name="cornerSizeTopRight">10dp</item>
|
||||
<item name="cornerSizeTopLeft">10dp</item>
|
||||
|
|
Loading…
Add table
Reference in a new issue