Page MenuHomeGitPull.it

D266.1792502386.diff
No OneTemporary

Authored By
Unknown
Size
23 KB
Referenced Files
None
Subscribers
None

D266.1792502386.diff

diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -47,25 +47,10 @@
android:networkSecurityConfig="@xml/networks_security_config"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/AppThemeDayNight.NoActionBar">
- <activity
- android:name=".ActivityBackup"
- android:label="@string/backup_restore"
- android:parentActivityName=".ActivityPrincipal"
- android:theme="@style/BackupTheme"
- android:exported="false"/>
- <activity
- android:name=".ActivityIntro"
- android:exported="false"
- android:theme="@style/AppThemeIntro"
- />
- <activity
- android:name=".ActivityExperiments"
- android:label="@string/experiments"
- android:theme="@style/MapTheme">
- </activity>
<activity
android:name=".ActivityPrincipal"
android:exported="true"
+ android:launchMode="singleTop"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize">
@@ -74,7 +59,7 @@
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
- <intent-filter>
+ <intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
@@ -84,6 +69,22 @@
<data android:pathPrefix="/cms/percorari/arrivi" />
</intent-filter>
</activity>
+ <activity
+ android:name=".ActivityBackup"
+ android:label="@string/backup_restore"
+ android:parentActivityName=".ActivityPrincipal"
+ android:theme="@style/BackupTheme"
+ android:exported="false"/>
+ <activity
+ android:name=".ActivityIntro"
+ android:exported="false"
+ android:theme="@style/AppThemeIntro"
+ />
+ <activity
+ android:name=".ActivityExperiments"
+ android:label="@string/experiments"
+ android:theme="@style/MapTheme">
+ </activity>
<activity
android:name=".ActivityAbout"
android:label="@string/about_activity"
diff --git a/app/src/main/java/it/reyboz/bustorino/ActivityAbout.kt b/app/src/main/java/it/reyboz/bustorino/ActivityAbout.kt
--- a/app/src/main/java/it/reyboz/bustorino/ActivityAbout.kt
+++ b/app/src/main/java/it/reyboz/bustorino/ActivityAbout.kt
@@ -35,8 +35,9 @@
import androidx.core.view.updatePadding
import it.reyboz.bustorino.backend.utils
import it.reyboz.bustorino.middleware.BarcodeScanUtils
+import it.reyboz.bustorino.middleware.GeneralActivity
-class ActivityAbout : AppCompatActivity() {
+class ActivityAbout : GeneralActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_about)
diff --git a/app/src/main/java/it/reyboz/bustorino/ActivityBackup.kt b/app/src/main/java/it/reyboz/bustorino/ActivityBackup.kt
--- a/app/src/main/java/it/reyboz/bustorino/ActivityBackup.kt
+++ b/app/src/main/java/it/reyboz/bustorino/ActivityBackup.kt
@@ -1,14 +1,17 @@
package it.reyboz.bustorino
import android.os.Bundle
+import android.view.MenuItem
import android.view.View
import androidx.appcompat.widget.Toolbar
+import androidx.core.app.NavUtils
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.updatePadding
import it.reyboz.bustorino.fragments.BackupImportFragment
import it.reyboz.bustorino.middleware.GeneralActivity
+
class ActivityBackup : GeneralActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -18,10 +21,8 @@
setSupportActionBar(mToolbar)
val actionBar = supportActionBar
- if (actionBar != null) {
- actionBar.setDisplayHomeAsUpEnabled(true)
- //actionBar.setIcon(R.drawable.ic_launcher)
- }
+ actionBar?.setDisplayHomeAsUpEnabled(true)
+
if (savedInstanceState == null) {
supportFragmentManager.beginTransaction()
.setReorderingAllowed(true)
diff --git a/app/src/main/java/it/reyboz/bustorino/ActivityPrincipal.java b/app/src/main/java/it/reyboz/bustorino/ActivityPrincipal.java
--- a/app/src/main/java/it/reyboz/bustorino/ActivityPrincipal.java
+++ b/app/src/main/java/it/reyboz/bustorino/ActivityPrincipal.java
@@ -119,6 +119,9 @@
R.id.drawer_action_info, () ->
startActivity(new Intent(this, ActivityAbout.class)),
R.id.nav_nearby, this::openNearbyStopsFragment
+ /*R.id.drawer_action_backup, () -> //this was for another action
+ startActivity(new Intent(this, ActivityBackup.class))*/
+
);
diff --git a/app/src/main/java/it/reyboz/bustorino/ActivitySettings.java b/app/src/main/java/it/reyboz/bustorino/ActivitySettings.java
--- a/app/src/main/java/it/reyboz/bustorino/ActivitySettings.java
+++ b/app/src/main/java/it/reyboz/bustorino/ActivitySettings.java
@@ -1,7 +1,6 @@
package it.reyboz.bustorino;
import android.os.Bundle;
-import android.view.ViewGroup;
import androidx.appcompat.widget.Toolbar;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
@@ -9,7 +8,6 @@
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.appcompat.app.ActionBar;
-import androidx.appcompat.app.AppCompatActivity;
import android.util.Log;
import it.reyboz.bustorino.fragments.SettingsFragment;
import it.reyboz.bustorino.middleware.GeneralActivity;
diff --git a/app/src/main/java/it/reyboz/bustorino/fragments/BackupImportFragment.kt b/app/src/main/java/it/reyboz/bustorino/fragments/BackupImportFragment.kt
--- a/app/src/main/java/it/reyboz/bustorino/fragments/BackupImportFragment.kt
+++ b/app/src/main/java/it/reyboz/bustorino/fragments/BackupImportFragment.kt
@@ -34,6 +34,7 @@
import de.siegmar.fastcsv.writer.CsvWriter
import it.reyboz.bustorino.R
import it.reyboz.bustorino.data.PreferencesHolder
+import it.reyboz.bustorino.data.PreferencesHolder.PREF_FAVORITE_LINES
import it.reyboz.bustorino.data.UserDB
import it.reyboz.bustorino.util.ImportExport
import java.io.*
@@ -240,8 +241,12 @@
val pref = PreferencesHolder.getMainSharedPreferences(context)
//In the future, if we move the favorite lines to a different file,
// We should check here if the key is in the jsonObject, and copy it to the other file
- ImportExport.importJsonToSharedPreferences(pref, jsonString, PreferencesHolder.IGNORE_KEYS_LOAD_MAIN, null,
- PreferencesHolder.KEYS_MERGE_SET)
+ //ImportExport.importJsonToSharedPreferences(pref, jsonString, PreferencesHolder.IGNORE_KEYS_LOAD_MAIN, null,
+ // PreferencesHolder.KEYS_MERGE_SET)
+ val mSet = setOf(PREF_FAVORITE_LINES)
+ ImportExport.importJsonToPreferencesWhitelist(pref, jsonString,
+ mSet, null,mSet
+ )
} catch (e: Exception){
Log.e(DEBUG_TAG, "Cannot read main preferences from file")
e.printStackTrace()
diff --git a/app/src/main/java/it/reyboz/bustorino/util/ImportExport.kt b/app/src/main/java/it/reyboz/bustorino/util/ImportExport.kt
--- a/app/src/main/java/it/reyboz/bustorino/util/ImportExport.kt
+++ b/app/src/main/java/it/reyboz/bustorino/util/ImportExport.kt
@@ -122,7 +122,7 @@
is JSONArray -> { // Handle arrays
val set = mutableSetOf<String>()
if (mergeSetKeys.contains(key))
- sharedPreferences.getStringSet(key, mutableSetOf())?.let { set.addAll(it) }
+ sharedPreferences.getStringSet(key, null)?.let { set.addAll(it) }
for (i in 0 until value.length()) {
set.add(value.optString(i))
}
@@ -140,6 +140,57 @@
return 0
}
+ fun importJsonToPreferencesWhitelist(sharedPreferences: SharedPreferences,
+ allJsonAsString: String,
+ desiredKeys: Set<String>?,
+ desiredKeyRegex: Regex?,
+ mergeSetKeys: Set<String>
+ ): Int {
+ val jsonObject = JSONObject(allJsonAsString)
+
+ try {
+ val editor = sharedPreferences.edit()
+ jsonObject.keys().forEach { key ->
+ // Logica di inclusione:
+ // Se entrambi i filtri sono null, consideriamo tutte le chiavi desiderate.
+ // Altrimenti, la chiave deve trovarsi nel set oppure corrispondere alla regex.
+ val isDesired = when {
+ desiredKeys == null && desiredKeyRegex == null -> true
+ desiredKeys?.contains(key) == true -> true
+ desiredKeyRegex?.containsMatchIn(key) == true -> true
+ else -> false
+ }
+
+ if (!isDesired) return@forEach
+
+ val value = jsonObject.opt(key)
+ when (value) {
+ is Boolean -> editor.putBoolean(key, value)
+ is Int -> editor.putInt(key, value)
+ is Long -> editor.putLong(key, value)
+ is Float -> editor.putFloat(key, value)
+ is String -> editor.putString(key, value)
+ is JSONArray -> {
+ val set = mutableSetOf<String>()
+ if (mergeSetKeys.contains(key)) {
+ sharedPreferences.getStringSet(key, null)?.let { set.addAll(it) }
+ }
+ for (i in 0 until value.length()) {
+ set.add(value.optString(i))
+ }
+ editor.putStringSet(key, set)
+ }
+ }
+ }
+ editor.apply()
+ } catch (e: Exception) {
+ Log.e(TAG, "Cannot write sharedPreferences")
+ e.printStackTrace()
+ return -1
+ }
+ return 0
+ }
+
fun writeSharedPreferencesIntoJSON(sharedPreferences: SharedPreferences): JSONObject{
val allEntries: Map<String?, *> = sharedPreferences.all
diff --git a/app/src/main/res/drawable/ic_backup_solid.xml b/app/src/main/res/drawable/ic_backup_solid.xml
new file mode 100644
--- /dev/null
+++ b/app/src/main/res/drawable/ic_backup_solid.xml
@@ -0,0 +1,15 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="36dp"
+ android:height="36dp"
+ android:viewportWidth="36"
+ android:viewportHeight="36">
+ <path
+ android:pathData="M2,24v6a2,2 0,0 0,2 2h28a2,2 0,0 0,2 -2v-6ZM30,29h-4v-2h4Z"
+ android:fillColor="#000"/>
+ <path
+ android:pathData="M30.84,13.37A1.94,1.94 0,0 0,28.93 12H21v6a3,3 0,1 1,-6 0v-6H7.07a1.92,1.92 0,0 0,-1.9 1.32c-2.31,6.36 -2.93,8.11 -3.1,8.68h31.86c-0.16,-0.57 -0.79,-2.31 -3.09,-8.63"
+ android:fillColor="#000"/>
+ <path
+ android:pathData="M13,9.92L17,6v12a1,1 0,1 0,2 0V6l4,3.95a1,1 0,1 0,1.38 -1.45L18,2.16L11.61,8.5A1,1 0,0 0,13 9.92"
+ android:fillColor="#000"/>
+</vector>
diff --git a/app/src/main/res/layout/fragment_backup.xml b/app/src/main/res/layout/fragment_backup.xml
--- a/app/src/main/res/layout/fragment_backup.xml
+++ b/app/src/main/res/layout/fragment_backup.xml
@@ -1,24 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragments.BackupImportFragment"
- android:padding="10dp"
- android:paddingEnd="5dp"
- android:paddingStart="5dp"
+ android:padding="10dp"
+ android:paddingEnd="2dp"
+ android:paddingStart="2dp"
+ android:orientation="vertical"
>
- <androidx.cardview.widget.CardView
+ <com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:id="@+id/topPartCardView"
- app:cardElevation="5dp"
+ app:cardBackgroundColor="@color/card_background"
app:cardCornerRadius="10dp"
- android:layout_alignParentStart="true"
- android:layout_alignParentEnd="true"
- android:layout_margin="5dp"
+ app:strokeColor="@color/card_border"
+ app:strokeWidth="1dp"
+ app:cardElevation="3dp"
+ android:layout_marginStart="5dp"
+ android:layout_marginEnd="5dp"
+ android:layout_marginTop="5dp"
android:layout_marginBottom="10dp"
>
<androidx.constraintlayout.widget.ConstraintLayout
@@ -30,13 +34,32 @@
android:layout_height="wrap_content"
android:fontFamily="@font/lato_bold"
android:text="@string/backup_title"
- android:textSize="22sp"
+ android:textSize="24sp"
+ android:layout_marginStart="20dp"
+ android:layout_marginEnd="20dp"
+ android:layout_marginTop="5dp"
android:id="@+id/backupTitleText"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:layout_marginBottom="10dp"
+ app:layout_constraintBottom_toTopOf="@id/descriptionBackupTextView"
+ />
+ <TextView android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:fontFamily="@font/lato_regular"
+ android:text="@string/backup_description"
+ android:textSize="16sp"
+ android:layout_marginStart="20dp"
+ android:layout_marginEnd="20dp"
+ android:layout_marginTop="5dp"
+ android:id="@+id/descriptionBackupTextView"
+ app:layout_constraintTop_toBottomOf="@id/backupTitleText"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ android:textAppearance="@style/TextAppearance.AppCompat.Medium"
+ android:layout_marginBottom="10dp"
app:layout_constraintBottom_toTopOf="@id/saveButton"
/>
<Button
@@ -55,19 +78,25 @@
/>
</androidx.constraintlayout.widget.ConstraintLayout>
- </androidx.cardview.widget.CardView>
+ </com.google.android.material.card.MaterialCardView>
- <androidx.cardview.widget.CardView
+ <com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/bottomPartCardview"
android:layout_below="@id/topPartCardView"
android:layout_alignParentStart="true"
android:layout_alignParentEnd="true"
- app:cardElevation="2dp"
+ app:cardBackgroundColor="@color/card_background"
app:cardCornerRadius="10dp"
- android:layout_margin="5dp"
+ app:strokeColor="@color/card_border"
+ app:strokeWidth="1dp"
+ app:cardElevation="3dp"
+ android:layout_marginStart="5dp"
+ android:layout_marginEnd="5dp"
+ android:layout_marginTop="5dp"
+ android:layout_marginBottom="10dp"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
@@ -78,7 +107,10 @@
android:layout_height="wrap_content"
android:fontFamily="@font/lato_bold"
android:text="@string/restore_title"
- android:textSize="22sp"
+ android:textSize="24sp"
+ android:layout_marginTop="5dp"
+ android:layout_marginStart="20dp"
+ android:layout_marginEnd="20dp"
android:id="@+id/restoreTitleText"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
@@ -90,29 +122,32 @@
<CheckBox
android:text="@string/load_file_favorites"
- android:layout_width="wrap_content"
+ android:layout_width="0dp"
android:checked="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/restoreTitleText"
app:layout_constraintBottom_toTopOf="@id/preferencesCheckBox"
app:layout_constraintHorizontal_bias="0.0"
- android:layout_marginStart="15dp"
android:minHeight="48dp"
+ android:textSize="15sp"
+ android:layout_marginStart="10dp"
+ android:layout_marginEnd="10dp"
android:layout_height="wrap_content"
android:id="@+id/favoritesCheckBox"/>
<CheckBox
android:text="@string/load_preferences"
- android:layout_width="wrap_content"
+ android:layout_width="0dp"
android:checked="true"
app:layout_constraintTop_toBottomOf="@id/favoritesCheckBox"
app:layout_constraintBottom_toTopOf="@id/loadDataButton"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHorizontal_bias="0.0"
- android:layout_marginStart="15dp"
android:minHeight="48dp"
+ android:textSize="15sp"
android:layout_marginTop="8dp"
-
+ android:layout_marginStart="10dp"
+ android:layout_marginEnd="10dp"
android:layout_height="wrap_content" android:id="@+id/preferencesCheckBox"/>
<Button
android:text="@string/btn_load_backup_message"
@@ -129,6 +164,6 @@
/>
</androidx.constraintlayout.widget.ConstraintLayout>
- </androidx.cardview.widget.CardView>
+ </com.google.android.material.card.MaterialCardView>
-</RelativeLayout>
\ No newline at end of file
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -223,6 +223,7 @@
<string name="backup_restore">Backup e ripristino</string>
<string name="saved_data">Dati salvati</string>
<string name="backup_title">Backup</string>
+ <string name="backup_description">Salva tutte le impostazioni con le fermate e le linee preferite in un file locale, come backup oppure per condivisione tra dispositivi o con altri utenti.</string>
<string name="restore_title">Ripristino</string>
<string name="backup_completed_toast">Backup completato</string>
<string name="backup_restore_pref_description">Salva o ripristina i dati</string>
@@ -230,8 +231,8 @@
<string name="btn_load_backup_message">Importa i dati dal backup</string>
<string name="data_imported_backup">Backup importato</string>
<string name="message_check_at_least_one">Seleziona almeno un elemento da importare!</string>
- <string name="load_file_favorites">Importa preferiti dal backup</string>
- <string name="load_preferences">Importa preferenze dal backup</string>
+ <string name="load_file_favorites">Importa fermate e linee preferite dal backup</string>
+ <string name="load_preferences">Importa tutte le impostazioni dal backup</string>
<string name="no_map_app_to_show_stop">Nessuna app disponibile per mostrare la fermata!</string>
<string name="destination_unknown">Destinazione sconosciuta</string>
<string name="showing_same_direction">Direzione già selezionata</string>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -381,14 +381,15 @@
<string name="restore_title">Restore</string>
<!-- String in the settings screen to describe the action that can be performed -->
<string name="backup_restore_pref_description">Backup or restore data</string>
+ <string name="backup_description">Save all the application settings and favorites into a local zip file, to do a backup or share with others.</string>
<string name="saved_data">Data saved</string>
<string name="backup_completed_toast">Backup completed</string>
<string name="btn_backup_message">Backup to file</string>
<string name="btn_load_backup_message">Import data from backup</string>
<string name="data_imported_backup">Backup has been imported</string>
<string name="message_check_at_least_one">Check at least one item to import!</string>
- <string name="load_file_favorites">Import favorites from backup</string>
- <string name="load_preferences">Import preferences from backup</string>
+ <string name="load_file_favorites">Import favorites stops and lines from backup</string>
+ <string name="load_preferences">Import all preferences from backup</string>
<!-- TODO: Remove or change this placeholder text -->
<string name="hello_blank_fragment">Hello blank fragment</string>

File Metadata

Mime Type
text/plain
Expires
Tue, Oct 20, 15:19 (6 h, 46 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2255975
Default Alt Text
D266.1792502386.diff (23 KB)

Event Timeline