Skip to content

Commit

Permalink
gradle from 8.1.0 to 8.1.1
Browse files Browse the repository at this point in the history
添加备份与恢复
  • Loading branch information
xiaowine committed Aug 25, 2023
1 parent b53538b commit 7df1df8
Show file tree
Hide file tree
Showing 6 changed files with 137 additions and 12 deletions.
76 changes: 76 additions & 0 deletions app/src/main/java/cn/lyric/getter/tool/BackupTools.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package cn.lyric.getter.tool

import android.app.Activity
import android.content.SharedPreferences
import android.net.Uri
import cn.xiaowine.xkt.AcTool.showToast
import cn.xiaowine.xkt.Tool.isNotNull
import org.json.JSONObject
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter


object BackupTools {
fun handleReadDocument(activity: Activity, sp: SharedPreferences, data: Uri) {
val edit = sp.edit()
try {
activity.contentResolver.openInputStream(data)?.let { loadFile ->
BufferedReader(InputStreamReader(loadFile)).apply {
val sb = StringBuffer()
var line = readLine()
while (line.isNotNull()) {
sb.append(line)
line = readLine()
}
val read = sb.toString()
JSONObject(read).apply {
val key = keys()
while (key.hasNext()) {
val keys = key.next()
when (val value = get(keys)) {
is String -> {
if (value.startsWith("Float:")) {
edit.putFloat(keys, value.substring(value.indexOf("Float:")).toFloat() / 1000)
} else {
edit.putString(keys, value)
}
}

is Boolean -> edit.putBoolean(keys, value)
is Int -> edit.putInt(keys, value)
}
}
}
close()
}
}
edit.apply()
"load ok".showToast()
} catch (e: Exception) {
"load fail\n${e.message}".showToast()
}
}

fun handleCreateDocument(activity: Activity, sp: SharedPreferences, data: Uri) {
try {
activity.contentResolver.openOutputStream(data)?.let { saveFile ->
BufferedWriter(OutputStreamWriter(saveFile)).apply {
write(JSONObject().also {
for (entry: Map.Entry<String, *> in sp.all) {
when (entry.value) {
Float -> it.put(entry.key, "Float:" + (entry.value as Float * 1000).toInt().toString())
else -> it.put(entry.key, entry.value)
}
}
}.toString())
close()
}
}
"save ok".showToast()
} catch (e: Exception) {
"save fail\n${e.message}".showToast()
}
}
}
55 changes: 45 additions & 10 deletions app/src/main/java/cn/lyric/getter/ui/fragment/HomeFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,26 +10,51 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.activity.result.contract.ActivityResultContracts
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.fragment.app.viewModels
import cn.lyric.getter.BuildConfig
import cn.lyric.getter.R
import cn.lyric.getter.config.ActivityOwnSP.config
import cn.lyric.getter.config.ActivityOwnSP.ownSP
import cn.lyric.getter.databinding.FragmentHomeBinding
import cn.lyric.getter.tool.ActivityTools.getAppRules
import cn.lyric.getter.tool.BackupTools
import cn.lyric.getter.tool.Tools.restartTheScopedSoftware
import cn.lyric.getter.ui.viewmodel.HomeViewModel
import cn.lyric.getter.ui.viewmodel.ShareViewModel
import cn.xiaowine.xkt.AcTool.restartApp
import cn.xiaowine.xkt.Tool.isNotNull
import cn.xiaowine.xkt.Tool.toUpperFirstCaseAndLowerOthers
import com.google.android.material.color.MaterialColors
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar
import java.text.SimpleDateFormat
import java.util.Locale


class HomeFragment : Fragment() {
private var recoveryPickerLauncher = registerForActivityResult(ActivityResultContracts.GetContent()) {
it.isNotNull { uri ->
BackupTools.handleReadDocument(requireActivity(), ownSP, uri)
MaterialAlertDialogBuilder(requireContext()).apply {
setTitle(R.string.recovery)
setCancelable(false)
setMessage(R.string.recovery_summary)
setPositiveButton(R.string.restart) { _, _ ->
restartApp()
}
show()
}
}
}
private var backupPickerLauncher = registerForActivityResult(ActivityResultContracts.CreateDocument("application/json")) {
it.isNotNull { uri ->
BackupTools.handleCreateDocument(requireActivity(), ownSP, uri)
}
}

private val shareViewModel: ShareViewModel by activityViewModels()
private val homeViewModel: HomeViewModel by viewModels()

Expand Down Expand Up @@ -80,16 +105,26 @@ class HomeFragment : Fragment() {
isChecked = config.hideDesktopIcons
}
setOnMenuItemClickListener {
if (it.itemId == R.id.show_hide_desktop_icons) {
it.isChecked = !it.isChecked
config.hideDesktopIcons = it.isChecked
requireContext().packageManager.setComponentEnabledSetting(
ComponentName(requireContext(), "${BuildConfig.APPLICATION_ID}.launcher"), if (it.isChecked) {
PackageManager.COMPONENT_ENABLED_STATE_DISABLED
} else {
PackageManager.COMPONENT_ENABLED_STATE_ENABLED
}, PackageManager.DONT_KILL_APP
)
when (it.itemId) {
R.id.backup -> {
backupPickerLauncher.launch("LyricGetter_Backup_${SimpleDateFormat("yyyy-MM-dd-HH:mm", Locale.getDefault()).format(System.currentTimeMillis())}.json")
}

R.id.recovery -> {
recoveryPickerLauncher.launch("application/json")
}

R.id.show_hide_desktop_icons -> {
it.isChecked = !it.isChecked
config.hideDesktopIcons = it.isChecked
requireContext().packageManager.setComponentEnabledSetting(
ComponentName(requireContext(), "${BuildConfig.APPLICATION_ID}.launcher"), if (it.isChecked) {
PackageManager.COMPONENT_ENABLED_STATE_DISABLED
} else {
PackageManager.COMPONENT_ENABLED_STATE_ENABLED
}, PackageManager.DONT_KILL_APP
)
}
}
true
}
Expand Down
11 changes: 11 additions & 0 deletions app/src/main/res/menu/home_menu.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,15 @@
android:layout_height="wrap_content"
android:title="@string/show_hide_desktop_icons" />
</group>

<item
android:id="@+id/backup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:title="@string/backup" />
<item
android:id="@+id/recovery"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:title="@string/recovery" />
</menu>
3 changes: 3 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,7 @@
<string name="update">更新</string>
<string name="check_update_error">检查更新时出现错误</string>
<string name="app_rules_api_version_label">APP规则API版本</string>
<string name="backup">备份</string>
<string name="recovery">恢复</string>
<string name="recovery_summary">重启应用程序生效</string>
</resources>
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[versions]
agp = "8.1.0"
agp = "8.1.1"
kotlin = "1.9.0"

[libraries]
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#Tue Jan 25 15:10:00 CST 2022
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME

0 comments on commit 7df1df8

Please sign in to comment.