diff --git a/README.md b/README.md index 7378026..3802834 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,8 @@ It works on top of the system calendar and has no network access.

Get it on Obtainium   Support me on Ko-fi +  +Donate using Liberapay

@@ -203,6 +205,13 @@ anywhere. Your events stay in Android's own calendar store. [Privacy policy](https://jeanlucmakiola.de/calendula/privacy), written in [`docs/PRIVACY.md`](docs/PRIVACY.md), which is what that page renders. +## Support + +Calendula is free and has no ads. If you'd like to support its development, +you can tip once on [Ko-fi](https://ko-fi.com/jeanlucmakiola) or donate +regularly on [Liberapay](https://liberapay.com/Jean-Luc_Makiola/donate). Both +are linked in the app under *Settings → Support development*. + ## License [MIT](LICENSE), Jean-Luc Makiola, 2026 diff --git a/app/src/main/java/de/jeanlucmakiola/calendula/ui/settings/SettingsScreen.kt b/app/src/main/java/de/jeanlucmakiola/calendula/ui/settings/SettingsScreen.kt index 2a6c1f7..756dbe0 100644 --- a/app/src/main/java/de/jeanlucmakiola/calendula/ui/settings/SettingsScreen.kt +++ b/app/src/main/java/de/jeanlucmakiola/calendula/ui/settings/SettingsScreen.kt @@ -15,6 +15,7 @@ import androidx.compose.foundation.layout.requiredSize import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Autorenew import androidx.compose.material.icons.filled.Backup import androidx.compose.material.icons.filled.BugReport import androidx.compose.material.icons.filled.Cake @@ -23,6 +24,7 @@ import androidx.compose.material.icons.filled.Code import androidx.compose.material.icons.filled.Favorite import androidx.compose.material.icons.filled.Gavel import androidx.compose.material.icons.filled.Language +import androidx.compose.material.icons.filled.LocalCafe import androidx.compose.material.icons.filled.Notifications import androidx.compose.material.icons.filled.Palette import androidx.compose.material.icons.filled.PrivacyTip @@ -56,6 +58,7 @@ import de.jeanlucmakiola.calendula.ui.common.rememberCalendarSlideSpec import de.jeanlucmakiola.calendula.ui.licences.LicencesScreen import de.jeanlucmakiola.floret.components.AboutCard import de.jeanlucmakiola.floret.components.CollapsingScaffold +import de.jeanlucmakiola.floret.components.FullScreenPicker import de.jeanlucmakiola.floret.components.GroupedListInset import de.jeanlucmakiola.floret.components.GroupedRow import de.jeanlucmakiola.floret.components.GroupedSectionHeader @@ -360,17 +363,46 @@ private fun AboutCard() { ) } -/** "Support development", as the closing row of the About card's group. */ +/** + * "Support development", as the closing row of the About card's group. Opens a + * picker of the donation platforms. + */ @Composable private fun SupportRow() { val context = LocalContext.current - val url = stringResource(R.string.about_support_url) + var showPicker by rememberSaveable { mutableStateOf(false) } + GroupedRow( title = stringResource(R.string.settings_about_support), position = Position.Bottom, leading = { CategoryIcon(Icons.Default.Favorite, ChipAccent.Primary) }, - onClick = { openUrl(context, url) }, + onClick = { showPicker = true }, ) + + if (showPicker) { + val kofiUrl = stringResource(R.string.about_support_kofi_url) + val liberapayUrl = stringResource(R.string.about_support_liberapay_url) + FullScreenPicker( + title = stringResource(R.string.settings_about_support), + onDismiss = { showPicker = false }, + predictiveBack = true, + ) { + GroupedRow( + title = stringResource(R.string.settings_support_kofi), + summary = stringResource(R.string.settings_support_kofi_hint), + position = Position.Top, + leading = { CategoryIcon(Icons.Default.LocalCafe, ChipAccent.Primary) }, + onClick = { openUrl(context, kofiUrl) }, + ) + GroupedRow( + title = stringResource(R.string.settings_support_liberapay), + summary = stringResource(R.string.settings_support_liberapay_hint), + position = Position.Bottom, + leading = { CategoryIcon(Icons.Default.Autorenew, ChipAccent.Primary) }, + onClick = { openUrl(context, liberapayUrl) }, + ) + } + } } /** diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 22755fb..90a8ab2 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -450,7 +450,7 @@ منح الوصول تصدير كملف ‎.ics تصدير التقويمات - اختر التقويمات التي تريد تضمينها في ملف ‎.ics. + اختر التقويمات التي تريد تضمينها في الملف ‎.ics تصدير استعادة استعادة من ملف ‎.ics @@ -514,7 +514,7 @@ طريقة العرض التي يفتحها Calendula عندما تقوم ببدءه. اليوم الذي يبدأ به كل أسبوع، في جميع طُرق العرض والأدوات المصغّرة. كيف الأوقات تُكتب في جميع أنحاء التطبيق. تلقائيًا يتبع إعداد نظامك. - ما الذي يفعله جدول بالأحداث التي انتهت بالفعل. + ما الذي يفعله الجدول بالأحداث التي انتهت بالفعل. إظهار \"%1$s\" بعض التقويمات متوقفة Calendula يعرض التقويمات التي تم تشغيلها لهذا الجهاز، وبعض من خاصتك متوقفة. لرؤية أحداثهم، قم بتشغيلهم ضمن الإعدادات ← التقويمات. diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 5aafbaf..7a8961a 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -439,7 +439,7 @@ Měsíční zobrazení Styl měsíčního zobrazení Stránky - Na obrazovce se zobrazuje jeden měsíc. Přejetím prstem doleva nebo doprava můžete změnit měsíc. + Na obrazovce se zobrazuje jeden měsíc. Přejetím prstem doleva nebo doprava můžete změnit měsíc, přejetím prstem nahoru zobrazíte měsíční přehled. Posouvání měsíců Každý měsíc je zobrazen pod vlastním nadpisem, od následujícího je oddělen malou mezerou. Nepřerušené týdny @@ -753,4 +753,15 @@ Vícedenní zobrazení Počet dní zobrazujících se ve vícedenním přehledu vedle sebe. Dnešek se otevírá v prvním sloupci. Nastaveno v části Viditelné hodiny + Viditelné hodiny + Při otevření týdenního, vícedenního nebo denního zobrazení se rozsah hodin přizpůsobí obrazovce + %1$s – %2$s vyplní obrazovku při otevření zobrazení + Od + Do + Čas zobrazený v horní části obrazovky při otevření týdenního, vícedenního nebo denního přehledu. Předchozí časy lze zobrazit posunutím obrazovky. + Hodina v dolní části obrazovky v okamžiku, kdy se otevře zobrazení. Další hodiny se zobrazí skrolováním, přiblížením prstů se obraz dočasně zvětší. + Ko-fi + Jednorázové příspěvky + Liberapay + Pravidelné příspěvky diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 33f752e..5038643 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -25,10 +25,10 @@ 通知 日付に移動 カレンダーへのアクセス権限が必要です。 - Calendulaで予定を表示・管理するには、カレンダーへのアクセス許可が必要です。 + Calendula で予定を表示・管理するには、カレンダーへのアクセス許可が必要です。 カレンダーへのアクセスを許可 カレンダーへのアクセスが拒否されました - Calendulaはカレンダーへのアクセス権がないと予定を表示できません。システム設定から再度許可をお願いします。 + Calendula はカレンダーへのアクセス権がないと予定を表示できません。システム設定から再度許可をしてください。 システム設定を開く 再試行 プライバシーを重視した設計 @@ -86,4 +86,34 @@ 予定リスト 予定リストの範囲 外観 + 問題が発生しました。 + Calendula はシステムのカレンダーから直接予定を読み取るため、予定を表示するにはカレンダーへのアクセスが必要です。 + アクセスを許可 + カレンダーが設定されていません。 + このデバイスにカレンダーアカウントを追加すると、そのカレンダーがここに表示されます。 + システムのカレンダー設定を開く + すべてのカレンダーがオフになっています。 + 予定を表示するには、少なくとも 1 つのカレンダーを再度有効にしてください。 + カレンダーの管理 + 新しい予定を追加できるカレンダーがありません。 + カレンダーを読み込めませんでした。 + 予定を移動できませんでした + 予定を保存できませんでした + 今日 + 今日 + 自動 + 今日 + 日 + 保存 + 説明 + 誕生日 + 今日 + 今日 + 今日 + + %d分 + + 明日 + 有効になっているカレンダーが読み取り専用であるか、別のアプリによって管理されているか、またはこのデバイスに同期されていません。予定を追加できるカレンダーを有効にするか、ローカルのカレンダーを追加してください。 + この予定はすでに存在しません。 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a08d56a..0ef6379 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -702,6 +702,10 @@ The projects Calendula is built on Privacy policy Support development + Ko-fi + One-off tips + Liberapay + Recurring donations Version %1$s Calendula app icon Report a problem @@ -858,7 +862,8 @@ https://codeberg.org/jlmakiola/calendula https://codeberg.org/jlmakiola/calendula/src/branch/main/LICENSE https://jeanlucmakiola.de/calendula/privacy - https://ko-fi.com/jeanlucmakiola + https://ko-fi.com/jeanlucmakiola + https://liberapay.com/Jean-Luc_Makiola/donate https://weblate.dev.jeanlucmakiola.de/engage/calendula/