Split settings screen into different sections (#457)
add reports section Add translation, fix change lang bug not taking affect Add security section Add file viewer section Change settings screen into different sections Co-authored-by: 6543 <6543@noreply.gitea.io> Reviewed-on: https://gitea.com/gitnex/GitNex/pulls/457 Reviewed-by: 6543 <6543@noreply.gitea.io>
This commit is contained in:
parent
eca46b7913
commit
48abe71645
@ -75,6 +75,11 @@
|
|||||||
<activity android:name=".activities.FileDiffActivity" />
|
<activity android:name=".activities.FileDiffActivity" />
|
||||||
<activity android:name=".activities.CommitsActivity" />
|
<activity android:name=".activities.CommitsActivity" />
|
||||||
<activity android:name=".helpers.ssl.MemorizingActivity" android:theme="@android:style/Theme.Material.Dialog" />
|
<activity android:name=".helpers.ssl.MemorizingActivity" android:theme="@android:style/Theme.Material.Dialog" />
|
||||||
|
<activity android:name=".activities.SettingsAppearanceActivity" />
|
||||||
|
<activity android:name=".activities.SettingsFileViewerActivity" />
|
||||||
|
<activity android:name=".activities.SettingsSecurityActivity" />
|
||||||
|
<activity android:name=".activities.SettingsTranslationActivity" />
|
||||||
|
<activity android:name=".activities.SettingsReportsActivity" />
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
@ -50,6 +50,9 @@ public abstract class BaseActivity extends AppCompatActivity {
|
|||||||
setTheme(R.style.AppTheme);
|
setTheme(R.style.AppTheme);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String appLocale = tinyDb.getString("locale");
|
||||||
|
AppUtil.setAppLocale(getResources(), appLocale);
|
||||||
|
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(getLayoutResourceId());
|
setContentView(getLayoutResourceId());
|
||||||
|
|
||||||
|
@ -97,9 +97,6 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
|||||||
tinyDb.putInt("homeScreenId", 0);
|
tinyDb.putInt("homeScreenId", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
String appLocale = tinyDb.getString("locale");
|
|
||||||
AppUtil.setAppLocale(getResources(), appLocale);
|
|
||||||
|
|
||||||
boolean connToInternet = AppUtil.haveNetworkConnection(getApplicationContext());
|
boolean connToInternet = AppUtil.haveNetworkConnection(getApplicationContext());
|
||||||
|
|
||||||
if(!tinyDb.getBoolean("loggedInMode")) {
|
if(!tinyDb.getBoolean("loggedInMode")) {
|
||||||
|
@ -0,0 +1,327 @@
|
|||||||
|
package org.mian.gitnex.activities;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
import android.widget.Switch;
|
||||||
|
import android.widget.TextView;
|
||||||
|
import androidx.appcompat.app.AlertDialog;
|
||||||
|
import org.mian.gitnex.R;
|
||||||
|
import org.mian.gitnex.helpers.Toasty;
|
||||||
|
import org.mian.gitnex.util.TinyDB;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Author M M Arif
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class SettingsAppearanceActivity extends BaseActivity {
|
||||||
|
|
||||||
|
private Context ctx;
|
||||||
|
private View.OnClickListener onClickListener;
|
||||||
|
|
||||||
|
private static String[] timeList = {"Pretty", "Normal"};
|
||||||
|
private static int timeSelectedChoice = 0;
|
||||||
|
|
||||||
|
private static String[] codeBlockList = {"Green - Black", "White - Black", "Grey - Black", "White - Grey", "Dark - White"};
|
||||||
|
private static int codeBlockSelectedChoice = 0;
|
||||||
|
|
||||||
|
private static String[] homeScreenList = {"My Repositories", "Starred Repositories", "Organizations", "Repositories", "Profile"};
|
||||||
|
private static int homeScreenSelectedChoice = 0;
|
||||||
|
|
||||||
|
private static String[] customFontList = {"Roboto", "Manrope", "Source Code Pro"};
|
||||||
|
private static int customFontSelectedChoice = 0;
|
||||||
|
|
||||||
|
private static String[] themeList = {"Dark", "Light", "Auto (Day/Night)"};
|
||||||
|
private static int themeSelectedChoice = 0;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getLayoutResourceId() {
|
||||||
|
|
||||||
|
return R.layout.activity_settings_appearance;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
this.ctx = getApplicationContext();
|
||||||
|
final TinyDB tinyDb = new TinyDB(ctx);
|
||||||
|
|
||||||
|
ImageView closeActivity = findViewById(R.id.close);
|
||||||
|
|
||||||
|
final TextView tvDateTimeSelected = findViewById(R.id.tvDateTimeSelected); // setter for time
|
||||||
|
final TextView codeBlockSelected = findViewById(R.id.codeBlockSelected); // setter for code block
|
||||||
|
final TextView homeScreenSelected = findViewById(R.id.homeScreenSelected); // setter for home screen
|
||||||
|
final TextView customFontSelected = findViewById(R.id.customFontSelected); // setter for custom font
|
||||||
|
final TextView themeSelected = findViewById(R.id.themeSelected); // setter for theme
|
||||||
|
|
||||||
|
LinearLayout timeFrame = findViewById(R.id.timeFrame);
|
||||||
|
LinearLayout codeBlockFrame = findViewById(R.id.codeBlockFrame);
|
||||||
|
LinearLayout homeScreenFrame = findViewById(R.id.homeScreenFrame);
|
||||||
|
LinearLayout customFontFrame = findViewById(R.id.customFontFrame);
|
||||||
|
LinearLayout themeFrame = findViewById(R.id.themeSelectionFrame);
|
||||||
|
|
||||||
|
Switch counterBadgesSwitch = findViewById(R.id.switchCounterBadge);
|
||||||
|
|
||||||
|
initCloseListener();
|
||||||
|
closeActivity.setOnClickListener(onClickListener);
|
||||||
|
|
||||||
|
if(!tinyDb.getString("timeStr").isEmpty()) {
|
||||||
|
tvDateTimeSelected.setText(tinyDb.getString("timeStr"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!tinyDb.getString("codeBlockStr").isEmpty()) {
|
||||||
|
codeBlockSelected.setText(tinyDb.getString("codeBlockStr"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!tinyDb.getString("homeScreenStr").isEmpty()) {
|
||||||
|
homeScreenSelected.setText(tinyDb.getString("homeScreenStr"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!tinyDb.getString("customFontStr").isEmpty()) {
|
||||||
|
customFontSelected.setText(tinyDb.getString("customFontStr"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!tinyDb.getString("themeStr").isEmpty()) {
|
||||||
|
themeSelected.setText(tinyDb.getString("themeStr"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(timeSelectedChoice == 0) {
|
||||||
|
timeSelectedChoice = tinyDb.getInt("timeId");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(codeBlockSelectedChoice == 0) {
|
||||||
|
codeBlockSelectedChoice = tinyDb.getInt("codeBlockId");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(homeScreenSelectedChoice == 0) {
|
||||||
|
homeScreenSelectedChoice = tinyDb.getInt("homeScreenId");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(customFontSelectedChoice == 0) {
|
||||||
|
customFontSelectedChoice = tinyDb.getInt("customFontId", 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(themeSelectedChoice == 0) {
|
||||||
|
themeSelectedChoice = tinyDb.getInt("themeId");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(tinyDb.getBoolean("enableCounterBadges")) {
|
||||||
|
counterBadgesSwitch.setChecked(true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
counterBadgesSwitch.setChecked(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// counter badge switcher
|
||||||
|
counterBadgesSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
|
||||||
|
|
||||||
|
if (isChecked) {
|
||||||
|
tinyDb.putBoolean("enableCounterBadges", true);
|
||||||
|
Toasty.info(ctx, getResources().getString(R.string.settingsSave));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tinyDb.putBoolean("enableCounterBadges", false);
|
||||||
|
Toasty.info(ctx, getResources().getString(R.string.settingsSave));
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
// theme selection dialog
|
||||||
|
themeFrame.setOnClickListener(view -> {
|
||||||
|
|
||||||
|
AlertDialog.Builder tsBuilder = new AlertDialog.Builder(SettingsAppearanceActivity.this);
|
||||||
|
|
||||||
|
tsBuilder.setTitle(getResources().getString(R.string.themeSelectorDialogTitle));
|
||||||
|
if(themeSelectedChoice != -1) {
|
||||||
|
tsBuilder.setCancelable(true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tsBuilder.setCancelable(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
tsBuilder.setSingleChoiceItems(themeList, themeSelectedChoice, (dialogInterfaceTheme, i) -> {
|
||||||
|
|
||||||
|
themeSelectedChoice = i;
|
||||||
|
themeSelected.setText(themeList[i]);
|
||||||
|
tinyDb.putString("themeStr", themeList[i]);
|
||||||
|
tinyDb.putInt("themeId", i);
|
||||||
|
|
||||||
|
tinyDb.putBoolean("refreshParent", true);
|
||||||
|
this.recreate();
|
||||||
|
this.overridePendingTransition(0, 0);
|
||||||
|
dialogInterfaceTheme.dismiss();
|
||||||
|
Toasty.info(ctx, getResources().getString(R.string.settingsSave));
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
AlertDialog cfDialog = tsBuilder.create();
|
||||||
|
cfDialog.show();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
// custom font dialog
|
||||||
|
customFontFrame.setOnClickListener(view -> {
|
||||||
|
|
||||||
|
AlertDialog.Builder cfBuilder = new AlertDialog.Builder(SettingsAppearanceActivity.this);
|
||||||
|
|
||||||
|
cfBuilder.setTitle(R.string.settingsCustomFontSelectorDialogTitle);
|
||||||
|
if(customFontSelectedChoice != -1) {
|
||||||
|
cfBuilder.setCancelable(true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cfBuilder.setCancelable(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
cfBuilder.setSingleChoiceItems(customFontList, customFontSelectedChoice, (dialogInterfaceCustomFont, i) -> {
|
||||||
|
|
||||||
|
customFontSelectedChoice = i;
|
||||||
|
customFontSelected.setText(customFontList[i]);
|
||||||
|
tinyDb.putString("customFontStr", customFontList[i]);
|
||||||
|
tinyDb.putInt("customFontId", i);
|
||||||
|
|
||||||
|
tinyDb.putBoolean("refreshParent", true);
|
||||||
|
this.recreate();
|
||||||
|
this.overridePendingTransition(0, 0);
|
||||||
|
dialogInterfaceCustomFont.dismiss();
|
||||||
|
Toasty.info(ctx, ctx.getResources().getString(R.string.settingsSave));
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
AlertDialog cfDialog = cfBuilder.create();
|
||||||
|
cfDialog.show();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
// home screen dialog
|
||||||
|
homeScreenFrame.setOnClickListener(view -> {
|
||||||
|
|
||||||
|
AlertDialog.Builder hsBuilder = new AlertDialog.Builder(SettingsAppearanceActivity.this);
|
||||||
|
|
||||||
|
hsBuilder.setTitle(R.string.settingshomeScreenSelectorDialogTitle);
|
||||||
|
if(homeScreenSelectedChoice != -1) {
|
||||||
|
hsBuilder.setCancelable(true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
hsBuilder.setCancelable(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
hsBuilder.setSingleChoiceItems(homeScreenList, homeScreenSelectedChoice, (dialogInterfaceHomeScreen, i) -> {
|
||||||
|
|
||||||
|
homeScreenSelectedChoice = i;
|
||||||
|
homeScreenSelected.setText(homeScreenList[i]);
|
||||||
|
tinyDb.putString("homeScreenStr", homeScreenList[i]);
|
||||||
|
tinyDb.putInt("homeScreenId", i);
|
||||||
|
|
||||||
|
dialogInterfaceHomeScreen.dismiss();
|
||||||
|
Toasty.info(ctx, getResources().getString(R.string.settingsSave));
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
AlertDialog hsDialog = hsBuilder.create();
|
||||||
|
hsDialog.show();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
// code block dialog
|
||||||
|
codeBlockFrame.setOnClickListener(view -> {
|
||||||
|
|
||||||
|
AlertDialog.Builder cBuilder = new AlertDialog.Builder(SettingsAppearanceActivity.this);
|
||||||
|
|
||||||
|
cBuilder.setTitle(R.string.settingsCodeBlockSelectorDialogTitle);
|
||||||
|
if(codeBlockSelectedChoice != -1) {
|
||||||
|
cBuilder.setCancelable(true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cBuilder.setCancelable(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
cBuilder.setSingleChoiceItems(codeBlockList, codeBlockSelectedChoice, (dialogInterfaceCodeBlock, i) -> {
|
||||||
|
|
||||||
|
codeBlockSelectedChoice = i;
|
||||||
|
codeBlockSelected.setText(codeBlockList[i]);
|
||||||
|
tinyDb.putString("codeBlockStr", codeBlockList[i]);
|
||||||
|
tinyDb.putInt("codeBlockId", i);
|
||||||
|
|
||||||
|
switch(codeBlockList[i]) {
|
||||||
|
case "White - Black":
|
||||||
|
tinyDb.putInt("codeBlockColor", getResources().getColor(R.color.white));
|
||||||
|
tinyDb.putInt("codeBlockBackground", getResources().getColor(R.color.black));
|
||||||
|
break;
|
||||||
|
case "Grey - Black":
|
||||||
|
tinyDb.putInt("codeBlockColor", getResources().getColor(R.color.colorAccent));
|
||||||
|
tinyDb.putInt("codeBlockBackground", getResources().getColor(R.color.black));
|
||||||
|
break;
|
||||||
|
case "White - Grey":
|
||||||
|
tinyDb.putInt("codeBlockColor", getResources().getColor(R.color.white));
|
||||||
|
tinyDb.putInt("codeBlockBackground", getResources().getColor(R.color.colorAccent));
|
||||||
|
break;
|
||||||
|
case "Dark - White":
|
||||||
|
tinyDb.putInt("codeBlockColor", getResources().getColor(R.color.colorPrimary));
|
||||||
|
tinyDb.putInt("codeBlockBackground", getResources().getColor(R.color.white));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
tinyDb.putInt("codeBlockColor", getResources().getColor(R.color.colorLightGreen));
|
||||||
|
tinyDb.putInt("codeBlockBackground", getResources().getColor(R.color.black));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
dialogInterfaceCodeBlock.dismiss();
|
||||||
|
Toasty.info(ctx, getResources().getString(R.string.settingsSave));
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
AlertDialog cDialog = cBuilder.create();
|
||||||
|
cDialog.show();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
// time and date dialog
|
||||||
|
timeFrame.setOnClickListener(view -> {
|
||||||
|
|
||||||
|
AlertDialog.Builder tBuilder = new AlertDialog.Builder(SettingsAppearanceActivity.this);
|
||||||
|
|
||||||
|
tBuilder.setTitle(R.string.settingsTimeSelectorDialogTitle);
|
||||||
|
if(timeSelectedChoice != -1) {
|
||||||
|
tBuilder.setCancelable(true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tBuilder.setCancelable(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
tBuilder.setSingleChoiceItems(timeList, timeSelectedChoice, (dialogInterfaceTime, i) -> {
|
||||||
|
|
||||||
|
timeSelectedChoice = i;
|
||||||
|
tvDateTimeSelected.setText(timeList[i]);
|
||||||
|
tinyDb.putString("timeStr", timeList[i]);
|
||||||
|
tinyDb.putInt("timeId", i);
|
||||||
|
|
||||||
|
if("Normal".equals(timeList[i])) {
|
||||||
|
tinyDb.putString("dateFormat", "normal");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tinyDb.putString("dateFormat", "pretty");
|
||||||
|
}
|
||||||
|
|
||||||
|
dialogInterfaceTime.dismiss();
|
||||||
|
Toasty.info(ctx, getResources().getString(R.string.settingsSave));
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
AlertDialog tDialog = tBuilder.create();
|
||||||
|
tDialog.show();
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initCloseListener() {
|
||||||
|
onClickListener = view -> {
|
||||||
|
finish();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,120 @@
|
|||||||
|
package org.mian.gitnex.activities;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
import android.widget.Switch;
|
||||||
|
import android.widget.TextView;
|
||||||
|
import androidx.appcompat.app.AlertDialog;
|
||||||
|
import org.mian.gitnex.R;
|
||||||
|
import org.mian.gitnex.helpers.Toasty;
|
||||||
|
import org.mian.gitnex.util.TinyDB;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Author M M Arif
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class SettingsFileViewerActivity extends BaseActivity {
|
||||||
|
|
||||||
|
private Context ctx;
|
||||||
|
private View.OnClickListener onClickListener;
|
||||||
|
|
||||||
|
private static String[] fileveiwerSourceCodeThemesList = {"Sublime", "Arduino Light", "Github", "Far ", "Ir Black", "Android Studio"};
|
||||||
|
private static int fileveiwerSourceCodeThemesSelectedChoice = 0;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getLayoutResourceId() {
|
||||||
|
|
||||||
|
return R.layout.activity_settings_fileview;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
this.ctx = getApplicationContext();
|
||||||
|
final TinyDB tinyDb = new TinyDB(ctx);
|
||||||
|
|
||||||
|
ImageView closeActivity = findViewById(R.id.close);
|
||||||
|
|
||||||
|
initCloseListener();
|
||||||
|
closeActivity.setOnClickListener(onClickListener);
|
||||||
|
|
||||||
|
final TextView fileveiwerSourceCodeThemesSelected = findViewById(R.id.sourceCodeThemeSelected); // setter for fileviewer theme
|
||||||
|
|
||||||
|
LinearLayout sourceCodeThemeFrame = findViewById(R.id.sourceCodeThemeFrame);
|
||||||
|
|
||||||
|
Switch pdfModeSwitch = findViewById(R.id.switchPdfMode);
|
||||||
|
|
||||||
|
if(!tinyDb.getString("fileviewerSourceCodeThemeStr").isEmpty()) {
|
||||||
|
fileveiwerSourceCodeThemesSelected.setText(tinyDb.getString("fileviewerSourceCodeThemeStr"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(fileveiwerSourceCodeThemesSelectedChoice == 0) {
|
||||||
|
fileveiwerSourceCodeThemesSelectedChoice = tinyDb.getInt("fileviewerThemeId");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(tinyDb.getBoolean("enablePdfMode")) {
|
||||||
|
pdfModeSwitch.setChecked(true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
pdfModeSwitch.setChecked(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// fileviewer srouce code theme selection dialog
|
||||||
|
sourceCodeThemeFrame.setOnClickListener(view -> {
|
||||||
|
|
||||||
|
AlertDialog.Builder fvtsBuilder = new AlertDialog.Builder(SettingsFileViewerActivity.this);
|
||||||
|
|
||||||
|
fvtsBuilder.setTitle(R.string.fileviewerSourceCodeThemeSelectorDialogTitle);
|
||||||
|
if(fileveiwerSourceCodeThemesSelectedChoice != -1) {
|
||||||
|
fvtsBuilder.setCancelable(true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
fvtsBuilder.setCancelable(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
fvtsBuilder.setSingleChoiceItems(fileveiwerSourceCodeThemesList, fileveiwerSourceCodeThemesSelectedChoice, (dialogInterfaceTheme, i) -> {
|
||||||
|
|
||||||
|
fileveiwerSourceCodeThemesSelectedChoice = i;
|
||||||
|
fileveiwerSourceCodeThemesSelected.setText(fileveiwerSourceCodeThemesList[i]);
|
||||||
|
tinyDb.putString("fileviewerSourceCodeThemeStr", fileveiwerSourceCodeThemesList[i]);
|
||||||
|
tinyDb.putInt("fileviewerSourceCodeThemeId", i);
|
||||||
|
|
||||||
|
dialogInterfaceTheme.dismiss();
|
||||||
|
Toasty.info(ctx, getResources().getString(R.string.settingsSave));
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
AlertDialog cfDialog = fvtsBuilder.create();
|
||||||
|
cfDialog.show();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
// pdf night mode switcher
|
||||||
|
pdfModeSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
|
||||||
|
|
||||||
|
if(isChecked) {
|
||||||
|
tinyDb.putBoolean("enablePdfMode", true);
|
||||||
|
tinyDb.putString("enablePdfModeInit", "yes");
|
||||||
|
Toasty.info(ctx, getResources().getString(R.string.settingsSave));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tinyDb.putBoolean("enablePdfMode", false);
|
||||||
|
tinyDb.putString("enablePdfModeInit", "yes");
|
||||||
|
Toasty.info(ctx, getResources().getString(R.string.settingsSave));
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initCloseListener() {
|
||||||
|
onClickListener = view -> {
|
||||||
|
finish();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,70 @@
|
|||||||
|
package org.mian.gitnex.activities;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
import android.widget.Switch;
|
||||||
|
import org.mian.gitnex.R;
|
||||||
|
import org.mian.gitnex.helpers.Toasty;
|
||||||
|
import org.mian.gitnex.util.TinyDB;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Author M M Arif
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class SettingsReportsActivity extends BaseActivity {
|
||||||
|
|
||||||
|
private Context ctx;
|
||||||
|
private View.OnClickListener onClickListener;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getLayoutResourceId() {
|
||||||
|
|
||||||
|
return R.layout.activity_settings_reporting;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
this.ctx = getApplicationContext();
|
||||||
|
TinyDB tinyDb = new TinyDB(ctx);
|
||||||
|
|
||||||
|
ImageView closeActivity = findViewById(R.id.close);
|
||||||
|
|
||||||
|
initCloseListener();
|
||||||
|
closeActivity.setOnClickListener(onClickListener);
|
||||||
|
|
||||||
|
Switch crashReportsSwitch = findViewById(R.id.crashReportsSwitch);
|
||||||
|
|
||||||
|
if(tinyDb.getBoolean("crashReportingEnabled")) {
|
||||||
|
crashReportsSwitch.setChecked(true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
crashReportsSwitch.setChecked(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// crash reports switcher
|
||||||
|
crashReportsSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
|
||||||
|
|
||||||
|
if(isChecked) {
|
||||||
|
tinyDb.putBoolean("crashReportingEnabled", true);
|
||||||
|
Toasty.info(ctx, getResources().getString(R.string.settingsSave));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tinyDb.putBoolean("crashReportingEnabled", false);
|
||||||
|
Toasty.info(ctx, getResources().getString(R.string.settingsSave));
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initCloseListener() {
|
||||||
|
onClickListener = view -> {
|
||||||
|
finish();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,78 @@
|
|||||||
|
package org.mian.gitnex.activities;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
import androidx.appcompat.app.AlertDialog;
|
||||||
|
import org.mian.gitnex.R;
|
||||||
|
import org.mian.gitnex.helpers.ssl.MemorizingTrustManager;
|
||||||
|
import org.mian.gitnex.util.TinyDB;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Author M M Arif
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class SettingsSecurityActivity extends BaseActivity {
|
||||||
|
|
||||||
|
private Context ctx;
|
||||||
|
private View.OnClickListener onClickListener;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getLayoutResourceId() {
|
||||||
|
|
||||||
|
return R.layout.activity_settings_security;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
this.ctx = getApplicationContext();
|
||||||
|
TinyDB tinyDb = new TinyDB(ctx);
|
||||||
|
|
||||||
|
ImageView closeActivity = findViewById(R.id.close);
|
||||||
|
|
||||||
|
initCloseListener();
|
||||||
|
closeActivity.setOnClickListener(onClickListener);
|
||||||
|
|
||||||
|
LinearLayout certsFrame = findViewById(R.id.certsFrame);
|
||||||
|
|
||||||
|
// certs deletion
|
||||||
|
certsFrame.setOnClickListener(v1 -> {
|
||||||
|
|
||||||
|
AlertDialog.Builder builder = new AlertDialog.Builder(SettingsSecurityActivity.this);
|
||||||
|
|
||||||
|
builder.setTitle(getResources().getString(R.string.settingsCertsPopupTitle));
|
||||||
|
builder.setMessage(getResources().getString(R.string.settingsCertsPopupMessage));
|
||||||
|
builder.setPositiveButton(R.string.menuDeleteText, (dialog, which) -> {
|
||||||
|
|
||||||
|
ctx.getSharedPreferences(MemorizingTrustManager.KEYSTORE_NAME, Context.MODE_PRIVATE).edit().remove(MemorizingTrustManager.KEYSTORE_KEY).apply();
|
||||||
|
|
||||||
|
tinyDb.putBoolean("loggedInMode", false);
|
||||||
|
tinyDb.remove("basicAuthPassword");
|
||||||
|
tinyDb.putBoolean("basicAuthFlag", false);
|
||||||
|
//tinyDb.clear();
|
||||||
|
|
||||||
|
Intent loginActivityIntent = new Intent().setClass(ctx, LoginActivity.class);
|
||||||
|
loginActivityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
|
ctx.startActivity(loginActivityIntent);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
builder.setNeutralButton(R.string.cancelButton, (dialog, which) -> dialog.dismiss());
|
||||||
|
builder.create().show();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initCloseListener() {
|
||||||
|
onClickListener = view -> {
|
||||||
|
finish();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,164 @@
|
|||||||
|
package org.mian.gitnex.activities;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.net.Uri;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
import android.widget.TextView;
|
||||||
|
import androidx.appcompat.app.AlertDialog;
|
||||||
|
import org.mian.gitnex.R;
|
||||||
|
import org.mian.gitnex.helpers.Toasty;
|
||||||
|
import org.mian.gitnex.util.TinyDB;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Author M M Arif
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class SettingsTranslationActivity extends BaseActivity {
|
||||||
|
|
||||||
|
private Context ctx;
|
||||||
|
private View.OnClickListener onClickListener;
|
||||||
|
|
||||||
|
private static String[] langList = {"English", "Arabic", "Chinese", "Finnish", "French", "German", "Italian", "Latvian", "Persian", "Polish", "Portuguese/Brazilian", "Russian", "Serbian", "Spanish", "Turkish",
|
||||||
|
"Ukrainian"};
|
||||||
|
private static int langSelectedChoice = 0;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getLayoutResourceId() {
|
||||||
|
|
||||||
|
return R.layout.activity_settings_translation;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
this.ctx = getApplicationContext();
|
||||||
|
TinyDB tinyDb = new TinyDB(ctx);
|
||||||
|
|
||||||
|
ImageView closeActivity = findViewById(R.id.close);
|
||||||
|
|
||||||
|
initCloseListener();
|
||||||
|
closeActivity.setOnClickListener(onClickListener);
|
||||||
|
|
||||||
|
final TextView tvLanguageSelected = findViewById(R.id.tvLanguageSelected); // setter for en, fr
|
||||||
|
TextView helpTranslate = findViewById(R.id.helpTranslate);
|
||||||
|
|
||||||
|
LinearLayout langFrame = findViewById(R.id.langFrame);
|
||||||
|
|
||||||
|
helpTranslate.setOnClickListener(v12 -> {
|
||||||
|
|
||||||
|
Intent intent = new Intent();
|
||||||
|
intent.setAction(Intent.ACTION_VIEW);
|
||||||
|
intent.addCategory(Intent.CATEGORY_BROWSABLE);
|
||||||
|
intent.setData(Uri.parse(getResources().getString(R.string.crowdInLink)));
|
||||||
|
startActivity(intent);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
if(!tinyDb.getString("localeStr").isEmpty()) {
|
||||||
|
tvLanguageSelected.setText(tinyDb.getString("localeStr"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(langSelectedChoice == 0) {
|
||||||
|
langSelectedChoice = tinyDb.getInt("langId");
|
||||||
|
}
|
||||||
|
|
||||||
|
// language dialog
|
||||||
|
langFrame.setOnClickListener(view -> {
|
||||||
|
|
||||||
|
AlertDialog.Builder lBuilder = new AlertDialog.Builder(SettingsTranslationActivity.this);
|
||||||
|
|
||||||
|
lBuilder.setTitle(R.string.settingsLanguageSelectorDialogTitle);
|
||||||
|
if(langSelectedChoice != -1) {
|
||||||
|
lBuilder.setCancelable(true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
lBuilder.setCancelable(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
lBuilder.setSingleChoiceItems(langList, langSelectedChoice, (dialogInterface, i) -> {
|
||||||
|
|
||||||
|
langSelectedChoice = i;
|
||||||
|
tvLanguageSelected.setText(langList[i]);
|
||||||
|
tinyDb.putString("localeStr", langList[i]);
|
||||||
|
tinyDb.putInt("langId", i);
|
||||||
|
|
||||||
|
switch(langList[i]) {
|
||||||
|
case "Arabic":
|
||||||
|
tinyDb.putString("locale", "ar");
|
||||||
|
break;
|
||||||
|
case "Chinese":
|
||||||
|
tinyDb.putString("locale", "zh");
|
||||||
|
break;
|
||||||
|
case "Finnish":
|
||||||
|
tinyDb.putString("locale", "fi");
|
||||||
|
break;
|
||||||
|
case "French":
|
||||||
|
tinyDb.putString("locale", "fr");
|
||||||
|
break;
|
||||||
|
case "German":
|
||||||
|
tinyDb.putString("locale", "de");
|
||||||
|
break;
|
||||||
|
case "Italian":
|
||||||
|
tinyDb.putString("locale", "it");
|
||||||
|
break;
|
||||||
|
case "Latvian":
|
||||||
|
tinyDb.putString("locale", "lv");
|
||||||
|
break;
|
||||||
|
case "Persian":
|
||||||
|
tinyDb.putString("locale", "fa");
|
||||||
|
break;
|
||||||
|
case "Polish":
|
||||||
|
tinyDb.putString("locale", "pl");
|
||||||
|
break;
|
||||||
|
case "Portuguese/Brazilian":
|
||||||
|
tinyDb.putString("locale", "pt");
|
||||||
|
break;
|
||||||
|
case "Russian":
|
||||||
|
tinyDb.putString("locale", "ru");
|
||||||
|
break;
|
||||||
|
case "Serbian":
|
||||||
|
tinyDb.putString("locale", "sr");
|
||||||
|
break;
|
||||||
|
case "Spanish":
|
||||||
|
tinyDb.putString("locale", "es");
|
||||||
|
break;
|
||||||
|
case "Turkish":
|
||||||
|
tinyDb.putString("locale", "tr");
|
||||||
|
break;
|
||||||
|
case "Ukrainian":
|
||||||
|
tinyDb.putString("locale", "uk");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
tinyDb.putString("locale", "en");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
tinyDb.putBoolean("refreshParent", true);
|
||||||
|
this.recreate();
|
||||||
|
this.overridePendingTransition(0, 0);
|
||||||
|
dialogInterface.dismiss();
|
||||||
|
Toasty.info(ctx, getResources().getString(R.string.settingsSave));
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
lBuilder.setNegativeButton(getString(R.string.cancelButton), (dialog, which) -> dialog.dismiss());
|
||||||
|
|
||||||
|
AlertDialog lDialog = lBuilder.create();
|
||||||
|
lDialog.show();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initCloseListener() {
|
||||||
|
onClickListener = view -> {
|
||||||
|
finish();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,23 +1,20 @@
|
|||||||
package org.mian.gitnex.fragments;
|
package org.mian.gitnex.fragments;
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.net.Uri;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.Switch;
|
|
||||||
import android.widget.TextView;
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.appcompat.app.AlertDialog;
|
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import org.mian.gitnex.R;
|
import org.mian.gitnex.R;
|
||||||
import org.mian.gitnex.activities.MainActivity;
|
import org.mian.gitnex.activities.SettingsAppearanceActivity;
|
||||||
import org.mian.gitnex.helpers.Toasty;
|
import org.mian.gitnex.activities.SettingsFileViewerActivity;
|
||||||
import org.mian.gitnex.helpers.ssl.MemorizingTrustManager;
|
import org.mian.gitnex.activities.SettingsReportsActivity;
|
||||||
|
import org.mian.gitnex.activities.SettingsSecurityActivity;
|
||||||
|
import org.mian.gitnex.activities.SettingsTranslationActivity;
|
||||||
import org.mian.gitnex.util.TinyDB;
|
import org.mian.gitnex.util.TinyDB;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@ -27,518 +24,44 @@ import java.util.Objects;
|
|||||||
|
|
||||||
public class SettingsFragment extends Fragment {
|
public class SettingsFragment extends Fragment {
|
||||||
|
|
||||||
private Context ctx = null;
|
|
||||||
|
|
||||||
private static String[] langList = {"Arabic", "Chinese", "English", "Finnish", "French", "German", "Italian", "Latvian", "Persian", "Polish", "Portuguese/Brazilian", "Russian", "Serbian", "Spanish", "Turkish", "Ukrainian"};
|
|
||||||
private static int langSelectedChoice = 0;
|
|
||||||
|
|
||||||
private static String[] timeList = {"Pretty", "Normal"};
|
|
||||||
private static int timeSelectedChoice = 0;
|
|
||||||
|
|
||||||
private static String[] codeBlockList = {"Green - Black", "White - Black", "Grey - Black", "White - Grey", "Dark - White"};
|
|
||||||
private static int codeBlockSelectedChoice = 0;
|
|
||||||
|
|
||||||
private static String[] homeScreenList = {"My Repositories", "Starred Repositories", "Organizations", "Repositories", "Profile"};
|
|
||||||
private static int homeScreenSelectedChoice = 0;
|
|
||||||
|
|
||||||
private static String[] customFontList = {"Roboto", "Manrope", "Source Code Pro"};
|
|
||||||
private static int customFontSelectedChoice = 0;
|
|
||||||
|
|
||||||
private static String[] themeList = {"Dark", "Light", "Auto (Day/Night)"};
|
|
||||||
private static int themeSelectedChoice = 0;
|
|
||||||
|
|
||||||
private static String[] fileveiwerSourceCodeThemesList = {"Sublime", "Arduino Light", "Github", "Far ", "Ir Black", "Android Studio"};
|
|
||||||
private static int fileveiwerSourceCodeThemesSelectedChoice = 0;
|
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||||
|
|
||||||
View v = inflater.inflate(R.layout.fragment_settings, container, false);
|
View v = inflater.inflate(R.layout.fragment_settings, container, false);
|
||||||
final TinyDB tinyDb = new TinyDB(getContext());
|
|
||||||
|
|
||||||
final TextView tvLanguageSelected = v.findViewById(R.id.tvLanguageSelected); // setter for en, fr
|
LinearLayout appreanceFrame = v.findViewById(R.id.appreanceFrame);
|
||||||
final TextView tvDateTimeSelected = v.findViewById(R.id.tvDateTimeSelected); // setter for time
|
LinearLayout fileViewerFrame = v.findViewById(R.id.fileViewerFrame);
|
||||||
final TextView codeBlockSelected = v.findViewById(R.id.codeBlockSelected); // setter for code block
|
LinearLayout securityFrame = v.findViewById(R.id.securityFrame);
|
||||||
final TextView homeScreenSelected = v.findViewById(R.id.homeScreenSelected); // setter for home screen
|
LinearLayout languagesFrame = v.findViewById(R.id.languagesFrame);
|
||||||
final TextView customFontSelected = v.findViewById(R.id.customFontSelected); // setter for custom font
|
LinearLayout reportsFrame = v.findViewById(R.id.reportsFrame);
|
||||||
final TextView themeSelected = v.findViewById(R.id.themeSelected); // setter for theme
|
|
||||||
final TextView fileveiwerSourceCodeThemesSelected = v.findViewById(R.id.sourceCodeThemeSelected); // setter for fileviewer theme
|
|
||||||
|
|
||||||
LinearLayout langFrame = v.findViewById(R.id.langFrame);
|
appreanceFrame.setOnClickListener(v1 -> startActivity(new Intent(getContext(), SettingsAppearanceActivity.class)));
|
||||||
LinearLayout timeFrame = v.findViewById(R.id.timeFrame);
|
|
||||||
LinearLayout codeBlockFrame = v.findViewById(R.id.codeBlockFrame);
|
|
||||||
LinearLayout homeScreenFrame = v.findViewById(R.id.homeScreenFrame);
|
|
||||||
LinearLayout customFontFrame = v.findViewById(R.id.customFontFrame);
|
|
||||||
LinearLayout themeFrame = v.findViewById(R.id.themeSelectionFrame);
|
|
||||||
LinearLayout certsFrame = v.findViewById(R.id.certsFrame);
|
|
||||||
LinearLayout sourceCodeThemeFrame = v.findViewById(R.id.sourceCodeThemeFrame);
|
|
||||||
|
|
||||||
Switch counterBadgesSwitch = v.findViewById(R.id.switchCounterBadge);
|
fileViewerFrame.setOnClickListener(v1 -> startActivity(new Intent(getContext(), SettingsFileViewerActivity.class)));
|
||||||
Switch pdfModeSwitch = v.findViewById(R.id.switchPdfMode);
|
|
||||||
Switch crashReportsSwitch = v.findViewById(R.id.crashReportsSwitch);
|
|
||||||
TextView helpTranslate = v.findViewById(R.id.helpTranslate);
|
|
||||||
|
|
||||||
helpTranslate.setOnClickListener(v12 -> {
|
securityFrame.setOnClickListener(v1 -> startActivity(new Intent(getContext(), SettingsSecurityActivity.class)));
|
||||||
|
|
||||||
Intent intent = new Intent();
|
languagesFrame.setOnClickListener(v1 -> startActivity(new Intent(getContext(), SettingsTranslationActivity.class)));
|
||||||
intent.setAction(Intent.ACTION_VIEW);
|
|
||||||
intent.addCategory(Intent.CATEGORY_BROWSABLE);
|
|
||||||
intent.setData(Uri.parse(getResources().getString(R.string.crowdInLink)));
|
|
||||||
startActivity(intent);
|
|
||||||
|
|
||||||
});
|
reportsFrame.setOnClickListener(v1 -> startActivity(new Intent(getContext(), SettingsReportsActivity.class)));
|
||||||
|
|
||||||
if(!tinyDb.getString("localeStr").isEmpty()) {
|
|
||||||
tvLanguageSelected.setText(tinyDb.getString("localeStr"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!tinyDb.getString("timeStr").isEmpty()) {
|
|
||||||
tvDateTimeSelected.setText(tinyDb.getString("timeStr"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!tinyDb.getString("codeBlockStr").isEmpty()) {
|
|
||||||
codeBlockSelected.setText(tinyDb.getString("codeBlockStr"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!tinyDb.getString("homeScreenStr").isEmpty()) {
|
|
||||||
homeScreenSelected.setText(tinyDb.getString("homeScreenStr"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!tinyDb.getString("customFontStr").isEmpty()) {
|
|
||||||
customFontSelected.setText(tinyDb.getString("customFontStr"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!tinyDb.getString("themeStr").isEmpty()) {
|
|
||||||
themeSelected.setText(tinyDb.getString("themeStr"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!tinyDb.getString("fileviewerSourceCodeThemeStr").isEmpty()) {
|
|
||||||
fileveiwerSourceCodeThemesSelected.setText(tinyDb.getString("fileviewerSourceCodeThemeStr"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if(langSelectedChoice == 0) {
|
|
||||||
langSelectedChoice = tinyDb.getInt("langId");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(timeSelectedChoice == 0) {
|
|
||||||
timeSelectedChoice = tinyDb.getInt("timeId");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(codeBlockSelectedChoice == 0) {
|
|
||||||
codeBlockSelectedChoice = tinyDb.getInt("codeBlockId");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(homeScreenSelectedChoice == 0) {
|
|
||||||
homeScreenSelectedChoice = tinyDb.getInt("homeScreenId");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(customFontSelectedChoice == 0) {
|
|
||||||
customFontSelectedChoice = tinyDb.getInt("customFontId", 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(themeSelectedChoice == 0) {
|
|
||||||
themeSelectedChoice = tinyDb.getInt("themeId");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(fileveiwerSourceCodeThemesSelectedChoice == 0) {
|
|
||||||
fileveiwerSourceCodeThemesSelectedChoice = tinyDb.getInt("fileviewerThemeId");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(tinyDb.getBoolean("enableCounterBadges")) {
|
|
||||||
counterBadgesSwitch.setChecked(true);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
counterBadgesSwitch.setChecked(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(tinyDb.getBoolean("enablePdfMode")) {
|
|
||||||
pdfModeSwitch.setChecked(true);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
pdfModeSwitch.setChecked(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(tinyDb.getBoolean("crashReportingEnabled")) {
|
|
||||||
crashReportsSwitch.setChecked(true);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
crashReportsSwitch.setChecked(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
// fileviewer srouce code theme selection dialog
|
|
||||||
sourceCodeThemeFrame.setOnClickListener(view -> {
|
|
||||||
|
|
||||||
AlertDialog.Builder fvtsBuilder = new AlertDialog.Builder(ctx);
|
|
||||||
|
|
||||||
fvtsBuilder.setTitle(R.string.fileviewerSourceCodeThemeSelectorDialogTitle);
|
|
||||||
if(fileveiwerSourceCodeThemesSelectedChoice != -1) {
|
|
||||||
fvtsBuilder.setCancelable(true);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
fvtsBuilder.setCancelable(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
fvtsBuilder.setSingleChoiceItems(fileveiwerSourceCodeThemesList, fileveiwerSourceCodeThemesSelectedChoice, (dialogInterfaceTheme, i) -> {
|
|
||||||
|
|
||||||
fileveiwerSourceCodeThemesSelectedChoice = i;
|
|
||||||
fileveiwerSourceCodeThemesSelected.setText(fileveiwerSourceCodeThemesList[i]);
|
|
||||||
tinyDb.putString("fileviewerSourceCodeThemeStr", fileveiwerSourceCodeThemesList[i]);
|
|
||||||
tinyDb.putInt("fileviewerSourceCodeThemeId", i);
|
|
||||||
|
|
||||||
Objects.requireNonNull(getActivity()).recreate();
|
|
||||||
getActivity().overridePendingTransition(0, 0);
|
|
||||||
dialogInterfaceTheme.dismiss();
|
|
||||||
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
AlertDialog cfDialog = fvtsBuilder.create();
|
|
||||||
cfDialog.show();
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
// certs deletion
|
|
||||||
certsFrame.setOnClickListener(v1 -> {
|
|
||||||
|
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
|
|
||||||
builder.setTitle(getResources().getString(R.string.settingsCertsPopupTitle));
|
|
||||||
builder.setMessage(getResources().getString(R.string.settingsCertsPopupMessage));
|
|
||||||
builder.setPositiveButton(R.string.menuDeleteText, (dialog, which) -> {
|
|
||||||
|
|
||||||
ctx.getSharedPreferences(MemorizingTrustManager.KEYSTORE_NAME, Context.MODE_PRIVATE).edit().remove(MemorizingTrustManager.KEYSTORE_KEY).apply();
|
|
||||||
|
|
||||||
MainActivity.logout(Objects.requireNonNull(getActivity()), ctx);
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
builder.setNeutralButton(R.string.cancelButton, (dialog, which) -> dialog.dismiss());
|
|
||||||
builder.create().show();
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
// counter badge switcher
|
|
||||||
counterBadgesSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
|
|
||||||
|
|
||||||
if (isChecked) {
|
|
||||||
tinyDb.putBoolean("enableCounterBadges", true);
|
|
||||||
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
tinyDb.putBoolean("enableCounterBadges", false);
|
|
||||||
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
// pdf night mode switcher
|
|
||||||
pdfModeSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
|
|
||||||
|
|
||||||
if(isChecked) {
|
|
||||||
tinyDb.putBoolean("enablePdfMode", true);
|
|
||||||
tinyDb.putString("enablePdfModeInit", "yes");
|
|
||||||
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
tinyDb.putBoolean("enablePdfMode", false);
|
|
||||||
tinyDb.putString("enablePdfModeInit", "yes");
|
|
||||||
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
// crash reports switcher
|
|
||||||
crashReportsSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
|
|
||||||
|
|
||||||
if(isChecked) {
|
|
||||||
tinyDb.putBoolean("crashReportingEnabled", true);
|
|
||||||
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
tinyDb.putBoolean("crashReportingEnabled", false);
|
|
||||||
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
// theme selection dialog
|
|
||||||
themeFrame.setOnClickListener(view -> {
|
|
||||||
|
|
||||||
AlertDialog.Builder tsBuilder = new AlertDialog.Builder(ctx);
|
|
||||||
|
|
||||||
tsBuilder.setTitle(R.string.themeSelectorDialogTitle);
|
|
||||||
if(themeSelectedChoice != -1) {
|
|
||||||
tsBuilder.setCancelable(true);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
tsBuilder.setCancelable(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
tsBuilder.setSingleChoiceItems(themeList, themeSelectedChoice, (dialogInterfaceTheme, i) -> {
|
|
||||||
|
|
||||||
themeSelectedChoice = i;
|
|
||||||
themeSelected.setText(themeList[i]);
|
|
||||||
tinyDb.putString("themeStr", themeList[i]);
|
|
||||||
tinyDb.putInt("themeId", i);
|
|
||||||
|
|
||||||
Objects.requireNonNull(getActivity()).recreate();
|
|
||||||
getActivity().overridePendingTransition(0, 0);
|
|
||||||
dialogInterfaceTheme.dismiss();
|
|
||||||
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
AlertDialog cfDialog = tsBuilder.create();
|
|
||||||
cfDialog.show();
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
// custom font dialog
|
|
||||||
customFontFrame.setOnClickListener(view -> {
|
|
||||||
|
|
||||||
AlertDialog.Builder cfBuilder = new AlertDialog.Builder(ctx);
|
|
||||||
|
|
||||||
cfBuilder.setTitle(R.string.settingsCustomFontSelectorDialogTitle);
|
|
||||||
if(customFontSelectedChoice != -1) {
|
|
||||||
cfBuilder.setCancelable(true);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
cfBuilder.setCancelable(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
cfBuilder.setSingleChoiceItems(customFontList, customFontSelectedChoice, (dialogInterfaceCustomFont, i) -> {
|
|
||||||
|
|
||||||
customFontSelectedChoice = i;
|
|
||||||
customFontSelected.setText(customFontList[i]);
|
|
||||||
tinyDb.putString("customFontStr", customFontList[i]);
|
|
||||||
tinyDb.putInt("customFontId", i);
|
|
||||||
|
|
||||||
Objects.requireNonNull(getActivity()).recreate();
|
|
||||||
getActivity().overridePendingTransition(0, 0);
|
|
||||||
dialogInterfaceCustomFont.dismiss();
|
|
||||||
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
AlertDialog cfDialog = cfBuilder.create();
|
|
||||||
cfDialog.show();
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
// home screen dialog
|
|
||||||
homeScreenFrame.setOnClickListener(view -> {
|
|
||||||
|
|
||||||
AlertDialog.Builder hsBuilder = new AlertDialog.Builder(ctx);
|
|
||||||
|
|
||||||
hsBuilder.setTitle(R.string.settingshomeScreenSelectorDialogTitle);
|
|
||||||
if(homeScreenSelectedChoice != -1) {
|
|
||||||
hsBuilder.setCancelable(true);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
hsBuilder.setCancelable(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
hsBuilder.setSingleChoiceItems(homeScreenList, homeScreenSelectedChoice, (dialogInterfaceHomeScreen, i) -> {
|
|
||||||
|
|
||||||
homeScreenSelectedChoice = i;
|
|
||||||
homeScreenSelected.setText(homeScreenList[i]);
|
|
||||||
tinyDb.putString("homeScreenStr", homeScreenList[i]);
|
|
||||||
tinyDb.putInt("homeScreenId", i);
|
|
||||||
|
|
||||||
dialogInterfaceHomeScreen.dismiss();
|
|
||||||
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
AlertDialog hsDialog = hsBuilder.create();
|
|
||||||
hsDialog.show();
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
// code block dialog
|
|
||||||
codeBlockFrame.setOnClickListener(view -> {
|
|
||||||
|
|
||||||
AlertDialog.Builder cBuilder = new AlertDialog.Builder(ctx);
|
|
||||||
|
|
||||||
cBuilder.setTitle(R.string.settingsCodeBlockSelectorDialogTitle);
|
|
||||||
if(codeBlockSelectedChoice != -1) {
|
|
||||||
cBuilder.setCancelable(true);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
cBuilder.setCancelable(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
cBuilder.setSingleChoiceItems(codeBlockList, codeBlockSelectedChoice, (dialogInterfaceCodeBlock, i) -> {
|
|
||||||
|
|
||||||
codeBlockSelectedChoice = i;
|
|
||||||
codeBlockSelected.setText(codeBlockList[i]);
|
|
||||||
tinyDb.putString("codeBlockStr", codeBlockList[i]);
|
|
||||||
tinyDb.putInt("codeBlockId", i);
|
|
||||||
|
|
||||||
switch(codeBlockList[i]) {
|
|
||||||
case "White - Black":
|
|
||||||
tinyDb.putInt("codeBlockColor", getResources().getColor(R.color.white));
|
|
||||||
tinyDb.putInt("codeBlockBackground", getResources().getColor(R.color.black));
|
|
||||||
break;
|
|
||||||
case "Grey - Black":
|
|
||||||
tinyDb.putInt("codeBlockColor", getResources().getColor(R.color.colorAccent));
|
|
||||||
tinyDb.putInt("codeBlockBackground", getResources().getColor(R.color.black));
|
|
||||||
break;
|
|
||||||
case "White - Grey":
|
|
||||||
tinyDb.putInt("codeBlockColor", getResources().getColor(R.color.white));
|
|
||||||
tinyDb.putInt("codeBlockBackground", getResources().getColor(R.color.colorAccent));
|
|
||||||
break;
|
|
||||||
case "Dark - White":
|
|
||||||
tinyDb.putInt("codeBlockColor", getResources().getColor(R.color.colorPrimary));
|
|
||||||
tinyDb.putInt("codeBlockBackground", getResources().getColor(R.color.white));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
tinyDb.putInt("codeBlockColor", getResources().getColor(R.color.colorLightGreen));
|
|
||||||
tinyDb.putInt("codeBlockBackground", getResources().getColor(R.color.black));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
dialogInterfaceCodeBlock.dismiss();
|
|
||||||
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
AlertDialog cDialog = cBuilder.create();
|
|
||||||
cDialog.show();
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
// language dialog
|
|
||||||
langFrame.setOnClickListener(view -> {
|
|
||||||
|
|
||||||
AlertDialog.Builder lBuilder = new AlertDialog.Builder(ctx);
|
|
||||||
|
|
||||||
lBuilder.setTitle(R.string.settingsLanguageSelectorDialogTitle);
|
|
||||||
if(langSelectedChoice != -1) {
|
|
||||||
lBuilder.setCancelable(true);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
lBuilder.setCancelable(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
lBuilder.setSingleChoiceItems(langList, langSelectedChoice, (dialogInterface, i) -> {
|
|
||||||
|
|
||||||
langSelectedChoice = i;
|
|
||||||
tvLanguageSelected.setText(langList[i]);
|
|
||||||
tinyDb.putString("localeStr", langList[i]);
|
|
||||||
tinyDb.putInt("langId", i);
|
|
||||||
|
|
||||||
switch(langList[i]) {
|
|
||||||
case "Arabic":
|
|
||||||
tinyDb.putString("locale", "ar");
|
|
||||||
break;
|
|
||||||
case "Chinese":
|
|
||||||
tinyDb.putString("locale", "zh");
|
|
||||||
break;
|
|
||||||
case "Finnish":
|
|
||||||
tinyDb.putString("locale", "fi");
|
|
||||||
break;
|
|
||||||
case "French":
|
|
||||||
tinyDb.putString("locale", "fr");
|
|
||||||
break;
|
|
||||||
case "German":
|
|
||||||
tinyDb.putString("locale", "de");
|
|
||||||
break;
|
|
||||||
case "Italian":
|
|
||||||
tinyDb.putString("locale", "it");
|
|
||||||
break;
|
|
||||||
case "Latvian":
|
|
||||||
tinyDb.putString("locale", "lv");
|
|
||||||
break;
|
|
||||||
case "Persian":
|
|
||||||
tinyDb.putString("locale", "fa");
|
|
||||||
break;
|
|
||||||
case "Polish":
|
|
||||||
tinyDb.putString("locale", "pl");
|
|
||||||
break;
|
|
||||||
case "Portuguese/Brazilian":
|
|
||||||
tinyDb.putString("locale", "pt");
|
|
||||||
break;
|
|
||||||
case "Russian":
|
|
||||||
tinyDb.putString("locale", "ru");
|
|
||||||
break;
|
|
||||||
case "Serbian":
|
|
||||||
tinyDb.putString("locale", "sr");
|
|
||||||
break;
|
|
||||||
case "Spanish":
|
|
||||||
tinyDb.putString("locale", "es");
|
|
||||||
break;
|
|
||||||
case "Turkish":
|
|
||||||
tinyDb.putString("locale", "tr");
|
|
||||||
break;
|
|
||||||
case "Ukrainian":
|
|
||||||
tinyDb.putString("locale", "uk");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
tinyDb.putString("locale", "en");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
dialogInterface.dismiss();
|
|
||||||
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
|
|
||||||
Objects.requireNonNull(getActivity()).recreate();
|
|
||||||
getActivity().overridePendingTransition(0, 0);
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
lBuilder.setNegativeButton(getString(R.string.cancelButton), (dialog, which) -> dialog.dismiss());
|
|
||||||
|
|
||||||
AlertDialog lDialog = lBuilder.create();
|
|
||||||
lDialog.show();
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
// time n date dialog
|
|
||||||
timeFrame.setOnClickListener(view -> {
|
|
||||||
|
|
||||||
AlertDialog.Builder tBuilder = new AlertDialog.Builder(ctx);
|
|
||||||
|
|
||||||
tBuilder.setTitle(R.string.settingsTimeSelectorDialogTitle);
|
|
||||||
if(timeSelectedChoice != -1) {
|
|
||||||
tBuilder.setCancelable(true);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
tBuilder.setCancelable(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
tBuilder.setSingleChoiceItems(timeList, timeSelectedChoice, (dialogInterfaceTime, i) -> {
|
|
||||||
|
|
||||||
timeSelectedChoice = i;
|
|
||||||
tvDateTimeSelected.setText(timeList[i]);
|
|
||||||
tinyDb.putString("timeStr", timeList[i]);
|
|
||||||
tinyDb.putInt("timeId", i);
|
|
||||||
|
|
||||||
if("Normal".equals(timeList[i])) {
|
|
||||||
tinyDb.putString("dateFormat", "normal");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
tinyDb.putString("dateFormat", "pretty");
|
|
||||||
}
|
|
||||||
|
|
||||||
dialogInterfaceTime.dismiss();
|
|
||||||
Toasty.info(getContext(), getResources().getString(R.string.settingsSave));
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
AlertDialog tDialog = tBuilder.create();
|
|
||||||
tDialog.show();
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
return v;
|
return v;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAttach(@NonNull Context context) {
|
public void onResume() {
|
||||||
|
|
||||||
super.onAttach(context);
|
super.onResume();
|
||||||
ctx = context;
|
|
||||||
|
TinyDB tinyDb = new TinyDB(getContext());
|
||||||
|
|
||||||
|
if(tinyDb.getBoolean("refreshParent")) {
|
||||||
|
Objects.requireNonNull(getActivity()).recreate();
|
||||||
|
getActivity().overridePendingTransition(0, 0);
|
||||||
|
tinyDb.putBoolean("refreshParent", false);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
5
app/src/main/res/drawable/ic_flag_country.xml
Normal file
5
app/src/main/res/drawable/ic_flag_country.xml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<vector android:autoMirrored="true" android:height="24dp"
|
||||||
|
android:tint="#368F73" android:viewportHeight="24.0"
|
||||||
|
android:viewportWidth="24.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<path android:fillColor="#FF000000" android:pathData="M14.4,6L14,4H5v17h2v-7h5.6l0.4,2h7V6z"/>
|
||||||
|
</vector>
|
@ -2,21 +2,48 @@
|
|||||||
<LinearLayout
|
<LinearLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:id="@+id/layoutTime"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:background="?attr/primaryBackgroundColor">
|
android:background="?attr/primaryBackgroundColor">
|
||||||
|
|
||||||
<TextView
|
<com.google.android.material.appbar.AppBarLayout
|
||||||
android:id="@+id/tvAppearance"
|
android:id="@+id/appbar"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textSize="14sp"
|
android:theme="@style/Widget.AppCompat.SearchView">
|
||||||
android:drawableStart="@drawable/ic_color"
|
|
||||||
android:drawablePadding="20dp"
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:text="@string/settingsAppearanceHeader"
|
android:id="@+id/toolbar"
|
||||||
android:textStyle="bold"
|
android:layout_width="match_parent"
|
||||||
android:textColor="@color/colorDarkGreen"/>
|
android:layout_height="wrap_content"
|
||||||
|
android:background="?attr/primaryBackgroundColor"
|
||||||
|
android:theme="@style/AppTheme.AppBarOverlay"
|
||||||
|
tools:ignore="UnusedAttribute">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/close"
|
||||||
|
android:layout_width="30dp"
|
||||||
|
android:layout_height="30dp"
|
||||||
|
android:layout_marginRight="15dp"
|
||||||
|
android:layout_marginLeft="15dp"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:contentDescription="@string/close"
|
||||||
|
android:src="@drawable/ic_close" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/toolbar_title"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:text="@string/settingsAppearanceHeader"
|
||||||
|
android:textColor="?attr/primaryTextColor"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:textSize="20sp" />
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.Toolbar>
|
||||||
|
|
||||||
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/themeSelectionFrame"
|
android:id="@+id/themeSelectionFrame"
|
||||||
@ -32,7 +59,7 @@
|
|||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:layout_marginTop="10dp"
|
android:layout_marginTop="10dp"
|
||||||
android:layout_marginStart="44dp"
|
android:layout_marginStart="44dp"
|
||||||
android:layout_marginEnd="4dp"
|
android:layout_marginEnd="24dp"
|
||||||
android:text="@string/themeSelectionHeaderText"
|
android:text="@string/themeSelectionHeaderText"
|
||||||
android:textColor="?attr/primaryTextColor"/>
|
android:textColor="?attr/primaryTextColor"/>
|
||||||
|
|
||||||
@ -42,7 +69,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:layout_marginStart="44dp"
|
android:layout_marginStart="44dp"
|
||||||
android:layout_marginEnd="4dp"
|
android:layout_marginEnd="24dp"
|
||||||
android:text="@string/themeSelectionSelectedText"
|
android:text="@string/themeSelectionSelectedText"
|
||||||
android:textColor="?attr/selectedTextColor"/>
|
android:textColor="?attr/selectedTextColor"/>
|
||||||
|
|
||||||
@ -52,7 +79,7 @@
|
|||||||
android:id="@+id/customFontFrame"
|
android:id="@+id/customFontFrame"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="10dp"
|
android:layout_marginTop="15dp"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@ -62,7 +89,7 @@
|
|||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:layout_marginTop="10dp"
|
android:layout_marginTop="10dp"
|
||||||
android:layout_marginStart="44dp"
|
android:layout_marginStart="44dp"
|
||||||
android:layout_marginEnd="4dp"
|
android:layout_marginEnd="24dp"
|
||||||
android:text="@string/settingsCustomFontHeaderText"
|
android:text="@string/settingsCustomFontHeaderText"
|
||||||
android:textColor="?attr/primaryTextColor"/>
|
android:textColor="?attr/primaryTextColor"/>
|
||||||
|
|
||||||
@ -72,7 +99,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:layout_marginStart="44dp"
|
android:layout_marginStart="44dp"
|
||||||
android:layout_marginEnd="4dp"
|
android:layout_marginEnd="24dp"
|
||||||
android:text="@string/settingsCustomFontDefault"
|
android:text="@string/settingsCustomFontDefault"
|
||||||
android:textColor="?attr/selectedTextColor"/>
|
android:textColor="?attr/selectedTextColor"/>
|
||||||
|
|
||||||
@ -82,7 +109,7 @@
|
|||||||
android:id="@+id/timeFrame"
|
android:id="@+id/timeFrame"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="5dp"
|
android:layout_marginTop="15dp"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@ -92,7 +119,7 @@
|
|||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:layout_marginTop="10dp"
|
android:layout_marginTop="10dp"
|
||||||
android:layout_marginStart="44dp"
|
android:layout_marginStart="44dp"
|
||||||
android:layout_marginEnd="4dp"
|
android:layout_marginEnd="24dp"
|
||||||
android:text="@string/settingsDateTimeHeaderText"
|
android:text="@string/settingsDateTimeHeaderText"
|
||||||
android:textColor="?attr/primaryTextColor"/>
|
android:textColor="?attr/primaryTextColor"/>
|
||||||
|
|
||||||
@ -102,7 +129,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:layout_marginStart="44dp"
|
android:layout_marginStart="44dp"
|
||||||
android:layout_marginEnd="4dp"
|
android:layout_marginEnd="24dp"
|
||||||
android:text="@string/settingsDateTimeHeaderDefault"
|
android:text="@string/settingsDateTimeHeaderDefault"
|
||||||
android:textColor="?attr/selectedTextColor"/>
|
android:textColor="?attr/selectedTextColor"/>
|
||||||
|
|
||||||
@ -112,7 +139,7 @@
|
|||||||
android:id="@+id/counterBadgeFrame"
|
android:id="@+id/counterBadgeFrame"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="20dp"
|
android:layout_marginTop="25dp"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@ -121,7 +148,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:layout_marginStart="44dp"
|
android:layout_marginStart="44dp"
|
||||||
android:layout_marginEnd="4dp"
|
android:layout_marginEnd="24dp"
|
||||||
android:text="@string/settingsCounterBadges"
|
android:text="@string/settingsCounterBadges"
|
||||||
android:textColor="?attr/primaryTextColor"/>
|
android:textColor="?attr/primaryTextColor"/>
|
||||||
|
|
||||||
@ -131,6 +158,8 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:switchMinWidth="56dp"
|
android:switchMinWidth="56dp"
|
||||||
|
android:paddingStart="0dp"
|
||||||
|
android:paddingEnd="24dp"
|
||||||
android:layout_alignParentEnd="true"
|
android:layout_alignParentEnd="true"
|
||||||
android:gravity="end"
|
android:gravity="end"
|
||||||
android:layout_gravity="end" />
|
android:layout_gravity="end" />
|
||||||
@ -141,7 +170,7 @@
|
|||||||
android:id="@+id/codeBlockFrame"
|
android:id="@+id/codeBlockFrame"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="10dp"
|
android:layout_marginTop="15dp"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@ -151,7 +180,7 @@
|
|||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:layout_marginTop="10dp"
|
android:layout_marginTop="10dp"
|
||||||
android:layout_marginStart="44dp"
|
android:layout_marginStart="44dp"
|
||||||
android:layout_marginEnd="4dp"
|
android:layout_marginEnd="24dp"
|
||||||
android:text="@string/codeBlockHeaderText"
|
android:text="@string/codeBlockHeaderText"
|
||||||
android:textColor="?attr/primaryTextColor"/>
|
android:textColor="?attr/primaryTextColor"/>
|
||||||
|
|
||||||
@ -161,7 +190,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:layout_marginStart="44dp"
|
android:layout_marginStart="44dp"
|
||||||
android:layout_marginEnd="4dp"
|
android:layout_marginEnd="24dp"
|
||||||
android:text="@string/codeBlockSelectedText"
|
android:text="@string/codeBlockSelectedText"
|
||||||
android:textColor="?attr/selectedTextColor"/>
|
android:textColor="?attr/selectedTextColor"/>
|
||||||
|
|
||||||
@ -171,7 +200,7 @@
|
|||||||
android:id="@+id/homeScreenFrame"
|
android:id="@+id/homeScreenFrame"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="10dp"
|
android:layout_marginTop="15dp"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@ -181,7 +210,7 @@
|
|||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:layout_marginTop="10dp"
|
android:layout_marginTop="10dp"
|
||||||
android:layout_marginStart="44dp"
|
android:layout_marginStart="44dp"
|
||||||
android:layout_marginEnd="4dp"
|
android:layout_marginEnd="24dp"
|
||||||
android:text="@string/settingsHomeScreenHeaderText"
|
android:text="@string/settingsHomeScreenHeaderText"
|
||||||
android:textColor="?attr/primaryTextColor"/>
|
android:textColor="?attr/primaryTextColor"/>
|
||||||
|
|
||||||
@ -191,7 +220,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:layout_marginStart="44dp"
|
android:layout_marginStart="44dp"
|
||||||
android:layout_marginEnd="4dp"
|
android:layout_marginEnd="24dp"
|
||||||
android:text="@string/settingsHomeScreenSelectedText"
|
android:text="@string/settingsHomeScreenSelectedText"
|
||||||
android:textColor="?attr/selectedTextColor"/>
|
android:textColor="?attr/selectedTextColor"/>
|
||||||
|
|
@ -2,51 +2,49 @@
|
|||||||
<LinearLayout
|
<LinearLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:id="@+id/layoutFileView"
|
android:id="@+id/layoutFileView"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:layout_below="@+id/fileViewDivider"
|
|
||||||
android:background="?attr/primaryBackgroundColor">
|
android:background="?attr/primaryBackgroundColor">
|
||||||
|
|
||||||
<TextView
|
<com.google.android.material.appbar.AppBarLayout
|
||||||
android:id="@+id/fileViewAppearance"
|
android:id="@+id/appbar"
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:textSize="14sp"
|
|
||||||
android:drawableStart="@drawable/ic_file"
|
|
||||||
android:drawablePadding="20dp"
|
|
||||||
android:text="@string/fileViewerHeader"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:textColor="@color/colorDarkGreen"/>
|
|
||||||
|
|
||||||
<RelativeLayout
|
|
||||||
android:id="@+id/pdfMode"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="20dp"
|
android:theme="@style/Widget.AppCompat.SearchView">
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<TextView
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:id="@+id/pdfModeHeader"
|
android:id="@+id/toolbar"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textSize="16sp"
|
android:background="?attr/primaryBackgroundColor"
|
||||||
android:layout_marginStart="44dp"
|
android:theme="@style/AppTheme.AppBarOverlay"
|
||||||
android:layout_marginEnd="4dp"
|
tools:ignore="UnusedAttribute">
|
||||||
android:text="@string/settingsPdfModeHeaderText"
|
|
||||||
android:textColor="?attr/primaryTextColor"/>
|
|
||||||
|
|
||||||
<Switch
|
<ImageView
|
||||||
android:id="@+id/switchPdfMode"
|
android:id="@+id/close"
|
||||||
android:layout_toEndOf="@+id/pdfModeHeader"
|
android:layout_width="30dp"
|
||||||
android:layout_width="wrap_content"
|
android:layout_height="30dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_marginRight="15dp"
|
||||||
android:switchMinWidth="56dp"
|
android:layout_marginLeft="15dp"
|
||||||
android:layout_alignParentEnd="true"
|
android:gravity="center_vertical"
|
||||||
android:gravity="end"
|
android:contentDescription="@string/close"
|
||||||
android:layout_gravity="end" />
|
android:src="@drawable/ic_close" />
|
||||||
|
|
||||||
</RelativeLayout>
|
<TextView
|
||||||
|
android:id="@+id/toolbar_title"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:text="@string/fileViewerHeader"
|
||||||
|
android:textColor="?attr/primaryTextColor"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:textSize="20sp" />
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.Toolbar>
|
||||||
|
|
||||||
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/sourceCodeThemeFrame"
|
android:id="@+id/sourceCodeThemeFrame"
|
||||||
@ -62,7 +60,7 @@
|
|||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:layout_marginTop="10dp"
|
android:layout_marginTop="10dp"
|
||||||
android:layout_marginStart="44dp"
|
android:layout_marginStart="44dp"
|
||||||
android:layout_marginEnd="4dp"
|
android:layout_marginEnd="24dp"
|
||||||
android:text="@string/settingsFileviewerSourceCodeHeaderText"
|
android:text="@string/settingsFileviewerSourceCodeHeaderText"
|
||||||
android:textColor="?attr/primaryTextColor"/>
|
android:textColor="?attr/primaryTextColor"/>
|
||||||
|
|
||||||
@ -72,10 +70,41 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:layout_marginStart="44dp"
|
android:layout_marginStart="44dp"
|
||||||
android:layout_marginEnd="4dp"
|
android:layout_marginEnd="24dp"
|
||||||
android:text="@string/settingsFileviewerSourceCodeSelectedText"
|
android:text="@string/settingsFileviewerSourceCodeSelectedText"
|
||||||
android:textColor="?attr/selectedTextColor"/>
|
android:textColor="?attr/selectedTextColor"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:id="@+id/pdfMode"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="25dp"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/pdfModeHeader"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textSize="16sp"
|
||||||
|
android:layout_marginStart="44dp"
|
||||||
|
android:layout_marginEnd="24dp"
|
||||||
|
android:text="@string/settingsPdfModeHeaderText"
|
||||||
|
android:textColor="?attr/primaryTextColor"/>
|
||||||
|
|
||||||
|
<Switch
|
||||||
|
android:id="@+id/switchPdfMode"
|
||||||
|
android:layout_toEndOf="@+id/pdfModeHeader"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:switchMinWidth="56dp"
|
||||||
|
android:paddingStart="0dp"
|
||||||
|
android:paddingEnd="25dp"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:gravity="end"
|
||||||
|
android:layout_gravity="end" />
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
81
app/src/main/res/layout/activity_settings_reporting.xml
Normal file
81
app/src/main/res/layout/activity_settings_reporting.xml
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:id="@+id/layoutReportingView"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:background="?attr/primaryBackgroundColor">
|
||||||
|
|
||||||
|
<com.google.android.material.appbar.AppBarLayout
|
||||||
|
android:id="@+id/appbar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:theme="@style/Widget.AppCompat.SearchView">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.Toolbar
|
||||||
|
android:id="@+id/toolbar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="?attr/primaryBackgroundColor"
|
||||||
|
android:theme="@style/AppTheme.AppBarOverlay"
|
||||||
|
tools:ignore="UnusedAttribute">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/close"
|
||||||
|
android:layout_width="30dp"
|
||||||
|
android:layout_height="30dp"
|
||||||
|
android:layout_marginRight="15dp"
|
||||||
|
android:layout_marginLeft="15dp"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:contentDescription="@string/close"
|
||||||
|
android:src="@drawable/ic_close" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/toolbar_title"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:text="@string/reportViewerHeader"
|
||||||
|
android:textColor="?attr/primaryTextColor"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:textSize="20sp" />
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.Toolbar>
|
||||||
|
|
||||||
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:id="@+id/enableSendReports"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="25dp"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/enableReportsHeader"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textSize="16sp"
|
||||||
|
android:layout_marginStart="44dp"
|
||||||
|
android:layout_marginEnd="24dp"
|
||||||
|
android:text="@string/settingsEnableReportsText"
|
||||||
|
android:textColor="?attr/primaryTextColor" />
|
||||||
|
|
||||||
|
<Switch
|
||||||
|
android:id="@+id/crashReportsSwitch"
|
||||||
|
android:layout_toEndOf="@+id/enableReportsHeader"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:switchMinWidth="56dp"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:paddingStart="0dp"
|
||||||
|
android:paddingEnd="25dp"
|
||||||
|
android:gravity="end"
|
||||||
|
android:layout_gravity="end"
|
||||||
|
android:layout_marginBottom="30dp" />
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
69
app/src/main/res/layout/activity_settings_security.xml
Normal file
69
app/src/main/res/layout/activity_settings_security.xml
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:id="@+id/layoutSettingsCerts"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:background="?attr/primaryBackgroundColor">
|
||||||
|
|
||||||
|
<com.google.android.material.appbar.AppBarLayout
|
||||||
|
android:id="@+id/appbar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:theme="@style/Widget.AppCompat.SearchView">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.Toolbar
|
||||||
|
android:id="@+id/toolbar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="?attr/primaryBackgroundColor"
|
||||||
|
android:theme="@style/AppTheme.AppBarOverlay"
|
||||||
|
tools:ignore="UnusedAttribute">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/close"
|
||||||
|
android:layout_width="30dp"
|
||||||
|
android:layout_height="30dp"
|
||||||
|
android:layout_marginRight="15dp"
|
||||||
|
android:layout_marginLeft="15dp"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:contentDescription="@string/close"
|
||||||
|
android:src="@drawable/ic_close" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/toolbar_title"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:text="@string/settingsSecurityHeader"
|
||||||
|
android:textColor="?attr/primaryTextColor"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:textSize="20sp" />
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.Toolbar>
|
||||||
|
|
||||||
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/certsFrame"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="10dp"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tvCertHeader"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textSize="16sp"
|
||||||
|
android:layout_marginTop="10dp"
|
||||||
|
android:layout_marginStart="44dp"
|
||||||
|
android:layout_marginEnd="24dp"
|
||||||
|
android:text="@string/settingsCertsSelectorHeader"
|
||||||
|
android:textColor="?attr/primaryTextColor"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
@ -2,21 +2,48 @@
|
|||||||
<LinearLayout
|
<LinearLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:layout_below="@+id/translationDivider"
|
|
||||||
android:background="?attr/primaryBackgroundColor">
|
android:background="?attr/primaryBackgroundColor">
|
||||||
|
|
||||||
<TextView
|
<com.google.android.material.appbar.AppBarLayout
|
||||||
android:id="@+id/tvLanguage"
|
android:id="@+id/appbar"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textSize="14sp"
|
android:theme="@style/Widget.AppCompat.SearchView">
|
||||||
android:drawableStart="@drawable/ic_language"
|
|
||||||
android:drawablePadding="20dp"
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:text="@string/settingsLanguageHeaderText"
|
android:id="@+id/toolbar"
|
||||||
android:textStyle="bold"
|
android:layout_width="match_parent"
|
||||||
android:textColor="@color/colorDarkGreen"/>
|
android:layout_height="wrap_content"
|
||||||
|
android:background="?attr/primaryBackgroundColor"
|
||||||
|
android:theme="@style/AppTheme.AppBarOverlay"
|
||||||
|
tools:ignore="UnusedAttribute">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/close"
|
||||||
|
android:layout_width="30dp"
|
||||||
|
android:layout_height="30dp"
|
||||||
|
android:layout_marginRight="15dp"
|
||||||
|
android:layout_marginLeft="15dp"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:contentDescription="@string/close"
|
||||||
|
android:src="@drawable/ic_close" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/toolbar_title"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:text="@string/settingsLanguageHeaderText"
|
||||||
|
android:textColor="?attr/primaryTextColor"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:textSize="20sp" />
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.Toolbar>
|
||||||
|
|
||||||
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/langFrame"
|
android:id="@+id/langFrame"
|
||||||
@ -32,7 +59,7 @@
|
|||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:layout_marginTop="10dp"
|
android:layout_marginTop="10dp"
|
||||||
android:layout_marginStart="44dp"
|
android:layout_marginStart="44dp"
|
||||||
android:layout_marginEnd="4dp"
|
android:layout_marginEnd="24dp"
|
||||||
android:text="@string/settingsLanguageSelectorHeader"
|
android:text="@string/settingsLanguageSelectorHeader"
|
||||||
android:textColor="?attr/primaryTextColor"/>
|
android:textColor="?attr/primaryTextColor"/>
|
||||||
|
|
||||||
@ -42,7 +69,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:layout_marginStart="44dp"
|
android:layout_marginStart="44dp"
|
||||||
android:layout_marginEnd="4dp"
|
android:layout_marginEnd="24dp"
|
||||||
android:text="@string/settingsLanguageSelectedHeaderDefault"
|
android:text="@string/settingsLanguageSelectedHeaderDefault"
|
||||||
android:textColor="?attr/selectedTextColor"/>
|
android:textColor="?attr/selectedTextColor"/>
|
||||||
|
|
||||||
@ -52,7 +79,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:layout_marginStart="44dp"
|
android:layout_marginStart="44dp"
|
||||||
android:layout_marginEnd="4dp"
|
android:layout_marginEnd="24dp"
|
||||||
android:autoLink="web"
|
android:autoLink="web"
|
||||||
android:layout_marginTop="20dp"
|
android:layout_marginTop="20dp"
|
||||||
android:text="@string/settingsHelpTranslateText"
|
android:text="@string/settingsHelpTranslateText"
|
@ -1,5 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<RelativeLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="?attr/primaryBackgroundColor">
|
android:background="?attr/primaryBackgroundColor">
|
||||||
@ -9,72 +10,178 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="?attr/primaryBackgroundColor">
|
android:background="?attr/primaryBackgroundColor">
|
||||||
|
|
||||||
<RelativeLayout
|
<LinearLayout
|
||||||
|
android:id="@+id/settingsMainFrame"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:orientation="vertical"
|
||||||
android:layout_margin="10dp">
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
<include
|
<LinearLayout
|
||||||
android:id="@+id/timeLayout"
|
android:id="@+id/appreanceFrame"
|
||||||
layout="@layout/settings_appearance" />
|
|
||||||
|
|
||||||
<View
|
|
||||||
android:id="@+id/fileViewDivider"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="1dp"
|
android:orientation="vertical"
|
||||||
android:layout_marginStart="44dp"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginEnd="5dp"
|
android:layout_marginTop="25dp">
|
||||||
android:layout_marginTop="20dp"
|
|
||||||
android:layout_marginBottom="20dp"
|
|
||||||
android:layout_below="@id/timeLayout" />
|
|
||||||
|
|
||||||
<include
|
<TextView
|
||||||
android:id="@+id/fileViewLayout"
|
android:id="@+id/tvAppearance"
|
||||||
layout="@layout/settings_fileview"/>
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:drawableStart="@drawable/ic_color"
|
||||||
|
android:drawablePadding="24dp"
|
||||||
|
android:text="@string/settingsAppearanceHeader"
|
||||||
|
android:textColor="?attr/primaryTextColor"
|
||||||
|
android:textSize="16sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:paddingStart="12dp"
|
||||||
|
android:paddingEnd="12dp" />
|
||||||
|
|
||||||
<View
|
<TextView
|
||||||
android:id="@+id/securityDivider"
|
android:id="@+id/appreanceHintText"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:text="@string/appreanceHintText"
|
||||||
|
android:paddingStart="60dp"
|
||||||
|
android:paddingEnd="12dp"
|
||||||
|
android:textColor="?attr/primaryTextColor"
|
||||||
|
android:textSize="12sp" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/fileViewerFrame"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="1dp"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="44dp"
|
android:orientation="vertical"
|
||||||
android:layout_marginEnd="5dp"
|
android:layout_marginTop="25dp">
|
||||||
android:layout_marginTop="20dp"
|
|
||||||
android:layout_marginBottom="20dp"
|
|
||||||
android:layout_below="@id/fileViewLayout" />
|
|
||||||
|
|
||||||
<include
|
<TextView
|
||||||
android:id="@+id/securityLayout"
|
android:id="@+id/fileViewer"
|
||||||
layout="@layout/settings_security" />
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:drawableStart="@drawable/ic_file"
|
||||||
|
android:drawablePadding="24dp"
|
||||||
|
android:text="@string/fileViewerHeader"
|
||||||
|
android:textColor="?attr/primaryTextColor"
|
||||||
|
android:textSize="16sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:paddingStart="12dp"
|
||||||
|
android:paddingEnd="12dp" />
|
||||||
|
|
||||||
<View
|
<TextView
|
||||||
android:id="@+id/translationDivider"
|
android:id="@+id/fileViewerHintText"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:text="@string/fileViewerHintText"
|
||||||
|
android:paddingStart="60dp"
|
||||||
|
android:paddingEnd="12dp"
|
||||||
|
android:textColor="?attr/primaryTextColor"
|
||||||
|
android:textSize="12sp" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/securityFrame"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="1dp"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="44dp"
|
android:orientation="vertical"
|
||||||
android:layout_marginEnd="5dp"
|
android:layout_marginTop="25dp">
|
||||||
android:layout_marginTop="20dp"
|
|
||||||
android:layout_marginBottom="20dp"
|
|
||||||
android:layout_below="@id/securityLayout" />
|
|
||||||
|
|
||||||
<include
|
<TextView
|
||||||
android:id="@+id/langLayout"
|
android:id="@+id/tvSecurity"
|
||||||
layout="@layout/settings_languages" />
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:drawableStart="@drawable/ic_security_24dp"
|
||||||
|
android:drawablePadding="24dp"
|
||||||
|
android:text="@string/settingsSecurityHeader"
|
||||||
|
android:textColor="?attr/primaryTextColor"
|
||||||
|
android:textSize="16sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:paddingStart="12dp"
|
||||||
|
android:paddingEnd="12dp" />
|
||||||
|
|
||||||
<View
|
<TextView
|
||||||
android:id="@+id/crashReportsDivider"
|
android:id="@+id/securityHintText"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:text="@string/securityHintText"
|
||||||
|
android:paddingStart="60dp"
|
||||||
|
android:paddingEnd="12dp"
|
||||||
|
android:textColor="?attr/primaryTextColor"
|
||||||
|
android:textSize="12sp" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/languagesFrame"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="1dp"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="44dp"
|
android:orientation="vertical"
|
||||||
android:layout_marginEnd="5dp"
|
android:layout_marginTop="25dp">
|
||||||
android:layout_marginTop="20dp"
|
|
||||||
android:layout_marginBottom="20dp"
|
|
||||||
android:layout_below="@id/langLayout" />
|
|
||||||
|
|
||||||
<include
|
<TextView
|
||||||
android:id="@+id/reportingLayout"
|
android:id="@+id/tvLanguages"
|
||||||
layout="@layout/settings_reporting" />
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:drawableStart="@drawable/ic_flag_country"
|
||||||
|
android:drawablePadding="24dp"
|
||||||
|
android:text="@string/settingsLanguageHeaderText"
|
||||||
|
android:textColor="?attr/primaryTextColor"
|
||||||
|
android:textSize="16sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:paddingStart="12dp"
|
||||||
|
android:paddingEnd="12dp" />
|
||||||
|
|
||||||
</RelativeLayout>
|
<TextView
|
||||||
|
android:id="@+id/languagesHintText"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:text="@string/languagesHintText"
|
||||||
|
android:paddingStart="60dp"
|
||||||
|
android:paddingEnd="12dp"
|
||||||
|
android:textColor="?attr/primaryTextColor"
|
||||||
|
android:textSize="12sp" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/reportsFrame"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:layout_marginTop="25dp">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/appReports"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:drawableStart="@drawable/ic_bug_report"
|
||||||
|
android:drawablePadding="24dp"
|
||||||
|
android:text="@string/reportViewerHeader"
|
||||||
|
android:textColor="?attr/primaryTextColor"
|
||||||
|
android:textSize="16sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:paddingStart="12dp"
|
||||||
|
android:paddingEnd="12dp" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/reportsHintText"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:text="@string/reportsHintText"
|
||||||
|
android:paddingStart="60dp"
|
||||||
|
android:paddingEnd="12dp"
|
||||||
|
android:textColor="?attr/primaryTextColor"
|
||||||
|
android:textSize="12sp" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
|
|
||||||
|
@ -1,52 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<LinearLayout
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:id="@+id/layoutReportingView"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:layout_below="@+id/crashReportsDivider"
|
|
||||||
android:background="?attr/primaryBackgroundColor">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/reportViewAppearance"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:textSize="14sp"
|
|
||||||
android:drawableStart="@drawable/ic_bug_report"
|
|
||||||
android:drawablePadding="20dp"
|
|
||||||
android:text="@string/reportViewerHeader"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:textColor="@color/colorDarkGreen"/>
|
|
||||||
|
|
||||||
<RelativeLayout
|
|
||||||
android:id="@+id/enableSendReports"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="20dp"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/enableReportsHeader"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:textSize="16sp"
|
|
||||||
android:layout_marginStart="44dp"
|
|
||||||
android:layout_marginEnd="4dp"
|
|
||||||
android:text="@string/settingsEnableReportsText"
|
|
||||||
android:textColor="?attr/primaryTextColor"/>
|
|
||||||
|
|
||||||
<Switch
|
|
||||||
android:id="@+id/crashReportsSwitch"
|
|
||||||
android:layout_toEndOf="@+id/enableReportsHeader"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:switchMinWidth="56dp"
|
|
||||||
android:layout_alignParentEnd="true"
|
|
||||||
android:gravity="end"
|
|
||||||
android:layout_gravity="end"
|
|
||||||
android:layout_marginBottom="30dp" />
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
@ -1,42 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<LinearLayout
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:id="@+id/layoutSettingsCerts"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:layout_below="@+id/securityDivider"
|
|
||||||
android:background="?attr/primaryBackgroundColor">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/tvSecurity"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:drawableStart="@drawable/ic_security_24dp"
|
|
||||||
android:drawablePadding="20dp"
|
|
||||||
android:text="@string/settingsSecurityHeader"
|
|
||||||
android:textColor="@color/colorDarkGreen"
|
|
||||||
android:textSize="14sp"
|
|
||||||
android:textStyle="bold" />
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:id="@+id/certsFrame"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="10dp"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/tvCertHeader"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:textSize="16sp"
|
|
||||||
android:layout_marginTop="10dp"
|
|
||||||
android:layout_marginStart="44dp"
|
|
||||||
android:layout_marginEnd="4dp"
|
|
||||||
android:text="@string/settingsCertsSelectorHeader"
|
|
||||||
android:textColor="?attr/primaryTextColor"/>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
@ -627,4 +627,10 @@
|
|||||||
<string name="crashTitle">GitNex has stopped :(</string>
|
<string name="crashTitle">GitNex has stopped :(</string>
|
||||||
<string name="setCrashReports">Crash reports</string>
|
<string name="setCrashReports">Crash reports</string>
|
||||||
<string name="crashMessage">You can tap the OK button to send the crash report by email. It will help to fix it :)\n\nYou can also add additional content in the email. Thank you!</string>
|
<string name="crashMessage">You can tap the OK button to send the crash report by email. It will help to fix it :)\n\nYou can also add additional content in the email. Thank you!</string>
|
||||||
|
|
||||||
|
<string name="appreanceHintText">Themes, fonts, badges, code block theme</string>
|
||||||
|
<string name="fileViewerHintText">PDF mode, source code theme</string>
|
||||||
|
<string name="securityHintText">SSL certificates</string>
|
||||||
|
<string name="languagesHintText">Languages</string>
|
||||||
|
<string name="reportsHintText">Crash reports</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user