Skip to content

Commit

Permalink
Merge pull request #260 from GuoXiCheng/dev-c
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
GuoXiCheng authored Sep 27, 2024
2 parents 8218065 + fb60819 commit fd0007f
Show file tree
Hide file tree
Showing 8 changed files with 176 additions and 14 deletions.
25 changes: 25 additions & 0 deletions DISCLAIMER.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# 免责声明

感谢您信任并使用「SKIP」,为了保障您的权益,请在使用「SKIP」前,仔细阅读本免责声明。

本项目遵循 GNU Affero 通用公共许可证第 3 版(AGPLv3)发布。在使用本项目的过程中,请注意以下事项:

## 一、无任何担保

本项目“按现状”(as-is)提供,开发者不对其做出任何明示或暗示的担保。无论是适销性、特定用途的适用性,还是非侵权性,本项目均不做任何承诺。使用本项目的风险完全由您自己承担。

## 二、不承担任何责任

在适用法律允许的最大范围内,项目的开发者、贡献者不对因使用或无法使用本项目或其衍生物而引起的任何形式的损失、损害或法律责任负责。这包括但不限于直接损失、间接损失、特殊损害、偶然损害或惩罚性赔偿。

## 三、知识产权声明

本项目中所涉及的任何代码、文档或其他文件均受 AGPLv3 许可证的约束。您可以自由使用、修改和分发本项目,但必须保留原始许可条款,并且在适用的情况下,任何分发的衍生作品也必须遵循相同的许可证。

## 四、责任自负

您在使用本项目的过程中,可能需要遵守您所在国家或地区的相关法律和规定。请确保您在使用、修改或分发本项目之前,已经了解并遵循所有适用的法律要求。项目的开发者和贡献者不承担您在使用本项目时产生的任何法律后果。

## 五、第三方依赖

本项目包含来自第三方的开源组件或依赖项,这些第三方的许可条款可能与 AGPLv3 不同。请在使用这些组件时仔细阅读并遵守相应的许可证要求。
20 changes: 8 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,18 @@ SKIP 是一款免费开源的安卓应用,旨在利用 Android 无障碍服务

<img src="https://skip.guoxicheng.top//images/main-interface-light.png" alt="https://skip.guoxicheng.top//images/main-interface-light.png" style="width: 30%;" />

## 使用说明
## 文档

- 点击屏幕中心按钮跳转无障碍服务界面,打开无障碍服务即可
- 源代码透明公开,0 项隐私权限申请,完全免费无套路,下载请戳 👉 [SKIP Docs](https://skip.guoxicheng.top/)
- 目前小米/红米手机完美运行,其他品牌手机请自行测试
- 如果对你有帮助的话可以给颗小星星,感谢支持
[SKIP 文档](https://skip.guoxicheng.top/)

## 如何贡献
## 许可证

- 应用市场 APP 种类繁多,情况各异,无法保证完全适配
- 如有问题可以提交 issue。
[AGPL-3.0 license](https://github.com/GuoXiCheng/SKIP/blob/main/LICENSE)

## Star History
## 补充说明

[![Star History Chart](https://api.star-history.com/svg?repos=GuoXiCheng/SKIP&type=Date)](https://star-history.com/#GuoXiCheng/SKIP&Date)
[免责声明](https://github.com/GuoXiCheng/SKIP/blob/main/DISCLAIMER)

## 许可证
## Star History

[AGPL-3.0 license](https://github.com/GuoXiCheng/SKIP/blob/main/LICENSE)
[![Star History Chart](https://api.star-history.com/svg?repos=GuoXiCheng/SKIP&type=Date)](https://star-history.com/#GuoXiCheng/SKIP&Date)
1 change: 1 addition & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ android {
}

dependencies {
implementation(libs.core)
implementation(libs.coil.compose)
implementation(libs.androidx.work.runtime.ktx)
implementation(libs.androidx.work.runtime)
Expand Down
11 changes: 11 additions & 0 deletions app/src/main/java/com/android/skip/ui/main/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ import com.android.skip.ui.components.FlatButton
import com.android.skip.ui.components.ResourceIcon
import com.android.skip.ui.components.RowContent
import com.android.skip.ui.inspect.InspectActivity
import com.android.skip.ui.main.disclaimer.DisclaimerDialog
import com.android.skip.ui.main.disclaimer.DisclaimerViewModel
import com.android.skip.ui.main.start.StartAccessibilityViewModel
import com.android.skip.ui.main.start.StartButton
import com.android.skip.ui.main.tutorial.TutorialDialog
Expand All @@ -53,6 +55,8 @@ class MainActivity : AppCompatActivity() {

private val tutorialViewModel by viewModels<TutorialViewModel>()

private val disclaimerViewModel by viewModels<DisclaimerViewModel>()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Expand Down Expand Up @@ -103,6 +107,13 @@ class MainActivity : AppCompatActivity() {
}
startActivity(intent)
})
DisclaimerDialog(disclaimerViewModel, {
disclaimerViewModel.changeDialogState(false)
DataStoreUtils.putSyncData(getString(R.string.store_show_disclaimer), false)
}, {
disclaimerViewModel.changeDialogState(false)
finish()
})
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
package com.android.skip.ui.main.disclaimer

import android.view.ViewGroup
import android.widget.TextView
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.heightIn
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.viewinterop.AndroidView
import com.android.skip.R
import io.noties.markwon.Markwon

@Composable
fun DisclaimerDialog(
disclaimerViewModel: DisclaimerViewModel,
onConfirm: () -> Unit,
onDismiss: () -> Unit,
) {
val isShowDialog = disclaimerViewModel.isShowDialog.observeAsState()

if (isShowDialog.value == true) {
val markdownText = """
# 免责声明
感谢您信任并使用「SKIP」,为了保障您的权益,请在使用「SKIP」前,仔细阅读本免责声明。
本项目遵循 GNU Affero 通用公共许可证第 3 版(AGPLv3)发布。在使用本项目的过程中,请注意以下事项:
## 一、无任何担保
本项目“按现状”(as-is)提供,开发者不对其做出任何明示或暗示的担保。无论是适销性、特定用途的适用性,还是非侵权性,本项目均不做任何承诺。使用本项目的风险完全由您自己承担。
## 二、不承担任何责任
在适用法律允许的最大范围内,项目的开发者、贡献者不对因使用或无法使用本项目或其衍生物而引起的任何形式的损失、损害或法律责任负责。这包括但不限于直接损失、间接损失、特殊损害、偶然损害或惩罚性赔偿。
## 三、知识产权声明
本项目中所涉及的任何代码、文档或其他文件均受 AGPLv3 许可证的约束。您可以自由使用、修改和分发本项目,但必须保留原始许可条款,并且在适用的情况下,任何分发的衍生作品也必须遵循相同的许可证。
## 四、责任自负
您在使用本项目的过程中,可能需要遵守您所在国家或地区的相关法律和规定。请确保您在使用、修改或分发本项目之前,已经了解并遵循所有适用的法律要求。项目的开发者和贡献者不承担您在使用本项目时产生的任何法律后果。
## 五、第三方依赖
本项目包含来自第三方的开源组件或依赖项,这些第三方的许可条款可能与 AGPLv3 不同。请在使用这些组件时仔细阅读并遵守相应的许可证要求。
""".trimIndent()
val context = LocalContext.current
val markwon = remember { Markwon.create(context) }
AlertDialog(
containerColor = MaterialTheme.colorScheme.background,
onDismissRequest = { /*TODO*/ },
confirmButton = {
TextButton(onClick = onConfirm) {
Text(text = stringResource(id = R.string.dialog_approve))
}
},
text = {
Column(
modifier = Modifier
.heightIn(max = 500.dp)
.verticalScroll(rememberScrollState())
) {
AndroidView(
modifier = Modifier.padding(8.dp),
factory = { context ->
TextView(context).apply {
setLineSpacing(1.2f, 1.2f)
isSingleLine = false
layoutParams = ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
}
},
update = { textView ->
markwon.setMarkdown(textView, markdownText)
}
)
}
},
dismissButton = {
TextButton(onClick = onDismiss) {
Text(text = stringResource(id = R.string.dialog_reject))
}
}
)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.android.skip.ui.main.disclaimer

import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.android.skip.R
import com.android.skip.util.DataStoreUtils
import com.blankj.utilcode.util.StringUtils.getString
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject

@HiltViewModel
class DisclaimerViewModel @Inject constructor() : ViewModel() {
private val _isShowDialog =
MutableLiveData(DataStoreUtils.getSyncData(getString(R.string.store_show_disclaimer), true))
val isShowDialog: LiveData<Boolean> = _isShowDialog

fun changeDialogState(showDialog: Boolean) {
_isShowDialog.postValue(showDialog)
}
}
5 changes: 4 additions & 1 deletion app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<string name="inspect">布局检查</string>
<string name="inspect_start_title">是否启用布局检查</string>
<string name="inspect_start_subtitle">启用布局检查记录屏幕节点信息</string>
<string name="inspect_start_subtitle">启用后按下「音量-」按键执行布局检查</string>
<string name="inspect_record_title">布局检查记录</string>
<string name="inspect_record_subtitle">当前存在 %1$s 条记录</string>
<string name="inspect_function_intro">功能介绍</string>
Expand Down Expand Up @@ -99,6 +99,8 @@
<string name="dialog_get_started_content">是否需要前往查看「开始使用」教程</string>
<string name="dialog_go_at_once">立即前往</string>
<string name="dialog_no_more_reminders">不再提醒</string>
<string name="dialog_approve">同意</string>
<string name="dialog_reject">拒绝</string>

<string name="store_custom_config">CUSTOM_CONFIG</string>
<string name="store_default_config">https://skip.guoxicheng.top/skip_config_v3.yaml</string>
Expand All @@ -110,6 +112,7 @@
<string name="store_current_theme">CURRENT_THEME</string>
<string name="store_not_update">NOT_UPDATE</string>
<string name="store_show_tutorial">SHOW_TUTORIAL</string>
<string name="store_show_disclaimer">SHOW_DISCLAIMER</string>

<string name="notification_accessibility_service_running">无障碍服务运行中</string>
<string name="notification_inspect_service_running">布局检查服务运行中</string>
Expand Down
4 changes: 3 additions & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ activityCompose = "1.9.0"
agp = "8.5.1"
coilCompose = "1.3.2"
converterScalars = "2.5.0"
datastorePreferences = "1.0.0"
core = "4.6.2"
datastorePreferences = "1.1.1"
gson = "2.10.1"
hiltAndroidCompiler = "2.51.1"
hiltAndroid = "2.51.1"
Expand Down Expand Up @@ -45,6 +46,7 @@ androidx-work-runtime = { module = "androidx.work:work-runtime", version.ref = "
androidx-work-runtime-ktx = { module = "androidx.work:work-runtime-ktx", version.ref = "workRuntime" }
coil-compose = { module = "io.coil-kt:coil-compose", version.ref = "coilCompose" }
converter-scalars = { module = "com.squareup.retrofit2:converter-scalars", version.ref = "converterScalars" }
core = { module = "io.noties.markwon:core", version.ref = "core" }
gson = { module = "com.google.code.gson:gson", version.ref = "gson" }
hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hiltAndroid" }
hilt-android-compiler = { module = "com.google.dagger:hilt-android-compiler", version.ref = "hiltAndroidCompiler" }
Expand Down

0 comments on commit fd0007f

Please sign in to comment.