Rewrite backup and restore - part 6

pull/586/head
FongMi 1 year ago
parent 94c213c98b
commit d04aee6d21
  1. 21
      app/src/main/java/com/fongmi/android/tv/bean/Backup.java
  2. 2
      app/src/main/res/values-zh-rCN/strings.xml
  3. 2
      app/src/main/res/values-zh-rTW/strings.xml
  4. 2
      app/src/main/res/values/strings.xml
  5. 2
      app/src/mobile/res/layout/adapter_restore.xml
  6. 33
      app/src/mobile/res/layout/fragment_setting.xml
  7. 5
      catvod/src/main/java/com/github/catvod/utils/Prefers.java

@ -4,10 +4,16 @@ import androidx.annotation.NonNull;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.db.AppDatabase;
import com.github.catvod.utils.Prefers;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.ToNumberPolicy;
import com.google.gson.annotations.SerializedName;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Backup {
@ -21,9 +27,12 @@ public class Backup {
private List<Config> config;
@SerializedName("history")
private List<History> history;
@SerializedName("prefers")
private Map<String, ?> prefers;
public static Backup create() {
Backup backup = new Backup();
backup.setPrefers(Prefers.getPrefers().getAll());
backup.setSite(AppDatabase.get().getSiteDao().findAll());
backup.setLive(AppDatabase.get().getLiveDao().findAll());
backup.setKeep(AppDatabase.get().getKeepDao().findAll());
@ -39,11 +48,13 @@ public class Backup {
AppDatabase.get().getKeepDao().insertOrUpdate(getKeep());
AppDatabase.get().getConfigDao().insertOrUpdate(getConfig());
AppDatabase.get().getHistoryDao().insertOrUpdate(getHistory());
for (Map.Entry<String, ?> entry : getPrefers().entrySet()) Prefers.put(entry.getKey(), entry.getValue());
}
public static Backup objectFrom(String json) {
try {
Backup backup = App.gson().fromJson(json, Backup.class);
Gson gson = new GsonBuilder().setObjectToNumberStrategy(ToNumberPolicy.LAZILY_PARSED_NUMBER).create();
Backup backup = gson.fromJson(json, Backup.class);
return backup == null ? new Backup() : backup;
} catch (Exception e) {
return new Backup();
@ -90,6 +101,14 @@ public class Backup {
this.history = history;
}
public Map<String, ?> getPrefers() {
return prefers == null ? new HashMap<>() : prefers;
}
public void setPrefers(Map<String, ?> prefers) {
this.prefers = prefers;
}
@NonNull
@Override
public String toString() {

@ -79,7 +79,7 @@
<string name="setting_on"></string>
<!-- Backup & Restore -->
<string name="restore_select">选择档案</string>
<string name="restore_select">选择备份</string>
<string name="restore_success">恢复成功</string>
<string name="restore_fail">恢复失败</string>
<string name="backup_success">备份成功</string>

@ -79,7 +79,7 @@
<string name="setting_on"></string>
<!-- Backup & Restore -->
<string name="restore_select">選擇檔案</string>
<string name="restore_select">選擇備份</string>
<string name="restore_success">還原成功</string>
<string name="restore_fail">還原失敗</string>
<string name="backup_success">備份成功</string>

@ -80,7 +80,7 @@
<string name="setting_on">On</string>
<!-- Backup & Restore -->
<string name="restore_select">Select file</string>
<string name="restore_select">Select backup</string>
<string name="restore_success">Restore successful</string>
<string name="restore_fail">Restore failed</string>
<string name="backup_success">Backup successful</string>

@ -28,7 +28,7 @@
android:layout_height="wrap_content"
android:singleLine="true"
android:textColor="?android:attr/textColorSecondary"
android:textSize="14sp" />
android:textSize="12sp" />
</LinearLayout>

@ -369,33 +369,38 @@
</LinearLayout>
<LinearLayout
android:id="@+id/backup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="@drawable/shape_item"
android:orientation="horizontal">
android:orientation="horizontal"
android:padding="0dp">
<TextView
android:layout_width="wrap_content"
android:id="@+id/backup"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="?android:attr/selectableItemBackground"
android:paddingStart="12dp"
android:paddingTop="8dp"
android:paddingEnd="12dp"
android:paddingBottom="8dp"
android:text="@string/setting_backup"
android:textColor="@color/white"
android:textSize="16sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/restore"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="@drawable/shape_item"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:id="@+id/restore"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="?android:attr/selectableItemBackground"
android:gravity="end"
android:paddingStart="12dp"
android:paddingTop="8dp"
android:paddingEnd="12dp"
android:paddingBottom="8dp"
android:text="@string/setting_restore"
android:textColor="@color/white"
android:textSize="16sp" />

@ -9,7 +9,7 @@ import com.google.gson.internal.LazilyParsedNumber;
public class Prefers {
private static SharedPreferences getPrefers() {
public static SharedPreferences getPrefers() {
return PreferenceManager.getDefaultSharedPreferences(Init.context());
}
@ -74,7 +74,8 @@ public class Prefers {
} else if (obj instanceof Long) {
getPrefers().edit().putLong(key, (Long) obj).apply();
} else if (obj instanceof LazilyParsedNumber) {
getPrefers().edit().putInt(key, ((LazilyParsedNumber) obj).intValue()).apply();
LazilyParsedNumber number = (LazilyParsedNumber) obj;
put(key, number.toString().contains(".") ? number.floatValue() : number.intValue());
}
}

Loading…
Cancel
Save