Compare commits

...

23 Commits

Author SHA1 Message Date
Matthieu
4ce7c315a3 Merge branch 'translations' into 'master'
Translations update from Weblate

See merge request pixeldroid/PixelDroid!613
2024-12-12 08:53:39 +00:00
Vaclovas Intas
d4e7f0ada1 Translated using Weblate (Lithuanian)
Currently translated at 18.2% (56 of 307 strings)

Co-authored-by: Vaclovas Intas <Gateway_31@protonmail.com>
Translate-URL: https://weblate.pixeldroid.org/projects/pixeldroid/app/lt/
Translation: PixelDroid/pixeldroid
2024-12-11 22:20:28 +00:00
Matthieu
1897e1222b Merge branch 'translations' into 'master'
Translations update from Weblate

See merge request pixeldroid/PixelDroid!612
2024-12-06 09:32:40 +00:00
Tomas
a0ad49840a Translated using Weblate (Czech)
Currently translated at 96.5% (28 of 29 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (307 of 307 strings)

Co-authored-by: Tomas <tomas@brabenec.net>
Translate-URL: https://weblate.pixeldroid.org/projects/pixeldroid/app/cs/
Translate-URL: https://weblate.pixeldroid.org/projects/pixeldroid/fastlane/cs/
Translation: PixelDroid/Fastlane
Translation: PixelDroid/pixeldroid
2024-12-04 19:20:28 +00:00
Matthieu
93f1a83c73 Merge branch 'update_dependences' into 'master'
Update dependencies

See merge request pixeldroid/PixelDroid!611
2024-12-01 11:26:10 +00:00
Matthieu
d124d4cd40 Update scrambler & undo jvmToolchain bump 2024-12-01 12:10:31 +01:00
Matthieu
32ef4dfbc0 New version 2024-12-01 11:27:35 +01:00
Matthieu
c5351c7fd4 Update dependencies 2024-11-30 21:34:37 +00:00
Matthieu
2f50ecaf03 Merge branch 'translations' into 'master'
Translations update from Weblate

See merge request pixeldroid/PixelDroid!610
2024-11-30 21:28:28 +00:00
Bilderbuch
35b7b1bdd0 Translated using Weblate (Russian)
Currently translated at 100.0% (307 of 307 strings)

Translated using Weblate (Russian)

Currently translated at 87.6% (269 of 307 strings)

Translated using Weblate (Russian)

Currently translated at 83.0% (255 of 307 strings)

Co-authored-by: Bilderbuch <ohra33@outlook.com>
Translate-URL: https://weblate.pixeldroid.org/projects/pixeldroid/app/ru/
Translation: PixelDroid/pixeldroid
2024-11-08 01:05:34 +00:00
Matthieu
8e6df0d9d4 Merge branch 'release38' into 'master'
Update dependencies & release

See merge request pixeldroid/PixelDroid!609
2024-10-19 14:03:18 +00:00
Matthieu
6fa567f264 Update dependencies & release 2024-10-19 15:50:48 +02:00
Matthieu
f2ffef63bd Merge branch 'translations' into 'master'
Translations update from Weblate

See merge request pixeldroid/PixelDroid!608
2024-10-19 12:43:45 +00:00
Vaclovas Intas
03752124c2 Translated using Weblate (Lithuanian)
Currently translated at 7.4% (23 of 307 strings)

Added translation using Weblate (Lithuanian)

Co-authored-by: Vaclovas Intas <Gateway_31@protonmail.com>
Translate-URL: https://weblate.pixeldroid.org/projects/pixeldroid/app/lt/
Translation: PixelDroid/pixeldroid
2024-09-19 03:53:48 +00:00
OlimitLolli
2c4945e5e9 Translated using Weblate (German)
Currently translated at 79.1% (243 of 307 strings)

Co-authored-by: OlimitLolli <oli.mit.lolli@gmail.com>
Translate-URL: https://weblate.pixeldroid.org/projects/pixeldroid/app/de/
Translation: PixelDroid/pixeldroid
2024-09-19 03:53:48 +00:00
Cons Mgr
fedf890476 Translated using Weblate (German)
Currently translated at 78.8% (242 of 307 strings)

Co-authored-by: Cons Mgr <cons1mgr@freenet.de>
Translate-URL: https://weblate.pixeldroid.org/projects/pixeldroid/app/de/
Translation: PixelDroid/pixeldroid
2024-09-19 03:53:48 +00:00
Matthieu
0ca6b27cd3 Merge branch 'release37' into 'master'
Release37

See merge request pixeldroid/PixelDroid!607
2024-08-31 16:18:15 +00:00
Matthieu
4e283340bb Bug fix for tutorial always showing 2024-08-31 18:06:29 +02:00
Matthieu
7227562dfa Release 37 2024-08-31 17:55:16 +02:00
Matthieu
37eb888537 Merge branch 'amolet_dark' into 'master'
Support for "true" dark mode

See merge request pixeldroid/PixelDroid!606
2024-08-31 10:22:35 +00:00
Matthieu
ace0a86652 Support for "true" dark mode 2024-08-31 10:01:34 +00:00
Matthieu
3f85809db9 Merge branch 'nsfw_sync_server' into 'master'
Implement syncing of nsfw show preference

See merge request pixeldroid/PixelDroid!605
2024-08-30 23:11:12 +00:00
Matthieu
d8b5af2a61 Implement syncing of nsfw show preference 2024-08-31 00:59:35 +02:00
33 changed files with 393 additions and 47 deletions

View File

@ -27,7 +27,7 @@ android.applicationVariants.configureEach { variant ->
android {
namespace 'org.pixeldroid.app'
compileSdk 34
compileSdk 35
compileOptions {
coreLibraryDesugaringEnabled true
@ -45,8 +45,8 @@ android {
}
defaultConfig {
minSdkVersion 23
targetSdkVersion 34
versionCode 36
targetSdkVersion 35
versionCode 39
versionName "1.0.beta" + versionCode
//TODO add resConfigs("en", "fr", "ja",...) ?
@ -182,40 +182,40 @@ dependencies {
implementation 'androidx.hilt:hilt-common:1.2.0'
implementation 'androidx.hilt:hilt-work:1.2.0'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.1'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.3'
/**
* AndroidX dependencies:
*/
implementation 'androidx.appcompat:appcompat:1.7.0'
implementation 'androidx.core:core-splashscreen:1.0.1'
implementation 'androidx.core:core-ktx:1.13.1'
implementation 'androidx.core:core-ktx:1.15.0'
implementation 'androidx.preference:preference-ktx:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.navigation:navigation-fragment-ktx:2.7.7'
implementation 'androidx.navigation:navigation-ui-ktx:2.7.7'
implementation 'androidx.constraintlayout:constraintlayout:2.2.0'
implementation 'androidx.navigation:navigation-fragment-ktx:2.8.4'
implementation 'androidx.navigation:navigation-ui-ktx:2.8.4'
implementation "androidx.browser:browser:1.8.0"
implementation 'androidx.recyclerview:recyclerview:1.3.2'
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
implementation 'androidx.navigation:navigation-fragment-ktx:2.7.7'
implementation 'androidx.navigation:navigation-ui-ktx:2.7.7'
implementation 'androidx.paging:paging-runtime-ktx:3.3.2'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.8.4'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.4'
implementation 'androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.4'
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.8.4'
implementation "androidx.lifecycle:lifecycle-common-java8:2.8.4"
implementation "androidx.annotation:annotation:1.8.2"
implementation 'androidx.navigation:navigation-fragment-ktx:2.8.4'
implementation 'androidx.navigation:navigation-ui-ktx:2.8.4'
implementation 'androidx.paging:paging-runtime-ktx:3.3.4'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.8.7'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7'
implementation 'androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7'
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.8.7'
implementation "androidx.lifecycle:lifecycle-common-java8:2.8.7"
implementation "androidx.annotation:annotation:1.9.1"
implementation 'androidx.gridlayout:gridlayout:1.0.0'
implementation "androidx.activity:activity-ktx:1.9.1"
implementation 'androidx.fragment:fragment-ktx:1.8.2'
implementation 'androidx.work:work-runtime-ktx:2.9.1'
implementation "androidx.activity:activity-ktx:1.9.3"
implementation 'androidx.fragment:fragment-ktx:1.8.5'
implementation 'androidx.work:work-runtime-ktx:2.10.0'
implementation 'androidx.media2:media2-widget:1.3.0'
implementation 'androidx.media2:media2-player:1.3.0'
// Use the most recent version of CameraX
def cameraX_version = '1.3.4'
def cameraX_version = '1.4.0'
implementation "androidx.camera:camera-core:$cameraX_version"
implementation "androidx.camera:camera-camera2:$cameraX_version"
// CameraX Lifecycle library
@ -257,7 +257,7 @@ dependencies {
implementation 'io.reactivex.rxjava3:rxandroid:3.0.2'
implementation 'com.github.connyduck:sparkbutton:4.1.0'
implementation 'org.pixeldroid.pixeldroid:android-media-editor:3.1'
implementation 'org.pixeldroid.pixeldroid:android-media-editor:4.3'
implementation project(path: ':scrambler')
implementation project(path: ':pixel_common')
@ -294,7 +294,7 @@ dependencies {
androidTestImplementation 'com.linkedin.testbutler:test-butler-library:2.2.1'
androidTestUtil 'com.linkedin.testbutler:test-butler-app:2.2.1'
androidTestImplementation 'androidx.work:work-testing:2.9.1'
androidTestImplementation 'androidx.work:work-testing:2.10.0'
testImplementation 'org.wiremock:wiremock:3.9.1'
testImplementation "com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0"
testImplementation 'junit:junit:4.13.2'
@ -322,7 +322,8 @@ tasks.withType(Test).configureEach {
}
task jacocoTestReport(type: JacocoReport, dependsOn: ['connectedStagingAndroidTest', 'testStagingUnitTest', 'createStagingCoverageReport']) {
tasks.register('jacocoTestReport', JacocoReport) {
dependsOn['connectedStagingAndroidTest', 'testStagingUnitTest', 'createStagingCoverageReport']
reports {
xml.required = true

View File

@ -32,6 +32,7 @@ import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.paging.ExperimentalPagingApi
import androidx.preference.PreferenceManager
import androidx.recyclerview.widget.RecyclerView
import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2
@ -72,7 +73,6 @@ import org.pixeldroid.app.posts.feeds.uncachedFeeds.UncachedPostsFragment
import org.pixeldroid.app.profile.ProfileActivity
import org.pixeldroid.app.searchDiscover.SearchDiscoverFragment
import org.pixeldroid.app.settings.SettingsActivity
import org.pixeldroid.app.settings.SettingsActivity.SettingsFragment
import org.pixeldroid.app.settings.TutorialSettingsDialog.Companion.START_TUTORIAL
import org.pixeldroid.app.utils.BaseActivity
import org.pixeldroid.app.utils.Tab
@ -554,6 +554,12 @@ class MainActivity : BaseActivity() {
val account = api.verifyCredentials()
updateUserInfoDb(db, account)
val show = api.getSettings().common.media.always_show_cw
launch {
PreferenceManager.getDefaultSharedPreferences(applicationContext)
.edit().putBoolean("always_show_nsfw", show).commit()
}
//No need to update drawer account info here, the ViewModel listens to db updates
} catch (exception: Exception) {
Log.e("ACCOUNT UPDATE:", exception.toString())
@ -697,7 +703,9 @@ class MainActivity : BaseActivity() {
}
} }
Tab.SEARCH_DISCOVER_FEED -> { { SearchDiscoverFragment() } }
Tab.CREATE_FEED -> { { CameraFragment() } }
Tab.CREATE_FEED -> { { CameraFragment().apply {
arguments = Bundle().apply { putInt(START_TUTORIAL, intent.getIntExtra(START_TUTORIAL, -1)) }
} } }
Tab.NOTIFICATIONS_FEED -> { { NotificationsFragment() } }
Tab.PUBLIC_FEED -> { {
PostFeedFragment<PublicFeedStatusDatabaseEntity>()

View File

@ -16,6 +16,7 @@ import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import org.pixeldroid.app.R
import org.pixeldroid.app.databinding.ActivityPostCreationBinding
import org.pixeldroid.app.settings.TutorialSettingsDialog.Companion.START_TUTORIAL
import org.pixeldroid.app.utils.BaseActivity
class PostCreationActivity : BaseActivity() {
@ -66,7 +67,7 @@ class PostCreationActivity : BaseActivity() {
navController = navHostFragment.navController
navController.setGraph(R.navigation.post_creation_graph)
lifecycleScope.launch {
if(intent.getBooleanExtra(START_TUTORIAL, false)) lifecycleScope.launch {
var targetCamera = findViewById<View>(R.id.toggleStoryPost)
while (targetCamera == null) {
targetCamera = findViewById(R.id.toggleStoryPost)

View File

@ -4,11 +4,13 @@ import android.content.Intent
import android.content.SharedPreferences
import android.os.Build
import android.os.Bundle
import android.util.Log
import android.view.View
import androidx.activity.addCallback
import androidx.appcompat.app.AppCompatDelegate
import androidx.fragment.app.DialogFragment
import androidx.lifecycle.lifecycleScope
import androidx.preference.CheckBoxPreference
import androidx.preference.ListPreference
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
@ -22,12 +24,14 @@ import org.pixeldroid.app.R
import org.pixeldroid.app.databinding.SettingsBinding
import org.pixeldroid.app.main.MainActivity
import org.pixeldroid.app.settings.TutorialSettingsDialog.Companion.START_TUTORIAL
import org.pixeldroid.app.utils.BaseActivity
import org.pixeldroid.app.utils.api.PixelfedAPI
import org.pixeldroid.app.utils.api.objects.CommonWrapper
import org.pixeldroid.app.utils.setThemeFromPreferences
import org.pixeldroid.common.ThemedActivity
@AndroidEntryPoint
class SettingsActivity : ThemedActivity(), SharedPreferences.OnSharedPreferenceChangeListener {
class SettingsActivity : BaseActivity(), SharedPreferences.OnSharedPreferenceChangeListener {
private var restartMainOnExit = false
private lateinit var binding: SettingsBinding
@ -105,6 +109,27 @@ class SettingsActivity : ThemedActivity(), SharedPreferences.OnSharedPreferenceC
"themeColor" -> {
recreateWithRestartStatus()
}
"always_show_nsfw" -> {
lifecycleScope.launch {
val api: PixelfedAPI = apiHolder.api ?: apiHolder.setToCurrentUser()
try {
// Get old settings and modify just the nsfw one
val settings = api.getSettings().let { settings ->
settings.common.copy(
media = settings.common.media.copy(
always_show_cw = sharedPreferences.getBoolean(key, settings.common.media.always_show_cw)
)
)
}
api.setSettings(CommonWrapper(settings))
} catch (e: Exception) {
Log.e("Pixelfed API settings", e.toString())
}
}
}
else -> {}
}
}
}
@ -191,6 +216,16 @@ class SettingsActivity : ThemedActivity(), SharedPreferences.OnSharedPreferenceC
locale?.getDisplayName(locale) ?: getString(R.string.default_system)
}
}
findPreference<CheckBoxPreference>("always_show_nsfw")?.let {
lifecycleScope.launch {
val api: PixelfedAPI = (requireActivity() as SettingsActivity).apiHolder.api ?: (requireActivity() as SettingsActivity).apiHolder.setToCurrentUser()
try {
val show = api.getSettings().common.media.always_show_cw
it.isChecked = show
} catch (_: Exception){}
}
}
//Hide Notification setting for Android versions where it doesn't work
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {

View File

@ -148,8 +148,8 @@ fun setThemeFromPreferences(preferences: SharedPreferences, resources: Resources
themes[1] -> {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
}
//Dark
themes[2] -> {
//Dark or AMOLED dark
themes[2], themes[3] -> {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
}
else -> {

View File

@ -469,4 +469,11 @@ interface PixelfedAPI {
@Field("forward") forward: Boolean = true
) : Report
@POST("/api/pixelfed/v1/app/settings")
suspend fun setSettings(
@Body account_id: CommonWrapper,
) : PixelfedAppSettings
@GET("/api/pixelfed/v1/app/settings")
suspend fun getSettings() : PixelfedAppSettings
}

View File

@ -0,0 +1,34 @@
package org.pixeldroid.app.utils.api.objects
data class PixelfedAppSettings(
val id: String,
val username: String,
val updated_at: String,
val common: Common
)
data class CommonWrapper(
val common: Common
)
data class Common(
val timelines: Timelines,
val media: Media,
val appearance: Appearance
)
data class Timelines(
val show_public: Boolean,
val show_network: Boolean,
val hide_likes_shares: Boolean
)
data class Media(
val hide_public_behind_cw: Boolean,
val always_show_cw: Boolean,
val show_alt_text: Boolean
)
data class Appearance(
val links_use_in_app_browser: Boolean,
val theme: String
)

View File

@ -50,7 +50,7 @@
<string name="follow_requested">Požadavek na sledování odeslán</string>
<string name="gallery_button_alt">Galerie</string>
<string name="loading_toast">Při načítání se něco pokazilo</string>
<string name="feed_failed">Nepodařilo se získat feed</string>
<string name="feed_failed">Nepodařilo se získat výpis</string>
<string name="share_picture">Sdílet obrázek…</string>
<string name="save_to_gallery">Uložit do galerie…</string>
<string name="image_download_downloading">Probíhá stahování…</string>
@ -145,8 +145,8 @@
<string name="login_connection_required_once">Abyste mohli přidat první účet a používat PixelDroid, musíte být online :(</string>
<string name="api_not_enabled_dialog">API není na této instanci aktivováno. Kontaktujete správce instance a požádejte jej o aktivaci.</string>
<string name="logout">Odhlásit</string>
<string name="save_image_failed">Obrázek nelze uložit</string>
<string name="save_image_success">Obrázek úspěšně uložen</string>
<string name="save_image_failed">Nelze uložit</string>
<string name="save_image_success">Úspěšně uloženo</string>
<plurals name="description_max_characters">
<item quantity="one">Popis může obsahovat maximálně %d znak.</item>
<item quantity="few">Popis může obsahovat maximálně %d znaky.</item>
@ -293,4 +293,77 @@
<string name="switch_accounts">Přepnout účty</string>
<string name="error_profile">Něco se pokazilo. Tapněte pro opakování</string>
<string name="change_profile_picture">Změnit profilový obrázek</string>
<string name="new_dm">Zprávu, kterou chcete napsat. Řekněte Ahoj!</string>
<string name="feed_hashtag">Výpis štítku</string>
<string name="feed_hashtag_description">Níže napište jeden štítek</string>
<string name="tutorial">Návod</string>
<string name="tutorial_explanation">Vysvětlení, jak používat PixelDroid a Pixelfed</string>
<string name="create_tutorial">Malá procházka vytvářením příspěvků</string>
<string name="tutorial_choice">S čím byste mohli pomoci?</string>
<string name="dm_tutorial">Soukromé zprávy: buďte v kontaktu!</string>
<string name="custom_tabs_tutorial">Přizpůsobte si, jaké karty se zobrazí na hlavní obrazovce PixelDroid!</string>
<string name="first_time_question">Zdá se, že to může být poprvé, co používáte PixelDroid. Chcete otevřít návod? Návody vždy najdete v nastavení.</string>
<string name="skip_tutorial">Ne, pokračovat</string>
<string name="dm_tutorial_text">Odesílejte zprávy ostatním uživatelům Pixelfed: ve vaší instanci nebo i na jiných</string>
<string name="notifications_tutorial_title">Oznámení vás udrží v obraze</string>
<string name="home_feed_tutorial_title">Toto je váš domovský výpis</string>
<string name="notifications_tutorial_explanation">PixelDroid vám také bude posílat push oznámení, abyste měli jistotu, že vám nic neunikne!</string>
<string name="create_tutorial_title_2">Vyfoťte obrázek ke sdílení</string>
<string name="create_tutorial_explanation_2">Zatím to nemusí být dokonalé</string>
<string name="edit_tutorial_title">Upravte obrázek, aby zazářil ✨</string>
<string name="edit_tutorial_explanation">Můžete používat filtry, kreslit nebo přidat text, upravit video a mnohem více! 📷</string>
<string name="media_description_tutorial_title">Nezapomeňte přidat k médiu popis!</string>
<string name="picture_tutorial_title">Vyfoťte obrázek ke sdílení</string>
<string name="switch_accounts_tutorial_title">Přepnout účty!</string>
<string name="post_button_tutorial_title">A jsme na konci! Zveřejněte obrázek</string>
<string name="picture_tutorial_explanation">Zatím to nemusí být dokonalé</string>
<string name="unknown_error_in_error">Neznámá chyba, zkontrolujte, zda je server mimo provoz: %1$s</string>
<string name="comment_noun">Komentář</string>
<string name="content_header">Obsah</string>
<string name="dm_title">SZ pro %1$s</string>
<string name="direct_messages">Soukromé Zprávy</string>
<string name="new_dm_conversation">Vytvořit novou soukromou konverzaci</string>
<string name="dm_instruction">Vyplňte uživatelské jméno příjemce a zprávu, kterou chcete odeslat</string>
<string name="dm_target">Uživatelské jméno příjemce</string>
<string name="grid_view">Mřížka</string>
<string name="story_reply_error">Při odesílání odpovědi se něco pokazilo</string>
<string name="add_story">Přidat příběh</string>
<string name="story_pause">Spustit nebo pozastavit příběhy</string>
<string name="my_story">Můj příběh</string>
<string name="type_post">Příspěvěk</string>
<string name="continue_post_creation">Pokračovat</string>
<string name="new_dm_error">Chyba při odesílání zprávy! Zkontrolujte uživatelské jméno</string>
<string name="custom_feed_tutorial_title">Vytvořte si vlastní výpis se štítkem, který se vám líbí</string>
<string name="story_image">Obrázek příběhu</string>
<string name="replyToStory">Odpovědět %1$s</string>
<string name="story_could_not_see">Chyba: nepodařilo se označit příběh jako zhlédnutý</string>
<string name="create_tutorial_title">Zde všechno začíná</string>
<string name="post_button_tutorial_explanation">Bavte se sdílením svých obrázků se světem! Klikněte kamkoli pro zrušení návodu a koukejte dál :)</string>
<string name="drag_customtabs_tutorial">Přetažením změníte pořadí karet</string>
<string name="de_activate_tabs_tutorial">(De)aktivujte karty, které nepotřebujete</string>
<string name="discover_tutorial_title">Tato karta vám může pomoci začít hledat zajímavé účty, které byste mohli sledovat</string>
<string name="dm_tutorial_drawer">Nejprve otevřete menu</string>
<string name="error_fetch_story">Při načítání karuselu se něco pokazilo</string>
<string name="sent_reply_story">Odeslaná odpověď</string>
<string name="extraneous_pictures_stories">Obrázky, kromě prvního, byly odstraněny, ale je možné je obnovit přepnutím zpět na vytváření příspěvku</string>
<string name="story_tutorial_title">Příběh nebo Příspěvek?</string>
<string name="create_tutorial_explanation">Nejprve přejděte k vytvoření karty. Klikněte zde</string>
<string name="story_tutorial_explanation">Příběhy jsou existují jen chvíli: zapojte své sledující a udržujte je, aby se vraceli pro další. Vyzkoušejte je!</string>
<string name="switch_accounts_tutorial_explanation">PixelDroid podporuje používání více účtů Pixelfed. Ujistěte se, že nezveřejňujete fotky koček např. na instanci pouze pro psy! 😱</string>
<string name="arrange_tabs_tutorial_title">Nejprve otevřete nastavení \"Uspořádat karty\"</string>
<string name="always_show_nsfw">Vždy zobrazovat citlivý obsah</string>
<string name="feed_view">Výpis</string>
<string name="summary_always_show_nsfw">Příspěvky NSFW/CW nebudou rozmazané a budou se standardně zobrazovat.</string>
<string name="type_story">Příběh</string>
<string name="story_duration">Délka příběhu</string>
<string name="arrange_tabs_summary">Uspořádat karty</string>
<string name="arrange_tabs_description">Změna viditelnosti a pořadí karet</string>
<string name="feeds_tutorial">Výpisy, jak fungují? odkud pocházejí?</string>
<string name="public_feed_tutorial_explanation">Tento výpisobsahuje všechny příspěvky ve vaší instanci! Možná zde najdete zajímavé příspěvky :)</string>
<string name="home_feed_tutorial_explanation">Zde se zobrazí příspěvky lidí, které sledujete. Žádné algoritmy, jen chronologie. Jen vy se rozhodnete, co chcete vidět!</string>
<string name="custom_feed_tutorial_explanation">Opravdu máte rádi kočky? Zkuste #caturday! Jezera? #jezero! Nebo #turistika? A bude to zobrazeno přímo na kartě</string>
<string name="dark_amoled_theme">\"Skutečně\" Tmavý (AMOLED) (experimentální)</string>
<string name="contains_nsfw">Obsahuje NSFW média</string>
<string name="discover_tutorial_explanation">Můžete se podívat na trendové příspěvky 📈 nebo každý den objevte nějaké náhodné příspěvky, abyste si rozšířili obzory a našli ty skutečné skvosty! 💎</string>
<string name="media_description_tutorial_explanation">To pomáhá zpřístupnit Pixelfed všem a také vám umožní objasnit, co bychom měli vidět na vašem hezkém obrázku ;)</string>
</resources>

View File

@ -37,8 +37,8 @@
<string name="instance_error">Konnte die Informationen der Instanz nicht abrufen</string>
<string name="upload_picture_failed">Fehler beim Hochladen!</string>
<string name="default_system">Standard (Systemeinstellung)</string>
<string name="save_image_failed">Bild kann nicht gespeichert werden</string>
<string name="save_image_success">Bild erfolgreich gespeichert</string>
<string name="save_image_failed">Kann nicht gespeichert werden</string>
<string name="save_image_success">Erfolgreich gespeichert</string>
<string name="picture_format_error">Upload-Fehler: falsches Bildformat.</string>
<string name="upload_post_failed">Hochladen des Beitrags fehlgeschlagen</string>
<string name="add_account_name">Konto hinzufügen</string>
@ -288,4 +288,5 @@
<string name="comment_noun">Kommentar</string>
<string name="my_story">Meine Story</string>
<string name="summary_always_show_nsfw">NSFW/CW-Beiträge werden nicht unscharf dargestellt und werden standardmäßig angezeigt.</string>
<string name="continue_post_creation">Fortfahren</string>
</resources>

View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="menu_settings">Nustatymai</string>
<string name="invalid_domain">Netinkamas domenas.</string>
<string name="browser_launch_failed">Nepavyko paleisti naršyklės. Ar turite vieną?</string>
<string name="verify_credentials">Nepavyko gauti naudotojo informacijos.</string>
<string name="auth_failed">Nepavyko nustatyti tapatybės.</string>
<string name="token_error">Klaida gaunant prieigos raktą.</string>
<string name="instance_not_pixelfed_continue">Gerai, tęsti vis tiek</string>
<string name="instance_not_pixelfed_cancel">Atšaukti prisijungimą</string>
<string name="title_activity_settings2">Nustatymai</string>
<string name="theme_title">Programėlės tema</string>
<string name="theme_header">Tema</string>
<string name="light_theme">Šviesi</string>
<string name="dark_theme">Tamsi</string>
<string name="dark_amoled_theme">„Tikrai“ tamsi (AMOLED) (eksperimentinė)</string>
<string name="always_show_nsfw">Visada rodyti jautrų turinį</string>
<string name="followed_notification">%1$s seka jus</string>
<string name="mention_notification">%1$s paminėjo jus</string>
<string name="app_name">PixelDroid</string>
<string name="menu_account">Mano profilis</string>
<string name="registration_failed">Nepavyko užregistruoti programos su šiuo serveriu.</string>
<string name="instance_error">Nepavyko gauti serverio informacijos.</string>
<string name="instance_not_pixelfed_warning">Atrodo, kad tai nėra „Pixelfed“ serveris, todėl programėlė gali sutrikti netikėtais būdais.</string>
<string name="default_system">Numatytasis (pagal sistemą)</string>
<string name="shared_notification">%1$s pasidalino jūsų įrašą</string>
<string name="liked_notification">%1$s patiko jūsų įrašas</string>
<string name="comment_notification">%1$s pakomentavo jūsų įrašą</string>
<string name="poll_notification">%1$s apklausa baigėsi</string>
<string name="other_notification">Pranešimas iš %1$s</string>
<string name="followed_notification_channel">Nauji sekėjai</string>
<string name="mention_notification_channel">Paminėjimai</string>
<string name="shared_notification_channel">Pasidalinimai</string>
<string name="liked_notification_channel">Patiktukai</string>
<string name="comment_notification_channel">Komentarai</string>
<string name="poll_notification_channel">Apklausos</string>
<string name="other_notification_channel">Kiti</string>
<plurals name="notification_title_summary">
<item quantity="one">%d naujas pranešimas</item>
<item quantity="few">%d nauji pranešimai</item>
<item quantity="other">%d naujų pranešimų</item>
</plurals>
<string name="notification_summary_large">%1$s, %2$s, %3$s ir %4$d kiti</string>
<string name="notification_summary_medium">%1$s, %2$s ir %3$s</string>
<string name="notification_summary_small">%1$s ir %2$s</string>
<string name="whats_an_instance">Kas yra serveris?</string>
<string name="whats_an_instance_explanation">Jus gali suklaidinti teksto laukas, kuriame prašoma nurodyti jūsų „serverio“ domeną.\n\n„Pixelfed“ tai federacinė platforma, priklausanti fediversei, o tai reiškia, kad ji gali bendrauti su kitomis platformomis, kurios kalba ta pačia kalba, pavyzdžiui, „Mastodon“ (žiūrėkite https://joinmastodon.org).\n\nTai taip pat reiškia, kad turite pasirinkti, kurį „Pixelfed“ serverį naudoti. Jei nė vieno nežinote, galite pasižiūrėti čia: https://pixelfed.org/join.\n\nDėl daugiau informacijos apie „Pixelfed“ galite pasitikrinti čia: https://pixelfed.org</string>
<string name="domain_of_your_instance">Jūsų serverio domenas</string>
<string name="connect_to_pixelfed">Prisijungti prie „Pixelfed“</string>
<string name="login_connection_required_once">Kad galėtumėte pridėti pirmąją paskyrą ir naudotis „PixelDroid“, turite būti prisijungę prie interneto. :(</string>
<string name="api_not_enabled_dialog">Šiame serveryje API nėra aktyvuota. Susisiekite su administratoriumi ir paprašykite, kad jis ją aktyvuotų.</string>
<string name="logout">Atsijungti</string>
<string name="add_account_name">Pridėti paskyrą</string>
<string name="add_account_description">Pridėkite dar vieną „Pixelfed“ paskyrą.</string>
<plurals name="description_max_characters">
<item quantity="one">Aprašymas turi turėti ne daugiau kaip %d simbolį.</item>
<item quantity="few">Aprašymas turi turėti ne daugiau kaip %d simbolius.</item>
<item quantity="other">Aprašymas turi turėti ne daugiau kaip %d simbolių.</item>
</plurals>
<string name="upload_picture_failed">Nuotraukos įkėlimo klaida.</string>
<string name="picture_format_error">Įkėlimo klaida: neteisingas nuotraukos formatas.</string>
<string name="upload_post_failed">Įrašo įkėlimas nepavyko</string>
<string name="upload_post_success">Įrašas sėkmingai įkeltas</string>
<string name="upload_post_error">Įrašo įkėlimo klaida</string>
<string name="description">Aprašymas…</string>
<string name="request_format_error">Įkėlimo klaida: blogas užklausos formatas.</string>
</resources>

View File

@ -53,8 +53,8 @@
<string name="request_format_error">Ошибка загрузки: некорректный формат запроса</string>
<string name="picture_format_error">Ошибка загрузки: неверный формат изображения.</string>
<string name="upload_picture_failed">Ошибка загрузки изображения!</string>
<string name="save_image_success">Изображение успешно сохранено</string>
<string name="save_image_failed">Не удалось сохранить изображение</string>
<string name="save_image_success">Успешно сохранено</string>
<string name="save_image_failed">Не удалось сохранить</string>
<string name="dark_theme">Тёмная</string>
<string name="light_theme">Светлая</string>
<string name="default_system">По умолчанию (как в системе)</string>
@ -95,7 +95,7 @@
<string name="report">Пожаловаться</string>
<string name="status_more_options">Больше опций</string>
<string name="search_empty_error">Поисковый запрос не может быть пустым</string>
<string name="follows_title">подписаны на %1$s</string>
<string name="follows_title">Подписки %1$s</string>
<string name="followers_title">подписчики %1$s</string>
<string name="post_title">Пост %1$s</string>
<string name="about">О приложении</string>
@ -281,7 +281,7 @@
<string name="follow_request">%1$s запрашивает подписаться на Вас</string>
<string name="status_notification">%1$s создал пост</string>
<string name="profile_error">Не удалось загрузить профиль</string>
<string name="from_other_domain">от%1$s</string>
<string name="from_other_domain">от %1$s</string>
<string name="add_images_error">Ошибка при добавлении изображений</string>
<string name="description_template">Заготовка описания</string>
<string name="explore_accounts">Исследуйте популярные учетные записи на этом экземпляре</string>
@ -327,4 +327,56 @@
<string name="story_pause">Запустить или приостановить истории</string>
<string name="extraneous_pictures_stories">Картинки после первой были удалены, но их можно восстановить, переключившись обратно на создание поста</string>
<string name="story_duration">Длительность истории</string>
<string name="feed_hashtag">Лента по хештегу</string>
<string name="feed_hashtag_description">Напишите один хэштег ниже</string>
<string name="content_header">Контент</string>
<string name="feeds_tutorial">Лента, как она работает? Как заполняется?</string>
<string name="create_tutorial">Небольшая прогулка по созданию постов</string>
<string name="tutorial_choice">С чем вам могла бы понадобиться помощь?</string>
<string name="skip_tutorial">Нет, пропустить</string>
<string name="dark_amoled_theme">Чёрная (AMOLED) (эксперимент)</string>
<string name="arrange_tabs_summary">Упорядочивание вкладок</string>
<string name="arrange_tabs_description">Измените видимость и порядок вкладок</string>
<string name="tutorial">ЧаВо</string>
<string name="tutorial_explanation">Пояснения по использованию PixelDroid и Pixelfed</string>
<string name="custom_tabs_tutorial">Настройка вкладок, которые будут отображаться на главном экране PixelDroid</string>
<string name="first_time_question">Похоже, вы впервые используете PixelDroid. Вы хотите открыть Частые Вопросы? Вы всегда найдете ЧаВо в настройках.</string>
<string name="dm_instruction">Введите имя пользователя получателя и сообщение для отправки</string>
<string name="dm_target">Имя пользователя получателя</string>
<string name="new_dm_error">Ошибка при отправке вашего сообщения! Проверьте имя пользователя</string>
<string name="dm_tutorial">Личные Сообщения: оставайтесь на связи!</string>
<string name="dm_tutorial_text">Отправляйте сообщения другим пользователям Pixelfed: на вашем сервере или на других</string>
<string name="notifications_tutorial_title">Уведомления держат вас в курсе событий</string>
<string name="notifications_tutorial_explanation">PixelDroid также будет отправлять вам push-уведомления, чтобы вы ничего не пропустили!</string>
<string name="home_feed_tutorial_title">Это ваша домашняя лента</string>
<string name="create_tutorial_title">Здесь все начинается</string>
<string name="create_tutorial_explanation">Сначала давайте перейдем на вкладку \"Создать\". Нажмите здесь</string>
<string name="create_tutorial_title_2">Сделайте снимок, чтобы поделиться</string>
<string name="create_tutorial_explanation_2">Сейчас не обязательно сильно стараться</string>
<string name="story_tutorial_title">История или пост?</string>
<string name="edit_tutorial_title">Отредактируйте свое изображение, чтобы оно блестало ✨</string>
<string name="media_description_tutorial_title">Не забудьте добавить медиа-описание!</string>
<string name="media_description_tutorial_explanation">Это помогает сделать Pixelfed доступным для всех, а также позволяет описать, что происходит на вашем красивом изображении ;)</string>
<string name="picture_tutorial_title">Сделайте снимок, чтобы поделиться</string>
<string name="switch_accounts_tutorial_title">Меняйте учетные записи!</string>
<string name="post_button_tutorial_title">Последний рывок! Опубликуйте это фото</string>
<string name="de_activate_tabs_tutorial">Выключите вкладки, которые вам не нужны</string>
<string name="custom_feed_tutorial_title">Создайте собственную ленту с любимым хэштегом</string>
<string name="arrange_tabs_tutorial_title">Сначала откройте настройку \"Упорядочивание вкладок\"</string>
<string name="discover_tutorial_title">Эта вкладка поможет вам начать поиск интересных аккаунтов для подписки</string>
<string name="dm_tutorial_drawer">Сначала откройте выдвижное меню</string>
<string name="picture_tutorial_explanation">Сейчас не обязательно сильно стараться</string>
<string name="dm_title">ЛС для %1$s</string>
<string name="direct_messages">Личные Сообщения</string>
<string name="new_dm_conversation">Создайте новую личную переписку</string>
<string name="new_dm">Сообщение, которое вы хотите написать. Поздоровайтесь!</string>
<string name="public_feed_tutorial_explanation">В этой ленте собраны все посты с вашего сервера! Возможно, вы сможете найти здесь несколько интересных постов :)</string>
<string name="home_feed_tutorial_explanation">Посты людей, на которых вы подписаны, будут отображаться здесь. Никаких алгоритмов, только хронологический порядок. Только вы решаете, что будете смотреть!</string>
<string name="story_tutorial_explanation">Истории недолговечны: вовлекайте своих подписчиков и они захотят возвращаться снова и снова. Попробуйте!</string>
<string name="edit_tutorial_explanation">Вы можете добавлять фильтры, рисовать или добавлять текст, редактировать видео и многое другое! 📷</string>
<string name="switch_accounts_tutorial_explanation">PixelDroid поддерживает использование нескольких учетных записей Pixelfed. Убедитесь, что вы не публикуете фотографии кошек на сервере, предназначенном только для собак! 😱</string>
<string name="post_button_tutorial_explanation">Веселитесь, делясь своими фотографиями со всем миром! Нажмите в любом месте, чтобы отменить и продолжайте осматриваться :)</string>
<string name="drag_customtabs_tutorial">Перетащите это, чтобы изменить порядок вкладок</string>
<string name="custom_feed_tutorial_explanation">Вам нравятся кошки? Попробуйте #caturday! Озера? #lake! Или #hiking? И это будет именно в той вкладке</string>
<string name="discover_tutorial_explanation">Взгляните на популярные посты 📈 или просматривайте несколько случайных постов каждый день, чтобы расширить свой кругозор и найти настоящие бриллианты! 💎</string>
</resources>

View File

@ -3,11 +3,13 @@
<item>default</item>
<item>light</item>
<item>dark</item>
<item>dark-amoled</item>
</string-array>
<string-array name="theme_entries">
<item>@string/default_system</item>
<item>@string/light_theme</item>
<item>@string/dark_theme</item>
<item>@string/dark_amoled_theme</item>
</string-array>
</resources>

View File

@ -35,6 +35,10 @@
<!-- Theme Preferences: dark theme option -->
<string name="dark_theme">Dark</string>
<!-- Theme Preferences: dark theme option, "true" dark (100% black, turns pixels off on AMOLED screens)-->
<string name="dark_amoled_theme">\"True\" Dark (AMOLED) (experimental)</string>
<string name="always_show_nsfw">Always show sensitive content</string>
<!-- Notifications: follow notification -->

View File

@ -33,7 +33,9 @@
android:summary="@string/arrange_tabs_description"
android:icon="@drawable/outline_bottom_navigation" />
<CheckBoxPreference app:key="always_show_nsfw" app:title="@string/always_show_nsfw"
<CheckBoxPreference
app:key="always_show_nsfw"
app:title="@string/always_show_nsfw"
app:icon="@drawable/eye_black_24dp" android:defaultValue="false"
android:summary="@string/summary_always_show_nsfw"/>

View File

@ -6,7 +6,7 @@ buildscript {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.5.2'
classpath 'com.android.tools.build:gradle:8.7.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
@ -15,7 +15,7 @@ buildscript {
}
plugins {
id 'com.google.devtools.ksp' version '2.0.20-1.0.24' apply false
id 'com.google.devtools.ksp' version '2.0.21-1.0.26' apply false
id("com.google.dagger.hilt.android") version "2.52" apply false
}

View File

@ -0,0 +1,11 @@
* Přidání vlastní chybové grafiky červené pandy
* Povolit volné oříznutí při úpravách obrázků
* Vylepšená metadata F-Droid
* Aktualizace překladu
* Aktualizace závislostí
* Oprava chyb

View File

@ -0,0 +1,9 @@
* Odstranění metadat fotografií před nahráním
* Záložky!
* Zobrazení profilu jako výpis nebo mřížku
* Nastavení šablony pro vaše popisy
* Odznak na ikoně oznámení, pokud máte nová oznámení
* Více funkcí pro úpravu videa: oříznutí, změna rychlosti, přidání stabilizace
* Implementace dynamických barev: můžete nastavit PixelDroid, aby následoval barvu vašeho pozadí (Android 12 a vyšší)
* Opravy chyb
* Aktualizace překladů

View File

@ -0,0 +1,4 @@
- Odstranění a přepsání existujících příspěvků
- Sbírky vlastních příspěvků lze nyní prohlížet a upravovat
- Vytvoření příspěvku se nyní provádí ve dvou krocích s novou podporou pro: NSFW, přepínání účtů
- Mnoho dalších změn a vylepšení :)

View File

@ -0,0 +1,4 @@
* Méně agresivní varovné zprávy, pokud deaktivujete oprávnění fotoaparátu nebo souboru
* Aktualizace překladů
* Oprava přerušování nahrávání videa
* Vylepšené zpracování chyb

View File

@ -0,0 +1,4 @@
* Podpora příběhů!
* Aktualizace závislostí
* Hardwarově akcelerované kódování videa
* Spousta práce v zákulisí :)

View File

@ -0,0 +1 @@
Opravy chyb a vylepšení ;)

View File

@ -0,0 +1,7 @@
Oprava chyby při otevírání alba přes celou obrazovku
Používání hardwarové akcelerace pro úpravu obrázků (OpenGL! Shaders!). Momentálně se jen snažíme napodobit předchozí implementaci, ale později poskytneme možnosti pro mnohem hustější věci :)
Řekněte nám, pokud něco nefunguje správně! (e-mail, Mastodon)
V tomto vydání jsou také aktualizace překladu :)

View File

@ -0,0 +1,3 @@
* Oprava pádu při sdílení obrázku z galerie atd. do aplikace
* Oprava problém s oprávněním, který způsoboval, že obrázky házely chybu oprávnění odepřeno

View File

@ -0,0 +1 @@
Rozdělení souborů APK dle architektury CPU, díky čemuž jsou soubory APK mnohem menší (z 100 MB na 25 MB)

View File

@ -0,0 +1,3 @@
Další pokus rozdělit apk
Aktualizace závislostí

View File

@ -0,0 +1,4 @@
* Podpora pro tablety a rotace všech obrazovek. Stále se mohou objevovat nějaké problémy, pokud existují, pošlete nám zprávu
* Opravy chyb: zejména oprava oznámení, která narušovala několik verzí.
* Aktualizace překladů
* Aktualizace závislostí

View File

@ -0,0 +1,3 @@
* Tmavý režim AMOLED
* Synchronizace nastavení NSFW se serverem
* Aktualizace závislostí a překladů

View File

@ -0,0 +1 @@
* Aktualizace závislostí

View File

@ -0,0 +1,3 @@
* AMOLED dark mode
* Sync NSFW setting with server
* Update dependencies and translations

View File

@ -0,0 +1 @@
* Update dependencies

View File

@ -1,7 +1,7 @@
#Fri Oct 14 13:37:44 GMT 2022
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionSha256Sum=544c35d6bd849ae8a5ed0bcea39ba677dc40f49df7d1835561582da2009b961d
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
distributionSha256Sum=d725d707bfabd4dfdc958c624003b3c80accc03f7037b5122c4b1d0ef15cecab
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

@ -1 +1 @@
Subproject commit c03698e241de89725c5ded420da696f7961387d4
Subproject commit 9c48ff7757f776a1cec19dd0a23f125096647616

@ -1 +1 @@
Subproject commit 1584ad2ac65e75a3fa53d71280d04d4ac015d39f
Subproject commit 4a0d82c233bfb5ed841ed72e05d72f7e3ba653de