Skip to content

Commit

Permalink
[feature]支持“自动分享”:直接将表情包分享到上一个页面对应的应用;增加InfoTipSettingsItem
Browse files Browse the repository at this point in the history
  • Loading branch information
SkyD666 committed Jul 2, 2023
1 parent 15aff35 commit 32b988d
Show file tree
Hide file tree
Showing 28 changed files with 617 additions and 42 deletions.
6 changes: 0 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,6 @@
</div>




## 💡 Features

1. Support **tagging** for stickers
Expand Down Expand Up @@ -146,10 +144,6 @@ Note: **and** logic is represented by **space, tab, line break**, multiple of th
</tr>
</tbody>
</table>




## 📃 License

This software code is available under the following **license**
Expand Down
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ android {
applicationId "com.skyd.rays"
minSdk 24
targetSdk 33
versionCode 17
versionName "1.3-beta07"
versionCode 18
versionName "1.3-beta08"
flavorDimensions "versionName"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
Expand Down
13 changes: 13 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,19 @@
</intent-filter>
</receiver>

<service
android:name=".ui.service.RaysAccessibilityService"
android:exported="true"
android:label="@string/accessibility_service_label"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
<meta-data
android:name="android.accessibilityservice"
android:resource="@xml/accessibilityservice" />
</service>

<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/java/com/skyd/rays/ext/PreferenceExt.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.skyd.rays.ext

import androidx.datastore.preferences.core.Preferences
import com.skyd.rays.model.preference.ApiGrantPreference
import com.skyd.rays.model.preference.AutoShareIgnoreStrategyPreference
import com.skyd.rays.model.preference.CurrentStickerUuidPreference
import com.skyd.rays.model.preference.ExportStickerDirPreference
import com.skyd.rays.model.preference.HomeShareButtonAlignmentPreference
Expand Down Expand Up @@ -55,6 +56,7 @@ fun Preferences.toSettings(): Settings {
// Share
uriStringShare = UriStringSharePreference.fromPreferences(this),
stickerExtName = StickerExtNamePreference.fromPreferences(this),
autoShareIgnoreStrategy = AutoShareIgnoreStrategyPreference.fromPreferences(this),

// Api
apiGrant = ApiGrantPreference.fromPreferences(this),
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/skyd/rays/model/db/AppDatabase.kt
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ abstract class AppDatabase : RoomDatabase() {
private var instance: AppDatabase? = null

private val migrations = arrayOf(
Migration1To2(), Migration2To3(), Migration3To4(), Migration4To5(), Migration5To6()
Migration1To2(), Migration2To3(), Migration3To4(), Migration4To5(), Migration5To6(),
)

fun getInstance(context: Context): AppDatabase {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.skyd.rays.model.preference

import android.content.Context
import androidx.datastore.preferences.core.Preferences
import androidx.datastore.preferences.core.stringPreferencesKey
import com.skyd.rays.ext.dataStore
import com.skyd.rays.ext.put
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch

object AutoShareIgnoreStrategyPreference {
private const val AUTO_SHARE_IGNORE_STRATEGY = "autoShareIgnoreStrategy"
const val default = ".*launcher.*"

val key = stringPreferencesKey(AUTO_SHARE_IGNORE_STRATEGY)

fun put(context: Context, scope: CoroutineScope, value: String) {
scope.launch(Dispatchers.IO) {
context.dataStore.put(key, value)
}
}

fun fromPreferences(preferences: Preferences): String = preferences[key] ?: default
}
3 changes: 3 additions & 0 deletions app/src/main/java/com/skyd/rays/model/preference/Settings.kt
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import com.skyd.rays.model.preference.theme.CustomPrimaryColorPreference
import com.skyd.rays.model.preference.theme.DarkModePreference
import com.skyd.rays.model.preference.theme.ThemeNamePreference
import com.skyd.rays.ui.local.LocalApiGrant
import com.skyd.rays.ui.local.LocalAutoShareIgnoreStrategy
import com.skyd.rays.ui.local.LocalCurrentStickerUuid
import com.skyd.rays.ui.local.LocalCustomPrimaryColor
import com.skyd.rays.ui.local.LocalDarkMode
Expand Down Expand Up @@ -65,6 +66,7 @@ data class Settings(
// Share
val uriStringShare: Boolean = UriStringSharePreference.default,
val stickerExtName: Boolean = StickerExtNamePreference.default,
val autoShareIgnoreStrategy: String = AutoShareIgnoreStrategyPreference.default,
// Api
val apiGrant: Boolean = ApiGrantPreference.default,
)
Expand Down Expand Up @@ -104,6 +106,7 @@ fun SettingsProvider(
// Share
LocalUriStringShare provides settings.uriStringShare,
LocalStickerExtName provides settings.stickerExtName,
LocalAutoShareIgnoreStrategy provides settings.autoShareIgnoreStrategy,
// Api
LocalApiGrant provides settings.apiGrant,
) {
Expand Down
14 changes: 11 additions & 3 deletions app/src/main/java/com/skyd/rays/ui/activity/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.windowsizeclass.calculateWindowSizeClass
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
Expand Down Expand Up @@ -48,10 +49,10 @@ import com.skyd.rays.ui.screen.minitool.styletransfer.STYLE_TRANSFER_SCREEN_ROUT
import com.skyd.rays.ui.screen.minitool.styletransfer.StyleTransferScreen
import com.skyd.rays.ui.screen.settings.SETTINGS_SCREEN_ROUTE
import com.skyd.rays.ui.screen.settings.SettingsScreen
import com.skyd.rays.ui.screen.settings.api.apigrant.API_GRANT_SCREEN_ROUTE
import com.skyd.rays.ui.screen.settings.api.API_SCREEN_ROUTE
import com.skyd.rays.ui.screen.settings.api.apigrant.ApiGrantScreen
import com.skyd.rays.ui.screen.settings.api.ApiScreen
import com.skyd.rays.ui.screen.settings.api.apigrant.API_GRANT_SCREEN_ROUTE
import com.skyd.rays.ui.screen.settings.api.apigrant.ApiGrantScreen
import com.skyd.rays.ui.screen.settings.appearance.APPEARANCE_SCREEN_ROUTE
import com.skyd.rays.ui.screen.settings.appearance.AppearanceScreen
import com.skyd.rays.ui.screen.settings.appearance.style.HOME_STYLE_SCREEN_ROUTE
Expand All @@ -70,6 +71,8 @@ import com.skyd.rays.ui.screen.settings.searchconfig.SEARCH_CONFIG_SCREEN_ROUTE
import com.skyd.rays.ui.screen.settings.searchconfig.SearchConfigScreen
import com.skyd.rays.ui.screen.settings.shareconfig.SHARE_CONFIG_SCREEN_ROUTE
import com.skyd.rays.ui.screen.settings.shareconfig.ShareConfigScreen
import com.skyd.rays.ui.screen.settings.shareconfig.autoshare.AUTO_SHARE_SCREEN_ROUTE
import com.skyd.rays.ui.screen.settings.shareconfig.autoshare.AutoShareScreen
import com.skyd.rays.ui.screen.settings.shareconfig.uristringshare.URI_STRING_SHARE_SCREEN_ROUTE
import com.skyd.rays.ui.screen.settings.shareconfig.uristringshare.UriStringShareScreen
import com.skyd.rays.ui.theme.RaysTheme
Expand All @@ -93,7 +96,9 @@ class MainActivity : AppCompatActivity() {
LocalWindowSizeClass provides calculateWindowSizeClass(this)
) {
AppContent()
initIntent()
LaunchedEffect(Unit) {
initIntent()
}
}
}
}
Expand Down Expand Up @@ -204,6 +209,9 @@ class MainActivity : AppCompatActivity() {
composable(route = API_GRANT_SCREEN_ROUTE) {
ApiGrantScreen()
}
composable(route = AUTO_SHARE_SCREEN_ROUTE) {
AutoShareScreen()
}
}

if (openUpdateDialog) {
Expand Down
13 changes: 13 additions & 0 deletions app/src/main/java/com/skyd/rays/ui/component/SettingsItem.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.selection.toggleable
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Info
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.LocalContentColor
Expand Down Expand Up @@ -325,4 +327,15 @@ fun CategorySettingsItem(text: String) {
maxLines = 3,
overflow = TextOverflow.Ellipsis,
)
}

@Composable
fun TipSettingsItem(text: String) {
Column(
modifier = Modifier.padding(horizontal = 16.dp + 10.dp, vertical = 10.dp)
) {
Icon(imageVector = Icons.Outlined.Info, contentDescription = null)
Spacer(modifier = Modifier.height(10.dp))
Text(text = text, style = MaterialTheme.typography.bodyMedium)
}
}
7 changes: 5 additions & 2 deletions app/src/main/java/com/skyd/rays/ui/local/LocalValue.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,21 @@ import androidx.compose.material3.windowsizeclass.WindowSizeClass
import androidx.compose.runtime.compositionLocalOf
import androidx.navigation.NavHostController
import com.skyd.rays.model.preference.ApiGrantPreference
import com.skyd.rays.model.preference.AutoShareIgnoreStrategyPreference
import com.skyd.rays.model.preference.CurrentStickerUuidPreference
import com.skyd.rays.model.preference.ExportStickerDirPreference
import com.skyd.rays.model.preference.HomeShareButtonAlignmentPreference
import com.skyd.rays.model.preference.IgnoreUpdateVersionPreference
import com.skyd.rays.model.preference.StickerClassificationModelPreference
import com.skyd.rays.model.preference.StickerScalePreference
import com.skyd.rays.model.preference.share.UriStringSharePreference
import com.skyd.rays.model.preference.WebDavServerPreference
import com.skyd.rays.model.preference.search.IntersectSearchBySpacePreference
import com.skyd.rays.model.preference.search.QueryPreference
import com.skyd.rays.model.preference.search.SearchResultReversePreference
import com.skyd.rays.model.preference.search.SearchResultSortPreference
import com.skyd.rays.model.preference.search.UseRegexSearchPreference
import com.skyd.rays.model.preference.share.StickerExtNamePreference
import com.skyd.rays.model.preference.share.UriStringSharePreference
import com.skyd.rays.model.preference.theme.CustomPrimaryColorPreference
import com.skyd.rays.model.preference.theme.DarkModePreference
import com.skyd.rays.model.preference.theme.ThemeNamePreference
Expand Down Expand Up @@ -58,11 +59,13 @@ val LocalStickerClassificationModel =

// Style
val LocalStickerScale = compositionLocalOf { StickerScalePreference.default }
val LocalHomeShareButtonAlignment = compositionLocalOf { HomeShareButtonAlignmentPreference.default }
val LocalHomeShareButtonAlignment =
compositionLocalOf { HomeShareButtonAlignmentPreference.default }

// Share
val LocalUriStringShare = compositionLocalOf { UriStringSharePreference.default }
val LocalStickerExtName = compositionLocalOf { StickerExtNamePreference.default }
val LocalAutoShareIgnoreStrategy = compositionLocalOf { AutoShareIgnoreStrategyPreference.default }

// Api
val LocalApiGrant = compositionLocalOf { ApiGrantPreference.default }
Original file line number Diff line number Diff line change
Expand Up @@ -807,7 +807,7 @@ private fun MainCard(stickerWithTags: StickerWithTags) {
uuid = stickerBean.uuid,
onSuccess = { stickerBean.shareCount++ }
)
}
},
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Description
import androidx.compose.material.icons.filled.Link
import androidx.compose.material.icons.filled.MoveDown
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBarDefaults
Expand All @@ -23,6 +24,7 @@ import com.skyd.rays.ui.component.RaysTopBarStyle
import com.skyd.rays.ui.component.SwitchSettingsItem
import com.skyd.rays.ui.local.LocalNavController
import com.skyd.rays.ui.local.LocalStickerExtName
import com.skyd.rays.ui.screen.settings.shareconfig.autoshare.AUTO_SHARE_SCREEN_ROUTE
import com.skyd.rays.ui.screen.settings.shareconfig.uristringshare.URI_STRING_SHARE_SCREEN_ROUTE


Expand Down Expand Up @@ -75,6 +77,14 @@ fun ShareConfigScreen() {
onClick = { navController.navigate(URI_STRING_SHARE_SCREEN_ROUTE) }
)
}
item {
BaseSettingsItem(
icon = rememberVectorPainter(image = Icons.Default.MoveDown),
text = stringResource(id = R.string.auto_share_screen_name),
descriptionText = stringResource(id = R.string.auto_share_screen_description),
onClick = { navController.navigate(AUTO_SHARE_SCREEN_ROUTE) }
)
}
}
}
}
Loading

0 comments on commit 32b988d

Please sign in to comment.