Skip to content

Commit 95e728b

Browse files
authored
[feature] add reset-to-default link in advanced settings, clarify quick settings tile label (#350)
1 parent 7da57e8 commit 95e728b

5 files changed

Lines changed: 102 additions & 20 deletions

File tree

app/src/main/java/org/fptn/vpn/views/experimentalsettings/ExperimentalSettingsActivity.java

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,8 @@ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
139139

140140
// Quick tile request
141141
View tileButtonLayout = findViewById(R.id.tile_layout);
142-
Button buttonRequestTile = findViewById(R.id.quick_settings_tile_button);
142+
TextView buttonRequestTile = findViewById(R.id.quick_settings_tile_button);
143+
buttonRequestTile.setPaintFlags(buttonRequestTile.getPaintFlags() | android.graphics.Paint.UNDERLINE_TEXT_FLAG);
143144
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
144145
buttonRequestTile.setVisibility(View.VISIBLE);
145146
buttonRequestTile.setEnabled(true);
@@ -204,6 +205,41 @@ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
204205

205206
Button saveButton = findViewById(R.id.save_button);
206207
saveButton.setOnClickListener(v -> saveAndFinish());
208+
209+
TextView resetToDefaultLink = findViewById(R.id.reset_to_default_button);
210+
resetToDefaultLink.setPaintFlags(resetToDefaultLink.getPaintFlags() | android.graphics.Paint.UNDERLINE_TEXT_FLAG);
211+
resetToDefaultLink.setOnClickListener(v -> resetToDefault());
212+
}
213+
214+
private void resetToDefault() {
215+
customDnsSwitch.setChecked(false);
216+
customDnsInput.setText("");
217+
showSpeedInNotificationSwitch.setChecked(false);
218+
adBlockSwitch.setChecked(true);
219+
switchNetworkType.setChecked(true);
220+
switchIPAddress.setChecked(true);
221+
seekBarAttemptsCount.setProgress(2); // default 35
222+
seekBarDelayBetween.setProgress(0); // default 1s
223+
resetServerAfterDisconnectSwitch.setChecked(true);
224+
resetServerAfterDisconnectOnException.setChecked(false);
225+
autoFallbackSwitch.setChecked(true);
226+
seekBarFallbackThreshold.setProgress(3); // default 15
227+
228+
SharedPrefUtils.saveCustomDnsEnabled(this, false);
229+
SharedPrefUtils.saveCustomDnsIpv4(this, "");
230+
SharedPrefUtils.saveShowSpeedInNotification(this, false);
231+
SharedPrefUtils.saveAdBlockEnabled(this, true);
232+
SharedPrefUtils.saveReconnectOnChangeNetworkTypeEnabled(this, true);
233+
SharedPrefUtils.saveReconnectOnChangeIPEnabled(this, true);
234+
SharedPrefUtils.saveReconnectAttemptsCount(this, ATTEMPTS_COUNT_VALUES[2]);
235+
SharedPrefUtils.saveDelayBetweenReconnect(this, 1);
236+
SharedPrefUtils.saveResetSelectedServerEnabled(this, true);
237+
SharedPrefUtils.saveResetSelectedServerOnExceptionEnabled(this, false);
238+
SharedPrefUtils.saveAutoFallbackEnabled(this, true);
239+
SharedPrefUtils.saveAutoFallbackThreshold(this, FALLBACK_THRESHOLD_VALUES[3]);
240+
241+
XLog.tag(TAG).i("Experimental settings reset to default");
242+
Toast.makeText(this, R.string.reset_to_default_success, Toast.LENGTH_SHORT).show();
207243
}
208244

209245
private void updateCustomDnsInputVisibility(boolean isEnabled) {
@@ -219,7 +255,7 @@ private void updateAutoFallbackThresholdVisibility(boolean isEnabled) {
219255
}
220256

221257
@RequiresApi(api = Build.VERSION_CODES.TIRAMISU)
222-
private void requestQuickSettingsTile(Button buttonRequestTile) {
258+
private void requestQuickSettingsTile(TextView buttonRequestTile) {
223259
StatusBarManager statusBarManager = getSystemService(StatusBarManager.class);
224260
if (statusBarManager == null) return;
225261

@@ -244,15 +280,14 @@ private void requestQuickSettingsTile(Button buttonRequestTile) {
244280
}
245281
}
246282

247-
private void handleTileRequestResult(int resultCode, Button button) {
283+
private void handleTileRequestResult(int resultCode, TextView button) {
248284
// Re-enable button unless the tile was successfully added/exists
249285
boolean shouldKeepDisabled = false;
250286

251287
switch (resultCode) {
252288
case StatusBarManager.TILE_ADD_REQUEST_RESULT_TILE_ALREADY_ADDED:
253289
XLog.tag(TAG).i("Quick settings tile already present");
254290
Toast.makeText(this, R.string.tile_already_added, Toast.LENGTH_SHORT).show();
255-
button.setBackgroundResource(R.drawable.round_back_secondary_cancel_100);
256291
shouldKeepDisabled = true;
257292
break;
258293

app/src/main/res/layout/experimental_settings_layout.xml

Lines changed: 48 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
android:layout_width="match_parent"
2020
android:layout_height="wrap_content"
2121
android:orientation="vertical"
22-
android:paddingBottom="16dp">
22+
android:paddingBottom="8dp">
2323

2424
<ImageView
2525
android:layout_width="80dp"
@@ -406,28 +406,43 @@
406406
android:layout_marginEnd="16dp"
407407
android:background="@drawable/round_settings_back_white10_20"
408408
android:orientation="vertical"
409-
android:padding="16dp">
409+
android:paddingStart="16dp"
410+
android:paddingTop="16dp"
411+
android:paddingEnd="16dp"
412+
android:paddingBottom="8dp">
410413

411414
<TextView
412415
android:layout_width="match_parent"
413416
android:layout_height="wrap_content"
414-
android:layout_marginBottom="12dp"
415-
android:text="@string/quick_settings_tile"
417+
android:layout_marginBottom="4dp"
418+
android:text="@string/quick_settings_tile_title"
416419
android:textColor="@color/white"
417420
android:textSize="16sp"
418421
android:textStyle="bold" />
419422

420-
<Button
423+
<TextView
424+
android:layout_width="match_parent"
425+
android:layout_height="wrap_content"
426+
android:layout_marginBottom="6dp"
427+
android:alpha="0.7"
428+
android:text="@string/quick_settings_tile_description"
429+
android:textColor="@color/white"
430+
android:textSize="12sp" />
431+
432+
<TextView
421433
android:id="@+id/quick_settings_tile_button"
422434
android:layout_width="match_parent"
423435
android:layout_height="wrap_content"
424-
android:background="@drawable/round_back_secondary_100"
425-
android:padding="12dp"
426-
android:text="@string/quick_settings_tile"
427-
android:textAllCaps="false"
428-
android:textColor="@color/primary"
429-
android:textSize="14sp"
430-
android:textStyle="bold" />
436+
android:background="?attr/selectableItemBackground"
437+
android:clickable="true"
438+
android:focusable="true"
439+
android:gravity="center"
440+
android:paddingTop="3dp"
441+
android:paddingBottom="3dp"
442+
android:text="@string/quick_settings_tile_button"
443+
android:textColor="@color/white"
444+
android:alpha="0.7"
445+
android:textSize="14sp" />
431446
</LinearLayout>
432447

433448
<!--Reset Server Settings-->
@@ -439,7 +454,10 @@
439454
android:layout_marginEnd="16dp"
440455
android:background="@drawable/round_settings_back_white10_20"
441456
android:orientation="vertical"
442-
android:padding="16dp">
457+
android:paddingStart="16dp"
458+
android:paddingTop="16dp"
459+
android:paddingEnd="16dp"
460+
android:paddingBottom="8dp">
443461

444462
<TextView
445463
android:layout_width="match_parent"
@@ -473,6 +491,23 @@
473491

474492
</LinearLayout>
475493

494+
<!--Reset to default-->
495+
<TextView
496+
android:id="@+id/reset_to_default_button"
497+
android:layout_width="match_parent"
498+
android:layout_height="wrap_content"
499+
android:layout_marginTop="16dp"
500+
android:background="?attr/selectableItemBackground"
501+
android:clickable="true"
502+
android:focusable="true"
503+
android:gravity="center"
504+
android:paddingTop="3dp"
505+
android:paddingBottom="3dp"
506+
android:text="@string/reset_to_default_button"
507+
android:textColor="@color/white"
508+
android:alpha="0.7"
509+
android:textSize="14sp" />
510+
476511
</LinearLayout>
477512

478513
</ScrollView>

app/src/main/res/values-fa-rIR/strings.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,9 @@ https://play.google.com/store/apps/details?id=org.fptn.vpn
156156
<string name="reconnect_attempts_text">"%d"</string>
157157

158158
<string name="another_settings">سایر تنظیمات:</string>
159-
<string name="quick_settings_tile">کاشی تنظیمات سریع (نوار اعلان)</string>
159+
<string name="quick_settings_tile_title">دکمه سریع VPN در نوار اعلان</string>
160+
<string name="quick_settings_tile_description">دکمه روشن/خاموش کردن VPN را به پنل تنظیمات سریع اندروید (نوار اعلان) اضافه می‌کند تا بدون باز کردن برنامه بتوانید VPN را کنترل کنید.</string>
161+
<string name="quick_settings_tile_button">افزودن به تنظیمات سریع</string>
160162
<string name="tile_already_added">کاشی تنظیمات سریع قبلاً اضافه شده است</string>
161163
<string name="tile_added_successfully">کاشی تنظیمات سریع با موفقیت اضافه شد</string>
162164
<string name="tile_addition_failed">افزودن کاشی تنظیمات سریع ناموفق بود!</string>
@@ -172,6 +174,8 @@ https://play.google.com/store/apps/details?id=org.fptn.vpn
172174
<string name="custom_dns_enable">فعال‌سازی DNS سفارشی</string>
173175
<string name="custom_dns_hint">آدرس IPv4 DNS (مثلاً 8.8.8.8)</string>
174176
<string name="custom_dns_invalid">آدرس IPv4 نامعتبر است</string>
177+
<string name="reset_to_default_button">بازنشانی به پیش‌فرض</string>
178+
<string name="reset_to_default_success">تنظیمات پیشرفته به حالت پیش‌فرض بازنشانی شد</string>
175179
<string name="speed_notification_title">اعلان:</string>
176180
<string name="speed_notification_enable">سرعت اتصال در نوار وضعیت</string>
177181

app/src/main/res/values-ru-rRU/strings.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,9 @@ https://play.google.com/store/apps/details?id=org.fptn.vpn
154154
<string name="reconnect_attempts_text">"%d"</string>
155155

156156
<string name="another_settings">Другие настройки:</string>
157-
<string name="quick_settings_tile">Плитка быстрых настроек (шторка)</string>
157+
<string name="quick_settings_tile_title">Быстрая кнопка VPN в шторке</string>
158+
<string name="quick_settings_tile_description">Добавляет кнопку включения/выключения VPN в панель быстрых настроек Android (шторку уведомлений), чтобы управлять VPN без открытия приложения.</string>
159+
<string name="quick_settings_tile_button">Добавить в шторку</string>
158160
<string name="tile_already_added">Плитка быстрых настроек была добавлена ранее</string>
159161
<string name="tile_added_successfully">Плитка быстрых настроек добавлена</string>
160162
<string name="tile_addition_failed">Плитка быстрых настроек не добавлена!</string>
@@ -170,6 +172,8 @@ https://play.google.com/store/apps/details?id=org.fptn.vpn
170172
<string name="custom_dns_enable">Включить пользовательский DNS</string>
171173
<string name="custom_dns_hint">IPv4-адрес DNS (например, 8.8.8.8)</string>
172174
<string name="custom_dns_invalid">Неверный IPv4-адрес</string>
175+
<string name="reset_to_default_button">Восстановить по умолчанию</string>
176+
<string name="reset_to_default_success">Дополнительные настройки сброшены по умолчанию</string>
173177
<string name="speed_notification_title">Уведомления:</string>
174178
<string name="speed_notification_enable">Скорость подключения в статус-баре</string>
175179

app/src/main/res/values/strings.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,9 @@ https://play.google.com/store/apps/details?id=org.fptn.vpn
231231
<string name="reconnect_attempts_text">"%d"</string>
232232

233233
<string name="another_settings">Another settings:</string>
234-
<string name="quick_settings_tile">Quick settings tile</string>
234+
<string name="quick_settings_tile_title">Quick toggle in notification shade</string>
235+
<string name="quick_settings_tile_description">Adds a VPN connect/disconnect button to the Android quick settings panel (the pull-down shade), so you can turn the VPN on or off without opening the app.</string>
236+
<string name="quick_settings_tile_button">Add to quick settings</string>
235237
<string name="tile_already_added">Tile already added</string>
236238
<string name="tile_added_successfully">Tile added successfully</string>
237239
<string name="tile_addition_failed">Tile addition failed!</string>
@@ -246,6 +248,8 @@ https://play.google.com/store/apps/details?id=org.fptn.vpn
246248
<string name="custom_dns_enable">Enable custom DNS</string>
247249
<string name="custom_dns_hint">DNS IPv4 address (e.g. 8.8.8.8)</string>
248250
<string name="custom_dns_invalid">Invalid IPv4 address</string>
251+
<string name="reset_to_default_button">Reset to default</string>
252+
<string name="reset_to_default_success">Advanced settings reset to default</string>
249253

250254
<string name="ad_block_title">Ad Blocking:</string>
251255
<string name="ad_block_description">Blocks ads and trackers at the DNS level for all apps.</string>

0 commit comments

Comments
 (0)