From c5540270a3cdcb31bbdf81aeb38764b18ef506db Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:20 +0200 Subject: [PATCH 01/88] New translations strings.xml (Thai) --- mastodon/src/main/res/values-th-rTH/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-th-rTH/strings.xml b/mastodon/src/main/res/values-th-rTH/strings.xml index 342867118..b77bb5058 100644 --- a/mastodon/src/main/res/values-th-rTH/strings.xml +++ b/mastodon/src/main/res/values-th-rTH/strings.xml @@ -249,7 +249,6 @@ นี่คือโพสต์ทั้งหมดจากผู้ใช้ทั้งหมดในเซิร์ฟเวอร์ของคุณ (%s) คุณอาจชอบบัญชีเหล่านี้โดยอิงตามผู้อื่นที่คุณติดตาม - ดูโพสต์ใหม่ โหลดโพสต์ที่ขาดหายไป ติดตามกลับ รอดำเนินการ From f72ea2e7638109e3f5ed35ad4f52c8e64c4332ee Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:21 +0200 Subject: [PATCH 02/88] New translations strings.xml (Icelandic) --- mastodon/src/main/res/values-is-rIS/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-is-rIS/strings.xml b/mastodon/src/main/res/values-is-rIS/strings.xml index 15d60d140..f4af40e75 100644 --- a/mastodon/src/main/res/values-is-rIS/strings.xml +++ b/mastodon/src/main/res/values-is-rIS/strings.xml @@ -262,7 +262,6 @@ Þetta eru allar færslur frá öllum notendum á netþjóninum þínum (%s). Þú gætir einnig haft áhuga á þessum aðgöngum, miðað við hverjum þú ert að fylgjast með. - Skoða nýjar færslur Hlaða inn færslum sem vantar Fylgjast með til baka Í bið From af4266c739fc71c6bd9425a4a4247b9eac31aea0 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:22 +0200 Subject: [PATCH 03/88] New translations strings.xml (Japanese) --- mastodon/src/main/res/values-ja-rJP/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-ja-rJP/strings.xml b/mastodon/src/main/res/values-ja-rJP/strings.xml index 67f6108c5..4c9ecbc28 100644 --- a/mastodon/src/main/res/values-ja-rJP/strings.xml +++ b/mastodon/src/main/res/values-ja-rJP/strings.xml @@ -249,7 +249,6 @@ あなたのサーバー (%s) の全ユーザーの全投稿です。 こちらは、あなたがフォローしている人に基づいた、おすすめのアカウントです。 - 新しい投稿を見る 不足している投稿を読み込む フォローバック 保留 From fa65134c260ba50cca8a2605c41c94eeeb258e9f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:23 +0200 Subject: [PATCH 04/88] New translations strings.xml (Ukrainian) --- mastodon/src/main/res/values-uk-rUA/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-uk-rUA/strings.xml b/mastodon/src/main/res/values-uk-rUA/strings.xml index f7762e861..8351d7a04 100644 --- a/mastodon/src/main/res/values-uk-rUA/strings.xml +++ b/mastodon/src/main/res/values-uk-rUA/strings.xml @@ -288,7 +288,6 @@ Всі ці дописи створені користувачами вашого серверу (%s). Вам можуть сподобатися ці профілі, озираючись на ваші підписки. - Переглянути нові дописи Завантажити пропущені дописи Підписатися взаємно Очікується From 82aed439347dcaf21c55086e7466fd8c607dbc3f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:24 +0200 Subject: [PATCH 05/88] New translations strings.xml (Italian) --- mastodon/src/main/res/values-it-rIT/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-it-rIT/strings.xml b/mastodon/src/main/res/values-it-rIT/strings.xml index 00c0aa881..723e2d0fd 100644 --- a/mastodon/src/main/res/values-it-rIT/strings.xml +++ b/mastodon/src/main/res/values-it-rIT/strings.xml @@ -262,7 +262,6 @@ Questi sono tutti i post di tutti gli utenti nel tuo server (%s). Questi account potrebbero piacerti in base agli altri che segui. - Visualizza nuovi post Carica i post mancanti Segui anche tu In attesa From 993393dd96229f63d5bb480d792b242bd9376d8e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:25 +0200 Subject: [PATCH 06/88] New translations strings.xml (Swedish) --- mastodon/src/main/res/values-sv-rSE/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-sv-rSE/strings.xml b/mastodon/src/main/res/values-sv-rSE/strings.xml index e6ae19621..6a1ec585e 100644 --- a/mastodon/src/main/res/values-sv-rSE/strings.xml +++ b/mastodon/src/main/res/values-sv-rSE/strings.xml @@ -258,7 +258,6 @@ Detta är alla inlägg från alla användare på din server (%s). Du kanske gillar dessa konton baserat på andra konton du följer. - Se nya inlägg Ladda saknade inlägg Följ tillbaka Väntande From 816392101440690ce0d0d872a1c687cabd3837fc Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:26 +0200 Subject: [PATCH 07/88] New translations strings.xml (Russian) --- mastodon/src/main/res/values-ru-rRU/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-ru-rRU/strings.xml b/mastodon/src/main/res/values-ru-rRU/strings.xml index 5f4575e65..a3bd6836d 100644 --- a/mastodon/src/main/res/values-ru-rRU/strings.xml +++ b/mastodon/src/main/res/values-ru-rRU/strings.xml @@ -288,7 +288,6 @@ Это все посты от всех пользователей на вашем сервере (%s). Вам могут понравиться эти учетные записи, основаные на ваших подписках. - Показать новые Загрузить недостающие посты Подписаться в ответ В ожидании From 7c4f1da4851eaded0df7b53d176649f2dce21ae3 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:27 +0200 Subject: [PATCH 08/88] New translations strings.xml (Finnish) --- mastodon/src/main/res/values-fi-rFI/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-fi-rFI/strings.xml b/mastodon/src/main/res/values-fi-rFI/strings.xml index a062c0618..9c91a2a3a 100644 --- a/mastodon/src/main/res/values-fi-rFI/strings.xml +++ b/mastodon/src/main/res/values-fi-rFI/strings.xml @@ -262,7 +262,6 @@ Nämä ovat viestit kaikilta palvelimesi (%s) käyttäjiltä. Muiden seuraamiesi perusteella saattaisit pitää näistä tileistä. - Uusia julkaisuja Lataa puuttuvat julkaisut Seuraa takaisin Pyydetty From 1d0ebf889bec41b3a19b745810b022a0b697d456 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:28 +0200 Subject: [PATCH 09/88] New translations strings.xml (Chinese Traditional) --- mastodon/src/main/res/values-zh-rTW/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-zh-rTW/strings.xml b/mastodon/src/main/res/values-zh-rTW/strings.xml index 525cc020d..1eee31e80 100644 --- a/mastodon/src/main/res/values-zh-rTW/strings.xml +++ b/mastodon/src/main/res/values-zh-rTW/strings.xml @@ -249,7 +249,6 @@ 這些是來自您伺服器 (%s) 所有使用者之嘟文。 基於您所跟隨的其他人,您可能會喜歡這些帳號。 - 檢視最新嘟文 讀取錯過的嘟文 跟隨回去 等待中 From 30e4f6e0f539d7c9414539d0ccab7518b83c446a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:30 +0200 Subject: [PATCH 10/88] New translations strings.xml (French) --- mastodon/src/main/res/values-fr-rFR/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-fr-rFR/strings.xml b/mastodon/src/main/res/values-fr-rFR/strings.xml index 21e20e6db..4f8479210 100644 --- a/mastodon/src/main/res/values-fr-rFR/strings.xml +++ b/mastodon/src/main/res/values-fr-rFR/strings.xml @@ -262,7 +262,6 @@ Voici tous les messages de tous les comptes de votre serveur (%s). Vous pourriez aimer ces comptes en fonction des autres que vous suivez. - Voir les nouveaux messages Charger les messages manquants Suivre en retour En attente From b43cd7103a5bf33fe832c7cb0591f62ee2cd6220 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:32 +0200 Subject: [PATCH 11/88] New translations strings.xml (Spanish) --- mastodon/src/main/res/values-es-rES/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-es-rES/strings.xml b/mastodon/src/main/res/values-es-rES/strings.xml index 037668791..240f59059 100644 --- a/mastodon/src/main/res/values-es-rES/strings.xml +++ b/mastodon/src/main/res/values-es-rES/strings.xml @@ -262,7 +262,6 @@ Estos son todos los mensajes de todos los usuarios de tu servidor (%s). Es posible que te gusten estas cuentas basadas en otras que sigues. - Ver nuevas publicaciones Cargar publicaciones faltantes Seguir de vuelta Pendiente From 5b9cfdb689c08b028aaefc569700e194b9d99c94 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:33 +0200 Subject: [PATCH 12/88] New translations strings.xml (Arabic) --- mastodon/src/main/res/values-ar-rSA/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-ar-rSA/strings.xml b/mastodon/src/main/res/values-ar-rSA/strings.xml index fa9ee19ae..3ea30d87d 100644 --- a/mastodon/src/main/res/values-ar-rSA/strings.xml +++ b/mastodon/src/main/res/values-ar-rSA/strings.xml @@ -314,7 +314,6 @@ هذه هي جميع المشاركات من جميع المستخدمين في الخادم الخاص بك (%s). قد تعجبك هذه الحسابات استنادا إلى حسابات أخرى تتابعها. - استعرض المنشورات الجديدة حمّل المَنشورات المَفقودَة رُدّ المتابعة معلق From 43b4a2c515308f093b808b3ea298b6cdf29864c9 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:34 +0200 Subject: [PATCH 13/88] New translations strings.xml (Belarusian) --- mastodon/src/main/res/values-be-rBY/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-be-rBY/strings.xml b/mastodon/src/main/res/values-be-rBY/strings.xml index 17d586752..90ec4d75b 100644 --- a/mastodon/src/main/res/values-be-rBY/strings.xml +++ b/mastodon/src/main/res/values-be-rBY/strings.xml @@ -273,7 +273,6 @@ Спампоўванне… Лакальнае - Паказаць новыя допісы Загрузіць адсутныя допісы Падпісацца ў адказ Чакаюць From 43b1b635810baa2ba6533f444fcd34a371cded43 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:35 +0200 Subject: [PATCH 14/88] New translations strings.xml (Catalan) --- mastodon/src/main/res/values-ca-rES/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-ca-rES/strings.xml b/mastodon/src/main/res/values-ca-rES/strings.xml index 71b67631e..14327aaa5 100644 --- a/mastodon/src/main/res/values-ca-rES/strings.xml +++ b/mastodon/src/main/res/values-ca-rES/strings.xml @@ -208,7 +208,6 @@ Fitxer desat S\'està baixant… - Publicacions noves Carrega les publicacions faltants Segueix Pendent From 68f51a123e052bb496c992680122864b0c7edb2d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:36 +0200 Subject: [PATCH 15/88] New translations strings.xml (Czech) --- mastodon/src/main/res/values-cs-rCZ/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-cs-rCZ/strings.xml b/mastodon/src/main/res/values-cs-rCZ/strings.xml index e606cded6..9f10c5805 100644 --- a/mastodon/src/main/res/values-cs-rCZ/strings.xml +++ b/mastodon/src/main/res/values-cs-rCZ/strings.xml @@ -288,7 +288,6 @@ Toto jsou všechny příspěvky od všech uživatelů na vašem serveru (%s). Podle toho, koho sledujete, by se vám mohly líbit tyto účty. - Zobrazit nové příspěvky Načíst chybějící příspěvky Sledovat nazpět Čekající From 9ea96e32bd9c468617849748c05bf4852854281d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:37 +0200 Subject: [PATCH 16/88] New translations strings.xml (Danish) --- mastodon/src/main/res/values-da-rDK/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-da-rDK/strings.xml b/mastodon/src/main/res/values-da-rDK/strings.xml index beaa09fbd..5524da771 100644 --- a/mastodon/src/main/res/values-da-rDK/strings.xml +++ b/mastodon/src/main/res/values-da-rDK/strings.xml @@ -262,7 +262,6 @@ Disse er alle indlæg fra alle brugere på din server (%s). Baseret på andre, du følger, vil du måske synes om disse konti. - Se nye indlæg Indlæs manglende indlæg Følg Tilbage Afventer From 22a498dfc9cb54ac254fa749a9d5a5d79dd675c9 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:38 +0200 Subject: [PATCH 17/88] New translations strings.xml (German) --- mastodon/src/main/res/values-de-rDE/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-de-rDE/strings.xml b/mastodon/src/main/res/values-de-rDE/strings.xml index 05fd18627..bb2e4f18b 100644 --- a/mastodon/src/main/res/values-de-rDE/strings.xml +++ b/mastodon/src/main/res/values-de-rDE/strings.xml @@ -262,7 +262,6 @@ Dies sind alle Beiträge von allen Benutzern auf deinem Server (%s). Dir könnten diese Konten gefallen, basierend auf Leuten, denen du folgst. - Neue Beiträge anzeigen Weitere Beiträge laden Zurückfolgen Ausstehend From a3800592a29fde4e6789cafc499bc0616d04f660 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:39 +0200 Subject: [PATCH 18/88] New translations strings.xml (Greek) --- mastodon/src/main/res/values-el-rGR/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-el-rGR/strings.xml b/mastodon/src/main/res/values-el-rGR/strings.xml index d334ab814..1d84b9e18 100644 --- a/mastodon/src/main/res/values-el-rGR/strings.xml +++ b/mastodon/src/main/res/values-el-rGR/strings.xml @@ -262,7 +262,6 @@ Αυτές είναι όλες οι αναρτήσεις από όλους τους χρήστες στο διακομιστή σου (%s). Μπορεί να σου αρέσουν αυτοί οι λογαριασμοί με βάση άλλους που ακολουθείς. - Δες νέες αναρτήσεις Φόρτωση αναρτήσεων που λείπουν Ακολούθησε και εσύ Εκκρεμεί From bffb78fccf4839c8a381dcce9a56b4db6c971d13 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:41 +0200 Subject: [PATCH 19/88] New translations strings.xml (Basque) --- mastodon/src/main/res/values-eu-rES/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-eu-rES/strings.xml b/mastodon/src/main/res/values-eu-rES/strings.xml index 73a25107d..ec4ea1b37 100644 --- a/mastodon/src/main/res/values-eu-rES/strings.xml +++ b/mastodon/src/main/res/values-eu-rES/strings.xml @@ -246,7 +246,6 @@ Lokala Hauek dira zure Mastodon txokoan beraien lekua hartzen ari diren argitalpenak. - Ikusi bidalketa berriak Falta diren bidalketak kargatu Jarraitu Zain From 19158e1d48923012c16843bcbcdf38ee60139c85 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:43 +0200 Subject: [PATCH 20/88] New translations strings.xml (Hungarian) --- mastodon/src/main/res/values-hu-rHU/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-hu-rHU/strings.xml b/mastodon/src/main/res/values-hu-rHU/strings.xml index 4d46fb62a..afe6cf937 100644 --- a/mastodon/src/main/res/values-hu-rHU/strings.xml +++ b/mastodon/src/main/res/values-hu-rHU/strings.xml @@ -258,7 +258,6 @@ Itt található az összes bejegyzés az összes felhasznólótól a példányodon (%s). Ezek a fiókok tetszhetnek neked azok alapján, akiket követsz. - Új bejegyzések megtekintése Hiányzó bejegyzések betöltése Visszakövetés Függőben From 254e01dca1898ded6d52b06f3fab66cd8b6003a4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:44 +0200 Subject: [PATCH 21/88] New translations strings.xml (Armenian) --- mastodon/src/main/res/values-hy-rAM/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-hy-rAM/strings.xml b/mastodon/src/main/res/values-hy-rAM/strings.xml index e6aba1ebe..573bc940b 100644 --- a/mastodon/src/main/res/values-hy-rAM/strings.xml +++ b/mastodon/src/main/res/values-hy-rAM/strings.xml @@ -209,7 +209,6 @@ Այս գրառումները տարածված են Մաստոդոնում։ Այս նորությունների մասին խոսում են Մաստոդոնում։ - Նոր գրառումներ Բեռնել բաց թողնված գրառումները Հետեւում է ձեզ From 3b351bea27eb27b0fceb4fe4f3a4311ab512f068 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:45 +0200 Subject: [PATCH 22/88] New translations strings.xml (Korean) --- mastodon/src/main/res/values-ko-rKR/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-ko-rKR/strings.xml b/mastodon/src/main/res/values-ko-rKR/strings.xml index 668fbaf96..b1f4af0a4 100644 --- a/mastodon/src/main/res/values-ko-rKR/strings.xml +++ b/mastodon/src/main/res/values-ko-rKR/strings.xml @@ -199,7 +199,6 @@ 파일 저장됨 다운로드 중… - 새 게시물 보기 놓친 게시물 불러오기 맞팔로우 대기 중 From fed96864e130cab4568077604b89d283035f8080 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:46 +0200 Subject: [PATCH 23/88] New translations strings.xml (Dutch) --- mastodon/src/main/res/values-nl-rNL/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-nl-rNL/strings.xml b/mastodon/src/main/res/values-nl-rNL/strings.xml index c669dbc78..ee00cfc30 100644 --- a/mastodon/src/main/res/values-nl-rNL/strings.xml +++ b/mastodon/src/main/res/values-nl-rNL/strings.xml @@ -262,7 +262,6 @@ Dit zijn alle berichten van alle gebruikers op uw server (%s). Mogelijk vind je deze accounts leuk op basis van andere accounts die je volgt. - Nieuwe berichten Resterende berichten laden Terugvolgen In afwachting From d3fd4b200f838896cb3b6194c6474558b9d47db3 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:47 +0200 Subject: [PATCH 24/88] New translations strings.xml (Norwegian) --- mastodon/src/main/res/values-no-rNO/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-no-rNO/strings.xml b/mastodon/src/main/res/values-no-rNO/strings.xml index 739174ae3..565f0dfab 100644 --- a/mastodon/src/main/res/values-no-rNO/strings.xml +++ b/mastodon/src/main/res/values-no-rNO/strings.xml @@ -262,7 +262,6 @@ Dette er alle innlegg fra alle brukere på din server (%s). Du liker kanskje disse kontoene basert på de andre du følger. - Se nye innlegg Last inn manglende innlegg Følg tilbake Ventende From 3bb0dcee53f1f374f1e54d2964b856c253b3bed9 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:48 +0200 Subject: [PATCH 25/88] New translations strings.xml (Polish) --- mastodon/src/main/res/values-pl-rPL/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-pl-rPL/strings.xml b/mastodon/src/main/res/values-pl-rPL/strings.xml index 4ab8ad766..33ae06c55 100644 --- a/mastodon/src/main/res/values-pl-rPL/strings.xml +++ b/mastodon/src/main/res/values-pl-rPL/strings.xml @@ -288,7 +288,6 @@ To są wszystkie posty od wszystkich użytkowników na Twoim serwerze (%s). Może spodobają się Tobie te konta, bazując na tych, których już obserwujesz? - Zobacz nowe wpisy Załaduj brakujące wpisy Obserwuj wzajemnie Oczekujące From 91da10eca303547e67b27392a172703370b83fbb Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:49 +0200 Subject: [PATCH 26/88] New translations strings.xml (Portuguese) --- mastodon/src/main/res/values-pt-rPT/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-pt-rPT/strings.xml b/mastodon/src/main/res/values-pt-rPT/strings.xml index 15d00dcb0..7978de184 100644 --- a/mastodon/src/main/res/values-pt-rPT/strings.xml +++ b/mastodon/src/main/res/values-pt-rPT/strings.xml @@ -180,7 +180,6 @@ Ficheiro guardado A transferir… - Ver novas publicações Carregar publicações em falta Seguir de volta Pendente From 1a8d46c71e9fa0362f7b3992e668d116282a9ece Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:50 +0200 Subject: [PATCH 27/88] New translations strings.xml (Slovenian) --- mastodon/src/main/res/values-sl-rSI/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-sl-rSI/strings.xml b/mastodon/src/main/res/values-sl-rSI/strings.xml index b9c9d557e..980040fb5 100644 --- a/mastodon/src/main/res/values-sl-rSI/strings.xml +++ b/mastodon/src/main/res/values-sl-rSI/strings.xml @@ -276,7 +276,6 @@ To so vse objave vseh uporabnikov na vašem strežniku (%s). Glede na to, komu sledite, vam bodo ti računi všeč. - Pokaži nove objave Naloži manjkajoče objave Sledijo nazaj Na čakanju From d20d36d9641cf27d14ee0a87772bba6be5e8e889 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:51 +0200 Subject: [PATCH 28/88] New translations strings.xml (Turkish) --- mastodon/src/main/res/values-tr-rTR/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-tr-rTR/strings.xml b/mastodon/src/main/res/values-tr-rTR/strings.xml index 2380a80ef..f0cf9cf47 100644 --- a/mastodon/src/main/res/values-tr-rTR/strings.xml +++ b/mastodon/src/main/res/values-tr-rTR/strings.xml @@ -262,7 +262,6 @@ Bunlar, sunucunuzdaki (%s) tüm kullanıcıların gönderileridir. Takip ettiğiniz hesaplara göre bu hesapları beğenebilirsiniz. - Yeni gönderileri gör Daha fazlası Geri takip et Bekliyor From 5c42e67e73c5306738a92bad68817b2c84900227 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:52 +0200 Subject: [PATCH 29/88] New translations strings.xml (Chinese Simplified) --- mastodon/src/main/res/values-zh-rCN/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-zh-rCN/strings.xml b/mastodon/src/main/res/values-zh-rCN/strings.xml index b4e0bb0ab..5464b2d87 100644 --- a/mastodon/src/main/res/values-zh-rCN/strings.xml +++ b/mastodon/src/main/res/values-zh-rCN/strings.xml @@ -249,7 +249,6 @@ 以下是来自你所在实例(%s)的所有嘟文。 根据你所关注的,你或许也会喜欢这些用户。 - 查看新嘟文 加载嘟文 关注 已发送关注请求 From 451a92aa3671b2ee657519d2ca2cab90a81838bd Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:53 +0200 Subject: [PATCH 30/88] New translations strings.xml (Vietnamese) --- mastodon/src/main/res/values-vi-rVN/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-vi-rVN/strings.xml b/mastodon/src/main/res/values-vi-rVN/strings.xml index 4a6e87cbf..3214c97f8 100644 --- a/mastodon/src/main/res/values-vi-rVN/strings.xml +++ b/mastodon/src/main/res/values-vi-rVN/strings.xml @@ -249,7 +249,6 @@ Đây là những tút từ người trên máy chủ của bạn (%s) Có thể bạn quen những người này chăng?! - Đọc những tút mới Tải tút chưa đọc Theo dõi lại Đang chờ From 86c81d6b533c2fa689cb143ba06bb9751e31363b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:55 +0200 Subject: [PATCH 31/88] New translations strings.xml (Galician) --- mastodon/src/main/res/values-gl-rES/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-gl-rES/strings.xml b/mastodon/src/main/res/values-gl-rES/strings.xml index 350861653..f54b1372f 100644 --- a/mastodon/src/main/res/values-gl-rES/strings.xml +++ b/mastodon/src/main/res/values-gl-rES/strings.xml @@ -262,7 +262,6 @@ Estas son as publicacións das usuarias do teu servidor (%s). Poderían interesarche estas contas en función doutras que segues. - Ver novas publicacións Cargar publicacións que faltan Seguir tamén Pendente From dc6ddbd0eed231d79e1c5168726bdd6ef064f805 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:56 +0200 Subject: [PATCH 32/88] New translations strings.xml (Portuguese, Brazilian) --- mastodon/src/main/res/values-pt-rBR/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-pt-rBR/strings.xml b/mastodon/src/main/res/values-pt-rBR/strings.xml index 22df0da6f..2d4a03fad 100644 --- a/mastodon/src/main/res/values-pt-rBR/strings.xml +++ b/mastodon/src/main/res/values-pt-rBR/strings.xml @@ -259,7 +259,6 @@ Estas são as publicações de todos os usuários em seu servidor (%s). Você pode gostar dessas contas com base em outras que segue. - Ver novas publicações Carregar publicações perdidas Seguir de volta Pendente From 6ebbbb4c6c724bfc1f82f58760c7fc4d95cea450 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:57 +0200 Subject: [PATCH 33/88] New translations strings.xml (Indonesian) --- mastodon/src/main/res/values-in-rID/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-in-rID/strings.xml b/mastodon/src/main/res/values-in-rID/strings.xml index 42bacd536..58d9dac73 100644 --- a/mastodon/src/main/res/values-in-rID/strings.xml +++ b/mastodon/src/main/res/values-in-rID/strings.xml @@ -249,7 +249,6 @@ Ini adalah kiriman dari semua pengguna di server Anda (%s). Anda mungkin suka akun berikut berdasarkan orang-orang yang Anda ikuti. - Lihat kiriman baru Muat kiriman yang hilang Ikuti Balik Ditunda From 0dce936ad36c152e0aa1abd28bf4b44d0d25a933 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:24:58 +0200 Subject: [PATCH 34/88] New translations strings.xml (Persian) --- mastodon/src/main/res/values-fa-rIR/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-fa-rIR/strings.xml b/mastodon/src/main/res/values-fa-rIR/strings.xml index 1318e3f7d..e575ac1e1 100644 --- a/mastodon/src/main/res/values-fa-rIR/strings.xml +++ b/mastodon/src/main/res/values-fa-rIR/strings.xml @@ -262,7 +262,6 @@ این‌ها همه فرسته‌های همه کاربران در سرور شما (%s) هستند. ممکن است این حساب‌ها را بر اساس حساب‌های دیگری که پی می‌گیرید بپسندید. - فرسته‌های جدید را ببینید بارگذاری فرسته‌های گم شده پی‌گیری متقابل منتظر From a1474d0d29ac1901d36029607bad4e9cc0e91f2b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:25:03 +0200 Subject: [PATCH 35/88] New translations strings.xml (Filipino) --- mastodon/src/main/res/values-fil-rPH/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-fil-rPH/strings.xml b/mastodon/src/main/res/values-fil-rPH/strings.xml index 9bae90971..e35210849 100644 --- a/mastodon/src/main/res/values-fil-rPH/strings.xml +++ b/mastodon/src/main/res/values-fil-rPH/strings.xml @@ -199,7 +199,6 @@ Nai-save ang File Nagda-download… - Tingnan ang mga bagong post Mag-Load ng nawawalang mga post Sundan Pabalik Nakabinbin From 7e9f41c74b6a34b47296ea200b54e274922607b7 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:25:05 +0200 Subject: [PATCH 36/88] New translations strings.xml (Scottish Gaelic) --- mastodon/src/main/res/values-gd-rGB/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-gd-rGB/strings.xml b/mastodon/src/main/res/values-gd-rGB/strings.xml index 274f28a3a..e60396ca4 100644 --- a/mastodon/src/main/res/values-gd-rGB/strings.xml +++ b/mastodon/src/main/res/values-gd-rGB/strings.xml @@ -288,7 +288,6 @@ Seo gach post o gach cleachdaiche an fhrithealaiche agad (%s). Dh’fhaoidte gun còrd na cunntasan seo riut stèidhichte air feadhainn eile a tha thu a’ leantainn. - Seall na postaichean ùra Luchdaich postaichean a dhìth Lean air ais Ri dhèiligeadh From f143da3913ea5f89d98002048864a919bcb0d538 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 04:25:08 +0200 Subject: [PATCH 37/88] New translations strings.xml (Kabyle) --- mastodon/src/main/res/values-kab/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/res/values-kab/strings.xml b/mastodon/src/main/res/values-kab/strings.xml index 251d522ad..32fe94000 100644 --- a/mastodon/src/main/res/values-kab/strings.xml +++ b/mastodon/src/main/res/values-kab/strings.xml @@ -203,7 +203,6 @@ Afaylu yettwasekles Asader… - Ẓer tissufaɣ timaynutin Sali tisuffaɣ i iruḥen Ḍfeṛ Yettraǧu From 22fe1749228de6f24e44de5e18d13023f6f5dec3 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 17 Oct 2023 20:07:09 +0200 Subject: [PATCH 38/88] New translations strings.xml (Icelandic) --- mastodon/src/main/res/values-is-rIS/strings.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mastodon/src/main/res/values-is-rIS/strings.xml b/mastodon/src/main/res/values-is-rIS/strings.xml index f4af40e75..7a0959dd2 100644 --- a/mastodon/src/main/res/values-is-rIS/strings.xml +++ b/mastodon/src/main/res/values-is-rIS/strings.xml @@ -262,6 +262,7 @@ Þetta eru allar færslur frá öllum notendum á netþjóninum þínum (%s). Þú gætir einnig haft áhuga á þessum aðgöngum, miðað við hverjum þú ert að fylgjast með. + Nýjar færslur Hlaða inn færslum sem vantar Fylgjast með til baka Í bið @@ -630,6 +631,10 @@ Sýsla með lista sem %s birtist á Fjarlægja af lista Fjarlægja meðlim? + Haltu í við áhugasviðin þín með því að fylgjast með myllumerkjum + Þeir sem fylgst er með birtast hér + Skipulegðu heimastreymið þitt með listum + Þú munt birtast hér %,d nýleg færsla %,d nýlegar færslur From 04483e61e8837113fe65a95c0e0e355b73502646 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 18 Oct 2023 07:49:15 +0200 Subject: [PATCH 39/88] New translations strings.xml (Galician) --- .../src/main/res/values-gl-rES/strings.xml | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/mastodon/src/main/res/values-gl-rES/strings.xml b/mastodon/src/main/res/values-gl-rES/strings.xml index f54b1372f..2e094766b 100644 --- a/mastodon/src/main/res/values-gl-rES/strings.xml +++ b/mastodon/src/main/res/values-gl-rES/strings.xml @@ -262,6 +262,7 @@ Estas son as publicacións das usuarias do teu servidor (%s). Poderían interesarche estas contas en función doutras que segues. + Novas publicacións Cargar publicacións que faltan Seguir tamén Pendente @@ -598,7 +599,45 @@ %,d publicación hoxe %,d publicacións hoxe + Erro ao reproducir o vídeo + A Seguir + Listas + Cancelos seguidos + Aínda non tes ningunha lista. + Non segues ningún cancelo. + Xestionar listas + Xestionar cancelos + Menú despregable + Editar lista + Membros da lista + Eliminar lista + Eliminar \"%s\"? + Agochar contidos na Cronoloxía + Se alguén está nesta lista, oculta as súas publicacións na Cronoloxía de inicio para non velas dúas veces. + Nome da lista + Mostrar respostas a + Ninguén + Membros da lista + Alguén a quen sigo + Eliminar participantes? + Eliminar + Engadir participante + Procurar entre as persoas que segues + Engadir á lista… + Engadir á lista + Xestionar as listas nas que aparece %s + Eliminar da lista + Eliminar participante? + Infórmate dos teus intereses seguindo cancelos + Aquí verás os seguimentos + Organiza a cronoloxía de inicio con Listas + Aquí verás as túas + Engade ou cambia de conta + + %,d publicación recente + %,d publicacións recentes + From 6827166c1d1fe64755f4f48f6c173f09ef565068 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 18 Oct 2023 08:51:11 +0200 Subject: [PATCH 40/88] New translations strings.xml (Galician) --- mastodon/src/main/res/values-gl-rES/strings.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mastodon/src/main/res/values-gl-rES/strings.xml b/mastodon/src/main/res/values-gl-rES/strings.xml index 2e094766b..592c186fc 100644 --- a/mastodon/src/main/res/values-gl-rES/strings.xml +++ b/mastodon/src/main/res/values-gl-rES/strings.xml @@ -614,23 +614,23 @@ Eliminar lista Eliminar \"%s\"? - Agochar contidos na Cronoloxía + Agochar aos membros no Inicio Se alguén está nesta lista, oculta as súas publicacións na Cronoloxía de inicio para non velas dúas veces. Nome da lista Mostrar respostas a Ninguén - Membros da lista + Usuarias na lista Alguén a quen sigo - Eliminar participantes? + Eliminar membros? Eliminar - Engadir participante + Engadir usuaria Procurar entre as persoas que segues Engadir á lista… Engadir á lista Xestionar as listas nas que aparece %s Eliminar da lista - Eliminar participante? + Eliminar membro? Infórmate dos teus intereses seguindo cancelos Aquí verás os seguimentos Organiza a cronoloxía de inicio con Listas From efeca17106182578929e81cf2d96e03ca038e898 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 18 Oct 2023 11:34:03 +0200 Subject: [PATCH 41/88] New translations strings.xml (Chinese Traditional) --- mastodon/src/main/res/values-zh-rTW/strings.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mastodon/src/main/res/values-zh-rTW/strings.xml b/mastodon/src/main/res/values-zh-rTW/strings.xml index 1eee31e80..ddadb8a83 100644 --- a/mastodon/src/main/res/values-zh-rTW/strings.xml +++ b/mastodon/src/main/res/values-zh-rTW/strings.xml @@ -249,6 +249,7 @@ 這些是來自您伺服器 (%s) 所有使用者之嘟文。 基於您所跟隨的其他人,您可能會喜歡這些帳號。 + 新嘟文 讀取錯過的嘟文 跟隨回去 等待中 @@ -599,6 +600,11 @@ 管理包含 %s 之列表 從列表中移除 移除此成員? + 跟隨主題標籤以跟上興趣主題 + 已跟隨的主題標籤將顯示於此 + 藉由列表以整理您的首頁河道 + 您的將出現於此 + 新增或切換帳號 %,d 最近發嘟 From 52b079be2af8e35504a24859452181e8158c0027 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 18 Oct 2023 18:11:40 +0200 Subject: [PATCH 42/88] New translations strings.xml (Thai) --- mastodon/src/main/res/values-th-rTH/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/mastodon/src/main/res/values-th-rTH/strings.xml b/mastodon/src/main/res/values-th-rTH/strings.xml index b77bb5058..e96bc0783 100644 --- a/mastodon/src/main/res/values-th-rTH/strings.xml +++ b/mastodon/src/main/res/values-th-rTH/strings.xml @@ -249,6 +249,7 @@ นี่คือโพสต์ทั้งหมดจากผู้ใช้ทั้งหมดในเซิร์ฟเวอร์ของคุณ (%s) คุณอาจชอบบัญชีเหล่านี้โดยอิงตามผู้อื่นที่คุณติดตาม + โพสต์ใหม่ โหลดโพสต์ที่ขาดหายไป ติดตามกลับ รอดำเนินการ From f63daf3a4ed4395489468742e909e90107ec9574 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 18 Oct 2023 19:15:16 +0200 Subject: [PATCH 43/88] New translations strings.xml (Thai) --- mastodon/src/main/res/values-th-rTH/strings.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mastodon/src/main/res/values-th-rTH/strings.xml b/mastodon/src/main/res/values-th-rTH/strings.xml index e96bc0783..545e318fd 100644 --- a/mastodon/src/main/res/values-th-rTH/strings.xml +++ b/mastodon/src/main/res/values-th-rTH/strings.xml @@ -600,6 +600,11 @@ จัดการรายการที่ %s ปรากฏอยู่ใน เอาออกจากรายการ เอาสมาชิกออก? + ตามให้ทันความสนใจโดยการติดตามแฮชแท็ก + การติดตามจะปรากฏที่นี่ + จัดระเบียบฟีดหน้าแรกของคุณด้วยรายการ + ของคุณจะปรากฏที่นี่ + เพิ่มหรือสลับบัญชี %,d โพสต์ล่าสุด From 2ef17ba05104879a067e8dd5650f7accd4d7193b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 18 Oct 2023 19:15:17 +0200 Subject: [PATCH 44/88] New translations strings.xml (Spanish) --- mastodon/src/main/res/values-es-rES/strings.xml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/mastodon/src/main/res/values-es-rES/strings.xml b/mastodon/src/main/res/values-es-rES/strings.xml index 240f59059..ae4972005 100644 --- a/mastodon/src/main/res/values-es-rES/strings.xml +++ b/mastodon/src/main/res/values-es-rES/strings.xml @@ -262,6 +262,7 @@ Estos son todos los mensajes de todos los usuarios de tu servidor (%s). Es posible que te gusten estas cuentas basadas en otras que sigues. + Nuevas publicaciones Cargar publicaciones faltantes Seguir de vuelta Pendiente @@ -386,6 +387,7 @@ Bienvenido/da a Mastodon Mastodon es una red social descentralizada, lo que significa que no la controla una sola compañía. Está formada por muchos servidores independientes, todos juntos conectados. ¿Qué son los servidores? + Cada cuenta de Mastodon está alojada en un servidor — cada uno con sus propios valores, reglas y administradores. Sin importar cuál elijas, puedes seguir e interactuar con personas en cualquier servidor. Abriendo enlace… Este enlace no es compatible con la aplicación Cerrar sesión en todas las cuentas @@ -413,6 +415,7 @@ Texto alternativo Ayuda ¿Qué es el texto alternativo? + El texto alternativo entrega descripciones de una imagen a las personas con discapacidad visual, conexiones de internet con bajo ancho de banda o a quienes buscan un mayor contexto.\n\nPuedes mejorar la accesibilidad y la comprensión de todos al escribir texto alternativo que sea claro, conciso y objetivo.\n\n<ul><il> Captura elementos importantes</li>\n<li>Resume el texto en las imágenes</li>\n<li>Construye las frases de manera normal</li>\n<li>Evita la información redundante</li>\n<li>Enfócate en tendencias y en hallazgos claves en imágenes complejas (como diagramas o mapas)</li></ul> Editar publicación Enlace no verificado Explorar emojis @@ -432,6 +435,7 @@ Reenviar a %s Reportado + Para no ver más sus mensajes en tu feed de inicio, deja de seguirlos. Silenciado %s Ya has bloqueado a este usuario, así que no tienes nada más que hacer mientras revisamos tu informe. Ya has bloqueado a este usuario, así que no tienes nada más que hacer.\n\n¡Gracias por ayudar a mantener Mastodon un lugar seguro para todos! @@ -474,9 +478,13 @@ Acerca de Reglas Administrador + Envía mensaje a un administrador Active las notificaciones desde la configuración de su dispositivo para ver actualizaciones desde cualquier lugar. Aún más ajustes Mostrar advertencias de contenido + Esconder contenidos marcados como explícitos + Contador de interacciones con una publicación + Emoji personalizado en los nombres de las pantallas en %d segundo en %d segundos @@ -531,6 +539,7 @@ %1$s, %2$s, y %3$d más Inicio y listas Notificaciones + Líneas de tiempo públicas Hilos y respuestas Profiles Título @@ -540,6 +549,7 @@ Editar palabra silenciada Añadir Palabra o frase + Las palabras no distinguen letras mayúsculas y solo reconocen palabras completas.\n\nSi filtras la palabra \"Agua\", se ocultarán posteos que incluyan \"agua\" o \"aGua\", pero no los que contengan \"paraguas\". ¿Eliminar palabra “%s”? Seleccionar Seleccionar todo @@ -573,7 +583,14 @@ hace %dh hace %dd + Traducir desde %s + Traducido desde %1$s usando %2$s + Ver original + Error al traducir. Tal vez el administrador no ha habilitado las traducciones en este servidor o este servidor está ejecutando una versión antigua de Mastodon donde las traducciones aún no están soportadas. + Privacidad y alcance + Mostrar perfil y publicaciones en algoritmos de descubrimiento + Incluir posteos públicos en los resultados de búsqueda From b8dccbbef1680d155b08dbb020d8766da9332ede Mon Sep 17 00:00:00 2001 From: sk Date: Wed, 18 Oct 2023 19:23:13 +0200 Subject: [PATCH 45/88] now hopefully fixing header/subtitle extra sizing --- .../android/ui/views/HeaderSubtitleLinearLayout.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/views/HeaderSubtitleLinearLayout.java b/mastodon/src/main/java/org/joinmastodon/android/ui/views/HeaderSubtitleLinearLayout.java index c45fd3664..fa10d69c6 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/views/HeaderSubtitleLinearLayout.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/views/HeaderSubtitleLinearLayout.java @@ -27,7 +27,8 @@ public class HeaderSubtitleLinearLayout extends LinearLayout{ @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){ if(getLayoutChildCount()>1){ - int remainingWidth=MeasureSpec.getSize(widthMeasureSpec); + int fullWidth=MeasureSpec.getSize(widthMeasureSpec); + int remainingWidth=fullWidth; for(int i=1;i Date: Wed, 18 Oct 2023 19:39:12 +0200 Subject: [PATCH 46/88] change extra text size --- .../android/ui/views/HeaderSubtitleLinearLayout.java | 2 +- mastodon/src/main/res/layout/display_item_header.xml | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/views/HeaderSubtitleLinearLayout.java b/mastodon/src/main/java/org/joinmastodon/android/ui/views/HeaderSubtitleLinearLayout.java index fa10d69c6..3cf5f9edb 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/views/HeaderSubtitleLinearLayout.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/views/HeaderSubtitleLinearLayout.java @@ -39,7 +39,7 @@ public class HeaderSubtitleLinearLayout extends LinearLayout{ } View first=getChildAt(0); if(first instanceof TextView){ - ((TextView) first).setMaxWidth(Math.max(remainingWidth, fullWidth/2)); + ((TextView) first).setMaxWidth(Math.max(remainingWidth, fullWidth/3*2)); } }else{ View first=getChildAt(0); diff --git a/mastodon/src/main/res/layout/display_item_header.xml b/mastodon/src/main/res/layout/display_item_header.xml index cf3d6d6e5..36fe7aff3 100644 --- a/mastodon/src/main/res/layout/display_item_header.xml +++ b/mastodon/src/main/res/layout/display_item_header.xml @@ -10,7 +10,7 @@ android:id="@+id/buttons" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="6dp" + android:layout_marginTop="5dp" android:layout_alignParentTop="true" android:layout_alignParentEnd="true"> @@ -132,8 +132,7 @@ android:layout_marginStart="8sp" android:ellipsize="end" android:singleLine="true" - android:textAppearance="@style/m3_title_medium" - android:fontFamily="sans-serif" + android:textAppearance="@style/m3_body_medium" android:textAlignment="viewStart" android:textColor="?colorM3OnSurface" tools:text="boosted your cat picture" /> From 09577074a99872054478b77363903af3b28fd0e8 Mon Sep 17 00:00:00 2001 From: sk Date: Wed, 18 Oct 2023 20:26:20 +0200 Subject: [PATCH 47/88] merge settings changes --- .../discover/SearchQueryFragment.java | 14 +-- .../settings/EditFilterFragment.java | 10 +-- .../settings/FilterContextFragment.java | 3 +- .../settings/FilterWordsFragment.java | 48 ++-------- .../settings/SettingsAboutAppFragment.java | 10 +-- .../settings/SettingsBehaviorFragment.java | 40 ++++----- .../settings/SettingsDebugFragment.java | 8 +- .../settings/SettingsDisplayFragment.java | 50 +++++------ .../settings/SettingsFiltersFragment.java | 6 +- .../settings/SettingsInstanceFragment.java | 20 ++--- .../settings/SettingsMainFragment.java | 24 +++-- .../SettingsNotificationsFragment.java | 31 ++++--- .../settings/SettingsPrivacyFragment.java | 4 +- .../settings/SettingsServerAboutFragment.java | 2 +- .../model/viewmodel/CheckableListItem.java | 22 ++--- .../android/model/viewmodel/ListItem.java | 35 +++++--- .../android/ui/utils/ActionModeHelper.java | 88 +++++++++++++++++++ .../ui/viewholders/ListItemViewHolder.java | 2 +- ...s_filter_words.xml => selectable_list.xml} | 0 mastodon/src/main/res/values/strings.xml | 40 +++++++++ 20 files changed, 280 insertions(+), 177 deletions(-) create mode 100644 mastodon/src/main/java/org/joinmastodon/android/ui/utils/ActionModeHelper.java rename mastodon/src/main/res/menu/{settings_filter_words.xml => selectable_list.xml} (100%) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/discover/SearchQueryFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/discover/SearchQueryFragment.java index b304c6e82..84bceb46f 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/discover/SearchQueryFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/discover/SearchQueryFragment.java @@ -115,7 +115,7 @@ public class SearchQueryFragment extends MastodonRecyclerFragment{ SearchResultViewModel vm=new SearchResultViewModel(sr, accountID, true); if(sr.type==SearchResult.Type.HASHTAG){ - vm.hashtagItem.onClick=()->openHashtag(sr); + vm.hashtagItem.setOnClick(i->openHashtag(sr)); } return vm; }).collect(Collectors.toList()), false); @@ -132,7 +132,7 @@ public class SearchQueryFragment extends MastodonRecyclerFragment{ SearchResultViewModel vm=new SearchResultViewModel(sr, accountID, false); if(sr.type==SearchResult.Type.HASHTAG){ - vm.hashtagItem.onClick=()->openHashtag(sr); + vm.hashtagItem.setOnClick(i->openHashtag(sr)); } return vm; }) @@ -429,11 +429,11 @@ public class SearchQueryFragment extends MastodonRecyclerFragmentdeliverResult(currentQuery, null)); } - private void onOpenURLClick(){ + private void onOpenURLClick(ListItem item_){ UiUtils.openURL(getContext(), accountID, searchViewHelper.getQuery(), false); } - private void onGoToHashtagClick(){ + private void onGoToHashtagClick(ListItem item_){ wrapSuicideDialog(()->{ String q=searchViewHelper.getQuery(); if(q.startsWith("#")) @@ -442,7 +442,7 @@ public class SearchQueryFragment extends MastodonRecyclerFragment item_){ String q=searchViewHelper.getQuery(); if(!q.startsWith("@")){ q="@"+q; @@ -459,11 +459,11 @@ public class SearchQueryFragment extends MastodonRecyclerFragment progress.wrapProgress((Activity) getContext(), R.string.loading, true)); } - private void onGoToStatusSearchClick(){ + private void onGoToStatusSearchClick(ListItem item_){ wrapSuicideDialog(()->deliverResult(searchViewHelper.getQuery(), SearchResult.Type.STATUS)); } - private void onGoToAccountSearchClick(){ + private void onGoToAccountSearchClick(ListItem item_){ wrapSuicideDialog(()->deliverResult(searchViewHelper.getQuery(), SearchResult.Type.ACCOUNT)); } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/EditFilterFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/EditFilterFragment.java index 4655c4169..bee767c19 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/EditFilterFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/EditFilterFragment.java @@ -73,7 +73,7 @@ public class EditFilterFragment extends BaseSettingsFragment implements On durationItem=new ListItem<>(R.string.settings_filter_duration, 0, this::onDurationClick), wordsItem=new ListItem<>(R.string.settings_filter_muted_words, 0, this::onWordsClick), contextItem=new ListItem<>(R.string.settings_filter_context, 0, this::onContextClick), - cwItem=new CheckableListItem<>(R.string.settings_filter_show_cw, R.string.settings_filter_show_cw_explanation, CheckableListItem.Style.SWITCH, filter==null || filter.filterAction==FilterAction.WARN, ()->toggleCheckableItem(cwItem)) + cwItem=new CheckableListItem<>(R.string.settings_filter_show_cw, R.string.settings_filter_show_cw_explanation, CheckableListItem.Style.SWITCH, filter==null || filter.filterAction==FilterAction.WARN, this::toggleCheckableItem) )); if(filter!=null){ @@ -113,7 +113,7 @@ public class EditFilterFragment extends BaseSettingsFragment implements On return 1; } - private void onDurationClick(){ + private void onDurationClick(ListItem item_){ int[] durationOptions={ 1800, 3600, @@ -182,21 +182,21 @@ public class EditFilterFragment extends BaseSettingsFragment implements On alert.setOnDismissListener(dialog->callback.accept(null)); } - private void onWordsClick(){ + private void onWordsClick(ListItem item){ Bundle args=new Bundle(); args.putString("account", accountID); args.putParcelableArrayList("words", (ArrayList) keywords.stream().map(Parcels::wrap).collect(Collectors.toCollection(ArrayList::new))); Nav.goForResult(getActivity(), FilterWordsFragment.class, args, WORDS_RESULT, this); } - private void onContextClick(){ + private void onContextClick(ListItem item){ Bundle args=new Bundle(); args.putString("account", accountID); args.putSerializable("context", context); Nav.goForResult(getActivity(), FilterContextFragment.class, args, CONTEXT_RESULT, this); } - private void onDeleteClick(){ + private void onDeleteClick(ListItem item_){ AlertDialog alert=new M3AlertDialogBuilder(getActivity()) .setTitle(getString(R.string.settings_delete_filter_title, filter.title)) .setMessage(R.string.settings_delete_filter_confirmation) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/FilterContextFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/FilterContextFragment.java index 233c00cb5..37d911072 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/FilterContextFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/FilterContextFragment.java @@ -22,10 +22,9 @@ public class FilterContextFragment extends BaseSettingsFragment i setTitle(R.string.settings_filter_context); context=(EnumSet) getArguments().getSerializable("context"); onDataLoaded(Arrays.stream(FilterContext.values()).map(c->{ - CheckableListItem item=new CheckableListItem<>(c.getDisplayNameRes(), 0, CheckableListItem.Style.CHECKBOX, context.contains(c), null); + CheckableListItem item=new CheckableListItem<>(c.getDisplayNameRes(), 0, CheckableListItem.Style.CHECKBOX, context.contains(c), this::toggleCheckableItem); item.parentObject=c; item.isEnabled=true; - item.onClick=()->toggleCheckableItem(item); return item; }).collect(Collectors.toList())); } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/FilterWordsFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/FilterWordsFragment.java index 8ce67f89f..d6e854242 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/FilterWordsFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/FilterWordsFragment.java @@ -1,11 +1,6 @@ package org.joinmastodon.android.fragments.settings; -import android.animation.Animator; -import android.animation.AnimatorListenerAdapter; -import android.animation.IntEvaluator; -import android.animation.ObjectAnimator; import android.app.AlertDialog; -import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Bundle; import android.os.Parcelable; @@ -27,6 +22,7 @@ import org.joinmastodon.android.model.FilterKeyword; import org.joinmastodon.android.model.viewmodel.CheckableListItem; import org.joinmastodon.android.model.viewmodel.ListItem; import org.joinmastodon.android.ui.M3AlertDialogBuilder; +import org.joinmastodon.android.ui.utils.ActionModeHelper; import org.joinmastodon.android.ui.utils.SimpleTextWatcher; import org.joinmastodon.android.ui.utils.UiUtils; import org.joinmastodon.android.ui.views.FloatingHintEditTextLayout; @@ -37,7 +33,6 @@ import java.util.Collections; import java.util.List; import java.util.stream.Collectors; -import me.grishka.appkit.FragmentStackActivity; import me.grishka.appkit.fragments.OnBackPressedListener; import me.grishka.appkit.utils.V; @@ -60,7 +55,7 @@ public class FilterWordsFragment extends BaseSettingsFragment imp FilterKeyword word=Parcels.unwrap(p); ListItem item=new ListItem<>(word.keyword, null, null, word); item.isEnabled=true; - item.onClick=()->onWordClick(item); + item.setOnClick(this::onWordClick); return item; }).collect(Collectors.toList())); setHasOptionsMenu(true); @@ -114,7 +109,7 @@ public class FilterWordsFragment extends BaseSettingsFragment imp @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater){ - inflater.inflate(R.menu.settings_filter_words, menu); + inflater.inflate(R.menu.selectable_list, menu); } @Override @@ -174,7 +169,7 @@ public class FilterWordsFragment extends BaseSettingsFragment imp w.keyword=input; ListItem item=new ListItem<>(w.keyword, null, null, w); item.isEnabled=true; - item.onClick=()->onWordClick(item); + item.setOnClick(this::onWordClick); data.add(item); itemsAdapter.notifyItemInserted(data.size()-1); }else{ @@ -228,29 +223,15 @@ public class FilterWordsFragment extends BaseSettingsFragment imp return; V.setVisibilityAnimated(fab, View.GONE); - actionMode=getActivity().startActionMode(new ActionMode.Callback(){ + actionMode=ActionModeHelper.startActionMode(this, ()->elevationOnScrollListener.getCurrentStatusBarColor(), new ActionMode.Callback(){ @Override public boolean onCreateActionMode(ActionMode mode, Menu menu){ - ObjectAnimator anim=ObjectAnimator.ofInt(getActivity().getWindow(), "statusBarColor", elevationOnScrollListener.getCurrentStatusBarColor(), UiUtils.getThemeColor(getActivity(), R.attr.colorM3Primary)); - anim.setEvaluator(new IntEvaluator(){ - @Override - public Integer evaluate(float fraction, Integer startValue, Integer endValue){ - return UiUtils.alphaBlendColors(startValue, endValue, fraction); - } - }); - anim.start(); - ((FragmentStackActivity) getActivity()).invalidateSystemBarColors(FilterWordsFragment.this); return true; } @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu){ mode.getMenuInflater().inflate(R.menu.settings_filter_words_action_mode, menu); - for(int i=0;i imp @Override public void onDestroyActionMode(ActionMode mode){ leaveSelectionMode(true); - ObjectAnimator anim=ObjectAnimator.ofInt(getActivity().getWindow(), "statusBarColor", UiUtils.getThemeColor(getActivity(), R.attr.colorM3Primary), elevationOnScrollListener.getCurrentStatusBarColor()); - anim.setEvaluator(new IntEvaluator(){ - @Override - public Integer evaluate(float fraction, Integer startValue, Integer endValue){ - return UiUtils.alphaBlendColors(startValue, endValue, fraction); - } - }); - anim.addListener(new AnimatorListenerAdapter(){ - @Override - public void onAnimationEnd(Animator animation){ - getActivity().getWindow().setStatusBarColor(0); - } - }); - anim.start(); - ((FragmentStackActivity) getActivity()).invalidateSystemBarColors(FilterWordsFragment.this); } }); @@ -289,7 +255,7 @@ public class FilterWordsFragment extends BaseSettingsFragment imp ListItem item=data.get(i); CheckableListItem newItem=new CheckableListItem<>(item.title, null, CheckableListItem.Style.CHECKBOX, selectAll, null); newItem.isEnabled=true; - newItem.onClick=()->onSelectionModeWordClick(newItem); + newItem.setOnClick(this::onSelectionModeWordClick); newItem.parentObject=item.parentObject; if(selectAll) selectedItems.add(newItem); @@ -313,7 +279,7 @@ public class FilterWordsFragment extends BaseSettingsFragment imp ListItem item=data.get(i); ListItem newItem=new ListItem<>(item.title, null, null); newItem.isEnabled=true; - newItem.onClick=()->onWordClick(newItem); + newItem.setOnClick(this::onWordClick); newItem.parentObject=item.parentObject; data.set(i, newItem); } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsAboutAppFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsAboutAppFragment.java index 1bfb5c5db..0ec9c7177 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsAboutAppFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsAboutAppFragment.java @@ -33,10 +33,10 @@ public class SettingsAboutAppFragment extends BaseSettingsFragment{ setTitle(getString(R.string.about_app, getString(R.string.sk_app_name))); AccountSession s=AccountSessionManager.get(accountID); onDataLoaded(List.of( - new ListItem<>(R.string.sk_settings_donate, 0, R.drawable.ic_fluent_heart_24_regular, ()->UiUtils.openHashtagTimeline(getActivity(), accountID, getString(R.string.donate_hashtag))), - new ListItem<>(R.string.sk_settings_contribute, 0, R.drawable.ic_fluent_open_24_regular, ()->UiUtils.launchWebBrowser(getActivity(), getString(R.string.repo_url))), - new ListItem<>(R.string.settings_tos, 0, R.drawable.ic_fluent_open_24_regular, ()->UiUtils.launchWebBrowser(getActivity(), "https://"+s.domain+"/terms")), - new ListItem<>(R.string.settings_privacy_policy, 0, R.drawable.ic_fluent_open_24_regular, ()->UiUtils.launchWebBrowser(getActivity(), getString(R.string.privacy_policy_url)), 0, true), + new ListItem<>(R.string.sk_settings_donate, 0, R.drawable.ic_fluent_heart_24_regular, i->UiUtils.openHashtagTimeline(getActivity(), accountID, getString(R.string.donate_hashtag))), + new ListItem<>(R.string.sk_settings_contribute, 0, R.drawable.ic_fluent_open_24_regular, i->UiUtils.launchWebBrowser(getActivity(), getString(R.string.repo_url))), + new ListItem<>(R.string.settings_tos, 0, R.drawable.ic_fluent_open_24_regular, i->UiUtils.launchWebBrowser(getActivity(), "https://"+s.domain+"/terms")), + new ListItem<>(R.string.settings_privacy_policy, 0, R.drawable.ic_fluent_open_24_regular, i->UiUtils.launchWebBrowser(getActivity(), getString(R.string.privacy_policy_url)), 0, true), mediaCacheItem=new ListItem<>(R.string.settings_clear_cache, 0, this::onClearMediaCacheClick) )); @@ -63,7 +63,7 @@ public class SettingsAboutAppFragment extends BaseSettingsFragment{ return adapter; } - private void onClearMediaCacheClick(){ + private void onClearMediaCacheClick(ListItem item){ MastodonAPIController.runInBackground(()->{ Activity activity=getActivity(); ImageCache.getInstance(getActivity()).clear(); diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsBehaviorFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsBehaviorFragment.java index ff080775a..93ccd17fa 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsBehaviorFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsBehaviorFragment.java @@ -46,20 +46,20 @@ public class SettingsBehaviorFragment extends BaseSettingsFragment impleme List> items = new ArrayList<>(List.of( languageItem=new ListItem<>(getString(R.string.default_post_language), postLanguage!=null ? postLanguage.getDisplayName(getContext()) : null, R.drawable.ic_fluent_local_language_24_regular, this::onDefaultLanguageClick), - altTextItem=new CheckableListItem<>(R.string.settings_alt_text_reminders, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.altTextReminders, R.drawable.ic_fluent_image_alt_text_24_regular, ()->toggleCheckableItem(altTextItem)), - playGifsItem=new CheckableListItem<>(R.string.settings_gif, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.playGifs, R.drawable.ic_fluent_gif_24_regular, ()->toggleCheckableItem(playGifsItem)), - overlayMediaItem=new CheckableListItem<>(R.string.sk_settings_continues_playback, R.string.sk_settings_continues_playback_summary, CheckableListItem.Style.SWITCH, GlobalUserPreferences.overlayMedia, R.drawable.ic_fluent_play_circle_hint_24_regular, ()->toggleCheckableItem(overlayMediaItem)), - customTabsItem=new CheckableListItem<>(R.string.settings_custom_tabs, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.useCustomTabs, R.drawable.ic_fluent_link_24_regular, ()->toggleCheckableItem(customTabsItem)), - confirmUnfollowItem=new CheckableListItem<>(R.string.settings_confirm_unfollow, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.confirmUnfollow, R.drawable.ic_fluent_person_delete_24_regular, ()->toggleCheckableItem(confirmUnfollowItem)), - confirmBoostItem=new CheckableListItem<>(R.string.settings_confirm_boost, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.confirmBoost, R.drawable.ic_fluent_arrow_repeat_all_24_regular, ()->toggleCheckableItem(confirmBoostItem)), - confirmDeleteItem=new CheckableListItem<>(R.string.settings_confirm_delete_post, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.confirmDeletePost, R.drawable.ic_fluent_delete_24_regular, ()->toggleCheckableItem(confirmDeleteItem)), + altTextItem=new CheckableListItem<>(R.string.settings_alt_text_reminders, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.altTextReminders, R.drawable.ic_fluent_image_alt_text_24_regular, i->toggleCheckableItem(altTextItem)), + playGifsItem=new CheckableListItem<>(R.string.settings_gif, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.playGifs, R.drawable.ic_fluent_gif_24_regular, i->toggleCheckableItem(playGifsItem)), + overlayMediaItem=new CheckableListItem<>(R.string.sk_settings_continues_playback, R.string.sk_settings_continues_playback_summary, CheckableListItem.Style.SWITCH, GlobalUserPreferences.overlayMedia, R.drawable.ic_fluent_play_circle_hint_24_regular, i->toggleCheckableItem(overlayMediaItem)), + customTabsItem=new CheckableListItem<>(R.string.settings_custom_tabs, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.useCustomTabs, R.drawable.ic_fluent_link_24_regular, i->toggleCheckableItem(customTabsItem)), + confirmUnfollowItem=new CheckableListItem<>(R.string.settings_confirm_unfollow, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.confirmUnfollow, R.drawable.ic_fluent_person_delete_24_regular, i->toggleCheckableItem(confirmUnfollowItem)), + confirmBoostItem=new CheckableListItem<>(R.string.settings_confirm_boost, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.confirmBoost, R.drawable.ic_fluent_arrow_repeat_all_24_regular, i->toggleCheckableItem(confirmBoostItem)), + confirmDeleteItem=new CheckableListItem<>(R.string.settings_confirm_delete_post, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.confirmDeletePost, R.drawable.ic_fluent_delete_24_regular, i->toggleCheckableItem(confirmDeleteItem)), prefixRepliesItem=new ListItem<>(R.string.sk_settings_prefix_reply_cw_with_re, getPrefixWithRepliesString(), R.drawable.ic_fluent_arrow_reply_24_regular, this::onPrefixRepliesClick), - forwardReportsItem=new CheckableListItem<>(R.string.sk_settings_forward_report_default, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.forwardReportDefault, R.drawable.ic_fluent_arrow_forward_24_regular, ()->toggleCheckableItem(forwardReportsItem)), - loadNewPostsItem=new CheckableListItem<>(R.string.sk_settings_load_new_posts, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.loadNewPosts, R.drawable.ic_fluent_arrow_sync_24_regular, this::onLoadNewPostsClick), - seeNewPostsBtnItem=new CheckableListItem<>(R.string.sk_settings_see_new_posts_button, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.showNewPostsButton, R.drawable.ic_fluent_arrow_up_24_regular, ()->toggleCheckableItem(seeNewPostsBtnItem)), - remoteLoadingItem=new CheckableListItem<>(R.string.sk_settings_allow_remote_loading, R.string.sk_settings_allow_remote_loading_explanation, CheckableListItem.Style.SWITCH, GlobalUserPreferences.allowRemoteLoading, R.drawable.ic_fluent_communication_24_regular, ()->toggleCheckableItem(remoteLoadingItem), true), - showBoostsItem=new CheckableListItem<>(R.string.sk_settings_show_boosts, 0, CheckableListItem.Style.SWITCH, lp.showBoosts, R.drawable.ic_fluent_arrow_repeat_all_24_regular, ()->toggleCheckableItem(showBoostsItem)), - showRepliesItem=new CheckableListItem<>(R.string.sk_settings_show_replies, 0, CheckableListItem.Style.SWITCH, lp.showReplies, R.drawable.ic_fluent_arrow_reply_24_regular, ()->toggleCheckableItem(showRepliesItem)) + forwardReportsItem=new CheckableListItem<>(R.string.sk_settings_forward_report_default, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.forwardReportDefault, R.drawable.ic_fluent_arrow_forward_24_regular, i->toggleCheckableItem(forwardReportsItem)), + loadNewPostsItem=new CheckableListItem<>(R.string.sk_settings_load_new_posts, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.loadNewPosts, R.drawable.ic_fluent_arrow_sync_24_regular, i->onLoadNewPostsClick()), + seeNewPostsBtnItem=new CheckableListItem<>(R.string.sk_settings_see_new_posts_button, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.showNewPostsButton, R.drawable.ic_fluent_arrow_up_24_regular, i->toggleCheckableItem(seeNewPostsBtnItem)), + remoteLoadingItem=new CheckableListItem<>(R.string.sk_settings_allow_remote_loading, R.string.sk_settings_allow_remote_loading_explanation, CheckableListItem.Style.SWITCH, GlobalUserPreferences.allowRemoteLoading, R.drawable.ic_fluent_communication_24_regular, i->toggleCheckableItem(remoteLoadingItem), true), + showBoostsItem=new CheckableListItem<>(R.string.sk_settings_show_boosts, 0, CheckableListItem.Style.SWITCH, lp.showBoosts, R.drawable.ic_fluent_arrow_repeat_all_24_regular, i->toggleCheckableItem(showBoostsItem)), + showRepliesItem=new CheckableListItem<>(R.string.sk_settings_show_replies, 0, CheckableListItem.Style.SWITCH, lp.showReplies, R.drawable.ic_fluent_arrow_reply_24_regular, i->toggleCheckableItem(showRepliesItem)) )); if(isInstanceAkkoma()) items.add( @@ -93,7 +93,7 @@ public class SettingsBehaviorFragment extends BaseSettingsFragment impleme @Override protected void doLoadData(int offset, int count){} - private void onDefaultLanguageClick(){ + private void onDefaultLanguageClick(ListItem item){ if (languageResolver == null) return; ComposeLanguageAlertViewController vc=new ComposeLanguageAlertViewController(getActivity(), null, new ComposeLanguageAlertViewController.SelectedOption(postLanguage), null, languageResolver); new M3AlertDialogBuilder(getActivity()) @@ -112,14 +112,14 @@ public class SettingsBehaviorFragment extends BaseSettingsFragment impleme .show(); } - private void onPrefixRepliesClick(){ + private void onPrefixRepliesClick(ListItem item){ int selected=GlobalUserPreferences.prefixReplies.ordinal(); int[] newSelected={selected}; new M3AlertDialogBuilder(getActivity()) .setTitle(R.string.sk_settings_prefix_reply_cw_with_re) .setSingleChoiceItems((String[]) IntStream.of(R.string.sk_settings_prefix_replies_never, R.string.sk_settings_prefix_replies_always, R.string.sk_settings_prefix_replies_to_others).mapToObj(this::getString).toArray(String[]::new), - selected, (dlg, item)->newSelected[0]=item) - .setPositiveButton(R.string.ok, (dlg, item)->{ + selected, (dlg, which)->newSelected[0]=which) + .setPositiveButton(R.string.ok, (dlg, which)->{ GlobalUserPreferences.prefixReplies=GlobalUserPreferences.PrefixRepliesMode.values()[newSelected[0]]; prefixRepliesItem.subtitleRes=getPrefixWithRepliesString(); rebindItem(prefixRepliesItem); @@ -128,7 +128,7 @@ public class SettingsBehaviorFragment extends BaseSettingsFragment impleme .show(); } - private void onReplyVisibilityClick(){ + private void onReplyVisibilityClick(ListItem item){ AccountLocalPreferences lp=getLocalPrefs(); int selected=lp.timelineReplyVisibility==null ? 2 : switch(lp.timelineReplyVisibility){ case "following" -> 0; @@ -139,8 +139,8 @@ public class SettingsBehaviorFragment extends BaseSettingsFragment impleme new M3AlertDialogBuilder(getActivity()) .setTitle(R.string.sk_settings_prefix_reply_cw_with_re) .setSingleChoiceItems((String[]) IntStream.of(R.string.sk_settings_reply_visibility_following, R.string.sk_settings_reply_visibility_self, R.string.sk_settings_reply_visibility_all).mapToObj(this::getString).toArray(String[]::new), - selected, (dlg, item)->newSelected[0]=item) - .setPositiveButton(R.string.ok, (dlg, item)->{ + selected, (dlg, which)->newSelected[0]=which) + .setPositiveButton(R.string.ok, (dlg, which)->{ lp.timelineReplyVisibility=switch(newSelected[0]){ case 0 -> "following"; case 1 -> "self"; diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsDebugFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsDebugFragment.java index 0b666705e..bc3b59496 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsDebugFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsDebugFragment.java @@ -39,7 +39,7 @@ public class SettingsDebugFragment extends BaseSettingsFragment{ @Override protected void doLoadData(int offset, int count){} - private void onTestEmailConfirmClick(){ + private void onTestEmailConfirmClick(ListItem item){ AccountSession sess=AccountSessionManager.getInstance().getAccount(accountID); sess.activated=false; sess.activationInfo=new AccountActivationInfo("test@email", System.currentTimeMillis()); @@ -49,18 +49,18 @@ public class SettingsDebugFragment extends BaseSettingsFragment{ Nav.goClearingStack(getActivity(), AccountActivationFragment.class, args); } - private void onForceSelfUpdateClick(){ + private void onForceSelfUpdateClick(ListItem item){ GithubSelfUpdater.forceUpdate=true; GithubSelfUpdater.getInstance().maybeCheckForUpdates(); restartUI(); } - private void onResetUpdaterClick(){ + private void onResetUpdaterClick(ListItem item){ GithubSelfUpdater.getInstance().reset(); restartUI(); } - private void onResetDiscoverBannersClick(){ + private void onResetDiscoverBannersClick(ListItem item){ DiscoverInfoBannerHelper.reset(); restartUI(); } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsDisplayFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsDisplayFragment.java index 4fa108fa6..b5bb429fc 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsDisplayFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsDisplayFragment.java @@ -56,29 +56,29 @@ public class SettingsDisplayFragment extends BaseSettingsFragment{ onDataLoaded(List.of( themeItem=new ListItem<>(R.string.settings_theme, getAppearanceValue(), R.drawable.ic_fluent_weather_moon_24_regular, this::onAppearanceClick), colorItem=new ListItem<>(getString(R.string.sk_settings_color_palette), getColorPaletteValue(), R.drawable.ic_fluent_color_24_regular, this::onColorClick), - trueBlackModeItem=new CheckableListItem<>(R.string.sk_settings_true_black, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.trueBlackTheme, R.drawable.ic_fluent_dark_theme_24_regular, this::onTrueBlackModeClick, true), + trueBlackModeItem=new CheckableListItem<>(R.string.sk_settings_true_black, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.trueBlackTheme, R.drawable.ic_fluent_dark_theme_24_regular, i->onTrueBlackModeClick(), true), publishTextItem=new ListItem<>(getString(R.string.sk_settings_publish_button_text), getPublishButtonText(), R.drawable.ic_fluent_send_24_regular, this::onPublishTextClick), autoRevealCWsItem=new ListItem<>(R.string.sk_settings_auto_reveal_equal_spoilers, getAutoRevealSpoilersText(), R.drawable.ic_fluent_eye_24_regular, this::onAutoRevealSpoilersClick), - revealCWsItem=new CheckableListItem<>(R.string.sk_settings_always_reveal_content_warnings, 0, CheckableListItem.Style.SWITCH, lp.revealCWs, R.drawable.ic_fluent_chat_warning_24_regular, ()->toggleCheckableItem(revealCWsItem)), - hideSensitiveMediaItem=new CheckableListItem<>(R.string.settings_hide_sensitive_media, 0, CheckableListItem.Style.SWITCH, lp.hideSensitiveMedia, R.drawable.ic_fluent_flag_24_regular, ()->toggleCheckableItem(hideSensitiveMediaItem)), - interactionCountsItem=new CheckableListItem<>(R.string.settings_show_interaction_counts, 0, CheckableListItem.Style.SWITCH, lp.showInteractionCounts, R.drawable.ic_fluent_number_row_24_regular, ()->toggleCheckableItem(interactionCountsItem)), - emojiInNamesItem=new CheckableListItem<>(R.string.settings_show_emoji_in_names, 0, CheckableListItem.Style.SWITCH, lp.customEmojiInNames, R.drawable.ic_fluent_emoji_24_regular, ()->toggleCheckableItem(emojiInNamesItem)), - marqueeItem=new CheckableListItem<>(R.string.sk_settings_enable_marquee, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.toolbarMarquee, R.drawable.ic_fluent_text_more_24_regular, ()->toggleCheckableItem(marqueeItem)), - reduceMotionItem=new CheckableListItem<>(R.string.sk_settings_reduce_motion, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.reduceMotion, R.drawable.ic_fluent_star_emphasis_24_regular, ()->toggleCheckableItem(reduceMotionItem)), - disableSwipeItem=new CheckableListItem<>(R.string.sk_settings_tabs_disable_swipe, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.disableSwipe, R.drawable.ic_fluent_swipe_right_24_regular, ()->toggleCheckableItem(disableSwipeItem)), - altIndicatorItem=new CheckableListItem<>(R.string.sk_settings_show_alt_indicator, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.showAltIndicator, R.drawable.ic_fluent_scan_text_24_regular, ()->toggleCheckableItem(altIndicatorItem)), - noAltIndicatorItem=new CheckableListItem<>(R.string.sk_settings_show_no_alt_indicator, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.showNoAltIndicator, R.drawable.ic_fluent_important_24_regular, ()->toggleCheckableItem(noAltIndicatorItem)), - collapsePostsItem=new CheckableListItem<>(R.string.sk_settings_collapse_long_posts, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.collapseLongPosts, R.drawable.ic_fluent_chevron_down_24_regular, ()->toggleCheckableItem(collapsePostsItem)), - spectatorModeItem=new CheckableListItem<>(R.string.sk_settings_hide_interaction, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.spectatorMode, R.drawable.ic_fluent_star_off_24_regular, ()->toggleCheckableItem(spectatorModeItem)), - hideFabItem=new CheckableListItem<>(R.string.sk_settings_hide_fab, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.autoHideFab, R.drawable.ic_fluent_edit_24_regular, ()->toggleCheckableItem(hideFabItem)), - translateOpenedItem=new CheckableListItem<>(R.string.sk_settings_translate_only_opened, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.translateButtonOpenedOnly, R.drawable.ic_fluent_translate_24_regular, ()->toggleCheckableItem(translateOpenedItem)), - likeIconItem=new CheckableListItem<>(R.string.sk_settings_like_icon, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.likeIcon, R.drawable.ic_fluent_heart_24_regular, ()->toggleCheckableItem(likeIconItem)), - underlinedLinksItem=new CheckableListItem<>(R.string.sk_settings_underlined_links, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.underlinedLinks, R.drawable.ic_fluent_text_underline_24_regular, ()->toggleCheckableItem(underlinedLinksItem)), - disablePillItem=new CheckableListItem<>(R.string.sk_disable_pill_shaped_active_indicator, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.disableM3PillActiveIndicator, R.drawable.ic_fluent_pill_24_regular, ()->toggleCheckableItem(disablePillItem)), - showNavigationLabelsItem=new CheckableListItem<>(R.string.sk_settings_show_labels_in_navigation_bar, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.showNavigationLabels, R.drawable.ic_fluent_tag_24_regular, ()->toggleCheckableItem(showNavigationLabelsItem), true), - pronounsInTimelinesItem=new CheckableListItem<>(R.string.sk_settings_display_pronouns_in_timelines, 0, CheckableListItem.Style.CHECKBOX, GlobalUserPreferences.displayPronounsInTimelines, 0, ()->toggleCheckableItem(pronounsInTimelinesItem)), - pronounsInThreadsItem=new CheckableListItem<>(R.string.sk_settings_display_pronouns_in_threads, 0, CheckableListItem.Style.CHECKBOX, GlobalUserPreferences.displayPronounsInThreads, 0, ()->toggleCheckableItem(pronounsInThreadsItem)), - pronounsInUserListingsItem=new CheckableListItem<>(R.string.sk_settings_display_pronouns_in_user_listings, 0, CheckableListItem.Style.CHECKBOX, GlobalUserPreferences.displayPronounsInUserListings, 0, ()->toggleCheckableItem(pronounsInUserListingsItem)) + revealCWsItem=new CheckableListItem<>(R.string.sk_settings_always_reveal_content_warnings, 0, CheckableListItem.Style.SWITCH, lp.revealCWs, R.drawable.ic_fluent_chat_warning_24_regular, i->toggleCheckableItem(revealCWsItem)), + hideSensitiveMediaItem=new CheckableListItem<>(R.string.settings_hide_sensitive_media, 0, CheckableListItem.Style.SWITCH, lp.hideSensitiveMedia, R.drawable.ic_fluent_flag_24_regular, i->toggleCheckableItem(hideSensitiveMediaItem)), + interactionCountsItem=new CheckableListItem<>(R.string.settings_show_interaction_counts, 0, CheckableListItem.Style.SWITCH, lp.showInteractionCounts, R.drawable.ic_fluent_number_row_24_regular, i->toggleCheckableItem(interactionCountsItem)), + emojiInNamesItem=new CheckableListItem<>(R.string.settings_show_emoji_in_names, 0, CheckableListItem.Style.SWITCH, lp.customEmojiInNames, R.drawable.ic_fluent_emoji_24_regular, i->toggleCheckableItem(emojiInNamesItem)), + marqueeItem=new CheckableListItem<>(R.string.sk_settings_enable_marquee, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.toolbarMarquee, R.drawable.ic_fluent_text_more_24_regular, i->toggleCheckableItem(marqueeItem)), + reduceMotionItem=new CheckableListItem<>(R.string.sk_settings_reduce_motion, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.reduceMotion, R.drawable.ic_fluent_star_emphasis_24_regular, i->toggleCheckableItem(reduceMotionItem)), + disableSwipeItem=new CheckableListItem<>(R.string.sk_settings_tabs_disable_swipe, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.disableSwipe, R.drawable.ic_fluent_swipe_right_24_regular, i->toggleCheckableItem(disableSwipeItem)), + altIndicatorItem=new CheckableListItem<>(R.string.sk_settings_show_alt_indicator, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.showAltIndicator, R.drawable.ic_fluent_scan_text_24_regular, i->toggleCheckableItem(altIndicatorItem)), + noAltIndicatorItem=new CheckableListItem<>(R.string.sk_settings_show_no_alt_indicator, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.showNoAltIndicator, R.drawable.ic_fluent_important_24_regular, i->toggleCheckableItem(noAltIndicatorItem)), + collapsePostsItem=new CheckableListItem<>(R.string.sk_settings_collapse_long_posts, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.collapseLongPosts, R.drawable.ic_fluent_chevron_down_24_regular, i->toggleCheckableItem(collapsePostsItem)), + spectatorModeItem=new CheckableListItem<>(R.string.sk_settings_hide_interaction, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.spectatorMode, R.drawable.ic_fluent_star_off_24_regular, i->toggleCheckableItem(spectatorModeItem)), + hideFabItem=new CheckableListItem<>(R.string.sk_settings_hide_fab, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.autoHideFab, R.drawable.ic_fluent_edit_24_regular, i->toggleCheckableItem(hideFabItem)), + translateOpenedItem=new CheckableListItem<>(R.string.sk_settings_translate_only_opened, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.translateButtonOpenedOnly, R.drawable.ic_fluent_translate_24_regular, i->toggleCheckableItem(translateOpenedItem)), + likeIconItem=new CheckableListItem<>(R.string.sk_settings_like_icon, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.likeIcon, R.drawable.ic_fluent_heart_24_regular, i->toggleCheckableItem(likeIconItem)), + underlinedLinksItem=new CheckableListItem<>(R.string.sk_settings_underlined_links, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.underlinedLinks, R.drawable.ic_fluent_text_underline_24_regular, i->toggleCheckableItem(underlinedLinksItem)), + disablePillItem=new CheckableListItem<>(R.string.sk_disable_pill_shaped_active_indicator, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.disableM3PillActiveIndicator, R.drawable.ic_fluent_pill_24_regular, i->toggleCheckableItem(disablePillItem)), + showNavigationLabelsItem=new CheckableListItem<>(R.string.sk_settings_show_labels_in_navigation_bar, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.showNavigationLabels, R.drawable.ic_fluent_tag_24_regular, i->toggleCheckableItem(showNavigationLabelsItem), true), + pronounsInTimelinesItem=new CheckableListItem<>(R.string.sk_settings_display_pronouns_in_timelines, 0, CheckableListItem.Style.CHECKBOX, GlobalUserPreferences.displayPronounsInTimelines, 0, i->toggleCheckableItem(pronounsInTimelinesItem)), + pronounsInThreadsItem=new CheckableListItem<>(R.string.sk_settings_display_pronouns_in_threads, 0, CheckableListItem.Style.CHECKBOX, GlobalUserPreferences.displayPronounsInThreads, 0, i->toggleCheckableItem(pronounsInThreadsItem)), + pronounsInUserListingsItem=new CheckableListItem<>(R.string.sk_settings_display_pronouns_in_user_listings, 0, CheckableListItem.Style.CHECKBOX, GlobalUserPreferences.displayPronounsInUserListings, 0, i->toggleCheckableItem(pronounsInUserListingsItem)) )); trueBlackModeItem.checkedChangeListener=checked->onTrueBlackModeClick(); } @@ -166,7 +166,7 @@ public class SettingsDisplayFragment extends BaseSettingsFragment{ maybeApplyNewThemeRightNow(null, null, prev); } - private void onAppearanceClick(){ + private void onAppearanceClick(ListItem item_){ int selected=switch(GlobalUserPreferences.theme){ case LIGHT -> 0; case DARK -> 1; @@ -197,7 +197,7 @@ public class SettingsDisplayFragment extends BaseSettingsFragment{ .show(); } - private void onColorClick(){ + private void onColorClick(ListItem item_){ boolean multiple=AccountSessionManager.getInstance().getLoggedInAccounts().size() > 1; int indexOffset=multiple ? 1 : 0; int selected=lp.color==null ? 0 : lp.color.ordinal() + indexOffset; @@ -234,7 +234,7 @@ public class SettingsDisplayFragment extends BaseSettingsFragment{ alert.show(); } - private void onPublishTextClick(){ + private void onPublishTextClick(ListItem item_){ TextInputFrameLayout input = new TextInputFrameLayout( getContext(), getString(R.string.publish), @@ -257,7 +257,7 @@ public class SettingsDisplayFragment extends BaseSettingsFragment{ .show(); } - private void onAutoRevealSpoilersClick(){ + private void onAutoRevealSpoilersClick(ListItem item_){ int selected=GlobalUserPreferences.autoRevealEqualSpoilers.ordinal(); int[] newSelected={selected}; new M3AlertDialogBuilder(getActivity()) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsFiltersFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsFiltersFragment.java index 2a6399e98..b2a40c953 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsFiltersFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsFiltersFragment.java @@ -67,16 +67,14 @@ public class SettingsFiltersFragment extends BaseSettingsFragment{ Nav.go(getActivity(), EditFilterFragment.class, args); } - private void onAddFilterClick(){ + private void onAddFilterClick(ListItem item){ Bundle args=new Bundle(); args.putString("account", accountID); Nav.go(getActivity(), EditFilterFragment.class, args); } private ListItem makeListItem(Filter f){ - ListItem item=new ListItem<>(f.title, getString(f.isActive() ? R.string.filter_active : R.string.filter_inactive), null, f); - item.onClick=()->onFilterClick(item); - item.isEnabled=true; + ListItem item=new ListItem<>(f.title, getString(f.isActive() ? R.string.filter_active : R.string.filter_inactive), this::onFilterClick, f); return item; } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsInstanceFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsInstanceFragment.java index 93542823e..e86df44f4 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsInstanceFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsInstanceFragment.java @@ -36,15 +36,15 @@ public class SettingsInstanceFragment extends BaseSettingsFragment impleme lp=s.getLocalPreferences(); onDataLoaded(List.of( new ListItem<>(AccountSessionManager.get(accountID).domain, getString(R.string.settings_server_explanation), R.drawable.ic_fluent_server_24_regular, this::onServerClick), - new ListItem<>(R.string.sk_settings_profile, 0, R.drawable.ic_fluent_open_24_regular, ()->UiUtils.launchWebBrowser(getActivity(), "https://"+s.domain+"/settings/profile")), - new ListItem<>(R.string.sk_settings_posting, 0, R.drawable.ic_fluent_open_24_regular, ()->UiUtils.launchWebBrowser(getActivity(), "https://"+s.domain+"/settings/preferences/other")), - new ListItem<>(R.string.sk_settings_auth, 0, R.drawable.ic_fluent_open_24_regular, ()->UiUtils.launchWebBrowser(getActivity(), "https://"+s.domain+"/auth/edit"), 0, true), - contentTypesItem=new CheckableListItem<>(R.string.sk_settings_content_types, R.string.sk_settings_content_types_explanation, CheckableListItem.Style.SWITCH, lp.contentTypesEnabled, R.drawable.ic_fluent_text_edit_style_24_regular, this::onContentTypeClick), + new ListItem<>(R.string.sk_settings_profile, 0, R.drawable.ic_fluent_open_24_regular, i->UiUtils.launchWebBrowser(getActivity(), "https://"+s.domain+"/settings/profile")), + new ListItem<>(R.string.sk_settings_posting, 0, R.drawable.ic_fluent_open_24_regular, i->UiUtils.launchWebBrowser(getActivity(), "https://"+s.domain+"/settings/preferences/other")), + new ListItem<>(R.string.sk_settings_auth, 0, R.drawable.ic_fluent_open_24_regular, i->UiUtils.launchWebBrowser(getActivity(), "https://"+s.domain+"/auth/edit"), 0, true), + contentTypesItem=new CheckableListItem<>(R.string.sk_settings_content_types, R.string.sk_settings_content_types_explanation, CheckableListItem.Style.SWITCH, lp.contentTypesEnabled, R.drawable.ic_fluent_text_edit_style_24_regular, i->onContentTypeClick()), defaultContentTypeItem=new ListItem<>(R.string.sk_settings_default_content_type, lp.defaultContentType.getName(), R.drawable.ic_fluent_text_bold_24_regular, this::onDefaultContentTypeClick, 0, true), - emojiReactionsItem=new CheckableListItem<>(R.string.sk_settings_emoji_reactions, R.string.sk_settings_emoji_reactions_explanation, CheckableListItem.Style.SWITCH, lp.emojiReactionsEnabled, R.drawable.ic_fluent_emoji_laugh_24_regular, this::onEmojiReactionsClick), + emojiReactionsItem=new CheckableListItem<>(R.string.sk_settings_emoji_reactions, R.string.sk_settings_emoji_reactions_explanation, CheckableListItem.Style.SWITCH, lp.emojiReactionsEnabled, R.drawable.ic_fluent_emoji_laugh_24_regular, i->onEmojiReactionsClick()), showEmojiReactionsItem=new ListItem<>(R.string.sk_settings_show_emoji_reactions, getShowEmojiReactionsString(), R.drawable.ic_fluent_emoji_24_regular, this::onShowEmojiReactionsClick, 0, true), - localOnlyItem=new CheckableListItem<>(R.string.sk_settings_support_local_only, R.string.sk_settings_local_only_explanation, CheckableListItem.Style.SWITCH, lp.localOnlySupported, R.drawable.ic_fluent_eye_24_regular, this::onLocalOnlyClick), - glitchModeItem=new CheckableListItem<>(R.string.sk_settings_glitch_instance, R.string.sk_settings_glitch_mode_explanation, CheckableListItem.Style.SWITCH, lp.glitchInstance, R.drawable.ic_fluent_eye_24_filled, ()->toggleCheckableItem(glitchModeItem)) + localOnlyItem=new CheckableListItem<>(R.string.sk_settings_support_local_only, R.string.sk_settings_local_only_explanation, CheckableListItem.Style.SWITCH, lp.localOnlySupported, R.drawable.ic_fluent_eye_24_regular, i->onLocalOnlyClick()), + glitchModeItem=new CheckableListItem<>(R.string.sk_settings_glitch_instance, R.string.sk_settings_glitch_mode_explanation, CheckableListItem.Style.SWITCH, lp.glitchInstance, R.drawable.ic_fluent_eye_24_filled, i->toggleCheckableItem(glitchModeItem)) )); contentTypesItem.checkedChangeListener=checked->onContentTypeClick(); defaultContentTypeItem.isEnabled=contentTypesItem.checked; @@ -68,7 +68,7 @@ public class SettingsInstanceFragment extends BaseSettingsFragment impleme E.post(new StatusDisplaySettingsChangedEvent(accountID)); } - private void onServerClick(){ + private void onServerClick(ListItem item){ Bundle args=new Bundle(); args.putString("account", accountID); Nav.go(getActivity(), SettingsServerFragment.class, args); @@ -87,7 +87,7 @@ public class SettingsInstanceFragment extends BaseSettingsFragment impleme defaultContentTypeItem.subtitleRes=lp.defaultContentType.getName(); } - private void onDefaultContentTypeClick(){ + private void onDefaultContentTypeClick(ListItem item_){ int selected=lp.defaultContentType.ordinal(); int[] newSelected={selected}; ContentType[] supportedContentTypes=Arrays.stream(ContentType.values()) @@ -112,7 +112,7 @@ public class SettingsInstanceFragment extends BaseSettingsFragment impleme .show(); } - private void onShowEmojiReactionsClick(){ + private void onShowEmojiReactionsClick(ListItem item_){ int selected=lp.showEmojiReactions.ordinal(); int[] newSelected={selected}; new M3AlertDialogBuilder(getActivity()) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsMainFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsMainFragment.java index 673df6340..a83a56672 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsMainFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsMainFragment.java @@ -18,6 +18,7 @@ import org.joinmastodon.android.api.session.AccountSessionManager; import org.joinmastodon.android.events.SelfUpdateStateChangedEvent; import org.joinmastodon.android.model.Instance; import org.joinmastodon.android.model.viewmodel.ListItem; +import org.joinmastodon.android.ui.AccountSwitcherSheet; import org.joinmastodon.android.ui.M3AlertDialogBuilder; import org.joinmastodon.android.ui.utils.HideableSingleViewRecyclerAdapter; import org.joinmastodon.android.ui.utils.UiUtils; @@ -59,6 +60,7 @@ public class SettingsMainFragment extends BaseSettingsFragment{ new ListItem<>(R.string.settings_notifications, 0, R.drawable.ic_fluent_alert_24_regular, this::onNotificationsClick), new ListItem<>(R.string.sk_settings_instance, 0, R.drawable.ic_fluent_server_24_regular, this::onInstanceClick), new ListItem<>(getString(R.string.about_app, getString(R.string.sk_app_name)), null, R.drawable.ic_fluent_info_24_regular, this::onAboutClick, null, 0, true), + new ListItem<>(R.string.manage_accounts, 0, R.drawable.ic_fluent_person_swap_24_regular, this::onManageAccountsClick), new ListItem<>(R.string.log_out, 0, R.drawable.ic_fluent_sign_out_24_regular, this::onLogOutClick, R.attr.colorM3Error, false) )); @@ -67,7 +69,7 @@ public class SettingsMainFragment extends BaseSettingsFragment{ data.add(3, new ListItem<>(R.string.settings_filters, 0, R.drawable.ic_fluent_filter_24_regular, this::onFiltersClick)); if(BuildConfig.DEBUG || BuildConfig.BUILD_TYPE.equals("appcenterPrivateBeta")){ - data.add(0, new ListItem<>("Debug settings", null, R.drawable.ic_fluent_wrench_screwdriver_24_regular, ()->Nav.go(getActivity(), SettingsDebugFragment.class, makeFragmentArgs()), null, 0, true)); + data.add(0, new ListItem<>("Debug settings", null, R.drawable.ic_fluent_wrench_screwdriver_24_regular, i->Nav.go(getActivity(), SettingsDebugFragment.class, makeFragmentArgs()), null, 0, true)); } AccountSession session=AccountSessionManager.get(accountID); @@ -128,35 +130,39 @@ public class SettingsMainFragment extends BaseSettingsFragment{ return args; } - private void onBehaviorClick(){ + private void onBehaviorClick(ListItem item_){ Nav.go(getActivity(), SettingsBehaviorFragment.class, makeFragmentArgs()); } - private void onDisplayClick(){ + private void onDisplayClick(ListItem item_){ Nav.go(getActivity(), SettingsDisplayFragment.class, makeFragmentArgs()); } - private void onPrivacyClick(){ + private void onPrivacyClick(ListItem item_){ Nav.go(getActivity(), SettingsPrivacyFragment.class, makeFragmentArgs()); } - private void onFiltersClick(){ + private void onFiltersClick(ListItem item_){ Nav.go(getActivity(), SettingsFiltersFragment.class, makeFragmentArgs()); } - private void onNotificationsClick(){ + private void onNotificationsClick(ListItem item_){ Nav.go(getActivity(), SettingsNotificationsFragment.class, makeFragmentArgs()); } - private void onInstanceClick(){ + private void onInstanceClick(ListItem item_){ Nav.go(getActivity(), SettingsInstanceFragment.class, makeFragmentArgs()); } - private void onAboutClick(){ + private void onAboutClick(ListItem item_){ Nav.go(getActivity(), SettingsAboutAppFragment.class, makeFragmentArgs()); } - private void onLogOutClick(){ + private void onManageAccountsClick(ListItem item){ + new AccountSwitcherSheet(getActivity(), null).show(); + } + + private void onLogOutClick(ListItem item_){ AccountSession session=AccountSessionManager.getInstance().getAccount(accountID); new M3AlertDialogBuilder(getActivity()) .setMessage(getString(R.string.confirm_log_out, session.getFullUsername())) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsNotificationsFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsNotificationsFragment.java index 5192b9fc1..2b240629b 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsNotificationsFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsNotificationsFragment.java @@ -27,7 +27,6 @@ import org.joinmastodon.android.model.viewmodel.ListItem; import org.joinmastodon.android.ui.M3AlertDialogBuilder; import org.joinmastodon.android.ui.utils.HideableSingleViewRecyclerAdapter; import org.joinmastodon.android.ui.utils.UiUtils; -import org.unifiedpush.android.connector.RegistrationDialogContent; import org.unifiedpush.android.connector.UnifiedPush; import java.time.Instant; @@ -73,21 +72,21 @@ public class SettingsNotificationsFragment extends BaseSettingsFragment{ useUnifiedPush=!getDistributor(getContext()).isEmpty(); onDataLoaded(List.of( - pauseItem=new CheckableListItem<>(getString(R.string.pause_all_notifications), getPauseItemSubtitle(), CheckableListItem.Style.SWITCH, false, R.drawable.ic_fluent_alert_snooze_24_regular, ()->onPauseNotificationsClick(false)), + pauseItem=new CheckableListItem<>(getString(R.string.pause_all_notifications), getPauseItemSubtitle(), CheckableListItem.Style.SWITCH, false, R.drawable.ic_fluent_alert_snooze_24_regular, i->onPauseNotificationsClick(false)), policyItem=new ListItem<>(R.string.settings_notifications_policy, 0, R.drawable.ic_fluent_people_24_regular, this::onNotificationsPolicyClick, 0, true), - mentionsItem=new CheckableListItem<>(R.string.notification_type_mentions_and_replies, 0, CheckableListItem.Style.CHECKBOX, pushSubscription.alerts.mention, R.drawable.ic_fluent_mention_24_regular, ()->toggleCheckableItem(mentionsItem)), - boostsItem=new CheckableListItem<>(R.string.notification_type_reblog, 0, CheckableListItem.Style.CHECKBOX, pushSubscription.alerts.reblog, R.drawable.ic_fluent_arrow_repeat_all_24_regular, ()->toggleCheckableItem(boostsItem)), - favoritesItem=new CheckableListItem<>(R.string.notification_type_favorite, 0, CheckableListItem.Style.CHECKBOX, pushSubscription.alerts.favourite, R.drawable.ic_fluent_star_24_regular, ()->toggleCheckableItem(favoritesItem)), - followersItem=new CheckableListItem<>(R.string.notification_type_follow, 0, CheckableListItem.Style.CHECKBOX, pushSubscription.alerts.follow, R.drawable.ic_fluent_person_add_24_regular, ()->toggleCheckableItem(followersItem)), - pollsItem=new CheckableListItem<>(R.string.notification_type_poll, 0, CheckableListItem.Style.CHECKBOX, pushSubscription.alerts.poll, R.drawable.ic_fluent_poll_24_regular, ()->toggleCheckableItem(pollsItem)), - updateItem=new CheckableListItem<>(R.string.sk_notification_type_update, 0, CheckableListItem.Style.CHECKBOX, pushSubscription.alerts.update, R.drawable.ic_fluent_history_24_regular, ()->toggleCheckableItem(updateItem)), - postsItem=new CheckableListItem<>(R.string.sk_notification_type_posts, 0, CheckableListItem.Style.CHECKBOX, pushSubscription.alerts.status, R.drawable.ic_fluent_chat_24_regular, ()->toggleCheckableItem(postsItem), true), + mentionsItem=new CheckableListItem<>(R.string.notification_type_mentions_and_replies, 0, CheckableListItem.Style.CHECKBOX, pushSubscription.alerts.mention, R.drawable.ic_fluent_mention_24_regular, i->toggleCheckableItem(mentionsItem)), + boostsItem=new CheckableListItem<>(R.string.notification_type_reblog, 0, CheckableListItem.Style.CHECKBOX, pushSubscription.alerts.reblog, R.drawable.ic_fluent_arrow_repeat_all_24_regular, i->toggleCheckableItem(boostsItem)), + favoritesItem=new CheckableListItem<>(R.string.notification_type_favorite, 0, CheckableListItem.Style.CHECKBOX, pushSubscription.alerts.favourite, R.drawable.ic_fluent_star_24_regular, i->toggleCheckableItem(favoritesItem)), + followersItem=new CheckableListItem<>(R.string.notification_type_follow, 0, CheckableListItem.Style.CHECKBOX, pushSubscription.alerts.follow, R.drawable.ic_fluent_person_add_24_regular, i->toggleCheckableItem(followersItem)), + pollsItem=new CheckableListItem<>(R.string.notification_type_poll, 0, CheckableListItem.Style.CHECKBOX, pushSubscription.alerts.poll, R.drawable.ic_fluent_poll_24_regular, i->toggleCheckableItem(pollsItem)), + updateItem=new CheckableListItem<>(R.string.sk_notification_type_update, 0, CheckableListItem.Style.CHECKBOX, pushSubscription.alerts.update, R.drawable.ic_fluent_history_24_regular, i->toggleCheckableItem(updateItem)), + postsItem=new CheckableListItem<>(R.string.sk_notification_type_posts, 0, CheckableListItem.Style.CHECKBOX, pushSubscription.alerts.status, R.drawable.ic_fluent_chat_24_regular, i->toggleCheckableItem(postsItem), true), - uniformIconItem=new CheckableListItem<>(R.string.sk_settings_uniform_icon_for_notifications, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.uniformNotificationIcon, R.drawable.ic_ntf_logo, ()->toggleCheckableItem(uniformIconItem)), - deleteItem=new CheckableListItem<>(R.string.sk_settings_enable_delete_notifications, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.enableDeleteNotifications, R.drawable.ic_fluent_mail_inbox_dismiss_24_regular, ()->toggleCheckableItem(deleteItem)), - onlyLatestItem=new CheckableListItem<>(R.string.sk_settings_single_notification, 0, CheckableListItem.Style.SWITCH, lp.keepOnlyLatestNotification, R.drawable.ic_fluent_convert_range_24_regular, ()->toggleCheckableItem(onlyLatestItem), true), - unifiedPushItem=new CheckableListItem<>(R.string.sk_settings_unifiedpush, 0, CheckableListItem.Style.SWITCH, useUnifiedPush, R.drawable.ic_fluent_alert_arrow_up_24_regular, this::onUnifiedPush, true) + uniformIconItem=new CheckableListItem<>(R.string.sk_settings_uniform_icon_for_notifications, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.uniformNotificationIcon, R.drawable.ic_ntf_logo, i->toggleCheckableItem(uniformIconItem)), + deleteItem=new CheckableListItem<>(R.string.sk_settings_enable_delete_notifications, 0, CheckableListItem.Style.SWITCH, GlobalUserPreferences.enableDeleteNotifications, R.drawable.ic_fluent_mail_inbox_dismiss_24_regular, i->toggleCheckableItem(deleteItem)), + onlyLatestItem=new CheckableListItem<>(R.string.sk_settings_single_notification, 0, CheckableListItem.Style.SWITCH, lp.keepOnlyLatestNotification, R.drawable.ic_fluent_convert_range_24_regular, i->toggleCheckableItem(onlyLatestItem), true), + unifiedPushItem=new CheckableListItem<>(R.string.sk_settings_unifiedpush, 0, CheckableListItem.Style.SWITCH, useUnifiedPush, R.drawable.ic_fluent_alert_arrow_up_24_regular, i->onUnifiedPushClick(), true) )); //only enable when distributors, who can receive notifications, are available @@ -98,7 +97,7 @@ public class SettingsNotificationsFragment extends BaseSettingsFragment{ typeItems=List.of(mentionsItem, boostsItem, favoritesItem, followersItem, pollsItem, updateItem, postsItem); pauseItem.checkedChangeListener=checked->onPauseNotificationsClick(true); - unifiedPushItem.checkedChangeListener=checked->onUnifiedPush(); + unifiedPushItem.checkedChangeListener=checked->onUnifiedPushClick(); updatePolicyItem(null); updatePauseItem(); } @@ -254,7 +253,7 @@ public class SettingsNotificationsFragment extends BaseSettingsFragment{ alert.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); } - private void onNotificationsPolicyClick(){ + private void onNotificationsPolicyClick(ListItem item_){ String[] items=Stream.of( R.string.notifications_policy_anyone, R.string.notifications_policy_followed, @@ -328,7 +327,7 @@ public class SettingsNotificationsFragment extends BaseSettingsFragment{ } } - private void onUnifiedPush(){ + private void onUnifiedPushClick(){ if(getDistributor(getContext()).isEmpty()){ List distributors = UnifiedPush.getDistributors(getContext(), new ArrayList<>()); showUnifiedPushRegisterDialog(distributors); diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsPrivacyFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsPrivacyFragment.java index 2a54013d0..a1df2984f 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsPrivacyFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsPrivacyFragment.java @@ -18,8 +18,8 @@ public class SettingsPrivacyFragment extends BaseSettingsFragment{ setTitle(R.string.settings_privacy); Account self=AccountSessionManager.get(accountID).self; onDataLoaded(List.of( - discoverableItem=new CheckableListItem<>(R.string.settings_discoverable, 0, CheckableListItem.Style.SWITCH, self.discoverable, R.drawable.ic_fluent_thumb_like_dislike_24_regular, ()->toggleCheckableItem(discoverableItem)), - indexableItem=new CheckableListItem<>(R.string.settings_indexable, 0, CheckableListItem.Style.SWITCH, self.source.indexable!=null ? self.source.indexable : true, R.drawable.ic_fluent_search_24_regular, ()->toggleCheckableItem(indexableItem)) + discoverableItem=new CheckableListItem<>(R.string.settings_discoverable, 0, CheckableListItem.Style.SWITCH, self.discoverable, R.drawable.ic_fluent_thumb_like_dislike_24_regular, i->toggleCheckableItem(discoverableItem)), + indexableItem=new CheckableListItem<>(R.string.settings_indexable, 0, CheckableListItem.Style.SWITCH, self.source.indexable!=null ? self.source.indexable : true, R.drawable.ic_fluent_search_24_regular, i->toggleCheckableItem(indexableItem)) )); if(self.source.indexable==null) indexableItem.isEnabled=false; diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsServerAboutFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsServerAboutFragment.java index 7f588b991..a655368e1 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsServerAboutFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsServerAboutFragment.java @@ -145,7 +145,7 @@ public class SettingsServerAboutFragment extends LoaderFragment{ if(!TextUtils.isEmpty(instance.email)){ needDivider=true; SimpleListItemViewHolder holder=new SimpleListItemViewHolder(getActivity(), scrollingLayout); - ListItem item=new ListItem<>(R.string.send_email_to_server_admin, 0, R.drawable.ic_fluent_mail_24_regular, ()->{}); + ListItem item=new ListItem<>(R.string.send_email_to_server_admin, 0, R.drawable.ic_fluent_mail_24_regular, i->{}); holder.bind(item); holder.itemView.setBackground(UiUtils.getThemeDrawable(getActivity(), android.R.attr.selectableItemBackground)); holder.itemView.setOnClickListener(v->openAdminEmail()); diff --git a/mastodon/src/main/java/org/joinmastodon/android/model/viewmodel/CheckableListItem.java b/mastodon/src/main/java/org/joinmastodon/android/model/viewmodel/CheckableListItem.java index cff521a9b..0363f81f5 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/model/viewmodel/CheckableListItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/model/viewmodel/CheckableListItem.java @@ -9,42 +9,42 @@ public class CheckableListItem extends ListItem{ public boolean checked; public Consumer checkedChangeListener; - public CheckableListItem(String title, String subtitle, Style style, boolean checked, int iconRes, Runnable onClick, T parentObject, boolean dividerAfter){ - super(title, subtitle, iconRes, onClick, parentObject, 0, dividerAfter); + public CheckableListItem(String title, String subtitle, Style style, boolean checked, int iconRes, Consumer> onClick, T parentObject, boolean dividerAfter){ + super(title, subtitle, iconRes, (Consumer>)(Object)onClick, parentObject, 0, dividerAfter); this.style=style; this.checked=checked; } - public CheckableListItem(String title, String subtitle, Style style, boolean checked, Runnable onClick){ + public CheckableListItem(String title, String subtitle, Style style, boolean checked, Consumer> onClick){ this(title, subtitle, style, checked, 0, onClick, null, false); } - public CheckableListItem(String title, String subtitle, Style style, boolean checked, Runnable onClick, T parentObject){ + public CheckableListItem(String title, String subtitle, Style style, boolean checked, Consumer> onClick, T parentObject){ this(title, subtitle, style, checked, 0, onClick, parentObject, false); } - public CheckableListItem(String title, String subtitle, Style style, boolean checked, int iconRes, Runnable onClick){ + public CheckableListItem(String title, String subtitle, Style style, boolean checked, int iconRes, Consumer> onClick){ this(title, subtitle, style, checked, iconRes, onClick, null, false); } - public CheckableListItem(String title, String subtitle, Style style, boolean checked, int iconRes, Runnable onClick, T parentObject){ + public CheckableListItem(String title, String subtitle, Style style, boolean checked, int iconRes, Consumer> onClick, T parentObject){ this(title, subtitle, style, checked, iconRes, onClick, parentObject, false); } - public CheckableListItem(int titleRes, int subtitleRes, Style style, boolean checked, Runnable onClick){ + public CheckableListItem(int titleRes, int subtitleRes, Style style, boolean checked, Consumer> onClick){ this(titleRes, subtitleRes, style, checked, 0, onClick, false); } - public CheckableListItem(int titleRes, int subtitleRes, Style style, boolean checked, Runnable onClick, boolean dividerAfter){ + public CheckableListItem(int titleRes, int subtitleRes, Style style, boolean checked, Consumer> onClick, boolean dividerAfter){ this(titleRes, subtitleRes, style, checked, 0, onClick, dividerAfter); } - public CheckableListItem(int titleRes, int subtitleRes, Style style, boolean checked, int iconRes, Runnable onClick){ + public CheckableListItem(int titleRes, int subtitleRes, Style style, boolean checked, int iconRes, Consumer> onClick){ this(titleRes, subtitleRes, style, checked, iconRes, onClick, false); } - public CheckableListItem(int titleRes, int subtitleRes, Style style, boolean checked, int iconRes, Runnable onClick, boolean dividerAfter){ - super(titleRes, subtitleRes, iconRes, onClick, 0, dividerAfter); + public CheckableListItem(int titleRes, int subtitleRes, Style style, boolean checked, int iconRes, Consumer> onClick, boolean dividerAfter){ + super(titleRes, subtitleRes, iconRes, (Consumer>)(Object)onClick, 0, dividerAfter); this.style=style; this.checked=checked; } diff --git a/mastodon/src/main/java/org/joinmastodon/android/model/viewmodel/ListItem.java b/mastodon/src/main/java/org/joinmastodon/android/model/viewmodel/ListItem.java index e00ae0636..978543145 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/model/viewmodel/ListItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/model/viewmodel/ListItem.java @@ -2,6 +2,8 @@ package org.joinmastodon.android.model.viewmodel; import org.joinmastodon.android.R; +import java.util.function.Consumer; + import androidx.annotation.DrawableRes; import androidx.annotation.StringRes; @@ -16,11 +18,11 @@ public class ListItem{ public int iconRes; public int colorOverrideAttr; public boolean dividerAfter; - public Runnable onClick; + private Consumer> onClick; public boolean isEnabled=true; public T parentObject; - public ListItem(String title, String subtitle, int iconRes, Runnable onClick, T parentObject, int colorOverrideAttr, boolean dividerAfter){ + public ListItem(String title, String subtitle, int iconRes, Consumer> onClick, T parentObject, int colorOverrideAttr, boolean dividerAfter){ this.title=title; this.subtitle=subtitle; this.iconRes=iconRes; @@ -32,45 +34,41 @@ public class ListItem{ isEnabled=false; } - public ListItem(String title, String subtitle, Runnable onClick){ + public ListItem(String title, String subtitle, Consumer> onClick){ this(title, subtitle, 0, onClick, null, 0, false); } - public ListItem(String title, String subtitle, Runnable onClick, T parentObject){ + public ListItem(String title, String subtitle, Consumer> onClick, T parentObject){ this(title, subtitle, 0, onClick, parentObject, 0, false); } - public ListItem(String title, String subtitle, @DrawableRes int iconRes, Runnable onClick){ + public ListItem(String title, String subtitle, @DrawableRes int iconRes, Consumer> onClick){ this(title, subtitle, iconRes, onClick, null, 0, false); } - public ListItem(String title, String subtitle, @DrawableRes int iconRes, Runnable onClick, boolean dividerAfter){ - this(title, subtitle, iconRes, onClick, null, 0, dividerAfter); - } - - public ListItem(String title, String subtitle, @DrawableRes int iconRes, Runnable onClick, T parentObject){ + public ListItem(String title, String subtitle, @DrawableRes int iconRes, Consumer> onClick, T parentObject){ this(title, subtitle, iconRes, onClick, parentObject, 0, false); } - public ListItem(@StringRes int titleRes, @StringRes int subtitleRes, Runnable onClick){ + public ListItem(@StringRes int titleRes, @StringRes int subtitleRes, Consumer> onClick){ this(null, null, 0, onClick, null, 0, false); this.titleRes=titleRes; this.subtitleRes=subtitleRes; } - public ListItem(@StringRes int titleRes, @StringRes int subtitleRes, Runnable onClick, int colorOverrideAttr, boolean dividerAfter){ + public ListItem(@StringRes int titleRes, @StringRes int subtitleRes, Consumer> onClick, int colorOverrideAttr, boolean dividerAfter){ this(null, null, 0, onClick, null, colorOverrideAttr, dividerAfter); this.titleRes=titleRes; this.subtitleRes=subtitleRes; } - public ListItem(@StringRes int titleRes, @StringRes int subtitleRes, @DrawableRes int iconRes, Runnable onClick){ + public ListItem(@StringRes int titleRes, @StringRes int subtitleRes, @DrawableRes int iconRes, Consumer> onClick){ this(null, null, iconRes, onClick, null, 0, false); this.titleRes=titleRes; this.subtitleRes=subtitleRes; } - public ListItem(@StringRes int titleRes, @StringRes int subtitleRes, @DrawableRes int iconRes, Runnable onClick, int colorOverrideAttr, boolean dividerAfter){ + public ListItem(@StringRes int titleRes, @StringRes int subtitleRes, @DrawableRes int iconRes, Consumer> onClick, int colorOverrideAttr, boolean dividerAfter){ this(null, null, iconRes, onClick, null, colorOverrideAttr, dividerAfter); this.titleRes=titleRes; this.subtitleRes=subtitleRes; @@ -79,4 +77,13 @@ public class ListItem{ public int getItemViewType(){ return colorOverrideAttr==0 ? R.id.list_item_simple : R.id.list_item_simple_tinted; } + + public void performClick(){ + if(onClick!=null) + onClick.accept(this); + } + + public > void setOnClick(Consumer onClick){ + this.onClick=(Consumer>) onClick; + } } diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/ActionModeHelper.java b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/ActionModeHelper.java new file mode 100644 index 000000000..23f7fbf45 --- /dev/null +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/ActionModeHelper.java @@ -0,0 +1,88 @@ +package org.joinmastodon.android.ui.utils; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.IntEvaluator; +import android.animation.ObjectAnimator; +import android.graphics.drawable.Drawable; +import android.view.ActionMode; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; + +import org.joinmastodon.android.R; + +import java.util.function.IntSupplier; + +import me.grishka.appkit.FragmentStackActivity; +import me.grishka.appkit.fragments.AppKitFragment; + +public class ActionModeHelper{ + public static ActionMode startActionMode(AppKitFragment fragment, IntSupplier statusBarColorSupplier, ActionMode.Callback callback){ + FragmentStackActivity activity=(FragmentStackActivity) fragment.getActivity(); + return activity.startActionMode(new ActionMode.Callback(){ + @Override + public boolean onCreateActionMode(ActionMode mode, Menu menu){ + if(!callback.onCreateActionMode(mode, menu)) + return false; + ObjectAnimator anim=ObjectAnimator.ofInt(activity.getWindow(), "statusBarColor", statusBarColorSupplier.getAsInt(), UiUtils.getThemeColor(activity, R.attr.colorM3Primary)); + anim.setEvaluator(new IntEvaluator(){ + @Override + public Integer evaluate(float fraction, Integer startValue, Integer endValue){ + return UiUtils.alphaBlendColors(startValue, endValue, fraction); + } + }); + anim.start(); + activity.invalidateSystemBarColors(fragment); + View fakeView=new View(activity); +// mode.setCustomView(fakeView); +// int buttonID=activity.getResources().getIdentifier("action_mode_close_button", "id", "android"); +// View btn=activity.getWindow().getDecorView().findViewById(buttonID); +// if(btn!=null){ +// ((ViewGroup.MarginLayoutParams)btn.getLayoutParams()).setMarginEnd(0); +// } + return true; + } + + @Override + public boolean onPrepareActionMode(ActionMode mode, Menu menu){ + if(!callback.onPrepareActionMode(mode, menu)) + return false; + for(int i=0;i> extends Bindable @Override public void onClick(){ - item.onClick.run(); + item.performClick(); } } diff --git a/mastodon/src/main/res/menu/settings_filter_words.xml b/mastodon/src/main/res/menu/selectable_list.xml similarity index 100% rename from mastodon/src/main/res/menu/settings_filter_words.xml rename to mastodon/src/main/res/menu/selectable_list.xml diff --git a/mastodon/src/main/res/values/strings.xml b/mastodon/src/main/res/values/strings.xml index 9ae6db2cf..6fc43d176 100644 --- a/mastodon/src/main/res/values/strings.xml +++ b/mastodon/src/main/res/values/strings.xml @@ -610,4 +610,44 @@ Error playing video + Following + Lists + Followed hashtags + You don\'t have any lists yet. + You don\'t follow any hashtags. + Manage lists + Manage hashtags + + Dropdown menu + Edit list + List members + Delete list + + Delete “%s”? + Hide members in Following + If someone is on this list, hide them in your Following timeline to avoid seeing their posts twice. + List name + Show replies to + No one + Members of the list + Anyone I follow + Remove members? + Remove + Add member + Search among people you follow + Add to list… + Add to list + + Manage the lists %s appears on + Remove from list + Remove member? + Keep up with interests by following hashtags + Follows will appear here + Organize your home feed with Lists + Yours will appear here + Manage accounts + + %,d post recently + %,d posts recently + \ No newline at end of file From 5d54c1bae4a40d85e41cc9f823820e6998198ab4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 18 Oct 2023 20:27:29 +0200 Subject: [PATCH 48/88] New translations strings.xml (Spanish) --- .../src/main/res/values-es-rES/strings.xml | 39 +++++++++++++++++-- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/mastodon/src/main/res/values-es-rES/strings.xml b/mastodon/src/main/res/values-es-rES/strings.xml index ae4972005..3efdfe347 100644 --- a/mastodon/src/main/res/values-es-rES/strings.xml +++ b/mastodon/src/main/res/values-es-rES/strings.xml @@ -415,7 +415,7 @@ Texto alternativo Ayuda ¿Qué es el texto alternativo? - El texto alternativo entrega descripciones de una imagen a las personas con discapacidad visual, conexiones de internet con bajo ancho de banda o a quienes buscan un mayor contexto.\n\nPuedes mejorar la accesibilidad y la comprensión de todos al escribir texto alternativo que sea claro, conciso y objetivo.\n\n<ul><il> Captura elementos importantes</li>\n<li>Resume el texto en las imágenes</li>\n<li>Construye las frases de manera normal</li>\n<li>Evita la información redundante</li>\n<li>Enfócate en tendencias y en hallazgos claves en imágenes complejas (como diagramas o mapas)</li></ul> + El texto alternativo entrega descripciones de una imagen a las personas con discapacidad visual, conexiones de internet de bajo ancho de banda o a quienes buscan más contexto.\n\nPuedes mejorar la accesibilidad y la comprensión de todos al escribir texto alternativo que sea claro, conciso y objetivo.\n\n<ul><il> Captura elementos importantes</li>\n<li>Resume el texto en las imágenes</li>\n<li>Construye las frases de manera normal</li>\n<li>Evita la información redundante</li>\n<li>Enfócate en tendencias y en hallazgos claves en imágenes complejas (como diagramas o mapas)</li></ul> Editar publicación Enlace no verificado Explorar emojis @@ -435,7 +435,7 @@ Reenviar a %s Reportado - Para no ver más sus mensajes en tu feed de inicio, deja de seguirlos. + Para no ver más sus publicaciones en tu feed de inicio, deja de seguirle. Silenciado %s Ya has bloqueado a este usuario, así que no tienes nada más que hacer mientras revisamos tu informe. Ya has bloqueado a este usuario, así que no tienes nada más que hacer.\n\n¡Gracias por ayudar a mantener Mastodon un lugar seguro para todos! @@ -478,7 +478,7 @@ Acerca de Reglas Administrador - Envía mensaje a un administrador + Contacta a un administrador Active las notificaciones desde la configuración de su dispositivo para ver actualizaciones desde cualquier lugar. Aún más ajustes Mostrar advertencias de contenido @@ -590,8 +590,39 @@ Error al traducir. Tal vez el administrador no ha habilitado las traducciones en este servidor o este servidor está ejecutando una versión antigua de Mastodon donde las traducciones aún no están soportadas. Privacidad y alcance Mostrar perfil y publicaciones en algoritmos de descubrimiento - Incluir posteos públicos en los resultados de búsqueda + Incluir publicaciones públicas en los resultados de búsqueda + Error al reproducir el video + Siguiendo + Listas + Etiquetas seguidas + Aún no tienes ninguna lista. + Aún no sigues ninguna etiqueta. + Administrar listas + Administrar etiquetas + Menú desplegable + Editar lista + Miembros de la lista + Borrar lista + ¿Eliminar “%s”? + Ocultar miembros en la lista de Seguidos + Si alguien está en esta lista, ocúltalos en tu línea de tiempo para evitar ver sus publicaciones dos veces. + Nombre de la lista + Mostrar respuestas a + Nadie + Miembros de la lista + Cualquiera que yo siga + ¿Eliminar miembros? + Eliminar + Añadir miembro + Buscar entre las personas a las que sigues + Añadir a lista… + Añadir a lista + Administrar las listas en las que %s aparece + Quitar de lista + ¿Eliminar miembro? + Manténgase al día con los intereses siguiendo las etiquetas + Los seguidores aparecerán aquí From a44e0e036aaa4ea9bc5e2acd2c51bdfcc047e22c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 18 Oct 2023 20:27:30 +0200 Subject: [PATCH 49/88] New translations strings.xml (Persian) --- .../src/main/res/values-fa-rIR/strings.xml | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/mastodon/src/main/res/values-fa-rIR/strings.xml b/mastodon/src/main/res/values-fa-rIR/strings.xml index e575ac1e1..a1dc79334 100644 --- a/mastodon/src/main/res/values-fa-rIR/strings.xml +++ b/mastodon/src/main/res/values-fa-rIR/strings.xml @@ -262,6 +262,7 @@ این‌ها همه فرسته‌های همه کاربران در سرور شما (%s) هستند. ممکن است این حساب‌ها را بر اساس حساب‌های دیگری که پی می‌گیرید بپسندید. + فرسته‌های جدید بارگذاری فرسته‌های گم شده پی‌گیری متقابل منتظر @@ -598,7 +599,37 @@ %,d فرسته امروز %,d فرسته امروز + خطا در پخش ویدئو + پی‌گرفته + سیاهه‌ها + برچسب‌های پی‌گرفته + شما هنوز هیچ سیاهه‌ای ندارید. + شما هیچ برچسبی را پی نمی‌گیرید. + مدیریت سیاهه‌ها + مدیریت برچسب‌ها + منوی کشویی + ویرایش سیاهه + اعضای سیاهه + حذف سیاهه + حذف \"%s\"؟ + نهفتن اعضای پی‌گرفته + اسم سیاهه + نمایش پاسخ‌ها به + هیچ‌کس + اعضای سیاهه + حذف اعضا؟ + برداشتن + افزودن عضو + افزودن به سیاهه… + افزودن به سیاهه + برداشتن از سیاهه + حذف عضو؟ + افزودن یا جابجا شدن بین حساب‌ها + + %,d فرسته اخیرا ارسال کرده + %,d فرسته اخیرا ارسال کرده + From 2e4f04cd88a0d944ddce590957ea46918d4f8ee4 Mon Sep 17 00:00:00 2001 From: sk Date: Wed, 18 Oct 2023 20:40:23 +0200 Subject: [PATCH 50/88] fix divide by zero error --- .../ReblogOrReplyLineStatusDisplayItem.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/ReblogOrReplyLineStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/ReblogOrReplyLineStatusDisplayItem.java index 78d18ebcf..096b1f18d 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/ReblogOrReplyLineStatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/ReblogOrReplyLineStatusDisplayItem.java @@ -87,8 +87,9 @@ public class ReblogOrReplyLineStatusDisplayItem extends StatusDisplayItem{ @Override public ImageLoaderRequest getImageRequest(int index){ - CustomEmojiHelper helper=index0 ? index%firstHelperCount : index); } public static class Holder extends StatusDisplayItem.Holder implements ImageLoaderViewHolder{ @@ -136,8 +137,9 @@ public class ReblogOrReplyLineStatusDisplayItem extends StatusDisplayItem{ @Override public void setImage(int index, Drawable image){ - CustomEmojiHelper helper=index0 ? index%firstHelperCount : index, image); text.invalidate(); extraText.invalidate(); } From 5135653cd3f46790dae1bdb1cf2e13f922c04bfe Mon Sep 17 00:00:00 2001 From: sk Date: Wed, 18 Oct 2023 21:01:31 +0200 Subject: [PATCH 51/88] wow!! configurable first fraction --- .../ui/views/HeaderSubtitleLinearLayout.java | 23 +++++++++++++++---- .../main/res/layout/display_item_header.xml | 2 ++ .../display_item_reblog_or_reply_line.xml | 2 ++ mastodon/src/main/res/values/attrs.xml | 4 ++++ 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/views/HeaderSubtitleLinearLayout.java b/mastodon/src/main/java/org/joinmastodon/android/ui/views/HeaderSubtitleLinearLayout.java index 3cf5f9edb..58e50c9d0 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/views/HeaderSubtitleLinearLayout.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/views/HeaderSubtitleLinearLayout.java @@ -1,27 +1,34 @@ package org.joinmastodon.android.ui.views; import android.content.Context; +import android.content.res.TypedArray; import android.util.AttributeSet; import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; -import me.grishka.appkit.utils.V; +import org.joinmastodon.android.R; /** * A LinearLayout for TextViews. First child TextView will get truncated if it doesn't fit, remaining will always wrap content. */ public class HeaderSubtitleLinearLayout extends LinearLayout{ + private float firstFraction; + public HeaderSubtitleLinearLayout(Context context){ - super(context); + this(context, null); } public HeaderSubtitleLinearLayout(Context context, AttributeSet attrs){ - super(context, attrs); + this(context, attrs, 0); } public HeaderSubtitleLinearLayout(Context context, AttributeSet attrs, int defStyleAttr){ super(context, attrs, defStyleAttr); + TypedArray ta=context.obtainStyledAttributes(attrs, R.styleable.HeaderSubtitleLinearLayout); + firstFraction=ta.getFraction(R.styleable.HeaderSubtitleLinearLayout_firstFraction, 1, 1, 0.5f); + System.out.println("FRACTION " + firstFraction); + ta.recycle(); } @Override @@ -39,7 +46,7 @@ public class HeaderSubtitleLinearLayout extends LinearLayout{ } View first=getChildAt(0); if(first instanceof TextView){ - ((TextView) first).setMaxWidth(Math.max(remainingWidth, fullWidth/3*2)); + ((TextView) first).setMaxWidth(Math.max(remainingWidth, (int)(firstFraction*fullWidth))); } }else{ View first=getChildAt(0); @@ -58,4 +65,12 @@ public class HeaderSubtitleLinearLayout extends LinearLayout{ } return count; } + + public void setFirstFraction(float firstFraction){ + this.firstFraction=firstFraction; + } + + public float getFirstFraction(){ + return firstFraction; + } } diff --git a/mastodon/src/main/res/layout/display_item_header.xml b/mastodon/src/main/res/layout/display_item_header.xml index 36fe7aff3..709527998 100644 --- a/mastodon/src/main/res/layout/display_item_header.xml +++ b/mastodon/src/main/res/layout/display_item_header.xml @@ -1,6 +1,7 @@ @@ -107,6 +108,7 @@ + + + + \ No newline at end of file From 39f76f9988ad435208bf10ca0e5bd45c27c825c7 Mon Sep 17 00:00:00 2001 From: sk Date: Wed, 18 Oct 2023 21:21:03 +0200 Subject: [PATCH 52/88] always show "boosted" text in reply/boost line closes sk22#874 --- .../android/ui/displayitems/StatusDisplayItem.java | 5 ++--- .../main/res/layout/display_item_reblog_or_reply_line.xml | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java index 62bc674e3..1e21bbed4 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java @@ -176,12 +176,11 @@ public abstract class StatusDisplayItem{ if(status.reblog!=null){ boolean isOwnPost = AccountSessionManager.getInstance().isSelf(fragment.getAccountID(), status.account); - String fullText = fragment.getString(R.string.user_boosted, status.account.displayName); - String text = replyLine != null ? status.account.displayName : fullText; + String text=fragment.getString(R.string.user_boosted, status.account.displayName); items.add(new ReblogOrReplyLineStatusDisplayItem(parentID, fragment, text, status.account.emojis, R.drawable.ic_fluent_arrow_repeat_all_20sp_filled, isOwnPost ? status.visibility : null, i->{ args.putParcelable("profileAccount", Parcels.wrap(status.account)); Nav.go(fragment.getActivity(), ProfileFragment.class, args); - }, fullText, status)); + }, null, status)); } else if (!(status.tags.isEmpty() || fragment instanceof HashtagTimelineFragment || fragment instanceof ListTimelineFragment diff --git a/mastodon/src/main/res/layout/display_item_reblog_or_reply_line.xml b/mastodon/src/main/res/layout/display_item_reblog_or_reply_line.xml index 2335e919d..b5b7289c5 100644 --- a/mastodon/src/main/res/layout/display_item_reblog_or_reply_line.xml +++ b/mastodon/src/main/res/layout/display_item_reblog_or_reply_line.xml @@ -47,6 +47,6 @@ android:drawableTint="?colorM3OnSurface" android:drawablePadding="6dp" android:singleLine="true" - android:ellipsize="end"/> + android:ellipsize="middle"/> \ No newline at end of file From a30fcbbe34ffb367baf503f2ced655b6e84031f4 Mon Sep 17 00:00:00 2001 From: sk Date: Wed, 18 Oct 2023 21:23:58 +0200 Subject: [PATCH 53/88] reorder profile menu closes sk22#873 --- mastodon/src/main/res/menu/profile.xml | 14 +++++++------- mastodon/src/main/res/menu/profile_own.xml | 11 +++++++---- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/mastodon/src/main/res/menu/profile.xml b/mastodon/src/main/res/menu/profile.xml index 75d3f9d88..76279ff7b 100644 --- a/mastodon/src/main/res/menu/profile.xml +++ b/mastodon/src/main/res/menu/profile.xml @@ -1,12 +1,5 @@ - - - - - - - @@ -16,4 +9,11 @@ + + + + + + + \ No newline at end of file diff --git a/mastodon/src/main/res/menu/profile_own.xml b/mastodon/src/main/res/menu/profile_own.xml index fbc4db924..4fda97db2 100644 --- a/mastodon/src/main/res/menu/profile_own.xml +++ b/mastodon/src/main/res/menu/profile_own.xml @@ -2,13 +2,16 @@ - - - - + + + + + + + \ No newline at end of file From 8ea05c6ebdf66e3f711268f8261dbb1fbecbca5c Mon Sep 17 00:00:00 2001 From: sk Date: Wed, 18 Oct 2023 21:24:59 +0200 Subject: [PATCH 54/88] fix menu grouping --- mastodon/src/main/res/menu/profile.xml | 4 ++-- mastodon/src/main/res/menu/profile_own.xml | 16 +++++++++------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/mastodon/src/main/res/menu/profile.xml b/mastodon/src/main/res/menu/profile.xml index 76279ff7b..aaaf7cae8 100644 --- a/mastodon/src/main/res/menu/profile.xml +++ b/mastodon/src/main/res/menu/profile.xml @@ -1,6 +1,6 @@ - + @@ -9,7 +9,7 @@ - + diff --git a/mastodon/src/main/res/menu/profile_own.xml b/mastodon/src/main/res/menu/profile_own.xml index 4fda97db2..2ad960787 100644 --- a/mastodon/src/main/res/menu/profile_own.xml +++ b/mastodon/src/main/res/menu/profile_own.xml @@ -1,13 +1,15 @@ - - - - - - - + + + + + + + + + From ed24e89a96834d57efab98caa7b46d9f43590702 Mon Sep 17 00:00:00 2001 From: sk Date: Wed, 18 Oct 2023 21:40:25 +0200 Subject: [PATCH 55/88] don't compare newly fetched posts to created post closes sk22#866 --- .../android/events/StatusCreatedEvent.java | 1 + .../android/fragments/HomeTimelineFragment.java | 7 +++++-- .../java/org/joinmastodon/android/model/Status.java | 10 +--------- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/events/StatusCreatedEvent.java b/mastodon/src/main/java/org/joinmastodon/android/events/StatusCreatedEvent.java index 1e6d7eb42..1c7d19e47 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/events/StatusCreatedEvent.java +++ b/mastodon/src/main/java/org/joinmastodon/android/events/StatusCreatedEvent.java @@ -9,5 +9,6 @@ public class StatusCreatedEvent{ public StatusCreatedEvent(Status status, String accountID){ this.status=status; this.accountID=accountID; + status.fromStatusCreated=true; } } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java index 4af622235..51d67de27 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java @@ -123,10 +123,13 @@ public class HomeTimelineFragment extends StatusListFragment { private void loadNewPosts(){ if (!GlobalUserPreferences.loadNewPosts) return; dataLoading=true; + // we only care about the data that was actually retrieved from the timeline api since + // user-created statuses are probably in the wrong position + List dataFromTimeline=data.stream().filter(s->!s.fromStatusCreated).collect(Collectors.toList()); // The idea here is that we request the timeline such that if there are fewer than `limit` posts, // we'll get the currently topmost post as last in the response. This way we know there's no gap // between the existing and newly loaded parts of the timeline. - String sinceID=data.size()>1 ? data.get(1).id : "1"; + String sinceID=dataFromTimeline.size()>1 ? dataFromTimeline.get(1).id : "1"; currentRequest=new GetHomeTimeline(null, null, 20, sinceID, getLocalPrefs().timelineReplyVisibility) .setCallback(new Callback<>(){ @Override @@ -137,7 +140,7 @@ public class HomeTimelineFragment extends StatusListFragment { return; Status last=result.get(result.size()-1); List toAdd; - if(!data.isEmpty() && last.id.equals(data.get(0).id)){ // This part intersects with the existing one + if(!dataFromTimeline.isEmpty() && last.id.equals(dataFromTimeline.get(0).id)){ // This part intersects with the existing one toAdd=new ArrayList<>(result.subList(0, result.size()-1)); // Remove the already known last post }else{ last.hasGapAfter=last.id; diff --git a/mastodon/src/main/java/org/joinmastodon/android/model/Status.java b/mastodon/src/main/java/org/joinmastodon/android/model/Status.java index 1e5bf017e..1a67ad659 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/model/Status.java +++ b/mastodon/src/main/java/org/joinmastodon/android/model/Status.java @@ -26,22 +26,13 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParseException; -import org.joinmastodon.android.api.ObjectValidationException; -import org.joinmastodon.android.api.RequiredField; import org.joinmastodon.android.api.session.AccountSession; import org.joinmastodon.android.api.session.AccountSessionManager; import org.joinmastodon.android.events.EmojiReactionsUpdatedEvent; -import org.joinmastodon.android.events.StatusCountersUpdatedEvent; -import org.joinmastodon.android.ui.text.HtmlParser; import org.joinmastodon.android.utils.StatusTextEncoder; -import org.parceler.Parcel; import java.lang.reflect.Type; -import java.time.Instant; import java.util.ArrayList; -import java.util.List; -import java.util.Locale; -import java.util.Objects; import java.util.regex.Pattern; @Parcel @@ -104,6 +95,7 @@ public class Status extends BaseModel implements DisplayItemsParent, Searchable{ private transient String strippedText; public transient TranslationState translationState=TranslationState.HIDDEN; public transient Translation translation; + public transient boolean fromStatusCreated; public Status(){} From 5f7faa69e83b4e07aef1e61f3d4f8bd6608de9d1 Mon Sep 17 00:00:00 2001 From: sk Date: Wed, 18 Oct 2023 22:07:10 +0200 Subject: [PATCH 56/88] remove existing statuses to move them up --- .../joinmastodon/android/fragments/HomeTimelineFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java index 51d67de27..38f49165b 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java @@ -147,7 +147,7 @@ public class HomeTimelineFragment extends StatusListFragment { toAdd=result; } List existingIds=data.stream().map(Status::getID).collect(Collectors.toList()); - toAdd.removeIf(s->existingIds.contains(s.getID())); + toAdd.stream().filter(s->existingIds.contains(s.getID())).forEach(s->removeStatus(s)); List toAddUnfiltered=new ArrayList<>(toAdd); AccountSessionManager.get(accountID).filterStatuses(toAdd, getFilterContext()); if(!toAdd.isEmpty()){ From 3097bc7168fde1ca3cd125c1aaf336a2aaf39592 Mon Sep 17 00:00:00 2001 From: sk Date: Wed, 18 Oct 2023 23:28:44 +0200 Subject: [PATCH 57/88] oops: put home timeline if result NOT empty --- .../joinmastodon/android/fragments/HomeTimelineFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java index 38f49165b..e4e185fa9 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java @@ -154,7 +154,7 @@ public class HomeTimelineFragment extends StatusListFragment { prependItems(toAdd, true); if(parent != null && GlobalUserPreferences.showNewPostsButton) parent.showNewPostsButton(); } - if(toAddUnfiltered.isEmpty()) + if(!toAddUnfiltered.isEmpty()) AccountSessionManager.getInstance().getAccount(accountID).getCacheController().putHomeTimeline(toAddUnfiltered, false); } From 6cbe406cefd37a9ac61e652b9965412311cd6cd1 Mon Sep 17 00:00:00 2001 From: sk Date: Thu, 19 Oct 2023 00:04:54 +0200 Subject: [PATCH 58/88] load new posts on reload --- .../android/api/CacheController.java | 2 ++ .../fragments/HomeTimelineFragment.java | 16 ++++++++------ .../settings/SettingsAboutAppFragment.java | 22 +++++++++++++++---- mastodon/src/main/res/values/strings_sk.xml | 2 ++ 4 files changed, 31 insertions(+), 11 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/api/CacheController.java b/mastodon/src/main/java/org/joinmastodon/android/api/CacheController.java index 0a743a13a..832fdcb40 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/api/CacheController.java +++ b/mastodon/src/main/java/org/joinmastodon/android/api/CacheController.java @@ -120,6 +120,8 @@ public class CacheController{ values.put("time", s.createdAt.getEpochSecond()); db.insertWithOnConflict("home_timeline", null, values, SQLiteDatabase.CONFLICT_REPLACE); } + if(!clear) + db.delete("home_timeline", "`id` NOT IN (SELECT `id` FROM `home_timeline` ORDER BY `time` DESC LIMIT ?)", new String[]{"1000"}); }); } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java index e4e185fa9..46b3e5842 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java @@ -61,7 +61,7 @@ public class HomeTimelineFragment extends StatusListFragment { maxID=result.maxID; AccountSessionManager.get(accountID).filterStatuses(result.items, getFilterContext()); onDataLoaded(result.items, !empty); - if(result.isFromCache()) + if(result.isFromCache() && GlobalUserPreferences.loadNewPosts) loadNewPosts(); } }); @@ -74,8 +74,9 @@ public class HomeTimelineFragment extends StatusListFragment { list.addOnScrollListener(new RecyclerView.OnScrollListener(){ @Override public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy){ - if(parent != null && parent.isNewPostsBtnShown() && list.getChildAdapterPosition(list.getChildAt(0))<=getMainAdapterOffset()){ - parent.hideNewPostsButton(); + if(parent!=null && list.getChildAdapterPosition(list.getChildAt(0))<=getMainAdapterOffset()){ + if(parent.isNewPostsBtnShown()) parent.hideNewPostsButton(); + else if(!dataLoading && GlobalUserPreferences.loadNewPosts) loadNewPosts(); } } }); @@ -87,7 +88,7 @@ public class HomeTimelineFragment extends StatusListFragment { if(!getArguments().getBoolean("noAutoLoad")){ if(!loaded && !dataLoading){ loadData(); - }else if(!dataLoading){ + }else if(!dataLoading && GlobalUserPreferences.loadNewPosts){ loadNewPosts(); } } @@ -121,7 +122,6 @@ public class HomeTimelineFragment extends StatusListFragment { } private void loadNewPosts(){ - if (!GlobalUserPreferences.loadNewPosts) return; dataLoading=true; // we only care about the data that was actually retrieved from the timeline api since // user-created statuses are probably in the wrong position @@ -156,12 +156,14 @@ public class HomeTimelineFragment extends StatusListFragment { } if(!toAddUnfiltered.isEmpty()) AccountSessionManager.getInstance().getAccount(accountID).getCacheController().putHomeTimeline(toAddUnfiltered, false); + refreshDone(); } @Override public void onError(ErrorResponse error){ currentRequest=null; dataLoading=false; + refreshDone(); } }) .exec(accountID); @@ -328,8 +330,8 @@ public class HomeTimelineFragment extends StatusListFragment { currentRequest=null; dataLoading=false; } - if (parent != null) parent.hideNewPostsButton(); - super.onRefresh(); + if(parent!=null) parent.hideNewPostsButton(); + loadNewPosts(); } @Override diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsAboutAppFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsAboutAppFragment.java index 0ec9c7177..ea92d5153 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsAboutAppFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsAboutAppFragment.java @@ -16,7 +16,6 @@ import org.joinmastodon.android.model.viewmodel.ListItem; import org.joinmastodon.android.ui.utils.UiUtils; import java.util.List; -import java.util.Objects; import androidx.recyclerview.widget.RecyclerView; import me.grishka.appkit.imageloader.ImageCache; @@ -26,23 +25,32 @@ import me.grishka.appkit.utils.V; public class SettingsAboutAppFragment extends BaseSettingsFragment{ private ListItem mediaCacheItem; + private AccountSession session; + private boolean timelineCacheCleared=false; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setTitle(getString(R.string.about_app, getString(R.string.sk_app_name))); - AccountSession s=AccountSessionManager.get(accountID); + session=AccountSessionManager.get(accountID); onDataLoaded(List.of( new ListItem<>(R.string.sk_settings_donate, 0, R.drawable.ic_fluent_heart_24_regular, i->UiUtils.openHashtagTimeline(getActivity(), accountID, getString(R.string.donate_hashtag))), new ListItem<>(R.string.sk_settings_contribute, 0, R.drawable.ic_fluent_open_24_regular, i->UiUtils.launchWebBrowser(getActivity(), getString(R.string.repo_url))), - new ListItem<>(R.string.settings_tos, 0, R.drawable.ic_fluent_open_24_regular, i->UiUtils.launchWebBrowser(getActivity(), "https://"+s.domain+"/terms")), + new ListItem<>(R.string.settings_tos, 0, R.drawable.ic_fluent_open_24_regular, i->UiUtils.launchWebBrowser(getActivity(), "https://"+session.domain+"/terms")), new ListItem<>(R.string.settings_privacy_policy, 0, R.drawable.ic_fluent_open_24_regular, i->UiUtils.launchWebBrowser(getActivity(), getString(R.string.privacy_policy_url)), 0, true), - mediaCacheItem=new ListItem<>(R.string.settings_clear_cache, 0, this::onClearMediaCacheClick) + mediaCacheItem=new ListItem<>(R.string.settings_clear_cache, 0, this::onClearMediaCacheClick), + new ListItem<>(getString(R.string.sk_settings_clear_timeline_cache), session.domain, this::onClearTimelineCacheClick) )); updateMediaCacheItem(); } + @Override + protected void onHidden(){ + super.onHidden(); + if(timelineCacheCleared) getActivity().recreate(); + } + @Override protected void doLoadData(int offset, int count){} @@ -74,6 +82,12 @@ public class SettingsAboutAppFragment extends BaseSettingsFragment{ }); } + private void onClearTimelineCacheClick(ListItem item){ + session.getCacheController().putHomeTimeline(List.of(), true); + Toast.makeText(getContext(), R.string.sk_message_cache_cleared, Toast.LENGTH_SHORT).show(); + timelineCacheCleared=true; + } + private void updateMediaCacheItem(){ long size=ImageCache.getInstance(getActivity()).getDiskCache().size(); mediaCacheItem.subtitle=UiUtils.formatFileSize(getActivity(), size, false); diff --git a/mastodon/src/main/res/values/strings_sk.xml b/mastodon/src/main/res/values/strings_sk.xml index 98da35c28..25b92cfc8 100644 --- a/mastodon/src/main/res/values/strings_sk.xml +++ b/mastodon/src/main/res/values/strings_sk.xml @@ -412,4 +412,6 @@ Underlined links Set as default Edit alt text + Clear home timeline cache + Cleared message cache \ No newline at end of file From f52886af74c56ccb3d4df1bda1afaaed117e2efb Mon Sep 17 00:00:00 2001 From: sk Date: Thu, 19 Oct 2023 00:09:09 +0200 Subject: [PATCH 59/88] don't add own boosts to home closes sk22#875 --- .../org/joinmastodon/android/fragments/HomeTimelineFragment.java | 1 + 1 file changed, 1 insertion(+) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java index 46b3e5842..b61e8a538 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java @@ -118,6 +118,7 @@ public class HomeTimelineFragment extends StatusListFragment { } public void onStatusCreated(Status status){ + if(status.reblog!=null) return; prependItems(Collections.singletonList(status), true); } From b95d94400312fd00a6b97a0d1c1a378a8aea2170 Mon Sep 17 00:00:00 2001 From: sk Date: Thu, 19 Oct 2023 00:22:52 +0200 Subject: [PATCH 60/88] save own posts from timeline before removing them --- .../android/fragments/HomeTimelineFragment.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java index b61e8a538..6717cf879 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java @@ -147,16 +147,17 @@ public class HomeTimelineFragment extends StatusListFragment { last.hasGapAfter=last.id; toAdd=result; } + if(!toAdd.isEmpty()) + AccountSessionManager.getInstance().getAccount(accountID).getCacheController().putHomeTimeline(new ArrayList<>(toAdd), false); + // removing statuses that come up as duplicates (hopefully only posts and boosts that were locally created + // and thus were already prepended to the timeline earlier) List existingIds=data.stream().map(Status::getID).collect(Collectors.toList()); - toAdd.stream().filter(s->existingIds.contains(s.getID())).forEach(s->removeStatus(s)); - List toAddUnfiltered=new ArrayList<>(toAdd); + toAdd.removeIf(s->existingIds.contains(s.getID())); AccountSessionManager.get(accountID).filterStatuses(toAdd, getFilterContext()); if(!toAdd.isEmpty()){ prependItems(toAdd, true); if(parent != null && GlobalUserPreferences.showNewPostsButton) parent.showNewPostsButton(); } - if(!toAddUnfiltered.isEmpty()) - AccountSessionManager.getInstance().getAccount(accountID).getCacheController().putHomeTimeline(toAddUnfiltered, false); refreshDone(); } From 36846acbe5ce2d09c054205f06ae03a268c058c5 Mon Sep 17 00:00:00 2001 From: sk Date: Thu, 19 Oct 2023 00:38:06 +0200 Subject: [PATCH 61/88] fix null pointer when content language is null --- .../android/ui/displayitems/TextStatusDisplayItem.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/TextStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/TextStatusDisplayItem.java index 122b20fdd..5881c6667 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/TextStatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/TextStatusDisplayItem.java @@ -210,9 +210,10 @@ public class TextStatusDisplayItem extends StatusDisplayItem{ Translation existingTrans=item.status.getContentStatus().translation; String existingTransLang=existingTrans!=null ? existingTrans.detectedSourceLanguage : null; String lang=existingTransLang!=null ? existingTransLang : item.status.getContentStatus().language; - String displayLang=Locale.forLanguageTag(lang != null ? lang - : AccountSessionManager.get(item.parentFragment.getAccountID()).preferences.postingDefaultLanguage).getDisplayLanguage(); - translationButton.setText(item.parentFragment.getString(R.string.translate_post, !displayLang.isBlank() ? displayLang : lang)); + Locale locale=lang!=null ? Locale.forLanguageTag(lang) : null; + translationButton.setText(locale!=null + ? item.parentFragment.getString(R.string.translate_post, locale.getDisplayLanguage()) + : item.parentFragment.getString(R.string.sk_translate_post)); translationButton.setClickable(true); translationButton.animate().alpha(1).setDuration(100).start(); translationInfo.setVisibility(View.GONE); From 95858e3280d8b518f30f92caa9de8821b24d9dec Mon Sep 17 00:00:00 2001 From: sk Date: Thu, 19 Oct 2023 00:44:10 +0200 Subject: [PATCH 62/88] remove debug println --- .../android/ui/views/HeaderSubtitleLinearLayout.java | 1 - 1 file changed, 1 deletion(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/views/HeaderSubtitleLinearLayout.java b/mastodon/src/main/java/org/joinmastodon/android/ui/views/HeaderSubtitleLinearLayout.java index 58e50c9d0..252dd76f0 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/views/HeaderSubtitleLinearLayout.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/views/HeaderSubtitleLinearLayout.java @@ -27,7 +27,6 @@ public class HeaderSubtitleLinearLayout extends LinearLayout{ super(context, attrs, defStyleAttr); TypedArray ta=context.obtainStyledAttributes(attrs, R.styleable.HeaderSubtitleLinearLayout); firstFraction=ta.getFraction(R.styleable.HeaderSubtitleLinearLayout_firstFraction, 1, 1, 0.5f); - System.out.println("FRACTION " + firstFraction); ta.recycle(); } From 5db44cbf9ddf4cef0ab9375e5f7cc13c2e51443f Mon Sep 17 00:00:00 2001 From: sk Date: Thu, 19 Oct 2023 01:01:53 +0200 Subject: [PATCH 63/88] don't save bidi-safe string in account also support custom emoji in account switcher closes sk22#859 --- .../org/joinmastodon/android/AudioPlayerService.java | 2 +- .../android/fragments/ComposeFragment.java | 8 ++++---- .../android/fragments/FollowRequestsListFragment.java | 5 ++--- .../joinmastodon/android/fragments/HomeFragment.java | 2 +- .../android/fragments/ProfileFragment.java | 4 ++-- .../android/fragments/ThreadFragment.java | 2 +- .../fragments/discover/DiscoverAccountsFragment.java | 4 ++-- .../onboarding/OnboardingProfileSetupFragment.java | 1 - .../java/org/joinmastodon/android/model/Account.java | 5 ++++- .../android/model/viewmodel/AccountViewModel.java | 4 ++-- .../joinmastodon/android/ui/AccountSwitcherSheet.java | 7 ++++--- .../ui/displayitems/AccountCardStatusDisplayItem.java | 6 ++---- .../ui/displayitems/HeaderStatusDisplayItem.java | 2 +- .../NotificationHeaderStatusDisplayItem.java | 3 +-- .../android/ui/displayitems/StatusDisplayItem.java | 11 ++++------- .../org/joinmastodon/android/ui/utils/UiUtils.java | 8 ++++---- 16 files changed, 35 insertions(+), 39 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/AudioPlayerService.java b/mastodon/src/main/java/org/joinmastodon/android/AudioPlayerService.java index d7b185642..067446d3e 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/AudioPlayerService.java +++ b/mastodon/src/main/java/org/joinmastodon/android/AudioPlayerService.java @@ -266,7 +266,7 @@ public class AudioPlayerService extends Service{ private void updateNotification(boolean dismissable, boolean removeNotification){ Notification.Builder bldr=new Notification.Builder(this) .setSmallIcon(R.drawable.ic_ntf_logo) - .setContentTitle(status.account.displayName) + .setContentTitle(status.account.getDisplayName()) .setContentText(HtmlParser.strip(status.content)) .setOngoing(!dismissable) .setShowWhen(false) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java index 5ea2d7ff8..f036bdf4a 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java @@ -326,7 +326,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr selfUsername=view.findViewById(R.id.self_username); selfAvatar=view.findViewById(R.id.self_avatar); selfExtraText=view.findViewById(R.id.self_extra_text); - HtmlParser.setTextWithCustomEmoji(selfName, self.displayName, self.emojis); + HtmlParser.setTextWithCustomEmoji(selfName, self.getDisplayName(), self.emojis); selfUsername.setText('@'+self.username+'@'+instanceDomain); if(self.avatar!=null) ViewImageLoader.load(selfAvatar, null, new UrlImageLoaderRequest(self.avatar)); @@ -665,7 +665,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr moreBtn.setBackground(null); TextView name = view.findViewById(R.id.name); - name.setText(HtmlParser.parseCustomEmoji(status.account.displayName, status.account.emojis)); + name.setText(HtmlParser.parseCustomEmoji(status.account.getDisplayName(), status.account.emojis)); UiUtils.loadCustomEmojiInTextView(name); String time = status==null || status.editedAt==null @@ -699,7 +699,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr .setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, V.dp(16))); } - replyText.setText(getString(quote!=null? R.string.sk_quoting_user : R.string.in_reply_to, status.account.displayName)); + replyText.setText(getString(quote!=null? R.string.sk_quoting_user : R.string.in_reply_to, status.account.getDisplayName())); int visibilityNameRes = switch (status.visibility) { case PUBLIC -> R.string.visibility_public; case UNLISTED -> R.string.sk_visibility_unlisted; @@ -707,7 +707,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr case DIRECT -> R.string.visibility_private; case LOCAL -> R.string.sk_local_only; }; - replyText.setContentDescription(getString(R.string.in_reply_to, status.account.displayName) + ", " + getString(visibilityNameRes)); + replyText.setContentDescription(getString(R.string.in_reply_to, status.account.getDisplayName()) + ", " + getString(visibilityNameRes)); replyText.setOnClickListener(v->{ scrollView.smoothScrollTo(0, 0); }); diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/FollowRequestsListFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/FollowRequestsListFragment.java index 37faab2bc..0750be8e4 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/FollowRequestsListFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/FollowRequestsListFragment.java @@ -20,7 +20,6 @@ import org.joinmastodon.android.api.requests.accounts.GetFollowRequests; import org.joinmastodon.android.api.session.AccountSessionManager; import org.joinmastodon.android.model.Account; import org.joinmastodon.android.model.HeaderPaginationList; -import org.joinmastodon.android.model.Instance; import org.joinmastodon.android.model.Relationship; import org.joinmastodon.android.ui.OutlineProviders; import org.joinmastodon.android.ui.text.HtmlParser; @@ -366,9 +365,9 @@ public class FollowRequestsListFragment extends MastodonRecyclerFragment options=new ArrayList<>(); for(AccountSession session:AccountSessionManager.getInstance().getLoggedInAccounts()){ - options.add(session.self.displayName+"\n("+session.self.username+"@"+session.domain+")"); + options.add(session.self.getDisplayName()+"\n("+session.self.username+"@"+session.domain+")"); } new AccountSwitcherSheet(getActivity(), this).show(); return true; diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java index 8ed09b1dc..fd30387ba 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java @@ -621,14 +621,14 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList @SuppressLint("SetTextI18n") private void bindHeaderView(){ - setTitle(account.displayName); + setTitle(account.getDisplayName()); setSubtitle(getResources().getQuantityString(R.plurals.x_posts, (int)(account.statusesCount%1000), account.statusesCount)); ViewImageLoader.load(avatar, null, new UrlImageLoaderRequest( TextUtils.isEmpty(account.avatar) ? getSession().getDefaultAvatarUrl() : GlobalUserPreferences.playGifs ? account.avatar : account.avatarStatic, V.dp(100), V.dp(100))); ViewImageLoader.load(cover, null, new UrlImageLoaderRequest(GlobalUserPreferences.playGifs ? account.header : account.headerStatic, 1000, 1000)); - SpannableStringBuilder ssb=new SpannableStringBuilder(account.displayName); + SpannableStringBuilder ssb=new SpannableStringBuilder(account.getDisplayName()); if(AccountSessionManager.get(accountID).getLocalPreferences().customEmojiInNames) HtmlParser.parseCustomEmoji(ssb, account.emojis); name.setText(ssb); diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java index 993f136ba..580153f1c 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java @@ -64,7 +64,7 @@ public class ThreadFragment extends StatusListFragment implements ProvidesAssist knownAccounts.put(inReplyToAccount.id, inReplyToAccount); data.add(mainStatus); onAppendItems(Collections.singletonList(mainStatus)); - setTitle(HtmlParser.parseCustomEmoji(getString(R.string.post_from_user, mainStatus.account.displayName), mainStatus.account.emojis)); + setTitle(HtmlParser.parseCustomEmoji(getString(R.string.post_from_user, mainStatus.account.getDisplayName()), mainStatus.account.emojis)); transitionFinished = getArguments().getBoolean("noTransition", false); } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/discover/DiscoverAccountsFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/discover/DiscoverAccountsFragment.java index dead031d0..d7194bbf3 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/discover/DiscoverAccountsFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/discover/DiscoverAccountsFragment.java @@ -330,9 +330,9 @@ public class DiscoverAccountsFragment extends MastodonRecyclerFragment R.string.user_followed_you; diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java index 1e21bbed4..31f3b8425 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java @@ -15,7 +15,6 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; -import org.joinmastodon.android.GlobalUserPreferences; import org.joinmastodon.android.R; import org.joinmastodon.android.api.session.AccountLocalPreferences; import org.joinmastodon.android.api.session.AccountSessionManager; @@ -30,7 +29,6 @@ import org.joinmastodon.android.model.Account; import org.joinmastodon.android.model.Attachment; import org.joinmastodon.android.model.DisplayItemsParent; import org.joinmastodon.android.model.LegacyFilter; -import org.joinmastodon.android.model.FilterAction; import org.joinmastodon.android.model.FilterContext; import org.joinmastodon.android.model.FilterResult; import org.joinmastodon.android.model.Notification; @@ -41,7 +39,6 @@ import org.joinmastodon.android.ui.PhotoLayoutHelper; import org.joinmastodon.android.ui.text.HtmlParser; import org.joinmastodon.android.ui.utils.UiUtils; import org.joinmastodon.android.ui.viewholders.AccountViewHolder; -import org.joinmastodon.android.utils.StatusFilterPredicate; import org.parceler.Parcels; import java.util.ArrayList; @@ -142,11 +139,11 @@ public abstract class StatusDisplayItem{ String parentID = parent.getID(); String text = threadReply ? fragment.getString(R.string.sk_show_thread) : account == null ? fragment.getString(R.string.sk_in_reply) - : status.reblog != null ? account.displayName - : fragment.getString(R.string.in_reply_to, account.displayName); + : status.reblog != null ? account.getDisplayName() + : fragment.getString(R.string.in_reply_to, account.getDisplayName()); String fullText = threadReply ? fragment.getString(R.string.sk_show_thread) : account == null ? fragment.getString(R.string.sk_in_reply) - : fragment.getString(R.string.in_reply_to, account.displayName); + : fragment.getString(R.string.in_reply_to, account.getDisplayName()); return new ReblogOrReplyLineStatusDisplayItem( parentID, fragment, text, account == null ? List.of() : account.emojis, R.drawable.ic_fluent_arrow_reply_20sp_filled, null, null, fullText, status @@ -176,7 +173,7 @@ public abstract class StatusDisplayItem{ if(status.reblog!=null){ boolean isOwnPost = AccountSessionManager.getInstance().isSelf(fragment.getAccountID(), status.account); - String text=fragment.getString(R.string.user_boosted, status.account.displayName); + String text=fragment.getString(R.string.user_boosted, status.account.getDisplayName()); items.add(new ReblogOrReplyLineStatusDisplayItem(parentID, fragment, text, status.account.emojis, R.drawable.ic_fluent_arrow_repeat_all_20sp_filled, isOwnPost ? status.visibility : null, i->{ args.putParcelable("profileAccount", Parcels.wrap(status.account)); Nav.go(fragment.getActivity(), ProfileFragment.class, args); diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java index b9a7901d8..29210f2f3 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java @@ -480,7 +480,7 @@ public class UiUtils { public static void confirmToggleBlockUser(Activity activity, String accountID, Account account, boolean currentlyBlocked, Consumer resultCallback) { showConfirmationAlert(activity, activity.getString(currentlyBlocked ? R.string.confirm_unblock_title : R.string.confirm_block_title), - activity.getString(currentlyBlocked ? R.string.confirm_unblock : R.string.confirm_block, account.displayName), + activity.getString(currentlyBlocked ? R.string.confirm_unblock : R.string.confirm_block, account.getDisplayName()), activity.getString(currentlyBlocked ? R.string.do_unblock : R.string.do_block), R.drawable.ic_fluent_person_prohibited_28_regular, () -> { @@ -508,7 +508,7 @@ public class UiUtils { public static void confirmSoftBlockUser(Activity activity, String accountID, Account account, Consumer resultCallback) { showConfirmationAlert(activity, activity.getString(R.string.sk_remove_follower), - activity.getString(R.string.sk_remove_follower_confirm, account.displayName), + activity.getString(R.string.sk_remove_follower_confirm, account.getDisplayName()), activity.getString(R.string.sk_do_remove_follower), R.drawable.ic_fluent_person_delete_24_regular, () -> new SetAccountBlocked(account.id, true).setCallback(new Callback<>() { @@ -566,7 +566,7 @@ public class UiUtils { params.setMargins(0, V.dp(-12), 0, 0); durationView.setLayoutParams(params); Button button=durationView.findViewById(R.id.button); - ((TextView) durationView.findViewById(R.id.message)).setText(context.getString(R.string.confirm_mute, account.displayName)); + ((TextView) durationView.findViewById(R.id.message)).setText(context.getString(R.string.confirm_mute, account.getDisplayName())); AtomicReference muteDuration=new AtomicReference<>(Duration.ZERO); @@ -600,7 +600,7 @@ public class UiUtils { new M3AlertDialogBuilder(context) .setTitle(context.getString(currentlyMuted ? R.string.confirm_unmute_title : R.string.confirm_mute_title)) - .setMessage(currentlyMuted ? context.getString(R.string.confirm_unmute, account.displayName) : null) + .setMessage(currentlyMuted ? context.getString(R.string.confirm_unmute, account.getDisplayName()) : null) .setView(currentlyMuted ? null : durationView) .setPositiveButton(context.getString(currentlyMuted ? R.string.do_unmute : R.string.do_mute), (dlg, i)->{ new SetAccountMuted(account.id, !currentlyMuted, muteDuration.get().getSeconds()) From 67cbc8aff22309eac85818db0714c4e7f364ddfc Mon Sep 17 00:00:00 2001 From: sk Date: Thu, 19 Oct 2023 01:06:03 +0200 Subject: [PATCH 64/88] don't load new posts every time we hit the top --- .../joinmastodon/android/fragments/HomeTimelineFragment.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java index 6717cf879..8cc030c07 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java @@ -74,9 +74,8 @@ public class HomeTimelineFragment extends StatusListFragment { list.addOnScrollListener(new RecyclerView.OnScrollListener(){ @Override public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy){ - if(parent!=null && list.getChildAdapterPosition(list.getChildAt(0))<=getMainAdapterOffset()){ - if(parent.isNewPostsBtnShown()) parent.hideNewPostsButton(); - else if(!dataLoading && GlobalUserPreferences.loadNewPosts) loadNewPosts(); + if(parent!=null && parent.isNewPostsBtnShown() && list.getChildAdapterPosition(list.getChildAt(0))<=getMainAdapterOffset()){ + parent.hideNewPostsButton(); } } }); From 49cda3aeb28a23a75d1384d7f087a1054163fabf Mon Sep 17 00:00:00 2001 From: poesty Date: Tue, 17 Oct 2023 03:25:54 +0000 Subject: [PATCH 65/88] Translated using Weblate (Chinese (Simplified)) Currently translated at 99.7% (393 of 394 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/zh_Hans/ --- mastodon/src/main/res/values-zh-rCN/strings_sk.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mastodon/src/main/res/values-zh-rCN/strings_sk.xml b/mastodon/src/main/res/values-zh-rCN/strings_sk.xml index 5132327f4..d207644ad 100644 --- a/mastodon/src/main/res/values-zh-rCN/strings_sk.xml +++ b/mastodon/src/main/res/values-zh-rCN/strings_sk.xml @@ -253,7 +253,7 @@ 投票结果 展开 折叠 - 修复附件? + 正在上传附件 部分附件尚未上传完毕。 已过滤:%s 折叠很长的嘟文 @@ -400,4 +400,5 @@ 设为默认 默认(%s) 链接加下划线 + 编辑 ALT 文本 \ No newline at end of file From ebd7f9c36cedaa7bb16bd7adf9b33405b2cadff6 Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Tue, 17 Oct 2023 20:04:56 +0000 Subject: [PATCH 66/88] Translated using Weblate (Spanish) Currently translated at 100.0% (394 of 394 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/ --- mastodon/src/main/res/values-es-rES/strings_sk.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mastodon/src/main/res/values-es-rES/strings_sk.xml b/mastodon/src/main/res/values-es-rES/strings_sk.xml index 55bf2526f..b36d66107 100644 --- a/mastodon/src/main/res/values-es-rES/strings_sk.xml +++ b/mastodon/src/main/res/values-es-rES/strings_sk.xml @@ -254,7 +254,7 @@ Ampliar Minimizar Minimizar publicaciones largas - ¿Corregir adjuntos\? + Cargando los archivos adjuntos Algunos adjuntos no han terminado de subirse. Añadir \"re\" a Avisos de Contenido Modo espectador @@ -407,4 +407,5 @@ Establecer por defecto Por defecto (%s) Enlaces subrayados + Editar el texto alternativo \ No newline at end of file From 8537c7a7aea93f655ddd3b3a8c21c9f3cb34eecb Mon Sep 17 00:00:00 2001 From: Choukajohn Date: Mon, 16 Oct 2023 19:20:13 +0000 Subject: [PATCH 67/88] Translated using Weblate (French) Currently translated at 100.0% (394 of 394 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/ --- mastodon/src/main/res/values-fr-rFR/strings_sk.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mastodon/src/main/res/values-fr-rFR/strings_sk.xml b/mastodon/src/main/res/values-fr-rFR/strings_sk.xml index 67ff1cbca..c80774739 100644 --- a/mastodon/src/main/res/values-fr-rFR/strings_sk.xml +++ b/mastodon/src/main/res/values-fr-rFR/strings_sk.xml @@ -256,7 +256,7 @@ Réduire les messages très longs Préfixer les CW avec \"re :\" en répondant à Filtré : %s - Corriger les pièces jointes \? + Téléchargement de pièces jointes Certaines pièces jointes n\'ont pas fini de se télécharger. Mode spectateur Masquer les boutons d\'interaction @@ -408,4 +408,5 @@ Définir par défaut Par défaut (%s) Liens soulignés + Modifier le texte alternatif \ No newline at end of file From 25dd2cfab814d53a1a7293459d7edbe1b59dee0a Mon Sep 17 00:00:00 2001 From: Linerly Date: Mon, 16 Oct 2023 23:44:27 +0000 Subject: [PATCH 68/88] Translated using Weblate (Indonesian) Currently translated at 100.0% (394 of 394 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/ --- mastodon/src/main/res/values-in-rID/strings_sk.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mastodon/src/main/res/values-in-rID/strings_sk.xml b/mastodon/src/main/res/values-in-rID/strings_sk.xml index 2ed7d6612..46370ddb1 100644 --- a/mastodon/src/main/res/values-in-rID/strings_sk.xml +++ b/mastodon/src/main/res/values-in-rID/strings_sk.xml @@ -260,7 +260,7 @@ Diikuti dari %s Awali peringatan konten dengan “re:” saat membalas Tutup kiriman yang sangat panjang - Perbaiki lampiran\? + Mengunggah lampiran Beberapa lampiran belum selesai diunggah. Sembunyikan tombol Komposer Dalam balasan @@ -401,4 +401,5 @@ Tetapkan sebagai bawaan Bawaan (%s) Tautan yang digarisbawahi + Sunting teks alternatif \ No newline at end of file From 23e5dcd03068237875dc2643b1793fb99a7708f5 Mon Sep 17 00:00:00 2001 From: alextecplayz Date: Mon, 16 Oct 2023 21:43:34 +0000 Subject: [PATCH 69/88] Translated using Weblate (Romanian) Currently translated at 100.0% (394 of 394 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ro/ --- mastodon/src/main/res/values-ro-rRO/strings_sk.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mastodon/src/main/res/values-ro-rRO/strings_sk.xml b/mastodon/src/main/res/values-ro-rRO/strings_sk.xml index 022e71dd0..09018fed4 100644 --- a/mastodon/src/main/res/values-ro-rRO/strings_sk.xml +++ b/mastodon/src/main/res/values-ro-rRO/strings_sk.xml @@ -125,7 +125,7 @@ raportat Utilizatori înregistrați Rapoarte noi - Reparați atașamentele\? + Încărcare atașamente Unele atașamente nu au terminat încărcarea. Tipul de conținut Nespecificat @@ -404,4 +404,5 @@ Setați ca implicit Implicit (%s) Link-uri subliniate + Editați text alternativ \ No newline at end of file From d721e8ca46294d04fee1fa9553d8320d48e6c3f7 Mon Sep 17 00:00:00 2001 From: David Lapshin Date: Tue, 17 Oct 2023 14:59:17 +0000 Subject: [PATCH 70/88] Translated using Weblate (Russian) Currently translated at 99.7% (393 of 394 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ru/ --- .../src/main/res/values-ru-rRU/strings_sk.xml | 58 ++++++++++--------- 1 file changed, 31 insertions(+), 27 deletions(-) diff --git a/mastodon/src/main/res/values-ru-rRU/strings_sk.xml b/mastodon/src/main/res/values-ru-rRU/strings_sk.xml index b5b763e35..ac8f1a2ca 100644 --- a/mastodon/src/main/res/values-ru-rRU/strings_sk.xml +++ b/mastodon/src/main/res/values-ru-rRU/strings_sk.xml @@ -15,7 +15,7 @@ Скрытый Отметить медиафайл как деликатный Megalodon v%1$s (%2$d) - Публикации + Посты Уведомдения о Цветовая схема Розовый @@ -38,7 +38,7 @@ Списки с %s Вы уверены, что хотите открепить этот пост\? Открепляем пост… - Это самые последние публикации людей из вашей федерации. + Это самые последние посты людей из вашей федерации. Обновление отсутствует Списки Принять запрос на подписку @@ -54,16 +54,16 @@ Вы точно хотите очистить недавно использованные языки\? Акула приветствует вас! Чтобы начать, пожалуйста, введите домен своего домашнего сервера (инстанса) ниже. Разрешить несколько вариантов ответа - Уведомления о постах %s включены - Уведомления о новых постах %s отключены + Включены уведомления о постах для %s + Выключены уведомления о постах для %s Система - Показать репосты + Показывать продвижения Показывать количество взаимодействий Отключить прокручиваемый текст в заголовках Красный Отключить жесты переключения между вкладками Настроить профиль - Настройки публикации + Настройки отправки Настройки фильтров Настройки безопасности Правила инстанса @@ -83,14 +83,14 @@ Вы точно хотите удалить все уведомления\? Отменить продвижение Продвижение с видимостью - Создать публикацию об этом - Скопировать ссылку на публикацию + Создать пост об этом + Скопировать ссылку на пост Открыть с другого аккаунта Ресурс не был найден Уже в закладках Добавить в избранное с другого аккаунта Уже в избранном - Продвигать на другом аккаунте + Продвинуть на другом аккаунте Продвинуть на %s Ответить с другого аккаунта Единая иконка для всех уведомлений @@ -101,25 +101,25 @@ Уже продвинуто Хештеги, на которые вы подписаны Просматриваем на %s - Неотправленные сообщения + Неотправленные посты Черновик - Назначить - Вы точно хотите удалить публикацию из черновика\? - Вы точно хотите удалить запланированную публикацию\? + Запланировать + Вы точно хотите удалить пост из черновика\? + Вы точно хотите удалить запланированный пост\? В черновики или запланировать Запланировано на Черновик сохранён - Публикация запланирована + Пост запланирован Запланированное время слишком ранее Сохранить черновик\? Сохранить изменения\? Пометить как черновик - Запланировать публикацию - Переслать пользователю %s + Запланировать пост + Переслать к %s Удалить черновик - Удалить запланированную публикацию - Публикация будет сохранена в черновики. - Публикация должна быть запланирована как минимум на 10 минут в будущем. + Удалить запланированный пост + Пост будет сохранен в черновики. + Пост должн быть запланирован как минимум на 10 минут в будущем. Главная Локальная Федерация @@ -134,9 +134,9 @@ Создать список Название списка Показать ответы для - Участников списка - Отслеживаемых пользователей - Некого + участников списка + отслеживаемых пользователей + никого Удалить список Изменить список Ваши списки @@ -237,7 +237,7 @@ · Только локальный инстанс Функции инстанса - Сервер поддерживает только локальные публикации + Сервер поддерживает только локальные посты Локальный режим Glitch Включите это если ваш инстанс работает на Glitch. Не требуется для Hometown или Akkoma. зарегистирован @@ -249,13 +249,13 @@ Кнопка «Показать новые записи» Версия сервера: %s Итоги голосования - Для работы этой функции ваш инстанс должен поддерживать локальные публикации. Большинство модифицированных версий Mastodon это поддерживают, но сам Mastodon нет. + Для работы этой функции ваш инстанс должен поддерживать локальные посты. Большинство модифицированных версий Mastodon это поддерживают, но сам Mastodon нет. Префикс CW с \"re:\" при ответе Отфильтровано: %s Развернуть Свернуть Сворачивать очень длинные посты - Исправить вложения\? + Выгрузка вложений Некоторые вложения еще не загрузились. Цитирование %s Видимость ответа @@ -321,7 +321,7 @@ Переключить ленту Тип содержимого Не указано - Это недавние посты из сети, управляемой администраторами этого сервера. + Это самые последние посты из сети, курируемые администраторами вашего экземпляра. Искать в Федивёрсе Использовать UnifiedPush Выберите распределитель @@ -332,7 +332,7 @@ Распределители не найдены Позволяет устанавливать тип содержимого вроде Markdown при создании поста. Имейте в виду, что это поддерживается не на всех серверах. Пробовать получить более точные данные о подписчиках, избранных и продвижениях, загрузив информацию из экземпляра происхождения. - Это позволяет предварительно выбирать тип содержимого при создании новых публикаций, переопределяя значение, установленное в “Параметры публикации”. + Это позволяет предварительно выбирать тип содержимого при создании новых постов, переопределяя значение, установленное в “Настройки отправки”. Эти посты сейчас набирают обороты в Fediverse. Позволять продолжить воспроизведение уже проигрываемого медиа, накладывая его на новое воспроизведение Наложение аудио @@ -418,4 +418,8 @@ Сделать список исключительным Недавно использованные Исключительный список + Сделать по умолчанию + По умолчанию (%s) + Подчеркнутые ссылки + Изменить альтернативный текст \ No newline at end of file From a11e53c89a554a52ad45a3c7dcbe84e96e72171c Mon Sep 17 00:00:00 2001 From: SomeTr Date: Mon, 16 Oct 2023 21:32:46 +0000 Subject: [PATCH 71/88] Translated using Weblate (Ukrainian) Currently translated at 100.0% (394 of 394 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/ --- mastodon/src/main/res/values-uk-rUA/strings_sk.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mastodon/src/main/res/values-uk-rUA/strings_sk.xml b/mastodon/src/main/res/values-uk-rUA/strings_sk.xml index 4425fb6cd..0e993d1fd 100644 --- a/mastodon/src/main/res/values-uk-rUA/strings_sk.xml +++ b/mastodon/src/main/res/values-uk-rUA/strings_sk.xml @@ -253,7 +253,7 @@ Відфільтровано: %s Розгорнути Згорнути - Виправити вкладення\? + Завантаження вкладень Префікс CW з «re:» під час відповіді Згортати надто довгі дописи Деякі вкладення не повністю завантажилися. @@ -409,4 +409,5 @@ Підкреслені посилання Установити типово Усталена (%s) + Редагувати альтернативний текст \ No newline at end of file From 47cb74abc99a4bc8c4aa652f3375f53f8607f07b Mon Sep 17 00:00:00 2001 From: SomeTr Date: Wed, 18 Oct 2023 06:20:25 +0000 Subject: [PATCH 72/88] Translated using Weblate (Ukrainian) Currently translated at 100.0% (394 of 394 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/ --- mastodon/src/main/res/values-uk-rUA/strings_sk.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mastodon/src/main/res/values-uk-rUA/strings_sk.xml b/mastodon/src/main/res/values-uk-rUA/strings_sk.xml index 0e993d1fd..57dbb427a 100644 --- a/mastodon/src/main/res/values-uk-rUA/strings_sk.xml +++ b/mastodon/src/main/res/values-uk-rUA/strings_sk.xml @@ -134,7 +134,7 @@ ніхто Видалити список Ви впевнені, що хочете видалити список «%s»\? - Редагувати список + Змінити список Ваші списки Оголошення Показувати лише одне сповіщення @@ -169,8 +169,8 @@ Відкріпити стрічку Прикріплено на головну Відкріплено з головної - Редагувати стрічку - Редагувати стрічки + Змінити стрічку + Змінити стрічки Змінені дописи Зміни й поширені дописи Місто From 20a442e27f198ccd08c02bb5a86ba4ea348c1736 Mon Sep 17 00:00:00 2001 From: ihor_ck Date: Tue, 17 Oct 2023 23:16:17 +0000 Subject: [PATCH 73/88] Translated using Weblate (Ukrainian) Currently translated at 100.0% (394 of 394 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/ --- mastodon/src/main/res/values-uk-rUA/strings_sk.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mastodon/src/main/res/values-uk-rUA/strings_sk.xml b/mastodon/src/main/res/values-uk-rUA/strings_sk.xml index 57dbb427a..070c3136a 100644 --- a/mastodon/src/main/res/values-uk-rUA/strings_sk.xml +++ b/mastodon/src/main/res/values-uk-rUA/strings_sk.xml @@ -253,10 +253,10 @@ Відфільтровано: %s Розгорнути Згорнути - Завантаження вкладень + Вивантаження вкладень Префікс CW з «re:» під час відповіді Згортати надто довгі дописи - Деякі вкладення не повністю завантажилися. + Деякі вкладення вивантажилися не повністю. Режим глядача Сховати кнопки взаємодії Підписатися з іншого облікового запису @@ -409,5 +409,5 @@ Підкреслені посилання Установити типово Усталена (%s) - Редагувати альтернативний текст + Змінити альтернативний текст \ No newline at end of file From ec718ff58ede1402aeaa44ddec5aaba07dc6d81a Mon Sep 17 00:00:00 2001 From: butterflyoffire Date: Wed, 18 Oct 2023 05:56:43 +0000 Subject: [PATCH 74/88] Translated using Weblate (Arabic) Currently translated at 80.4% (317 of 394 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ar/ --- mastodon/src/main/res/values-ar/strings_sk.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/mastodon/src/main/res/values-ar/strings_sk.xml b/mastodon/src/main/res/values-ar/strings_sk.xml index ae1bf46ca..0fd5f9c75 100644 --- a/mastodon/src/main/res/values-ar/strings_sk.xml +++ b/mastodon/src/main/res/values-ar/strings_sk.xml @@ -324,4 +324,5 @@ تراكُب صوتي تمكين تمرير النص في عناوين الأشرطة تعطيل التمرير بين الألسِنة + افتراضي (%s) \ No newline at end of file From 34b7123a8d83ea8d3a9b4c3bffff75e30e87440f Mon Sep 17 00:00:00 2001 From: EndermanCo Date: Wed, 18 Oct 2023 17:34:09 +0000 Subject: [PATCH 75/88] Translated using Weblate (Persian) Currently translated at 100.0% (394 of 394 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/ --- mastodon/src/main/res/values-fa/strings_sk.xml | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/mastodon/src/main/res/values-fa/strings_sk.xml b/mastodon/src/main/res/values-fa/strings_sk.xml index 88388d96b..d801c695d 100644 --- a/mastodon/src/main/res/values-fa/strings_sk.xml +++ b/mastodon/src/main/res/values-fa/strings_sk.xml @@ -310,7 +310,7 @@ %s واکنش نشان داد هم‌رسانی با حساب وارد کردن پیشوند CW با “re:” هنگام پاسخ دادن - رفع مشکل پیوست‌ها؟ + درحال بارگذاری پیوست‌ها بارگیری اطلاعات از نمونه های راه دور بارگیری نمایه از طریق %s شکست خورد پاسخ به پی‌گیر های من @@ -363,7 +363,7 @@ واکنش با ایموجی دوباره برای کیبورد سامانه ضربه بزنید لطفا یک ایموجی تایپ کنید - برای واکنش با ایموجی تایپ کنید + یک ایموجی بنویسید یا جستجو کنید یک کاربر با %2$s واکنش نشان داد %1$,d کاربر با %2$s واکنش نشان دادند @@ -388,11 +388,19 @@ یک راه کمکی بیابید دوباره نمایش نده https://findahelpline.com - اینها فرسته‌هایی هستند که در کارساز شما مورد توجه قرار می گیرند. + این فرسته‌ها در حال حاضر در فدیورس مورد توجه قرار گرفته اند. بارگذاری فرسته‌های قدیمی‌تر اگر نیازمند کمک هستید… %d دقیقه اگر به دنبال نشانه ای برای خودکشی نیستید، همین است. لطفاً اگر نیازمند کمک هستید با شماره تلفن محلی خودکشی تماس بگیرید. - اینها اخباری است که در کارساز شما در مورد آنها صحبت می شود. + این اخبار در سراسر فدیورس درباره آنها صحبت می شود. فرسته حاوی رسانه‌ست + تنظیم به‌عنوان پیش‌گزیده + استفاده از قلب به عنوان نماد برگزیدن + پیش‌گزیده (%s) + حساب‌های مسدود شده + پیوندهای خط دار + حساب‌های خموش شده + اخیرا مورد استفاده قرار گرفته + ویرایش متن جایگزین \ No newline at end of file From 1d2ca1e500f348ff138523ab5f33905b0f5fc13e Mon Sep 17 00:00:00 2001 From: Jacoco <63549689+Jacocococo@users.noreply.github.com> Date: Thu, 19 Oct 2023 15:42:29 +0200 Subject: [PATCH 76/88] fix: hiding discovery on Akkoma + hiding privacy settings (#867) * Hide privacy settings on Akkoma * Fix Akkoma skipping discovery * Make settings order more clear in the code --- .../org/joinmastodon/android/fragments/HomeFragment.java | 4 ---- .../android/fragments/discover/DiscoverFragment.java | 4 +++- .../android/fragments/settings/SettingsMainFragment.java | 5 +++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeFragment.java index d57a530ab..1ddf727ae 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeFragment.java @@ -32,7 +32,6 @@ import org.joinmastodon.android.events.NotificationsMarkerUpdatedEvent; import org.joinmastodon.android.events.StatusDisplaySettingsChangedEvent; import org.joinmastodon.android.fragments.discover.DiscoverFragment; import org.joinmastodon.android.model.Account; -import org.joinmastodon.android.model.Instance; import org.joinmastodon.android.model.Notification; import org.joinmastodon.android.model.PaginatedResponse; import org.joinmastodon.android.ui.AccountSwitcherSheet; @@ -71,14 +70,12 @@ public class HomeFragment extends AppKitFragment implements OnBackPressedListene private TextView notificationsBadge; private String accountID; - private boolean isAkkoma; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); accountID=getArguments().getString("account"); setTitle(R.string.sk_app_name); - isAkkoma = getInstance().map(Instance::isAkkoma).orElse(false); if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.N) setRetainInstance(true); @@ -89,7 +86,6 @@ public class HomeFragment extends AppKitFragment implements OnBackPressedListene homeTabFragment=new HomeTabFragment(); homeTabFragment.setArguments(args); args=new Bundle(args); - args.putBoolean("disableDiscover", isAkkoma); args.putBoolean("noAutoLoad", true); discoverFragment=new DiscoverFragment(); discoverFragment.setArguments(args); diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/discover/DiscoverFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/discover/DiscoverFragment.java index b1d356364..366e8fe5c 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/discover/DiscoverFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/discover/DiscoverFragment.java @@ -13,8 +13,10 @@ import android.widget.LinearLayout; import android.widget.TextView; import org.joinmastodon.android.R; +import org.joinmastodon.android.api.session.AccountSessionManager; import org.joinmastodon.android.fragments.IsOnTop; import org.joinmastodon.android.fragments.ScrollableToTop; +import org.joinmastodon.android.model.Instance; import org.joinmastodon.android.model.SearchResult; import org.joinmastodon.android.ui.OutlineProviders; import org.joinmastodon.android.ui.SimpleViewHolder; @@ -155,7 +157,7 @@ public class DiscoverFragment extends AppKitFragment implements ScrollableToTop, } }); - disableDiscover=getArguments().getBoolean("disableDiscover"); + disableDiscover=AccountSessionManager.get(accountID).getInstance().map(Instance::isAkkoma).orElse(false); searchView=view.findViewById(R.id.search_fragment); if(searchFragment==null){ searchFragment=new SearchFragment(); diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsMainFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsMainFragment.java index a83a56672..ef6be19a1 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsMainFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsMainFragment.java @@ -56,7 +56,6 @@ public class SettingsMainFragment extends BaseSettingsFragment{ onDataLoaded(List.of( new ListItem<>(R.string.settings_behavior, 0, R.drawable.ic_fluent_settings_24_regular, this::onBehaviorClick), new ListItem<>(R.string.settings_display, 0, R.drawable.ic_fluent_color_24_regular, this::onDisplayClick), - new ListItem<>(R.string.settings_privacy, 0, R.drawable.ic_fluent_shield_24_regular, this::onPrivacyClick), new ListItem<>(R.string.settings_notifications, 0, R.drawable.ic_fluent_alert_24_regular, this::onNotificationsClick), new ListItem<>(R.string.sk_settings_instance, 0, R.drawable.ic_fluent_server_24_regular, this::onInstanceClick), new ListItem<>(getString(R.string.about_app, getString(R.string.sk_app_name)), null, R.drawable.ic_fluent_info_24_regular, this::onAboutClick, null, 0, true), @@ -65,8 +64,10 @@ public class SettingsMainFragment extends BaseSettingsFragment{ )); Instance instance = AccountSessionManager.getInstance().getInstanceInfo(account.domain); - if (!instance.isAkkoma()) + if (!instance.isAkkoma()){ + data.add(2, new ListItem<>(R.string.settings_privacy, 0, R.drawable.ic_fluent_shield_24_regular, this::onPrivacyClick)); data.add(3, new ListItem<>(R.string.settings_filters, 0, R.drawable.ic_fluent_filter_24_regular, this::onFiltersClick)); + } if(BuildConfig.DEBUG || BuildConfig.BUILD_TYPE.equals("appcenterPrivateBeta")){ data.add(0, new ListItem<>("Debug settings", null, R.drawable.ic_fluent_wrench_screwdriver_24_regular, i->Nav.go(getActivity(), SettingsDebugFragment.class, makeFragmentArgs()), null, 0, true)); From 50a0586e8ae4261d27307513712272c3e7e80707 Mon Sep 17 00:00:00 2001 From: sk Date: Thu, 19 Oct 2023 16:02:51 +0200 Subject: [PATCH 77/88] fix content type index and title --- .../settings/SettingsInstanceFragment.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsInstanceFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsInstanceFragment.java index e86df44f4..6dd90718a 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsInstanceFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsInstanceFragment.java @@ -19,6 +19,7 @@ import org.joinmastodon.android.ui.utils.UiUtils; import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; import java.util.stream.IntStream; import me.grishka.appkit.Nav; @@ -88,22 +89,22 @@ public class SettingsInstanceFragment extends BaseSettingsFragment impleme } private void onDefaultContentTypeClick(ListItem item_){ - int selected=lp.defaultContentType.ordinal(); - int[] newSelected={selected}; - ContentType[] supportedContentTypes=Arrays.stream(ContentType.values()) + List supportedContentTypes=Arrays.stream(ContentType.values()) .filter(t->t.supportedByInstance(getInstance().orElse(null))) - .toArray(ContentType[]::new); - String[] names=Arrays.stream(supportedContentTypes) + .collect(Collectors.toList()); + int selected=supportedContentTypes.indexOf(lp.defaultContentType); + int[] newSelected={selected}; + String[] names=supportedContentTypes.stream() .map(ContentType::getName) .map(this::getString) .toArray(String[]::new); new M3AlertDialogBuilder(getActivity()) - .setTitle(R.string.settings_theme) + .setTitle(R.string.sk_settings_default_content_type) .setSingleChoiceItems(names, selected, (dlg, item)->newSelected[0]=item) .setPositiveButton(R.string.ok, (dlg, item)->{ - ContentType type=supportedContentTypes[newSelected[0]]; + ContentType type=supportedContentTypes.get(newSelected[0]); lp.defaultContentType=type; defaultContentTypeItem.subtitleRes=type.getName(); rebindItem(defaultContentTypeItem); From d34c73c2103bb8f5a6ede66e78ad408c00d50843 Mon Sep 17 00:00:00 2001 From: sk Date: Thu, 19 Oct 2023 16:49:23 +0200 Subject: [PATCH 78/88] add options for locking account and default vis --- .../android/api/session/AccountSession.java | 2 +- .../settings/SettingsMainFragment.java | 8 +- .../settings/SettingsPrivacyFragment.java | 80 ++++++++++++++++--- .../ic_fluent_person_available_24_regular.xml | 3 + mastodon/src/main/res/values/strings_sk.xml | 2 + 5 files changed, 79 insertions(+), 16 deletions(-) create mode 100644 mastodon/src/main/res/drawable/ic_fluent_person_available_24_regular.xml diff --git a/mastodon/src/main/java/org/joinmastodon/android/api/session/AccountSession.java b/mastodon/src/main/java/org/joinmastodon/android/api/session/AccountSession.java index e75b5c6d4..3f9f1fe26 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/api/session/AccountSession.java +++ b/mastodon/src/main/java/org/joinmastodon/android/api/session/AccountSession.java @@ -218,7 +218,7 @@ public class AccountSession{ public void savePreferencesIfPending(){ if(preferencesNeedSaving){ - new UpdateAccountCredentialsPreferences(preferences, null, self.discoverable, self.source.indexable) + new UpdateAccountCredentialsPreferences(preferences, self.locked, self.discoverable, self.source.indexable) .setCallback(new Callback<>(){ @Override public void onSuccess(Account result){ diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsMainFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsMainFragment.java index ef6be19a1..d359a7f60 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsMainFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsMainFragment.java @@ -50,12 +50,13 @@ public class SettingsMainFragment extends BaseSettingsFragment{ @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); - account = AccountSessionManager.get(accountID); + account=AccountSessionManager.get(accountID); setTitle(R.string.settings); setSubtitle(account.getFullUsername()); onDataLoaded(List.of( new ListItem<>(R.string.settings_behavior, 0, R.drawable.ic_fluent_settings_24_regular, this::onBehaviorClick), new ListItem<>(R.string.settings_display, 0, R.drawable.ic_fluent_color_24_regular, this::onDisplayClick), + new ListItem<>(R.string.settings_privacy, 0, R.drawable.ic_fluent_shield_24_regular, this::onPrivacyClick), new ListItem<>(R.string.settings_notifications, 0, R.drawable.ic_fluent_alert_24_regular, this::onNotificationsClick), new ListItem<>(R.string.sk_settings_instance, 0, R.drawable.ic_fluent_server_24_regular, this::onInstanceClick), new ListItem<>(getString(R.string.about_app, getString(R.string.sk_app_name)), null, R.drawable.ic_fluent_info_24_regular, this::onAboutClick, null, 0, true), @@ -63,9 +64,8 @@ public class SettingsMainFragment extends BaseSettingsFragment{ new ListItem<>(R.string.log_out, 0, R.drawable.ic_fluent_sign_out_24_regular, this::onLogOutClick, R.attr.colorM3Error, false) )); - Instance instance = AccountSessionManager.getInstance().getInstanceInfo(account.domain); - if (!instance.isAkkoma()){ - data.add(2, new ListItem<>(R.string.settings_privacy, 0, R.drawable.ic_fluent_shield_24_regular, this::onPrivacyClick)); + Instance instance=AccountSessionManager.getInstance().getInstanceInfo(account.domain); + if(!instance.isAkkoma()){ data.add(3, new ListItem<>(R.string.settings_filters, 0, R.drawable.ic_fluent_filter_24_regular, this::onFiltersClick)); } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsPrivacyFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsPrivacyFragment.java index a1df2984f..6f8e76830 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsPrivacyFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsPrivacyFragment.java @@ -2,40 +2,98 @@ package org.joinmastodon.android.fragments.settings; import android.os.Bundle; +import androidx.annotation.StringRes; + import org.joinmastodon.android.R; +import org.joinmastodon.android.api.session.AccountSession; import org.joinmastodon.android.api.session.AccountSessionManager; import org.joinmastodon.android.model.Account; +import org.joinmastodon.android.model.Instance; +import org.joinmastodon.android.model.StatusPrivacy; import org.joinmastodon.android.model.viewmodel.CheckableListItem; +import org.joinmastodon.android.model.viewmodel.ListItem; +import org.joinmastodon.android.ui.M3AlertDialogBuilder; +import java.util.ArrayList; import java.util.List; public class SettingsPrivacyFragment extends BaseSettingsFragment{ - private CheckableListItem discoverableItem, indexableItem; + private CheckableListItem discoverableItem, indexableItem, lockedItem; + private ListItem privacyItem; + private StatusPrivacy privacy=null; + private Instance instance; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setTitle(R.string.settings_privacy); - Account self=AccountSessionManager.get(accountID).self; + AccountSession session=AccountSessionManager.get(accountID); + Account self=session.self; + instance=AccountSessionManager.getInstance().getInstanceInfo(session.domain); + privacy=self.source.privacy; onDataLoaded(List.of( - discoverableItem=new CheckableListItem<>(R.string.settings_discoverable, 0, CheckableListItem.Style.SWITCH, self.discoverable, R.drawable.ic_fluent_thumb_like_dislike_24_regular, i->toggleCheckableItem(discoverableItem)), - indexableItem=new CheckableListItem<>(R.string.settings_indexable, 0, CheckableListItem.Style.SWITCH, self.source.indexable!=null ? self.source.indexable : true, R.drawable.ic_fluent_search_24_regular, i->toggleCheckableItem(indexableItem)) + privacyItem=new ListItem<>(R.string.sk_settings_default_visibility, getPrivacyString(privacy), R.drawable.ic_fluent_eye_24_regular, this::onPrivacyClick, 0, true), + lockedItem=new CheckableListItem<>(R.string.sk_settings_lock_account, 0, CheckableListItem.Style.SWITCH, self.locked, R.drawable.ic_fluent_person_available_24_regular, i->toggleCheckableItem(lockedItem)) )); - if(self.source.indexable==null) - indexableItem.isEnabled=false; + + if(!instance.isAkkoma()){ + data.addAll(List.of( + discoverableItem=new CheckableListItem<>(R.string.settings_discoverable, 0, CheckableListItem.Style.SWITCH, self.discoverable, R.drawable.ic_fluent_thumb_like_dislike_24_regular, i->toggleCheckableItem(discoverableItem)), + indexableItem=new CheckableListItem<>(R.string.settings_indexable, 0, CheckableListItem.Style.SWITCH, self.source.indexable!=null ? self.source.indexable : true, R.drawable.ic_fluent_search_24_regular, i->toggleCheckableItem(indexableItem)) + )); + if(self.source.indexable==null) + indexableItem.isEnabled=false; + } } @Override protected void doLoadData(int offset, int count){} + private @StringRes int getPrivacyString(StatusPrivacy p){ + if(p==null) return R.string.visibility_public; + return switch(p){ + case PUBLIC -> R.string.visibility_public; + case UNLISTED -> R.string.sk_visibility_unlisted; + case PRIVATE -> R.string.visibility_followers_only; + case DIRECT -> R.string.visibility_private; + case LOCAL -> R.string.sk_local_only; + }; + } + + private void onPrivacyClick(ListItem item_){ + Account self=AccountSessionManager.get(accountID).self; + List options=new ArrayList<>(List.of(StatusPrivacy.PUBLIC, StatusPrivacy.UNLISTED, StatusPrivacy.PRIVATE, StatusPrivacy.DIRECT)); + if(instance.isAkkoma()) options.add(StatusPrivacy.LOCAL); + int selected=options.indexOf(self.source.privacy); + int[] newSelected={selected}; + new M3AlertDialogBuilder(getActivity()) + .setTitle(R.string.sk_settings_default_visibility) + .setSingleChoiceItems(options.stream().map(this::getPrivacyString).map(this::getString).toArray(String[]::new), + selected, (dlg, item)->newSelected[0]=item) + .setPositiveButton(R.string.ok, (dlg, item)->{ + privacy=options.get(newSelected[0]); + privacyItem.subtitleRes=getPrivacyString(privacy); + rebindItem(privacyItem); + }) + .setNegativeButton(R.string.cancel, null) + .show(); + } + @Override public void onPause(){ super.onPause(); - Account self=AccountSessionManager.get(accountID).self; - if(self.discoverable!=discoverableItem.checked || (self.source.indexable!=null && self.source.indexable!=indexableItem.checked)){ - self.discoverable=discoverableItem.checked; - self.source.indexable=indexableItem.checked; - AccountSessionManager.get(accountID).savePreferencesLater(); + AccountSession s=AccountSessionManager.get(accountID); + Account self=s.self; + boolean savePlease=self.locked!=lockedItem.checked + || self.source.privacy!=privacy + || (discoverableItem!=null && self.discoverable!=discoverableItem.checked) + || (indexableItem!=null && self.source.indexable!=null && self.source.indexable!=indexableItem.checked); + if(savePlease){ + if(discoverableItem!=null) self.discoverable=discoverableItem.checked; + if(indexableItem!=null) self.source.indexable=indexableItem.checked; + self.locked=lockedItem.checked; + s.preferences.postingDefaultVisibility=privacy; + s.savePreferencesLater(); } } } diff --git a/mastodon/src/main/res/drawable/ic_fluent_person_available_24_regular.xml b/mastodon/src/main/res/drawable/ic_fluent_person_available_24_regular.xml new file mode 100644 index 000000000..3473b7348 --- /dev/null +++ b/mastodon/src/main/res/drawable/ic_fluent_person_available_24_regular.xml @@ -0,0 +1,3 @@ + + + diff --git a/mastodon/src/main/res/values/strings_sk.xml b/mastodon/src/main/res/values/strings_sk.xml index 25b92cfc8..02c1286a1 100644 --- a/mastodon/src/main/res/values/strings_sk.xml +++ b/mastodon/src/main/res/values/strings_sk.xml @@ -414,4 +414,6 @@ Edit alt text Clear home timeline cache Cleared message cache + Manually approve new followers + Default posting visibility \ No newline at end of file From 70f5ec7500b62b6c7124f54a27e12c5fd7ee46c1 Mon Sep 17 00:00:00 2001 From: sk Date: Thu, 19 Oct 2023 16:54:07 +0200 Subject: [PATCH 79/88] update header layout --- mastodon/src/main/res/layout/fragment_compose.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mastodon/src/main/res/layout/fragment_compose.xml b/mastodon/src/main/res/layout/fragment_compose.xml index 8d493cbdf..fa0c628fe 100644 --- a/mastodon/src/main/res/layout/fragment_compose.xml +++ b/mastodon/src/main/res/layout/fragment_compose.xml @@ -110,7 +110,7 @@ android:layout_marginStart="8sp" android:ellipsize="end" android:singleLine="true" - android:textAppearance="@style/m3_title_medium" + android:textAppearance="@style/m3_body_medium" android:textAlignment="viewStart" android:textColor="?colorM3OnSurface" tools:text="@string/sk_inline_local_only" /> From 17116823220240e6f88e814f1a6a004500eb0a6d Mon Sep 17 00:00:00 2001 From: sk Date: Thu, 19 Oct 2023 16:54:23 +0200 Subject: [PATCH 80/88] don't display extra text if visibility == local --- .../org/joinmastodon/android/fragments/ComposeFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java index f036bdf4a..2e7345fce 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java @@ -1454,7 +1454,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr } private void updateHeaders() { - UiUtils.setExtraTextInfo(getContext(), selfExtraText, false, false, localOnly || statusVisibility==StatusPrivacy.LOCAL, null); + UiUtils.setExtraTextInfo(getContext(), selfExtraText, false, false, localOnly, null); if (replyTo != null) UiUtils.setExtraTextInfo(getContext(), extraText, true, false, replyTo.localOnly || replyTo.visibility==StatusPrivacy.LOCAL, replyTo.account); } From 875b235e6d0c3fdd29b84a4b855dac0088e1e8b7 Mon Sep 17 00:00:00 2001 From: sk Date: Thu, 19 Oct 2023 16:58:26 +0200 Subject: [PATCH 81/88] restart when show replies/boosts changes closes sk22#879 --- .../android/fragments/settings/SettingsBehaviorFragment.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsBehaviorFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsBehaviorFragment.java index 93ccd17fa..62c32d8fb 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsBehaviorFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsBehaviorFragment.java @@ -176,6 +176,8 @@ public class SettingsBehaviorFragment extends BaseSettingsFragment impleme GlobalUserPreferences.allowRemoteLoading=remoteLoadingItem.checked; GlobalUserPreferences.save(); AccountLocalPreferences lp=getLocalPrefs(); + boolean restartPlease=lp.showBoosts!=showBoostsItem.checked + || lp.showReplies!=showRepliesItem.checked; lp.showBoosts=showBoostsItem.checked; lp.showReplies=showRepliesItem.checked; lp.save(); @@ -186,6 +188,7 @@ public class SettingsBehaviorFragment extends BaseSettingsFragment impleme s.preferences.postingDefaultLanguage=newPostLanguage.language.getLanguage(); s.savePreferencesLater(); } + if(restartPlease) getActivity().recreate(); } @Override From 48b39fd3bc8ea3c4f82f6772530ad2bf86e765b4 Mon Sep 17 00:00:00 2001 From: sk Date: Thu, 19 Oct 2023 16:59:45 +0200 Subject: [PATCH 82/88] boop version --- mastodon/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mastodon/build.gradle b/mastodon/build.gradle index 504535fa0..8b83c28ac 100644 --- a/mastodon/build.gradle +++ b/mastodon/build.gradle @@ -15,8 +15,8 @@ android { applicationId "org.joinmastodon.android.sk" minSdk 23 targetSdk 33 - versionCode 105 - versionName "2.1.6+fork.105" + versionCode 106 + versionName "2.1.6+fork.106" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" resourceConfigurations += ['ar-rSA', 'ar-rDZ', 'be-rBY', 'bn-rBD', 'bs-rBA', 'ca-rES', 'cs-rCZ', 'da-rDK', 'de-rDE', 'el-rGR', 'es-rES', 'eu-rES', 'fa-rIR', 'fi-rFI', 'fil-rPH', 'fr-rFR', 'ga-rIE', 'gd-rGB', 'gl-rES', 'hi-rIN', 'hr-rHR', 'hu-rHU', 'hy-rAM', 'ig-rNG', 'in-rID', 'is-rIS', 'it-rIT', 'iw-rIL', 'ja-rJP', 'kab', 'ko-rKR', 'my-rMM', 'nl-rNL', 'no-rNO', 'oc-rFR', 'pl-rPL', 'pt-rBR', 'pt-rPT', 'ro-rRO', 'ru-rRU', 'si-rLK', 'sl-rSI', 'sv-rSE', 'th-rTH', 'tr-rTR', 'uk-rUA', 'ur-rIN', 'vi-rVN', 'zh-rCN', 'zh-rTW'] } From d699788a1237dd2badb9ea3d76e8f92deeab9474 Mon Sep 17 00:00:00 2001 From: sk Date: Thu, 19 Oct 2023 17:07:18 +0200 Subject: [PATCH 83/88] fix string --- .../android/fragments/settings/SettingsAboutAppFragment.java | 2 +- mastodon/src/main/res/values/strings_sk.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsAboutAppFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsAboutAppFragment.java index ea92d5153..7d80f34d8 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsAboutAppFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsAboutAppFragment.java @@ -84,7 +84,7 @@ public class SettingsAboutAppFragment extends BaseSettingsFragment{ private void onClearTimelineCacheClick(ListItem item){ session.getCacheController().putHomeTimeline(List.of(), true); - Toast.makeText(getContext(), R.string.sk_message_cache_cleared, Toast.LENGTH_SHORT).show(); + Toast.makeText(getContext(), R.string.sk_timeline_cache_cleared, Toast.LENGTH_SHORT).show(); timelineCacheCleared=true; } diff --git a/mastodon/src/main/res/values/strings_sk.xml b/mastodon/src/main/res/values/strings_sk.xml index 02c1286a1..aa2a893d0 100644 --- a/mastodon/src/main/res/values/strings_sk.xml +++ b/mastodon/src/main/res/values/strings_sk.xml @@ -413,7 +413,7 @@ Set as default Edit alt text Clear home timeline cache - Cleared message cache + Cleared home timeline cache Manually approve new followers Default posting visibility \ No newline at end of file From b0db0d9f2e47fcf88185b7e7742941e778cc6875 Mon Sep 17 00:00:00 2001 From: Choukajohn Date: Thu, 19 Oct 2023 13:01:16 +0000 Subject: [PATCH 84/88] Translated using Weblate (French) Currently translated at 100.0% (396 of 396 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/ --- mastodon/src/main/res/values-fr-rFR/strings_sk.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mastodon/src/main/res/values-fr-rFR/strings_sk.xml b/mastodon/src/main/res/values-fr-rFR/strings_sk.xml index c80774739..990536865 100644 --- a/mastodon/src/main/res/values-fr-rFR/strings_sk.xml +++ b/mastodon/src/main/res/values-fr-rFR/strings_sk.xml @@ -409,4 +409,6 @@ Par défaut (%s) Liens soulignés Modifier le texte alternatif + Cache des messages vidé + Effacer le cache du fil d\'accueil \ No newline at end of file From cc52e491b05c84580c4ed01c542b8f9c4b89186f Mon Sep 17 00:00:00 2001 From: SomeTr Date: Thu, 19 Oct 2023 14:36:57 +0000 Subject: [PATCH 85/88] Translated using Weblate (Ukrainian) Currently translated at 100.0% (396 of 396 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/ --- mastodon/src/main/res/values-uk-rUA/strings_sk.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mastodon/src/main/res/values-uk-rUA/strings_sk.xml b/mastodon/src/main/res/values-uk-rUA/strings_sk.xml index 070c3136a..e8af5689c 100644 --- a/mastodon/src/main/res/values-uk-rUA/strings_sk.xml +++ b/mastodon/src/main/res/values-uk-rUA/strings_sk.xml @@ -410,4 +410,6 @@ Установити типово Усталена (%s) Змінити альтернативний текст + Кеш повідомлень очищено + Очистити кеш домашньої стрічки \ No newline at end of file From e1af6f46434e26ccb54b61253a668c41c2aaf48e Mon Sep 17 00:00:00 2001 From: SomeTr Date: Thu, 19 Oct 2023 14:45:06 +0000 Subject: [PATCH 86/88] Translated using Weblate (Ukrainian) Currently translated at 100.0% (18 of 18 strings) Translation: Megalodon/metadata Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/uk/ --- metadata/uk/changelogs/76.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metadata/uk/changelogs/76.txt b/metadata/uk/changelogs/76.txt index 579bcd270..32033786b 100644 --- a/metadata/uk/changelogs/76.txt +++ b/metadata/uk/changelogs/76.txt @@ -2,5 +2,5 @@ - Перероблена сторінка профілю з метаданими безпосередньо під біографією - Функція згортання/розгортання дуже довгих повідомлень - Опція автоматичного додавання префікса «re:» до відповідей на CW-повідомлення -- Можливість сховати кнопки взаємодії на часовій шкалі +- Можливість сховати кнопки взаємодії у стрічці - Різноманітні виправлення, зміни та поліпшення From 3198c9adb11a1de887ef914a86e898552b22b410 Mon Sep 17 00:00:00 2001 From: sk22 Date: Thu, 19 Oct 2023 15:03:36 +0000 Subject: [PATCH 87/88] Translated using Weblate (German) Currently translated at 99.2% (395 of 398 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/ --- mastodon/src/main/res/values-de-rDE/strings_sk.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mastodon/src/main/res/values-de-rDE/strings_sk.xml b/mastodon/src/main/res/values-de-rDE/strings_sk.xml index f8cd46a65..5392f73df 100644 --- a/mastodon/src/main/res/values-de-rDE/strings_sk.xml +++ b/mastodon/src/main/res/values-de-rDE/strings_sk.xml @@ -255,7 +255,7 @@ Erweitern Einklappen Sehr lange Beiträge einklappen - Anhänge richtig stellen\? + Anhänge laden hoch Interaktions-Buttons verstecken Einige Anhänge sind nicht fertig hochgeladen. Mit %s gefolgt @@ -410,4 +410,6 @@ Standardwert (%s) Unterstrichene Links Zuletzt verwendet + Start-Timeline leeren + Bildbeschreibung bearbeiten \ No newline at end of file From 95fa547f15d3d5bdbb708fdcc153552ac445740b Mon Sep 17 00:00:00 2001 From: sk22 Date: Thu, 19 Oct 2023 15:12:12 +0000 Subject: [PATCH 88/88] Translated using Weblate (German) Currently translated at 100.0% (398 of 398 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/ --- mastodon/src/main/res/values-de-rDE/strings_sk.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mastodon/src/main/res/values-de-rDE/strings_sk.xml b/mastodon/src/main/res/values-de-rDE/strings_sk.xml index 5392f73df..ca92c4d93 100644 --- a/mastodon/src/main/res/values-de-rDE/strings_sk.xml +++ b/mastodon/src/main/res/values-de-rDE/strings_sk.xml @@ -295,7 +295,7 @@ Infos von Remote-Instanzen laden keine Remote-Infos abrufbar Konnte das Profil via %s nicht laden - Für vollständigere Auflistung von Follower*innen, Likes und Boosts können die Informationen von der Ursprungs-Instanz geladen werden. + Für vollständigere Auflistung von Follower_innen, Likes und Boosts können die Informationen von der Ursprungs-Instanz geladen werden. Automatisches Aufdecken von gleichen CWs in Antworten von Nie Antworten, die von der gleichen Person verfasst wurden @@ -412,4 +412,7 @@ Zuletzt verwendet Start-Timeline leeren Bildbeschreibung bearbeiten + Standard-Sichtbarkeit für Posts + Neue Follower_innen manuell genehmigen + Start-Timeline geleert \ No newline at end of file