Switch from Appcompat to Material Components theme

Close #354.
This commit is contained in:
Alexander Bakker 2021-01-17 13:12:43 +01:00
parent 29ea2df696
commit eae31ef94b
70 changed files with 818 additions and 760 deletions

View file

@ -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"

View file

@ -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());

View file

@ -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" />

View file

@ -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
);
}

View file

@ -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);
}
}

View file

@ -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();
}
}

View file

@ -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);

View file

@ -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)

View file

@ -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);

View file

@ -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());

View file

@ -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();

View file

@ -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();
}

View file

@ -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);

View file

@ -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();

View file

@ -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);

View file

@ -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) {

View 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>

View 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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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"

View file

@ -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>

View file

@ -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"

View file

@ -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>

View 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>

View file

@ -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>

View file

@ -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

View file

@ -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"

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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" />

View file

@ -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"

View file

@ -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"

View file

@ -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>

View 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"/>

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View 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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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" />

View file

@ -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

View file

@ -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>

View file

@ -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>