Compare commits

..

49 Commits

Author SHA1 Message Date
sk
5ed6f97846 update changelog 2022-12-31 03:08:08 +01:00
sk
7dc195606c fix empty space when no text 2022-12-31 03:07:14 +01:00
sk
b2377a3353 tweak scroll height/timing 2022-12-31 02:54:33 +01:00
sk
0fdae0c775 Revert "match navigation bar color with toolbar"
This reverts commit 43d334259b.
2022-12-31 02:50:18 +01:00
sk
113bbd960f move settings items 2022-12-31 02:40:49 +01:00
sk
a48e09e77b bump version 2022-12-31 02:02:38 +01:00
sk
3c3f759d9a update readme 2022-12-31 02:02:00 +01:00
sk
5f0986d03b add option to reduce motion 2022-12-31 02:00:40 +01:00
sk
579794d7e0 peek original post before scrolling 2022-12-31 01:52:07 +01:00
sk
4956543eac update changelog 2022-12-31 01:37:39 +01:00
sk
87043f19bc Merge remote-tracking branch 'weblate/main' 2022-12-31 01:35:07 +01:00
sk
375f8ceb27 display original post when replying
closes sk22#193
2022-12-31 01:33:37 +01:00
sk
496ad6a442 change interact with strings 2022-12-30 23:08:04 +01:00
ihor_ck
83a09c4af2 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (12 of 12 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/uk/
2022-12-30 21:54:40 +00:00
gallegonovato
fac6985d01 Translated using Weblate (Spanish)
Currently translated at 100.0% (12 of 12 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/es/
2022-12-30 21:54:40 +00:00
Linerly
43670ba62b Translated using Weblate (Indonesian)
Currently translated at 100.0% (12 of 12 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/id/
2022-12-30 21:54:40 +00:00
Choukajohn
ef511349f8 Translated using Weblate (French)
Currently translated at 100.0% (12 of 12 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/fr/
2022-12-30 21:54:40 +00:00
ihor_ck
eea0199a21 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (121 of 121 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2022-12-30 21:54:40 +00:00
Linerly
7e0f02ecc7 Translated using Weblate (Indonesian)
Currently translated at 100.0% (121 of 121 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2022-12-30 21:54:40 +00:00
Choukajohn
7b26a65ea0 Translated using Weblate (French)
Currently translated at 100.0% (121 of 121 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2022-12-30 21:54:40 +00:00
gallegonovato
c5b92d7162 Translated using Weblate (Spanish)
Currently translated at 100.0% (121 of 121 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2022-12-30 21:54:40 +00:00
bubblineyuri
f8387f0a81 Translated using Weblate (German)
Currently translated at 100.0% (12 of 12 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/de/
2022-12-30 21:54:40 +00:00
bubblineyuri
8486326b00 Translated using Weblate (German)
Currently translated at 100.0% (121 of 121 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/
2022-12-30 21:54:40 +00:00
edxkl
8f64747e75 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (11 of 11 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/pt_BR/
2022-12-30 21:54:40 +00:00
ihor_ck
f75efdaa03 Translated using Weblate (Ukrainian)
Currently translated at 96.6% (115 of 119 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2022-12-30 21:54:40 +00:00
Linerly
ee8d9d0c07 Translated using Weblate (Indonesian)
Currently translated at 100.0% (119 of 119 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2022-12-30 21:54:40 +00:00
ling0412
6791adef46 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (119 of 119 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/zh_Hans/
2022-12-30 21:54:40 +00:00
irure
80bcb84acf Translated using Weblate (Basque)
Currently translated at 18.1% (2 of 11 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/eu/
2022-12-30 21:54:40 +00:00
AiOO
7d6b0f9ca8 Translated using Weblate (Korean)
Currently translated at 100.0% (11 of 11 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/ko/
2022-12-30 21:54:39 +00:00
nkufideal
594f6d4fc5 Translated using Weblate (Russian)
Currently translated at 100.0% (11 of 11 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/ru/
2022-12-30 21:54:39 +00:00
nkufideal
e40acb9bf6 Translated using Weblate (Russian)
Currently translated at 100.0% (102 of 102 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ru/
2022-12-30 21:54:39 +00:00
itslameni
e372871108 Translated using Weblate (Russian)
Currently translated at 100.0% (102 of 102 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ru/
2022-12-30 21:54:39 +00:00
edxkl
1c01469a3e Translated using Weblate (Portuguese (Brazil))
Currently translated at 80.3% (82 of 102 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pt_BR/
2022-12-30 21:54:39 +00:00
irure
90c2e45be2 Translated using Weblate (Basque)
Currently translated at 100.0% (102 of 102 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/eu/
2022-12-30 21:54:39 +00:00
AiOO
1a783d4faf Translated using Weblate (Korean)
Currently translated at 100.0% (102 of 102 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ko/
2022-12-30 21:54:39 +00:00
edxkl
d2944983a4 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (11 of 11 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/pt_BR/
2022-12-30 21:54:39 +00:00
ihor_ck
26459eecb0 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (102 of 102 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2022-12-30 21:54:39 +00:00
Linerly
90dea16222 Translated using Weblate (Indonesian)
Currently translated at 100.0% (102 of 102 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2022-12-30 21:54:39 +00:00
Choukajohn
8897a326b3 Translated using Weblate (French)
Currently translated at 100.0% (102 of 102 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2022-12-30 21:54:39 +00:00
gallegonovato
f3e69ddef1 Translated using Weblate (Spanish)
Currently translated at 100.0% (102 of 102 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2022-12-30 21:54:39 +00:00
ling0412
8ecaa2c4d1 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (102 of 102 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/zh_Hans/
2022-12-30 21:54:39 +00:00
sk
3a607a81f6 add compose fab to drafts list 2022-12-30 22:54:07 +01:00
sk
4b113e4a82 handle recursive compose/drafts list 2022-12-30 22:34:41 +01:00
sk
3e0e0c1484 move and refine scheduling and drafting 2022-12-30 21:48:59 +01:00
sk
676e166459 move compose action to layout file 2022-12-30 19:24:30 +01:00
sk
f0a704b93b schedule/draft in overflow menu 2022-12-29 20:24:37 +01:00
sk
cfc528df9a Merge remote-tracking branch 'origin/main' 2022-12-29 20:12:31 +01:00
sk
9231ea1446 offer to save when scheduledAt changed
closes sk22#218
2022-12-29 20:12:08 +01:00
sk22
f2f9138435 Update README.md 2022-12-29 18:39:32 +01:00
58 changed files with 993 additions and 388 deletions

View File

@@ -31,7 +31,7 @@ Despite being one of the main features of federated social media, the Federated
Thats one of the reasons why choosing a small, **well-moderated instance is important**. Instance admins and moderators should always make sure to ban abusive users and stop federating with instances who platform them. On well-moderated instances, the Federated timeline can be a welcoming place to meet new people!
## Draft and schedule posts
### Draft and schedule posts
**Allows for preparing a post and scheduling it to send it automatically at a specific time.**
@@ -141,7 +141,6 @@ There's also a handful of custom strings exclusive to this projects that would n
* [Add notifications tab for posts](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/posts-notifications-tab)
* [Show visibility of original post when replying](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/display-reply-visibility)
* [Clickable reply/boost line above posts](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:clickable-boost-reply-line)
* [Clickable reply line while replying to open original post](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/clickable-reply-line-compose)
* [Add push notification setting for post notifications](https://github.com/sk22/megalodon/commit/b190480d7739be47f23543d9e7644660f9b4b4ee)
* [Add option to allow voting for multiple options on polls](https://github.com/sk22/megalodon/commit/5b28468efd49387b4f8b83f142f3adf3104ca60c)
* [Add translate function](https://github.com/mastodon/mastodon-android/compare/master...sk22:megalodon:feature/translate-button)
@@ -149,6 +148,7 @@ There's also a handful of custom strings exclusive to this projects that would n
* [Implement deleting notifications](https://github.com/sk22/megalodon/commit/b0f9ce081f69f29ad59658fc00ca41372cd2677d) (disabled by default)
* [Long-click boost button to "quote" a post](https://github.com/sk22/megalodon/commit/b25a237c20c6a924ed4d9b357999867c3a32b32b)
* [Draft and schedule posts](https://github.com/sk22/megalodon/pull/217)
* [Display original post when replying](https://github.com/sk22/megalodon/commit/375f8ceb2747705fedf43686681cc0e0b812f899)
### Behavior

View File

@@ -9,8 +9,8 @@ android {
applicationId "org.joinmastodon.android.sk"
minSdk 23
targetSdk 33
versionCode 64
versionName "1.1.5+fork.64"
versionCode 65
versionName "1.1.5+fork.65"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
resConfigs "ar-rSA", "be-rBY", "bn-rBD", "bs-rBA", "ca-rES", "cs-rCZ", "de-rDE", "el-rGR", "es-rES", "eu-rES", "fi-rFI", "fil-rPH", "fr-rFR", "ga-rIE", "gd-rGB", "gl-rES", "hi-rIN", "hr-rHR", "hu-rHU", "hy-rAM", "in-rID", "is-rIS", "it-rIT", "iw-rIL", "ja-rJP", "kab", "ko-rKR", "nl-rNL", "oc-rFR", "pl-rPL", "pt-rBR", "pt-rPT", "ro-rRO", "ru-rRU", "si-rLK", "sl-rSI", "sv-rSE", "th-rTH", "tr-rTR", "uk-rUA", "vi-rVN", "zh-rCN", "zh-rTW"
}

View File

@@ -29,6 +29,7 @@ public class GlobalUserPreferences{
public static boolean enableDeleteNotifications;
public static boolean translateButtonOpenedOnly;
public static boolean uniformNotificationIcon;
public static boolean reduceMotion;
public static String publishButtonText;
public static ThemePreference theme;
public static ColorPreference color;
@@ -62,6 +63,7 @@ public class GlobalUserPreferences{
enableDeleteNotifications=prefs.getBoolean("enableDeleteNotifications", false);
translateButtonOpenedOnly=prefs.getBoolean("translateButtonOpenedOnly", false);
uniformNotificationIcon=prefs.getBoolean("uniformNotificationIcon", false);
reduceMotion=prefs.getBoolean("reduceMotion", false);
publishButtonText=prefs.getString("publishButtonText", "");
theme=ThemePreference.values()[prefs.getInt("theme", 0)];
recentLanguages=fromJson(prefs.getString("recentLanguages", "{}"), recentLanguagesType, new HashMap<>());
@@ -90,6 +92,7 @@ public class GlobalUserPreferences{
.putBoolean("enableDeleteNotifications", enableDeleteNotifications)
.putBoolean("translateButtonOpenedOnly", translateButtonOpenedOnly)
.putBoolean("uniformNotificationIcon", uniformNotificationIcon)
.putBoolean("reduceMotion", reduceMotion)
.putString("publishButtonText", publishButtonText)
.putInt("theme", theme.ordinal())
.putString("color", color.name())

View File

@@ -33,6 +33,7 @@ import android.provider.OpenableColumns;
import android.text.Editable;
import android.text.InputFilter;
import android.text.Layout;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextUtils;
import android.text.TextWatcher;
@@ -59,6 +60,7 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.PopupMenu;
import android.widget.ProgressBar;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;
@@ -107,6 +109,7 @@ import org.joinmastodon.android.ui.utils.TransferSpeedTracker;
import org.joinmastodon.android.ui.utils.UiUtils;
import org.joinmastodon.android.ui.views.ComposeEditText;
import org.joinmastodon.android.ui.views.ComposeMediaLayout;
import org.joinmastodon.android.ui.views.LinkedTextView;
import org.joinmastodon.android.ui.views.ReorderableLinearLayout;
import org.joinmastodon.android.ui.views.SizeListenerLinearLayout;
import org.joinmastodon.android.utils.MastodonLanguage;
@@ -144,6 +147,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
private static final int MEDIA_RESULT=717;
private static final int IMAGE_DESCRIPTION_RESULT=363;
private static final int SCHEDULED_STATUS_OPENED_RESULT=161;
private static final int MAX_ATTACHMENTS=4;
private static final String TAG="ComposeFragment";
@@ -167,9 +171,9 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
private String accountID;
private int charCount, charLimit, trimmedCharCount;
private Button publishButton, languageButton, scheduleTimeBtn;
private PopupMenu languagePopup, visibilityPopup, scheduleDraftPopup;
private ImageButton mediaBtn, pollBtn, emojiBtn, spoilerBtn, visibilityBtn, scheduleBtn, scheduleDraftDismiss;
private Button publishButton, languageButton, scheduleTimeBtn, draftsBtn;
private PopupMenu languagePopup, visibilityPopup, draftOptionsPopup;
private ImageButton mediaBtn, pollBtn, emojiBtn, spoilerBtn, visibilityBtn, scheduleDraftDismiss;
private ImageView sensitiveIcon;
private ComposeMediaLayout attachmentsView;
private TextView replyText;
@@ -179,9 +183,12 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
private View sensitiveItem;
private View pollAllowMultipleItem;
private View scheduleDraftView;
private ScrollView scrollView;
private boolean initiallyScrolled = false;
private TextView scheduleDraftText;
private CheckBox pollAllowMultipleCheckbox;
private TextView pollDurationView;
private MenuItem draftMenuItem, undraftMenuItem, scheduleMenuItem, unscheduleMenuItem;
private ArrayList<DraftPollOption> pollOptions=new ArrayList<>();
@@ -220,14 +227,10 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
private String language;
private MastodonLanguage.LanguageResolver languageResolver;
private int navigationBarColorBefore;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setRetainInstance(true);
navigationBarColorBefore = getActivity().getWindow().getNavigationBarColor();
getActivity().getWindow().setNavigationBarColor(UiUtils.getThemeColor(getActivity(), R.attr.colorBackgroundLightest));
accountID=getArguments().getString("account");
AccountSession session=AccountSessionManager.getInstance().getAccount(accountID);
@@ -248,7 +251,6 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
AccountSessionManager.getInstance().updateInstanceInfo(instanceDomain);
}
// sorry about all this ugly code, but i can't find any consistency in ComposeFragment.java
Bundle bundle = savedInstanceState != null ? savedInstanceState : getArguments();
if (bundle.containsKey("scheduledStatus")) scheduledStatus=Parcels.unwrap(bundle.getParcelable("scheduledStatus"));
if (bundle.containsKey("scheduledAt")) scheduledAt=(Instant) bundle.getSerializable("scheduledAt");
@@ -272,7 +274,6 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
UiUtils.removeCallbacks(updateUploadEtaRunnable);
updateUploadEtaRunnable=null;
}
getActivity().getWindow().setNavigationBarColor(navigationBarColorBefore);
}
@Override
@@ -294,10 +295,11 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
mainEditTextWrap=view.findViewById(R.id.toot_text_wrap);
charCounter=view.findViewById(R.id.char_counter);
charCounter.setText(String.valueOf(charLimit));
scrollView=view.findViewById(R.id.scroll_view);
selfName=view.findViewById(R.id.name);
selfUsername=view.findViewById(R.id.username);
selfAvatar=view.findViewById(R.id.avatar);
selfName=view.findViewById(R.id.self_name);
selfUsername=view.findViewById(R.id.self_username);
selfAvatar=view.findViewById(R.id.self_avatar);
HtmlParser.setTextWithCustomEmoji(selfName, self.displayName, self.emojis);
selfUsername.setText('@'+self.username+'@'+instanceDomain);
ViewImageLoader.load(selfAvatar, null, new UrlImageLoaderRequest(self.avatar));
@@ -315,7 +317,6 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
emojiBtn=view.findViewById(R.id.btn_emoji);
spoilerBtn=view.findViewById(R.id.btn_spoiler);
visibilityBtn=view.findViewById(R.id.btn_visibility);
scheduleBtn=view.findViewById(R.id.btn_schedule);
scheduleDraftView=view.findViewById(R.id.schedule_draft_view);
scheduleDraftText=view.findViewById(R.id.schedule_draft_text);
scheduleDraftDismiss=view.findViewById(R.id.schedule_draft_dismiss);
@@ -332,19 +333,6 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
visibilityBtn.setOnClickListener(v->visibilityPopup.show());
visibilityBtn.setOnTouchListener(visibilityPopup.getDragToOpenListener());
scheduleDraftPopup=new PopupMenu(getContext(), scheduleBtn);
scheduleDraftPopup.inflate(R.menu.schedule_draft);
scheduleDraftPopup.setOnMenuItemClickListener(item->{
if (item.getItemId() == R.id.draft) updateScheduledAt(getDraftInstant());
else pickScheduledDateTime();
return true;
});
UiUtils.enablePopupMenuIcons(getContext(), scheduleDraftPopup);
scheduleBtn.setOnClickListener(v->{
if (scheduledAt != null) updateScheduledAt(null);
else scheduleDraftPopup.show();
});
scheduleBtn.setOnTouchListener(scheduleDraftPopup.getDragToOpenListener());
scheduleDraftDismiss.setOnClickListener(v->updateScheduledAt(null));
scheduleTimeBtn.setOnClickListener(v->pickScheduledDateTime());
@@ -572,6 +560,77 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
});
spoilerEdit.addTextChangedListener(new SimpleTextWatcher(e->updateCharCounter()));
if(replyTo!=null){
View replyWrap = view.findViewById(R.id.reply_wrap);
scrollView.getViewTreeObserver().addOnGlobalLayoutListener(() -> {
int scrollHeight = scrollView.getHeight();
if (replyWrap.getMinimumHeight() != scrollHeight) {
replyWrap.setMinimumHeight(scrollHeight);
if (!initiallyScrolled) {
initiallyScrolled = true;
scrollView.post(() -> {
int bottom = scrollView.getChildAt(0).getBottom();
int delta = bottom - (scrollView.getScrollY() + scrollView.getHeight());
int space = GlobalUserPreferences.reduceMotion ? 0 : Math.min(V.dp(120), delta);
scrollView.scrollBy(0, delta - space);
if (!GlobalUserPreferences.reduceMotion) {
scrollView.postDelayed(() -> scrollView.smoothScrollBy(0, space), 100);
}
});
}
}
});
View originalPost = view.findViewById(R.id.original_post);
originalPost.setVisibility(View.VISIBLE);
originalPost.setOnClickListener(v->{
Bundle args=new Bundle();
args.putString("account", accountID);
args.putParcelable("status", Parcels.wrap(replyTo));
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
Nav.go(getActivity(), ThreadFragment.class, args);
});
ImageView avatar = view.findViewById(R.id.avatar);
ViewImageLoader.load(avatar, null, new UrlImageLoaderRequest(replyTo.account.avatar));
ViewOutlineProvider roundCornersOutline=new ViewOutlineProvider(){
@Override
public void getOutline(View view, Outline outline){
outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), V.dp(12));
}
};
avatar.setOutlineProvider(roundCornersOutline);
avatar.setClipToOutline(true);
avatar.setOnClickListener(v->{
Bundle args=new Bundle();
args.putString("account", accountID);
args.putParcelable("profileAccount", Parcels.wrap(replyTo.account));
Nav.go(getActivity(), ProfileFragment.class, args);
});
((TextView) view.findViewById(R.id.name)).setText(replyTo.account.displayName);
((TextView) view.findViewById(R.id.username)).setText(replyTo.account.getDisplayUsername());
view.findViewById(R.id.visibility).setVisibility(View.GONE);
Drawable visibilityIcon = getActivity().getDrawable(switch(replyTo.visibility){
case PUBLIC -> R.drawable.ic_fluent_earth_20_regular;
case UNLISTED -> R.drawable.ic_fluent_people_community_20_regular;
case PRIVATE -> R.drawable.ic_fluent_people_checkmark_20_regular;
case DIRECT -> R.drawable.ic_fluent_mention_20_regular;
});
ImageView moreBtn = view.findViewById(R.id.more);
moreBtn.setImageDrawable(visibilityIcon);
moreBtn.setBackground(null);
TextView timestamp = view.findViewById(R.id.timestamp);
if (replyTo.editedAt==null) timestamp.setText(UiUtils.formatRelativeTimestamp(getContext(), replyTo.createdAt));
else timestamp.setText(getString(R.string.edited_timestamp, UiUtils.formatRelativeTimestamp(getContext(), replyTo.editedAt)));
if (replyTo.spoilerText != null && !replyTo.spoilerText.isBlank()) {
view.findViewById(R.id.spoiler_header).setVisibility(View.VISIBLE);
((TextView) view.findViewById(R.id.spoiler_title_inline)).setText(replyTo.spoilerText);
}
SpannableStringBuilder content = HtmlParser.parse(replyTo.content, replyTo.emojis, replyTo.mentions, replyTo.tags, accountID);
LinkedTextView text = view.findViewById(R.id.text);
if (content.length() > 0) text.setText(content);
else view.findViewById(R.id.display_item_text).setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, V.dp(16)));
replyText.setText(getString(R.string.in_reply_to, replyTo.account.displayName));
int visibilityNameRes = switch (replyTo.visibility) {
case PUBLIC -> R.string.visibility_public;
@@ -580,24 +639,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
case DIRECT -> R.string.visibility_private;
};
replyText.setContentDescription(getString(R.string.in_reply_to, replyTo.account.displayName) + ". " + getString(R.string.post_visibility) + ": " + getString(visibilityNameRes));
Drawable visibilityIcon = getActivity().getDrawable(switch(replyTo.visibility){
case PUBLIC -> R.drawable.ic_fluent_earth_20_regular;
case UNLISTED -> R.drawable.ic_fluent_people_community_20_regular;
case PRIVATE -> R.drawable.ic_fluent_people_checkmark_20_regular;
case DIRECT -> R.drawable.ic_fluent_mention_20_regular;
});
visibilityIcon.setBounds(0, 0, V.dp(20), V.dp(20));
Drawable replyArrow = getActivity().getDrawable(R.drawable.ic_fluent_arrow_reply_20_filled);
replyArrow.setBounds(0, 0, V.dp(20), V.dp(20));
replyText.setCompoundDrawables(replyArrow, null, visibilityIcon, null);
replyText.setOnClickListener(v->{
Bundle args=new Bundle();
args.putString("account", accountID);
args.putParcelable("status", Parcels.wrap(replyTo));
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
Nav.go(getActivity(), ThreadFragment.class, args);
});
ArrayList<String> mentions=new ArrayList<>();
String ownID=AccountSessionManager.getInstance().getAccount(accountID).self.id;
if(!replyTo.account.id.equals(ownID))
@@ -672,7 +714,6 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
}
updateSensitive();
updateScheduledAt(scheduledAt != null ? scheduledAt : scheduledStatus != null ? scheduledStatus.scheduledAt : null);
if(editingStatus!=null){
updateCharCounter();
@@ -682,40 +723,55 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater){
publishButton=new Button(getActivity());
resetPublishButtonText();
publishButton.setSingleLine();
publishButton.setEllipsize(TextUtils.TruncateAt.END);
publishButton.setOnClickListener(this::onPublishClick);
LinearLayout wrap=new LinearLayout(getActivity());
wrap.setOrientation(LinearLayout.HORIZONTAL);
sendProgress=new ProgressBar(getActivity());
LinearLayout.LayoutParams progressLP=new LinearLayout.LayoutParams(V.dp(24), V.dp(24));
progressLP.setMarginEnd(V.dp(16));
progressLP.gravity=Gravity.CENTER_VERTICAL;
wrap.addView(sendProgress, progressLP);
sendError=new ImageView(getActivity());
sendError.setImageResource(R.drawable.ic_fluent_error_circle_24_regular);
sendError.setImageTintList(getResources().getColorStateList(R.color.error_600));
sendError.setScaleType(ImageView.ScaleType.CENTER);
wrap.addView(sendError, progressLP);
sendError.setVisibility(View.GONE);
sendProgress.setVisibility(View.GONE);
LinearLayout.LayoutParams langParams=new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
langParams.setMarginEnd(V.dp(8));
wrap.addView(buildLanguageSelector(), langParams);
wrap.addView(publishButton, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
wrap.setPadding(V.dp(16), V.dp(4), V.dp(16), V.dp(8));
wrap.setClipToPadding(false);
MenuItem item=menu.add(editingStatus==null ? R.string.publish : R.string.save);
LinearLayout wrap=new LinearLayout(getActivity());
getActivity().getLayoutInflater().inflate(R.layout.compose_action, wrap);
item.setActionView(wrap);
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
updatePublishButtonState();
draftsBtn = wrap.findViewById(R.id.drafts_btn);
draftOptionsPopup = new PopupMenu(getContext(), draftsBtn);
draftOptionsPopup.inflate(R.menu.compose_more);
draftMenuItem = draftOptionsPopup.getMenu().findItem(R.id.draft);
undraftMenuItem = draftOptionsPopup.getMenu().findItem(R.id.undraft);
scheduleMenuItem = draftOptionsPopup.getMenu().findItem(R.id.schedule);
unscheduleMenuItem = draftOptionsPopup.getMenu().findItem(R.id.unschedule);
draftOptionsPopup.setOnMenuItemClickListener(i->{
int id = i.getItemId();
if (id == R.id.draft) updateScheduledAt(getDraftInstant());
else if (id == R.id.schedule) pickScheduledDateTime();
else if (id == R.id.unschedule || id == R.id.undraft) updateScheduledAt(null);
else navigateToUnsentPosts();
return true;
});
UiUtils.enablePopupMenuIcons(getContext(), draftOptionsPopup);
publishButton = wrap.findViewById(R.id.publish_btn);
languageButton = wrap.findViewById(R.id.language_btn);
sendProgress = wrap.findViewById(R.id.send_progress);
sendError = wrap.findViewById(R.id.send_error);
publishButton.setOnClickListener(this::onPublishClick);
draftsBtn.setOnClickListener(v-> draftOptionsPopup.show());
draftsBtn.setOnTouchListener(draftOptionsPopup.getDragToOpenListener());
updateScheduledAt(scheduledAt != null ? scheduledAt : scheduledStatus != null ? scheduledStatus.scheduledAt : null);
buildLanguageSelector(languageButton);
}
private void navigateToUnsentPosts() {
Bundle args=new Bundle();
args.putString("account", accountID);
args.putBoolean("hide_fab", true);
InputMethodManager imm=getActivity().getSystemService(InputMethodManager.class);
imm.hideSoftInputFromWindow(draftsBtn.getWindowToken(), 0);
if (hasDraft()) {
Nav.go(getActivity(), ScheduledStatusListFragment.class, args);
} else {
// result for the previous ScheduledStatusList
setResult(true, null);
// finishing fragment in "onFragmentResult"
Nav.goForResult(getActivity(), ScheduledStatusListFragment.class, args, SCHEDULED_STATUS_OPENED_RESULT, this);
}
}
private void updateLanguage(String lang) {
@@ -729,18 +785,10 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
}
@SuppressLint("ClickableViewAccessibility")
private Button buildLanguageSelector() {
languageButton=new Button(getActivity());
languageButton.setTextColor(UiUtils.getThemeColor(getActivity(), android.R.attr.textColorSecondary));
languageButton.setBackground(getActivity().getDrawable(R.drawable.bg_text_button));
languageButton.setPadding(V.dp(8), 0, V.dp(8), 0);
languageButton.setCompoundDrawablesRelativeWithIntrinsicBounds(getActivity().getDrawable(R.drawable.ic_fluent_local_language_16_regular), null, null, null);
languageButton.setCompoundDrawableTintList(languageButton.getTextColors());
languageButton.setCompoundDrawablePadding(V.dp(6));
private void buildLanguageSelector(Button btn) {
languagePopup=new PopupMenu(getActivity(), languageButton);
languageButton.setOnTouchListener(languagePopup.getDragToOpenListener());
languageButton.setOnClickListener(v->languagePopup.show());
btn.setOnTouchListener(languagePopup.getDragToOpenListener());
btn.setOnClickListener(v->languagePopup.show());
Preferences prefs = AccountSessionManager.getInstance().getAccount(accountID).preferences;
updateLanguage(prefs != null && prefs.postingDefaultLanguage != null && prefs.postingDefaultLanguage.length() > 0
@@ -764,8 +812,6 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
updateLanguage(allLanguages.get(i.getItemId()));
return true;
});
return languageButton;
}
@Override
@@ -838,25 +884,6 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
@Override
protected void updateToolbar(){
super.updateToolbar();
if (replyTo != null || hasDraft()) return;
Button draftsBtn=new Button(getActivity());
draftsBtn.setTextColor(UiUtils.getThemeColor(getActivity(), android.R.attr.textColorSecondary));
draftsBtn.setBackground(getActivity().getDrawable(R.drawable.bg_text_button));
draftsBtn.setPadding(V.dp(8), 0, V.dp(8), 0);
draftsBtn.setCompoundDrawablesRelativeWithIntrinsicBounds(getActivity().getDrawable(R.drawable.ic_fluent_drafts_20_regular), null, null, null);
draftsBtn.setCompoundDrawableTintList(draftsBtn.getTextColors());
draftsBtn.setContentDescription(getString(R.string.sk_unsent_posts));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) draftsBtn.setTooltipText(getString(R.string.sk_unsent_posts));
draftsBtn.setOnClickListener(v->{
Bundle args=new Bundle();
args.putString("account", accountID);
InputMethodManager imm=getActivity().getSystemService(InputMethodManager.class);
imm.hideSoftInputFromWindow(draftsBtn.getWindowToken(), 0);
Nav.go(getActivity(), ScheduledStatusListFragment.class, args);
// TODO: figure out a better way to handle the back stack
// if (!hasDraft()) content.postDelayed(()->Nav.finish(this), 200);
});
getToolbar().addView(draftsBtn);
getToolbar().setNavigationIcon(R.drawable.ic_fluent_dismiss_24_regular);
}
@@ -1029,6 +1056,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
if(!existingMediaIDs.equals(attachments.stream().map(a->a.serverAttachment.id).collect(Collectors.toList())))
return true;
if(!statusVisibility.equals(editingStatus.visibility)) return true;
if(scheduledStatus != null && !scheduledStatus.scheduledAt.equals(scheduledAt)) return true;
return pollChanged;
}
boolean pollFieldsHaveContent=false;
@@ -1073,14 +1101,16 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
break;
}
}
} else if (reqCode == SCHEDULED_STATUS_OPENED_RESULT && success && getActivity() != null) {
Nav.finish(this);
}
}
private void confirmDiscardDraftAndFinish(){
new M3AlertDialogBuilder(getActivity())
.setTitle(editingStatus != null ? R.string.sk_save_changes : R.string.sk_save_draft)
.setTitle(editingStatus != null ? R.string.sk_confirm_save_changes : R.string.sk_confirm_save_draft)
.setPositiveButton(R.string.save, (d, w) -> {
updateScheduledAt(getDraftInstant());
updateScheduledAt(scheduledAt == null ? getDraftInstant() : scheduledAt);
publish();
})
.setNegativeButton(R.string.discard, (d, w) -> Nav.finish(this))
@@ -1575,23 +1605,39 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
private void updateScheduledAt(Instant scheduledAt) {
this.scheduledAt = scheduledAt;
scheduleDraftView.setVisibility(scheduledAt == null ? View.GONE : View.VISIBLE);
scheduleBtn.setSelected(scheduledAt != null);
updatePublishButtonState();
scheduleDraftView.setVisibility(scheduledAt == null ? View.GONE : View.VISIBLE);
draftMenuItem.setVisible(true);
scheduleMenuItem.setVisible(true);
undraftMenuItem.setVisible(false);
unscheduleMenuItem.setVisible(false);
if (scheduledAt != null) {
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM).withLocale(Locale.getDefault());
if (scheduledAt.isAfter(DRAFTS_AFTER_INSTANT)) {
draftMenuItem.setVisible(false);
undraftMenuItem.setVisible(true);
scheduleTimeBtn.setVisibility(View.GONE);
scheduleDraftText.setText(R.string.sk_compose_draft);
publishButton.setText(scheduledStatus != null ? R.string.save : R.string.sk_draft);
scheduleDraftText.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_fluent_drafts_20_regular, 0, 0, 0);
scheduleDraftDismiss.setContentDescription(getString(R.string.sk_compose_no_draft));
draftsBtn.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_fluent_drafts_20_filled, 0, 0, 0);
publishButton.setText(scheduledStatus != null && scheduledStatus.scheduledAt.isAfter(DRAFTS_AFTER_INSTANT)
? R.string.save : R.string.sk_draft);
} else {
scheduleMenuItem.setVisible(false);
unscheduleMenuItem.setVisible(true);
String at = scheduledAt.atZone(ZoneId.systemDefault()).format(formatter);
scheduleTimeBtn.setVisibility(View.VISIBLE);
scheduleTimeBtn.setText(at);
scheduleDraftText.setText(R.string.sk_compose_scheduled);
publishButton.setText(scheduledStatus != null ? R.string.save : R.string.sk_schedule);
scheduleDraftText.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
scheduleDraftDismiss.setContentDescription(getString(R.string.sk_compose_no_schedule));
draftsBtn.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_fluent_clock_20_filled, 0, 0, 0);
publishButton.setText(scheduledStatus != null && scheduledStatus.scheduledAt.equals(scheduledAt)
? R.string.save : R.string.sk_schedule);
}
} else {
draftsBtn.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_fluent_clock_20_regular, 0, 0, 0);
resetPublishButtonText();
}
}

View File

@@ -105,7 +105,7 @@ public class HomeTimelineFragment extends StatusListFragment{
super.onViewCreated(view, savedInstanceState);
fab=view.findViewById(R.id.fab);
fab.setOnClickListener(this::onFabClick);
fab.setOnLongClickListener(v->UiUtils.pickAccountForCompose(getActivity(), accountID, null));
fab.setOnLongClickListener(v->UiUtils.pickAccountForCompose(getActivity(), accountID));
updateToolbarLogo();
list.addOnScrollListener(new RecyclerView.OnScrollListener(){

View File

@@ -1,7 +1,6 @@
package org.joinmastodon.android.fragments;
import android.app.Activity;
import android.media.MediaRouter;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
@@ -70,7 +69,7 @@ public class ListTimelineFragment extends StatusListFragment {
super.onViewCreated(view, savedInstanceState);
fab=view.findViewById(R.id.fab);
fab.setOnClickListener(this::onFabClick);
fab.setOnLongClickListener(v -> UiUtils.pickAccountForCompose(getActivity(), accountID, null));
fab.setOnLongClickListener(v -> UiUtils.pickAccountForCompose(getActivity(), accountID));
}
private void onFabClick(View v){

View File

@@ -2,22 +2,22 @@ package org.joinmastodon.android.fragments;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import com.squareup.otto.Subscribe;
import org.joinmastodon.android.E;
import org.joinmastodon.android.R;
import org.joinmastodon.android.api.requests.statuses.GetBookmarkedStatuses;
import org.joinmastodon.android.api.requests.statuses.CreateStatus;
import org.joinmastodon.android.api.requests.statuses.GetScheduledStatuses;
import org.joinmastodon.android.api.session.AccountSessionManager;
import org.joinmastodon.android.events.ScheduledStatusCreatedEvent;
import org.joinmastodon.android.events.ScheduledStatusDeletedEvent;
import org.joinmastodon.android.events.StatusCreatedEvent;
import org.joinmastodon.android.events.StatusDeletedEvent;
import org.joinmastodon.android.model.HeaderPaginationList;
import org.joinmastodon.android.model.ScheduledStatus;
import org.joinmastodon.android.model.Status;
import org.joinmastodon.android.ui.displayitems.StatusDisplayItem;
import org.joinmastodon.android.ui.utils.UiUtils;
import org.parceler.Parcels;
import java.util.Collections;
@@ -28,6 +28,12 @@ import me.grishka.appkit.api.SimpleCallback;
public class ScheduledStatusListFragment extends BaseStatusListFragment<ScheduledStatus> {
private String nextMaxID;
private ImageButton fab;
private static final int SCHEDULED_STATUS_LIST_OPENED = 161;
public ScheduledStatusListFragment() {
setListLayoutId(R.layout.recycler_fragment_with_fab);
}
@Override
public void onCreate(Bundle savedInstanceState){
@@ -49,6 +55,18 @@ public class ScheduledStatusListFragment extends BaseStatusListFragment<Schedule
loadData();
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
fab=view.findViewById(R.id.fab);
Bundle args=new Bundle();
args.putString("account", accountID);
args.putSerializable("scheduledAt", CreateStatus.getDraftInstant());
fab.setOnClickListener(v -> Nav.go(getActivity(), ComposeFragment.class, args));
fab.setOnLongClickListener(v -> UiUtils.pickAccountForCompose(getActivity(), accountID, args));
if (getArguments().getBoolean("hide_fab", false)) fab.setVisibility(View.GONE);
}
@Override
protected List<StatusDisplayItem> buildDisplayItems(ScheduledStatus s) {
return StatusDisplayItem.buildItems(this, s.toStatus(), accountID, s, knownAccounts, false, false, null);
@@ -68,7 +86,17 @@ public class ScheduledStatusListFragment extends BaseStatusListFragment<Schedule
args.putString("sourceText", status.text);
args.putString("sourceSpoiler", status.spoilerText);
args.putBoolean("redraftStatus", true);
Nav.go(getActivity(), ComposeFragment.class, args);
setResult(true, null);
// closing this scheduled status list if another status list is opened from compose fragment
Nav.goForResult(getActivity(), ComposeFragment.class, args, SCHEDULED_STATUS_LIST_OPENED, this);
}
@Override
public void onFragmentResult(int reqCode, boolean success, Bundle result) {
if (reqCode == SCHEDULED_STATUS_LIST_OPENED && success && getActivity() != null) {
Nav.finish(this);
}
}
@Override

View File

@@ -108,10 +108,6 @@ public class SettingsFragment extends MastodonToolbarFragment{
items.add(new HeaderItem(R.string.settings_theme));
items.add(themeItem=new ThemeItem());
items.add(new SwitchItem(R.string.theme_true_black, R.drawable.ic_fluent_dark_theme_24_regular, GlobalUserPreferences.trueBlackTheme, this::onTrueBlackThemeChanged));
items.add(new SwitchItem(R.string.sk_disable_marquee, R.drawable.ic_fluent_text_more_24_regular, GlobalUserPreferences.disableMarquee, i->{
GlobalUserPreferences.disableMarquee=i.checked;
GlobalUserPreferences.save();
}));
items.add(new ButtonItem(R.string.sk_settings_color_palette, R.drawable.ic_fluent_color_24_regular, b->{
PopupMenu popupMenu=new PopupMenu(getActivity(), b, Gravity.CENTER_HORIZONTAL);
popupMenu.inflate(R.menu.color_palettes);
@@ -158,7 +154,15 @@ public class SettingsFragment extends MastodonToolbarFragment{
});
}));
items.add(new SwitchItem(R.string.sk_settings_uniform_icon_for_notifications, R.drawable.ic_ntf_logo, GlobalUserPreferences.uniformNotificationIcon, i->{
GlobalUserPreferences.uniformNotificationIcon =i.checked;
GlobalUserPreferences.uniformNotificationIcon=i.checked;
GlobalUserPreferences.save();
}));
items.add(new SwitchItem(R.string.sk_disable_marquee, R.drawable.ic_fluent_text_more_24_regular, GlobalUserPreferences.disableMarquee, i->{
GlobalUserPreferences.disableMarquee=i.checked;
GlobalUserPreferences.save();
}));
items.add(new SwitchItem(R.string.sk_settings_reduce_motion, R.drawable.ic_fluent_star_emphasis_24_regular, GlobalUserPreferences.reduceMotion, i->{
GlobalUserPreferences.reduceMotion=i.checked;
GlobalUserPreferences.save();
}));

View File

@@ -984,11 +984,19 @@ public class UiUtils{
}
public static boolean pickAccountForCompose(Activity activity, String accountID, String prefilledText){
Bundle args = new Bundle();
if (prefilledText != null) args.putString("prefilledText", prefilledText);
return pickAccountForCompose(activity, accountID, args);
}
public static boolean pickAccountForCompose(Activity activity, String accountID){
return pickAccountForCompose(activity, accountID, (String) null);
}
public static boolean pickAccountForCompose(Activity activity, String accountID, Bundle args){
if (AccountSessionManager.getInstance().getLoggedInAccounts().size() > 1) {
UiUtils.pickAccount(activity, accountID, 0, 0, session -> {
Bundle args=new Bundle();
args.putString("account", session.getID());
if (prefilledText != null) args.putString("prefilledText", prefilledText);
Nav.go(activity, ComposeFragment.class, args);
}, null);
return true;

View File

@@ -0,0 +1,3 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="20dp" android:height="20dp" android:viewportWidth="20" android:viewportHeight="20">
<path android:pathData="M10 2c4.418 0 8 3.582 8 8s-3.582 8-8 8-8-3.582-8-8 3.582-8 8-8zM9.5 5C9.224 5 9 5.224 9 5.5v5l0.008 0.09C9.05 10.823 9.255 11 9.5 11h3l0.09-0.008C12.823 10.95 13 10.745 13 10.5c0-0.276-0.224-0.5-0.5-0.5H10V5.5L9.992 5.41C9.95 5.177 9.745 5 9.5 5z" android:fillColor="@color/fluent_default_icon_tint"/>
</vector>

View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--~ Copyright (c) 2022. ~ Microsoft Corporation. All rights reserved.-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_fluent_clock_24_filled" android:state_activated="true"/>
<item android:drawable="@drawable/ic_fluent_clock_24_filled" android:state_checked="true"/>
<item android:drawable="@drawable/ic_fluent_clock_24_filled" android:state_selected="true"/>
<item android:drawable="@drawable/ic_fluent_clock_24_regular"/>
</selector>

View File

@@ -0,0 +1,3 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="20dp" android:height="20dp" android:viewportWidth="20" android:viewportHeight="20">
<path android:pathData="M15.613 8.32l-3.936-3.936-8.038 8.039-0.117 0.128c-0.185 0.22-0.322 0.48-0.398 0.76l-1.106 4.055-0.015 0.08c-0.038 0.34 0.282 0.628 0.63 0.534l4.054-1.106 0.165-0.053c0.271-0.1 0.518-0.257 0.723-0.462l8.038-8.039zm1.568-5.503c-1.087-1.087-2.849-1.087-3.936 0l-0.861 0.86 3.936 3.936 0.86-0.86 0.131-0.14c0.955-1.093 0.911-2.754-0.13-3.796zM11.648 3H2.5C2.224 3 2 3.224 2 3.5S2.224 4 2.5 4h8.148l1-1zm-3 3H2.5C2.224 6 2 6.223 2 6.5 2 6.776 2.224 7 2.5 7h5.148l1-1zm-3 3l-1 1H2.5C2.224 10 2 9.776 2 9.5 2 9.223 2.224 9 2.5 9h3.148z" android:fillColor="@color/fluent_default_icon_tint"/>
</vector>

View File

@@ -0,0 +1,3 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
<path android:pathData="M13.94 5l5.061 5.06L9.063 20c-0.277 0.277-0.621 0.477-1 0.58l-5.115 1.395c-0.56 0.153-1.073-0.361-0.92-0.921l1.394-5.116c0.103-0.377 0.303-0.722 0.58-0.999L13.94 5zm-7.414 6l-1.5 1.5H2.75C2.337 12.5 2 12.165 2 11.75 2 11.336 2.337 11 2.75 11h3.775zm14.352-8.174l0.153 0.144 0.145 0.153c1.25 1.405 1.203 3.56-0.145 4.908L20.061 9 15 3.94l0.97-0.97c1.348-1.348 3.503-1.396 4.908-0.144zM10.526 7l-1.5 1.5H2.75C2.337 8.5 2 8.165 2 7.75 2 7.336 2.337 7 2.75 7h7.775zm4-4l-1.5 1.5H2.75C2.337 4.5 2 4.165 2 3.75 2 3.336 2.337 3 2.75 3h11.775z" android:fillColor="@color/fluent_default_icon_tint"/>
</vector>

View File

@@ -0,0 +1,3 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
<path android:pathData="M20 9.502V8.75c0-1.243-1.007-2.25-2.25-2.25h-5.725l-2.38-1.98C9.24 4.184 8.73 4 8.204 4H4.25C3.008 4 2 5.007 2 6.25l-0.004 11.5c0 1.242 1.007 2.25 2.25 2.25H18.47c0.803 0 1.503-0.546 1.698-1.325l1.75-6.998c0.276-1.105-0.56-2.175-1.698-2.175H20zM4.25 5.5h3.956c0.175 0 0.344 0.061 0.48 0.173l2.588 2.154C11.41 7.939 11.58 8 11.755 8h5.996c0.415 0 0.75 0.336 0.75 0.75v0.752H6.424c-1.032 0-1.932 0.703-2.183 1.704l-0.744 2.978L3.5 6.25c0-0.414 0.336-0.75 0.75-0.75zm1.447 6.07c0.083-0.334 0.383-0.568 0.727-0.568H20.22c0.162 0 0.282 0.153 0.242 0.31l-1.75 6.999c-0.027 0.111-0.128 0.189-0.242 0.189H4.285c-0.163 0-0.282-0.153-0.243-0.31l1.655-6.62z" android:fillColor="@color/fluent_default_icon_tint"/>
</vector>

View File

@@ -0,0 +1,3 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
<path android:pathData="M13.209 3.102c-0.495-1.003-1.926-1.003-2.421 0L8.43 7.88 3.157 8.646c-1.107 0.16-1.55 1.522-0.748 2.303l3.815 3.719-0.9 5.25c-0.19 1.104 0.968 1.945 1.958 1.424l4.716-2.48 4.716 2.48c0.99 0.52 2.148-0.32 1.96-1.423l-0.902-5.251 3.816-3.72c0.8-0.78 0.359-2.141-0.748-2.302L15.567 7.88l-2.358-4.778zM9.74 8.614l2.258-4.576 2.259 4.576c0.196 0.399 0.577 0.675 1.016 0.739l5.05 0.734-3.654 3.562c-0.318 0.31-0.463 0.757-0.388 1.195l0.862 5.029-4.516-2.375c-0.394-0.207-0.864-0.207-1.257 0l-4.516 2.375 0.862-5.03c0.075-0.438-0.07-0.884-0.388-1.194l-3.654-3.562 5.05-0.734c0.44-0.064 0.82-0.34 1.016-0.739zM1.164 3.781C0.906 4.104 0.958 4.576 1.282 4.835l2.5 2c0.323 0.259 0.795 0.207 1.054-0.117 0.258-0.323 0.206-0.795-0.117-1.054l-2.5-2C1.895 3.405 1.423 3.458 1.164 3.78zm21.672 14.437c0.259-0.323 0.206-0.795-0.117-1.054l-2.5-2c-0.324-0.259-0.796-0.206-1.055 0.117-0.258 0.323-0.206 0.795 0.117 1.054l2.5 2c0.324 0.259 0.796 0.206 1.055-0.117zM1.282 17.164c-0.324 0.259-0.376 0.73-0.118 1.054 0.26 0.323 0.731 0.376 1.055 0.117l2.5-2c0.323-0.259 0.375-0.73 0.117-1.054-0.26-0.323-0.731-0.376-1.055-0.117l-2.5 2zM22.835 3.78c0.259 0.323 0.206 0.795-0.117 1.054l-2.5 2c-0.324 0.259-0.796 0.207-1.055-0.117-0.258-0.323-0.206-0.795 0.117-1.054l2.5-2c0.324-0.259 0.796-0.206 1.055 0.117z" android:fillColor="@color/fluent_default_icon_tint"/>
</vector>

View File

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:clipToPadding="false"
android:paddingHorizontal="16dp"
android:paddingTop="4dp"
android:paddingBottom="8dp">
<ProgressBar
android:id="@+id/send_progress"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginEnd="16dp"
android:layout_gravity="center_vertical"
android:visibility="gone" />
<ImageView
android:id="@+id/send_error"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_gravity="center_vertical"
android:src="@drawable/ic_fluent_error_circle_24_regular"
android:tint="@color/error_600"
android:scaleType="center"
android:visibility="gone" />
<Button
android:id="@+id/language_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingHorizontal="8dp"
android:drawableStart="@drawable/ic_fluent_local_language_16_regular"
android:drawablePadding="8dp"
android:drawableTint="?android:textColorSecondary"
android:textColor="?android:textColorSecondary"
android:background="@drawable/bg_text_button" />
<Button
android:id="@+id/drafts_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:paddingHorizontal="8dp"
android:drawableStart="@drawable/ic_fluent_clock_20_regular"
android:drawableTint="?android:textColorSecondary"
android:textColor="?android:textColorSecondary"
android:background="@drawable/bg_text_button"
android:contentDescription="@string/sk_schedule_or_draft"
android:tooltipText="@string/sk_schedule_or_draft" />
<Button
android:id="@+id/publish_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="end" />
</LinearLayout>

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/display_item_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="10dp"
@@ -56,7 +57,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center_vertical">
android:gravity="center_vertical"
android:visibility="gone">
<FrameLayout
android:id="@+id/action_btn_wrap"
@@ -72,7 +74,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingHorizontal="8dp"
tools:text="@string/translate_post"/>
tools:text="@string/sk_translate_post"/>
<ProgressBar
android:id="@+id/translate_progress"
android:layout_width="wrap_content"

View File

@@ -6,6 +6,7 @@
android:layout_height="match_parent">
<ScrollView
android:id="@+id/scroll_view"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
@@ -16,142 +17,205 @@
android:layout_height="wrap_content"
android:orientation="vertical">
<EditText
android:id="@+id/content_warning"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:elevation="0dp"
android:hint="@string/content_warning"
android:inputType="textMultiLine|textCapSentences"
android:visibility="gone"
android:textColorHint="?android:textColorSecondary"
android:background="@drawable/bg_cw_edit"
android:padding="16dp"
android:minHeight="56dp"
android:textSize="16sp"
tools:visibility="visible"/>
<TextView
android:id="@+id/reply_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="-12dp"
android:paddingHorizontal="16dp"
android:paddingTop="16dp"
android:paddingBottom="6dp"
android:textAppearance="@style/m3_title_small"
android:drawableStart="@drawable/ic_fluent_arrow_reply_20_filled"
tools:drawableEnd="@drawable/ic_fluent_earth_20_regular"
android:drawableTint="?android:textColorSecondary"
android:drawablePadding="6dp"
android:singleLine="true"
android:ellipsize="end"
android:background="?android:selectableItemBackground"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingRight="16dp"
android:paddingLeft="16dp">
<ImageView
android:id="@+id/avatar"
android:layout_width="46dp"
android:layout_height="46dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginEnd="12dp" />
<TextView
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="24dp"
android:layout_toEndOf="@id/avatar"
android:ellipsize="end"
android:singleLine="true"
android:textAppearance="@style/m3_title_medium"
tools:text="Eugen" />
<TextView
android:id="@+id/username"
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_below="@id/name"
android:layout_toEndOf="@id/avatar"
android:ellipsize="end"
android:singleLine="true"
android:textAppearance="@style/m3_title_small"
tools:text="\@Gargron" />
</RelativeLayout>
<FrameLayout
android:id="@+id/toot_text_wrap"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp">
<org.joinmastodon.android.ui.views.ComposeEditText
android:id="@+id/toot_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingBottom="16dp"
android:textAppearance="@style/m3_body_large"
android:textSize="16sp"
android:gravity="top"
android:background="@null"
android:hint="@string/compose_hint"
android:elevation="0dp"
android:inputType="textMultiLine|textCapSentences"/>
</FrameLayout>
<LinearLayout
android:id="@+id/poll_wrap"
android:id="@+id/original_post"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="gone"
tools:visibility="visible">
<org.joinmastodon.android.ui.views.ReorderableLinearLayout
android:id="@+id/poll_options"
android:background="?android:selectableItemBackground">
<include layout="@layout/display_item_header" />
<include layout="@layout/display_item_text" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?attr/colorPollVoted"/>
</LinearLayout>
<LinearLayout
android:id="@+id/reply_wrap"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/content_warning"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"/>
<LinearLayout
android:id="@+id/add_poll_option"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="56dp"
android:layout_marginBottom="8dp"
android:background="@drawable/bg_poll_option_clickable"
android:outlineProvider="background"
android:elevation="2dp">
<ImageView
android:id="@+id/add_poll_option_icon"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_margin="16dp"
android:tint="?colorDarkIcon"
android:src="@drawable/ic_fluent_add_circle_24_regular"/>
</LinearLayout>
android:elevation="0dp"
android:hint="@string/content_warning"
android:inputType="textMultiLine|textCapSentences"
android:visibility="gone"
android:textColorHint="?android:textColorSecondary"
android:background="@drawable/bg_cw_edit"
android:padding="16dp"
android:minHeight="56dp"
android:textSize="16sp"
tools:visibility="visible"/>
<TextView
android:id="@+id/poll_duration"
android:id="@+id/reply_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginBottom="8dp"
android:textAppearance="@style/m3_label_large"
android:textColor="?android:textColorPrimary"
tools:text="Duration: 7 days"/>
android:layout_marginBottom="-12dp"
android:paddingHorizontal="16dp"
android:paddingTop="16dp"
android:paddingBottom="6dp"
android:textAppearance="@style/m3_title_small"
android:drawableStart="@drawable/ic_fluent_arrow_reply_20_filled"
tools:drawableEnd="@drawable/ic_fluent_earth_20_regular"
android:drawableTint="?android:textColorSecondary"
android:drawablePadding="6dp"
android:singleLine="true"
android:ellipsize="end"
android:background="?android:selectableItemBackground"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingRight="16dp"
android:paddingLeft="16dp">
<ImageView
android:id="@+id/self_avatar"
android:layout_width="46dp"
android:layout_height="46dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginEnd="12dp" />
<TextView
android:id="@+id/self_name"
android:layout_width="match_parent"
android:layout_height="24dp"
android:layout_toEndOf="@id/self_avatar"
android:ellipsize="end"
android:singleLine="true"
android:textAppearance="@style/m3_title_medium"
tools:text="Eugen" />
<TextView
android:id="@+id/self_username"
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_below="@id/self_name"
android:layout_toEndOf="@id/self_avatar"
android:ellipsize="end"
android:singleLine="true"
android:textAppearance="@style/m3_title_small"
tools:text="\@Gargron" />
</RelativeLayout>
<FrameLayout
android:id="@+id/toot_text_wrap"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp">
<org.joinmastodon.android.ui.views.ComposeEditText
android:id="@+id/toot_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingBottom="16dp"
android:textAppearance="@style/m3_body_large"
android:textSize="16sp"
android:gravity="top"
android:background="@null"
android:hint="@string/compose_hint"
android:elevation="0dp"
android:inputType="textMultiLine|textCapSentences"/>
</FrameLayout>
<LinearLayout
android:id="@+id/poll_allow_multiple"
android:id="@+id/poll_wrap"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="gone"
tools:visibility="visible">
<org.joinmastodon.android.ui.views.ReorderableLinearLayout
android:id="@+id/poll_options"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"/>
<LinearLayout
android:id="@+id/add_poll_option"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="56dp"
android:layout_marginBottom="8dp"
android:background="@drawable/bg_poll_option_clickable"
android:outlineProvider="background"
android:elevation="2dp">
<ImageView
android:id="@+id/add_poll_option_icon"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_margin="16dp"
android:tint="?colorDarkIcon"
android:src="@drawable/ic_fluent_add_circle_24_regular"/>
</LinearLayout>
<TextView
android:id="@+id/poll_duration"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginBottom="8dp"
android:textAppearance="@style/m3_label_large"
android:textColor="?android:textColorPrimary"
tools:text="Duration: 7 days"/>
<LinearLayout
android:id="@+id/poll_allow_multiple"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:layout_marginTop="8dp"
android:gravity="center_vertical"
android:layoutDirection="locale"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:background="?android:selectableItemBackground">
<CheckBox
android:id="@+id/poll_allow_multiple_checkbox"
android:clickable="false"
android:layout_width="wrap_content"
android:layout_height="24dp"
android:layout_marginEnd="24dp"
android:duplicateParentState="true"
android:importantForAccessibility="no"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="16sp"
android:singleLine="true"
android:text="@string/sk_poll_allow_multiple" />
</LinearLayout>
</LinearLayout>
<org.joinmastodon.android.ui.views.ComposeMediaLayout
android:id="@+id/attachments"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:visibility="gone"/>
<LinearLayout
android:id="@+id/sensitive_item"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -163,15 +227,16 @@
android:paddingRight="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:background="?android:selectableItemBackground">
android:background="?android:selectableItemBackground"
android:visibility="gone">
<CheckBox
android:id="@+id/poll_allow_multiple_checkbox"
android:clickable="false"
android:layout_width="wrap_content"
<ImageView
android:id="@+id/sensitive_icon"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginEnd="24dp"
android:duplicateParentState="true"
android:layout_marginEnd="32dp"
android:src="@drawable/ic_fluent_flag_24_selector"
android:tint="?android:textColorPrimary"
android:importantForAccessibility="no"/>
<TextView
@@ -180,50 +245,9 @@
android:layout_weight="1"
android:textSize="16sp"
android:singleLine="true"
android:text="@string/sk_poll_allow_multiple" />
android:text="@string/sk_mark_media_as_sensitive" />
</LinearLayout>
</LinearLayout>
<org.joinmastodon.android.ui.views.ComposeMediaLayout
android:id="@+id/attachments"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:visibility="gone"/>
<LinearLayout
android:id="@+id/sensitive_item"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:layout_marginTop="8dp"
android:gravity="center_vertical"
android:layoutDirection="locale"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:background="?android:selectableItemBackground"
android:visibility="gone">
<ImageView
android:id="@+id/sensitive_icon"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginEnd="32dp"
android:src="@drawable/ic_fluent_flag_24_selector"
android:tint="?android:textColorPrimary"
android:importantForAccessibility="no"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="16sp"
android:singleLine="true"
android:text="@string/sk_mark_media_as_sensitive" />
</LinearLayout>
</LinearLayout>
</ScrollView>
@@ -235,7 +259,7 @@
android:elevation="2dp"
android:outlineProvider="bounds"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingRight="12dp"
android:layoutDirection="locale">
<LinearLayout
android:id="@+id/schedule_draft_view"
@@ -247,10 +271,18 @@
<TextView
android:id="@+id/schedule_draft_text"
android:layout_width="0dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableStart="@drawable/ic_fluent_drafts_20_regular"
android:drawableTint="?android:textColorSecondary"
android:drawablePadding="16dp"
android:text="@string/sk_compose_draft" />
<Space
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<Button
android:id="@+id/scheduled_time_btn"
android:layout_width="wrap_content"
@@ -259,7 +291,7 @@
android:gravity="center"
android:padding="8dp"
android:textSize="14sp"
android:minHeight="48dp"
android:minHeight="40dp"
android:textColor="?android:textColorSecondary"
android:background="@drawable/bg_text_button"
android:fontFamily="sans-serif"
@@ -272,9 +304,9 @@
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginStart="8dp"
android:layout_marginEnd="-4dp"
android:src="@drawable/ic_fluent_dismiss_20_filled"
android:background="?android:selectableItemBackgroundBorderless"
android:contentDescription="@string/sk_compose_no_schedule"
android:padding="4dp"/>
</LinearLayout>
@@ -349,19 +381,6 @@
android:tooltipText="@string/post_visibility"
android:src="@drawable/ic_fluent_earth_24_regular"/>
<ImageButton
android:id="@+id/btn_schedule"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginEnd="24dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:padding="0px"
android:tint="@color/compose_button"
android:tintMode="src_in"
android:contentDescription="@string/sk_draft_or_schedule"
android:tooltipText="@string/sk_draft_or_schedule"
android:src="@drawable/ic_fluent_clock_24_selector"/>
<Space
android:layout_width="0px"
android:layout_height="1px"
@@ -374,7 +393,6 @@
android:textAppearance="@style/m3_body_large"
android:textColor="?android:textColorSecondary"
tools:text="500"/>
</LinearLayout>
</LinearLayout>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/schedule" android:title="@string/sk_schedule_post" android:icon="@drawable/ic_fluent_clock_24_regular" />
<item android:id="@+id/unschedule" android:title="@string/sk_schedule_post" android:icon="@drawable/ic_fluent_clock_24_filled" android:contentDescription="@string/sk_compose_no_schedule" />
<item android:id="@+id/draft" android:title="@string/sk_mark_as_draft" android:icon="@drawable/ic_fluent_drafts_24_regular" />
<item android:id="@+id/undraft" android:title="@string/sk_mark_as_draft" android:icon="@drawable/ic_fluent_drafts_24_filled" android:contentDescription="@string/sk_compose_no_draft" />
<item android:id="@+id/drafts" android:title="@string/sk_unsent_posts" android:icon="@drawable/ic_fluent_folder_open_24_regular" />
</menu>

View File

@@ -3,6 +3,6 @@
<item android:id="@+id/followed_hashtags" android:title="@string/sk_hashtags_you_follow" android:icon="@drawable/ic_fluent_number_symbol_24_regular" android:showAsAction="always"/>
<item android:id="@+id/bookmarks" android:title="@string/bookmarks" android:icon="@drawable/ic_fluent_bookmark_multiple_24_regular" android:showAsAction="always"/>
<item android:id="@+id/favorites" android:title="@string/your_favorites" android:icon="@drawable/ic_fluent_star_24_regular"/>
<item android:id="@+id/scheduled" android:title="@string/sk_unsent_posts" android:icon="@drawable/ic_fluent_drafts_24_regular"/>
<item android:id="@+id/scheduled" android:title="@string/sk_unsent_posts" android:icon="@drawable/ic_fluent_folder_open_24_regular"/>
<item android:id="@+id/share" android:title="@string/share_user" android:icon="@drawable/ic_fluent_share_24_regular"/>
</menu>

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/schedule" android:title="@string/sk_schedule" android:icon="@drawable/ic_fluent_clock_24_regular" />
<item android:id="@+id/draft" android:title="@string/sk_draft" android:icon="@drawable/ic_fluent_drafts_24_regular" />
</menu>

View File

@@ -58,13 +58,13 @@
<string name="sk_clear_recent_languages">Zuletzt verwendete Sprachen leeren</string>
<string name="sk_welcome_title">Willkommen!</string>
<string name="sk_example_domain">beispiel.social</string>
<string name="sk_welcome_text">Der Hai sagt Hi! Um anzufangen, bitte gib den Domain-Namen deiner Heim-Instanz unten ein.</string>
<string name="sk_welcome_text">Der Hai sagt Hi! Um anzufangen, gib den Domain-Namen deiner Heimat-Instanz unten ein.</string>
<string name="sk_color_palette_material3">System</string>
<string name="sk_color_palette_red">Rot</string>
<string name="sk_settings_profile">Profil einrichten</string>
<string name="sk_settings_posting">Einstellungen für Beiträge</string>
<string name="sk_settings_filters">Filter konfigurieren</string>
<string name="sk_settings_auth">Sicherheits-Einstellungen</string>
<string name="sk_settings_auth">Sicherheits-Einstellungen</string>
<string name="sk_settings_rules">Regelwerk</string>
<string name="sk_settings_about">Über die App</string>
<string name="sk_settings_donate">Spenden</string>
@@ -73,11 +73,11 @@
<string name="sk_delete_notification_confirm">Benachrichtigung wirklich löschen\?</string>
<string name="sk_clear_all_notifications_confirm_action">Alle löschen</string>
<string name="sk_enable_delete_notifications">Löschen von Benachrichtigungen aktivieren</string>
<string name="sk_settings_publish_button_text">Veröffentlichen-Button-Text</string>
<string name="sk_settings_translate_only_opened">Übersetzen-Button in der Timeline ausblenden</string>
<string name="sk_settings_publish_button_text">Veröffentlichen-Button-Text</string>
<string name="sk_settings_translate_only_opened">Nur geöffnete Beiträge übersetzen</string>
<string name="sk_delete_notification">Benachrichtigung löschen</string>
<string name="sk_clear_all_notifications">Alle Benachrichtigungen löschen</string>
<string name="sk_settings_publish_button_text_title">Veröffentlichen-Button-Text anpassen</string>
<string name="sk_settings_publish_button_text_title">Veröffentlichen-Button-Text anpassen</string>
<string name="sk_clear_all_notifications_confirm">Wirklich alle Benachrichtigungen löschen\?</string>
<string name="sk_settings_translation_availability_note_available">%s unterstützt Übersetzung!</string>
<string name="sk_settings_translation_availability_note_unavailable">%s scheint keine Übersetzung zu unterstützen.</string>
@@ -90,4 +90,34 @@
<string name="sk_open_with_account">Mit anderem Konto öffnen</string>
<string name="sk_resource_not_found">Ressource nicht gefunden</string>
<string name="sk_loading_resource_on_instance_title">Suche auf %s</string>
<string name="sk_bookmark_as">Lesezeichen in anderem Konto</string>
<string name="sk_bookmarked_as">Lesezeichen gesetzt als %s</string>
<string name="sk_already_bookmarked">Bereits in den Lesezeichen</string>
<string name="sk_favorite_as">Favorit von anderem Konto</string>
<string name="sk_favorited_as">Favorisiert als %s</string>
<string name="sk_already_favorited">Bereits favorisiert</string>
<string name="sk_reblog_as">Von einem anderen Konto boosten</string>
<string name="sk_reblogged_as">Geboostet als %s</string>
<string name="sk_already_reblogged">Bereits geboostet</string>
<string name="sk_reply_as">Antworten mit anderem Konto</string>
<string name="sk_settings_uniform_icon_for_notifications">Einheitliches Icon für alle Benachrichtigungen</string>
<string name="sk_forward_report_to">Weiterleiten zu %s</string>
<string name="sk_unsent_posts">Nicht gesendete Beiträge</string>
<string name="sk_draft">Entwurf</string>
<string name="sk_schedule">Planen</string>
<string name="sk_confirm_delete_draft_title">Entwurf löschen</string>
<string name="sk_confirm_delete_draft">Möchtest du diesen entworfenen Beitrag wirklich löschen\?</string>
<string name="sk_confirm_delete_scheduled_post_title">Geplanten Beitrag löschen</string>
<string name="sk_confirm_delete_scheduled_post">Möchtest du diesen geplanten Beitrag wirklich löschen\?</string>
<string name="sk_draft_or_schedule">Entwurf oder Planen</string>
<string name="sk_compose_draft">Beitrag wird als Entwurf gespeichert.</string>
<string name="sk_compose_scheduled">Geplant für</string>
<string name="sk_draft_saved">Entwurf gespeichert</string>
<string name="sk_post_scheduled">Beitrag geplant</string>
<string name="sk_scheduled_too_soon_title">Geplante Zeit ist zu früh</string>
<string name="sk_scheduled_too_soon">Der Beitrag muss mindestens 10 Minuten in der Zukunft eingeplant werden.</string>
<string name="sk_confirm_save_changes">Änderungen speichern\?</string>
<string name="sk_schedule_post">Beitrag planen</string>
<string name="sk_confirm_save_draft">Entwurf speichern\?</string>
<string name="sk_mark_as_draft">Als Entwurf markieren</string>
</resources>

View File

@@ -90,4 +90,34 @@
<string name="sk_open_with_account">Abrir con otra cuenta</string>
<string name="sk_resource_not_found">El recurso no se pudo encontrar</string>
<string name="sk_loading_resource_on_instance_title">Buscándolo en %s</string>
<string name="sk_bookmarked_as">Añadido a favoritos como %s</string>
<string name="sk_already_bookmarked">Ya marcado</string>
<string name="sk_favorited_as">Favorito como %s</string>
<string name="sk_already_favorited">Ya es un favorito</string>
<string name="sk_reblog_as">Compartir desde otra cuenta</string>
<string name="sk_reblogged_as">Compartido como %s</string>
<string name="sk_already_reblogged">Ya se volvió a publicar</string>
<string name="sk_reply_as">Responder con otra cuenta</string>
<string name="sk_bookmark_as">Marcador de otra cuenta</string>
<string name="sk_favorite_as">Favoritos de otra cuenta</string>
<string name="sk_settings_uniform_icon_for_notifications">Mismo icono para todas las notificaciones</string>
<string name="sk_forward_report_to">Reenviar a %s</string>
<string name="sk_unsent_posts">Mensajes no enviados</string>
<string name="sk_draft">Borrador</string>
<string name="sk_schedule">Programar</string>
<string name="sk_confirm_delete_draft_title">Borrar el borrador</string>
<string name="sk_confirm_delete_draft">¿Seguro que quieres borrar este borrador\?</string>
<string name="sk_confirm_delete_scheduled_post_title">Borrar la entrada programada</string>
<string name="sk_confirm_delete_scheduled_post">¿Está seguro de que desea eliminar esta publicación programada\?</string>
<string name="sk_draft_or_schedule">A borrador o programar el envio</string>
<string name="sk_compose_draft">El mensaje se guardará como borrador.</string>
<string name="sk_compose_scheduled">Programado para</string>
<string name="sk_draft_saved">Borrador guardado</string>
<string name="sk_post_scheduled">Publicación programada</string>
<string name="sk_scheduled_too_soon_title">La hora programada es demasiado pronto</string>
<string name="sk_scheduled_too_soon">El mensaje debe programarse con al menos 10 minutos de antelación.</string>
<string name="sk_confirm_save_draft">¿Guardar el borrador\?</string>
<string name="sk_confirm_save_changes">¿Guardar los cambios\?</string>
<string name="sk_mark_as_draft">Marcar como borrador</string>
<string name="sk_schedule_post">Programar la publicación</string>
</resources>

View File

@@ -1,3 +1,104 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>
<string name="sk_app_name">Megalodon</string>
<string name="sk_delete_and_redraft">Ezabatu eta editatu</string>
<string name="sk_confirm_delete_and_redraft_title">Argitalpena ezabatu eta editatu</string>
<string name="sk_pin_post">Profilean finkatu</string>
<string name="sk_confirm_pin_post_title">Argitalpena profilean finkatu</string>
<string name="sk_confirm_pin_post">Ziur al zaude argitalpen hau zure profilean finkatu nahi duzula\?</string>
<string name="sk_pinning">Argitalpena finkatzen…</string>
<string name="sk_unpin_post">Finkapena kendu profiletik</string>
<string name="sk_confirm_unpin_post">Ziur al zaude argitalpena profiletik kendu nahi duzula\?</string>
<string name="sk_unpinning">Argitalpen finkatua kentzen…</string>
<string name="sk_image_description">Irudiaren deskribapena</string>
<string name="sk_visibility_unlisted">Zerrendatu gabea</string>
<string name="sk_settings_show_replies">Erakutsi erantzunak</string>
<string name="sk_settings_show_boosts">Erakutsi bultzadak</string>
<string name="sk_settings_show_interaction_counts">Erakutsi interakzio zenbaketak</string>
<string name="sk_settings_app_version">Megalodon v%1$s (%2$d)</string>
<string name="sk_mark_media_as_sensitive">Markatu multimedia sentikor gisa</string>
<string name="sk_user_post_notifications_on">Gaitu %s-en argitalpen jakinarazpenak</string>
<string name="sk_federated_timeline">Federatua</string>
<string name="sk_federated_timeline_info_banner">Hauek dira zure federazioko pertsonen argitalpen berrienak.</string>
<string name="sk_update_available">Megalodon %s deskargatzeko prest dago.</string>
<string name="sk_check_for_update">Eguneraketak egiaztatu</string>
<string name="sk_no_update_available">Ez dago eguneraketarik eskuragarri</string>
<string name="sk_list_timelines">Zerrendak</string>
<string name="sk_follow_requests">Jarraitzeko eskaerak</string>
<string name="sk_poll_allow_multiple">Onartu aukera anitzak</string>
<string name="sk_clear_recent_languages">Ezabatu berriki erabili diren hizkuntzak</string>
<string name="sk_welcome_title">Ongi etorri!</string>
<string name="sk_example_domain">adibidea.eus</string>
<string name="sk_lists_with_user">%s-ekin zerrendatu</string>
<string name="sk_settings_always_reveal_content_warnings">Erakutsi beti edukiaren abisua</string>
<string name="sk_disable_marquee">Desgaitu izenburu-barretako testuaren desplazamendua</string>
<string name="sk_settings_contribute">Lagundu Megalodon</string>
<string name="sk_translated_using">%s-ekin itzulia</string>
<string name="sk_post_language">Hizkuntza: %s</string>
<string name="sk_language_name">%s (%s)</string>
<string name="sk_bookmark_as">Beste kontu bateko laster-marka</string>
<string name="sk_bookmarked_as">%s bezala laster-markara eramana</string>
<string name="sk_already_bookmarked">Dagoeneko laster-marka da</string>
<string name="sk_favorite_as">Beste kontu bateko gogokoa</string>
<string name="sk_favorited_as">%s bezela dago gogokoetan</string>
<string name="sk_reblog_as">Beste kontu batetik bultzatua</string>
<string name="sk_reblogged_as">%s bezela bultzatua</string>
<string name="sk_already_reblogged">Dagoeneko bultzatua izan da</string>
<string name="sk_reply_as">Erantzun beste kontu batekin</string>
<string name="sk_translate_post">Itzuli</string>
<string name="sk_tabs_disable_swipe">Desgaitu fitxen arteko joan-etorria</string>
<string name="sk_settings_profile">Konfiguratu profila</string>
<string name="sk_settings_posting">Argitalpenen ezarpenak</string>
<string name="sk_settings_filters">Filtroak konfiguratu</string>
<string name="sk_settings_auth">Segurtasun ezarpenak</string>
<string name="sk_settings_rules">Arauak</string>
<string name="sk_settings_about">Aplikazioari buruz</string>
<string name="sk_settings_donate">Lagundu</string>
<string name="sk_settings_color_palette">Kolore paleta</string>
<string name="sk_color_palette_material3">Sistema</string>
<string name="sk_color_palette_pink">Arrosa</string>
<string name="sk_color_palette_purple">Morea</string>
<string name="sk_color_palette_green">Berdea</string>
<string name="sk_color_palette_blue">Urdina</string>
<string name="sk_color_palette_brown">Marroia</string>
<string name="sk_color_palette_red">Gorria</string>
<string name="sk_color_palette_yellow">Horia</string>
<string name="sk_delete_notification">Ezabatu jakinarazpena</string>
<string name="sk_delete_notification_confirm_action">Ezabatu jakinarazpena</string>
<string name="sk_delete_notification_confirm">Ziur al zaude jakinarazpen hau ezabatu nahi duzula\?</string>
<string name="sk_enable_delete_notifications">Gaitu jakinarazpenen ezabatzea</string>
<string name="sk_settings_publish_button_text">Argitaratze botoiaren testua</string>
<string name="sk_settings_publish_button_text_title">Pertsonalizatu argitaratze botoiaren testua</string>
<string name="sk_settings_translation_availability_note_available">%s-k itzulpena onartzen du!</string>
<string name="sk_settings_translation_availability_note_unavailable">%s ez da itzulpena onartzen duten hizkuntzen artean ageri.</string>
<string name="sk_clear_all_notifications">Ezabatu jakinarazpen guztiak</string>
<string name="sk_clear_all_notifications_confirm_action">Ezabatu dena</string>
<string name="sk_clear_all_notifications_confirm">Ziur al zaude jakinarazpen guztiak ezabatu nahi dituzula\?</string>
<string name="sk_loading_fediverse_resource_title">Fedibertsoan bilatzen</string>
<string name="sk_undo_reblog">Bultzada desegin</string>
<string name="sk_quote_post">Honen inguruan argitaratu</string>
<string name="sk_reblog_with_visibility">Bultzada ikusgarria</string>
<string name="sk_hashtags_you_follow">Jarraitzen dituzun Hashtag-ak</string>
<string name="sk_copy_link_to_post">Kopiatu link-a argitaratzeko</string>
<string name="sk_loading_resource_on_instance_title">%s-n bilatzen</string>
<string name="sk_open_with_account">Ireki beste kontu batekin</string>
<string name="sk_resource_not_found">Ezin da errekurtsoa bilatu</string>
<string name="sk_pinned_posts">Finkatua</string>
<string name="sk_confirm_delete_and_redraft">Ziur al zaude argitalpena ezabatu eta editatu nahi duzula\?</string>
<string name="sk_confirm_unpin_post_title">Argitalpen finkatua kendu profiletik</string>
<string name="sk_settings_load_new_posts">Kargatu automatikoki argitalpen berriak</string>
<string name="sk_user_post_notifications_off">Desgaitu %s-en argitalpen jakinarazpenak</string>
<string name="sk_update_ready">Megalodon %s deskargatuta eta instalatzeko prest dago.</string>
<string name="sk_accept_follow_request">Onartu jarraitzeko eskaerak</string>
<string name="sk_reject_follow_request">Alboratu jarraitzeko eskaerak</string>
<string name="sk_settings_show_federated_timeline">Erakutsi federatutako denbora-lerroa</string>
<string name="sk_notification_type_status">Argitalpenak</string>
<string name="sk_notify_posts">Argitalpenen jakinarazpenak</string>
<string name="sk_translate_show_original">Erakutsi jatorrizkoa</string>
<string name="sk_available_languages">Eskuragarri dauden hizkuntzak</string>
<string name="sk_confirm_clear_recent_languages">Ziur al zaude berriki erabilitako hizkuntzak ezabatu nahi dituzula\?</string>
<string name="sk_welcome_text">Marrazoak ongi etorria ematen dizu! Hasteko, sartu jjarraian jatorrizko instantziaren domeinu-izena.</string>
<string name="sk_settings_translate_only_opened">Irekitako argitalpenak soilik itzuli</string>
<string name="sk_already_favorited">Dagoeneko gogokoen artean dago</string>
<string name="sk_settings_uniform_icon_for_notifications">Ikono berdina jakinarazpen guztietarako</string>
</resources>

View File

@@ -91,4 +91,34 @@
<string name="sk_loading_resource_on_instance_title">Rechercher sur %s</string>
<string name="sk_open_with_account">Ouvrir avec un autre compte</string>
<string name="sk_resource_not_found">La ressource est introuvable</string>
<string name="sk_favorite_as">Favoris d\'un autre compte</string>
<string name="sk_already_bookmarked">Déjà mis en signet</string>
<string name="sk_already_favorited">Déjà mis en favori</string>
<string name="sk_reblogged_as">Reposté en tant que %s</string>
<string name="sk_already_reblogged">Déjà reposté</string>
<string name="sk_bookmarked_as">Ajouté aux signets en tant que %s</string>
<string name="sk_favorited_as">Ajouté aux favoris en tant que %s</string>
<string name="sk_reply_as">Répondre avec un autre compte</string>
<string name="sk_bookmark_as">Mettre en signet sur un autre compte</string>
<string name="sk_reblog_as">Reposter depuis un autre compte</string>
<string name="sk_settings_uniform_icon_for_notifications">Icône uniforme pour toutes les notifications</string>
<string name="sk_forward_report_to">Transférer à %s</string>
<string name="sk_unsent_posts">Messages non envoyés</string>
<string name="sk_draft">Brouillon</string>
<string name="sk_confirm_delete_draft_title">Supprimer le brouillon</string>
<string name="sk_confirm_delete_draft">Êtes-vous sûr de vouloir supprimer ce message brouillon \?</string>
<string name="sk_confirm_delete_scheduled_post">Voulez-vous vraiment supprimer ce message planifié \?</string>
<string name="sk_schedule">Planifier</string>
<string name="sk_confirm_delete_scheduled_post_title">Supprimer le message planifié</string>
<string name="sk_draft_or_schedule">Rédiger ou planifier</string>
<string name="sk_compose_draft">Le message sera enregistré en tant que brouillon.</string>
<string name="sk_compose_scheduled">Planifié pour</string>
<string name="sk_draft_saved">Brouillon enregistré</string>
<string name="sk_post_scheduled">Message planifié</string>
<string name="sk_scheduled_too_soon_title">L\'heure prévue est trop proche</string>
<string name="sk_scheduled_too_soon">Le message doit être planifiée au moins 10 minutes à l\'avance.</string>
<string name="sk_confirm_save_draft">Enregistrer le brouillon \?</string>
<string name="sk_mark_as_draft">Marquer comme brouillon</string>
<string name="sk_schedule_post">Planifier le message</string>
<string name="sk_confirm_save_changes">Sauvegarder les modifications \?</string>
</resources>

View File

@@ -91,4 +91,36 @@
<string name="sk_open_with_account">Buka dengan akun lain</string>
<string name="sk_loading_resource_on_instance_title">Mencari di %s</string>
<string name="sk_resource_not_found">Sumber daya tidak dapat ditemukan</string>
<string name="sk_bookmarked_as">Dimarkahi sebagai %s</string>
<string name="sk_already_bookmarked">Sudah dimarkahi</string>
<string name="sk_favorited_as">Difavorit sebagai %s</string>
<string name="sk_already_favorited">Sudah difavorit</string>
<string name="sk_reblog_as">Bagikan dari akun lain</string>
<string name="sk_reblogged_as">Dibagikan sebagai %s</string>
<string name="sk_already_reblogged">Sudah dibagikan</string>
<string name="sk_reply_as">Balas dengan akun lain</string>
<string name="sk_bookmark_as">Markahi dalam akun lain</string>
<string name="sk_favorite_as">Favorit dari akun lain</string>
<string name="sk_settings_uniform_icon_for_notifications">Ikon yang sama untuk semua notifikasi</string>
<string name="sk_unsent_posts">Kiriman yang belum dikirim</string>
<string name="sk_draft">Draf</string>
<string name="sk_confirm_delete_draft_title">Hapus draf</string>
<string name="sk_confirm_delete_scheduled_post_title">Hapus kiriman yang dijadwalkan</string>
<string name="sk_confirm_delete_scheduled_post">Apakah Anda yakin untuk menghapus kiriman yang dijadwalkan ini\?</string>
<string name="sk_draft_or_schedule">Draf atau jadwalkan</string>
<string name="sk_schedule">Jadwalkan</string>
<string name="sk_compose_draft">Kiriman akan disimpan sebagai draf.</string>
<string name="sk_compose_scheduled">Dijadwalkan untuk</string>
<string name="sk_post_scheduled">Kiriman dijadwalkan</string>
<string name="sk_scheduled_too_soon_title">Waktu jadwal terlalu dekat</string>
<string name="sk_save_draft">Simpan draf\?</string>
<string name="sk_save_changes">Simpan perubahan\?</string>
<string name="sk_forward_report_to">Teruskan ke %s</string>
<string name="sk_confirm_delete_draft">Apakah Anda yakin ingin menghapus draf kiriman ini\?</string>
<string name="sk_draft_saved">Draf disimpan</string>
<string name="sk_scheduled_too_soon">Kiriman setidaknya harus 10 menit di masa depan.</string>
<string name="sk_confirm_save_changes">Simpan perubahan\?</string>
<string name="sk_mark_as_draft">Tandai sebagai draf</string>
<string name="sk_schedule_post">Jadwalkan kiriman</string>
<string name="sk_confirm_save_draft">Simpan draf\?</string>
</resources>

View File

@@ -81,5 +81,24 @@
<string name="sk_clear_all_notifications_confirm_action">모두 삭제</string>
<string name="sk_tabs_disable_swipe">스와이프로 탭간 전환 비활성화</string>
<string name="sk_clear_all_notifications">모든 알림 삭제</string>
<string name="sk_loading_fediverse_resource_title">연합우주에서 찾아보는 중</string>
<string name="sk_loading_fediverse_resource_title">연합우주에서 찾아보는 중</string>
<string name="sk_bookmark_as">다른 계정으로 보관</string>
<string name="sk_reblog_as">다른 계정으로 리블로그</string>
<string name="sk_already_reblogged">이미 리블로그했습니다</string>
<string name="sk_reply_as">다른 계정으로 답글 달기</string>
<string name="sk_favorite_as">다른 계정으로 좋아요 표시</string>
<string name="sk_favorited_as">%s 계정으로 좋아요 표시했습니다</string>
<string name="sk_already_favorited">이미 좋아요 표시했습니다</string>
<string name="sk_undo_reblog">리블로그 취소</string>
<string name="sk_reblog_with_visibility">리블로그 및 공개 범위 설정</string>
<string name="sk_bookmarked_as">%s 계정으로 보관했습니다</string>
<string name="sk_already_bookmarked">이미 보관했습니다</string>
<string name="sk_reblogged_as">%s 계정으로 리블로그했습니다</string>
<string name="sk_settings_uniform_icon_for_notifications">모든 알림에 같은 아이콘 사용</string>
<string name="sk_hashtags_you_follow">팔로우한 해시태그</string>
<string name="sk_copy_link_to_post">게시물 링크 복사</string>
<string name="sk_open_with_account">다른 계정으로 열기</string>
<string name="sk_resource_not_found">리소스를 찾을 수 없습니다</string>
<string name="sk_loading_resource_on_instance_title">%s에서 찾아보는 중</string>
<string name="sk_quote_post">언급하여 게시</string>
</resources>

View File

@@ -52,7 +52,7 @@
<string name="sk_post_language">Idioma: %s</string>
<string name="sk_available_languages">Idiomas disponíveis</string>
<string name="sk_language_name">%s (%s)</string>
<string name="sk_confirm_clear_recent_languages">Tem certeza de que deseja limpar os idiomas usados recentemente\?</string>
<string name="sk_confirm_clear_recent_languages">Você tem certeza que deseja limpar os idiomas usados recentemente\?</string>
<string name="sk_clear_recent_languages">Limpar idiomas usados recentemente</string>
<string name="sk_notify_posts">Notificações de posts</string>
<string name="sk_poll_allow_multiple">Permitir múltiplas escolhas</string>
@@ -61,30 +61,32 @@
<string name="sk_welcome_title">Bem vindo!</string>
<string name="sk_color_palette_material3">Sistema</string>
<string name="sk_color_palette_red">Vermelho</string>
<string name="sk_settings_donate">Doe</string>
<string name="sk_settings_donate">Doar</string>
<string name="sk_settings_rules">Regras</string>
<string name="sk_tabs_disable_swipe">Desativar deslizamento entre as abas</string>
<string name="sk_settings_profile">Criar um perfil</string>
<string name="sk_settings_profile">Configurar perfil</string>
<string name="sk_settings_posting">Preferências de postagem</string>
<string name="sk_settings_filters">Configurar filtros</string>
<string name="sk_delete_notification_confirm">Tem certeza que quer deletar esta notificação\?</string>
<string name="sk_delete_notification">Deletar notificação</string>
<string name="sk_delete_notification_confirm_action">Deletar notificação</string>
<string name="sk_enable_delete_notifications">Habilitar deletar notificações</string>
<string name="sk_delete_notification_confirm">Você tem certeza que deseja excluir esta notificação\?</string>
<string name="sk_delete_notification">Excluir notificação</string>
<string name="sk_delete_notification_confirm_action">Excluir notificação</string>
<string name="sk_enable_delete_notifications">Habilitar a exclusão de notificações</string>
<string name="sk_settings_publish_button_text_title">Customizar o texto do botão de publicar</string>
<string name="sk_settings_translate_only_opened">Esconder botão de tradução na linha do tempo</string>
<string name="sk_settings_translation_availability_note_available">%s possui tradução!</string>
<string name="sk_settings_translation_availability_note_unavailable">%s parece que não possui tradução</string>
<string name="sk_settings_translation_availability_note_available">%s suporta tradução!</string>
<string name="sk_settings_translation_availability_note_unavailable">%s parece não suportar tradução.</string>
<string name="sk_clear_all_notifications">Limpar todas as notificações</string>
<string name="sk_clear_all_notifications_confirm_action">Deletar todas</string>
<string name="sk_clear_all_notifications_confirm_action">Excluir tudo</string>
<string name="sk_loading_fediverse_resource_title">Procurando no Fediverso</string>
<string name="sk_undo_reblog">Desfazer reblog</string>
<string name="sk_reblog_with_visibility">Reblog com visibilidade</string>
<string name="sk_hashtags_you_follow">Hashtags que você segue</string>
<string name="sk_copy_link_to_post">Copiar link para postagem</string>
<string name="sk_loading_resource_on_instance_title">Procurando no %s</string>
<string name="sk_loading_resource_on_instance_title">Procurando em %s</string>
<string name="sk_open_with_account">Abrir com outra conta</string>
<string name="sk_resource_not_found">Recurso não pode ser encontrado</string>
<string name="sk_settings_about">Sobre o app</string>
<string name="sk_settings_auth">Configurações de segurança</string>
<string name="sk_settings_publish_button_text">Texto do botão de publicar</string>
<string name="sk_clear_all_notifications_confirm">Você tem certeza que deseja excluir todas as notificações\?</string>
</resources>

View File

@@ -16,7 +16,7 @@
<string name="sk_mark_media_as_sensitive">Отметить медиафайл как деликатный</string>
<string name="sk_settings_app_version">Megalodon v%1$s (%2$d)</string>
<string name="sk_notification_type_status">Публикации</string>
<string name="sk_notify_posts">Отправляет публикацию</string>
<string name="sk_notify_posts">Уведомдения о</string>
<string name="sk_settings_color_palette">Цветовая схема</string>
<string name="sk_color_palette_pink">Розовый</string>
<string name="sk_color_palette_purple">Фиолетовый</string>
@@ -28,16 +28,16 @@
<string name="sk_language_name">%s (%s)</string>
<string name="sk_welcome_title">Добро пожаловать!</string>
<string name="sk_example_domain">example.social</string>
<string name="sk_settings_load_new_posts">Автоматически загружать новые публикации</string>
<string name="sk_settings_show_replies">Показывать ответы на публикации</string>
<string name="sk_settings_load_new_posts">Автоматически загружать новые посты</string>
<string name="sk_settings_show_replies">Показать ответы</string>
<string name="sk_federated_timeline">Федерация</string>
<string name="sk_update_available">Megalodon %s готов к скачиванию.</string>
<string name="sk_update_ready">Megalodon %s скачан и готов к установке новой версии.</string>
<string name="sk_check_for_update">Проверить обновления</string>
<string name="sk_follow_requests">Запросы на подписку</string>
<string name="sk_lists_with_user">Списки с %s</string>
<string name="sk_confirm_unpin_post">Вы точно хотите открепить эту публикацию от профиля\?</string>
<string name="sk_unpinning">Открепление публикации</string>
<string name="sk_confirm_unpin_post">Вы уверены, что хотите открепить этот пост\?</string>
<string name="sk_unpinning">Открепляем пост</string>
<string name="sk_federated_timeline_info_banner">Это самые последние публикации людей из вашей федерации.</string>
<string name="sk_no_update_available">Обновление отсутствует</string>
<string name="sk_list_timelines">Списки</string>
@@ -87,4 +87,18 @@
<string name="sk_copy_link_to_post">Скопировать ссылку на публикацию</string>
<string name="sk_open_with_account">Открыть с другого аккаунта</string>
<string name="sk_resource_not_found">Ресурс не был найден</string>
<string name="sk_already_bookmarked">Уже в закладках</string>
<string name="sk_favorite_as">Добавить в избранное на другом аккаунте</string>
<string name="sk_already_favorited">Уже в избранном</string>
<string name="sk_reblog_as">Реблог на другой аккаунт</string>
<string name="sk_reblogged_as">Реблог на %s</string>
<string name="sk_reply_as">Ответить с другого аккаунта</string>
<string name="sk_settings_uniform_icon_for_notifications">Единая иконка для всех уведомлений</string>
<string name="sk_loading_fediverse_resource_title">Ищем это в Fediverse</string>
<string name="sk_bookmark_as">Добавить в закладки на другом аккаунте</string>
<string name="sk_bookmarked_as">В закладки как %s</string>
<string name="sk_favorited_as">В избранное как %s</string>
<string name="sk_already_reblogged">Уже реблогнуто</string>
<string name="sk_hashtags_you_follow">Хештеги, на которые вы подписаны</string>
<string name="sk_loading_resource_on_instance_title">Просматриваем на %s</string>
</resources>

View File

@@ -90,4 +90,34 @@
<string name="sk_loading_resource_on_instance_title">Пошук на %s</string>
<string name="sk_open_with_account">Відкрити через інший обліковий запис</string>
<string name="sk_resource_not_found">Ресурс не знайдено</string>
<string name="sk_bookmarked_as">Додано до закладок як %s</string>
<string name="sk_already_bookmarked">Уже в закладках</string>
<string name="sk_favorited_as">Уподобано як %s</string>
<string name="sk_already_favorited">Уже вподобано</string>
<string name="sk_reblog_as">Поширити з іншого облікового запису</string>
<string name="sk_already_reblogged">Уже поширено</string>
<string name="sk_settings_uniform_icon_for_notifications">Єдина піктограма для всіх сповіщень</string>
<string name="sk_bookmark_as">Додати до закладок іншого облікового запису</string>
<string name="sk_favorite_as">Уподобане з іншого облікового запису</string>
<string name="sk_reblogged_as">Поширено як %s</string>
<string name="sk_reply_as">Відповісти з іншого облікового запису</string>
<string name="sk_forward_report_to">Переслати до %s</string>
<string name="sk_unsent_posts">Не надіслані дописи</string>
<string name="sk_draft">Чернетка</string>
<string name="sk_schedule">Заплановане</string>
<string name="sk_confirm_delete_draft_title">Видалити чернетку</string>
<string name="sk_confirm_delete_scheduled_post_title">Видалити запланований допис</string>
<string name="sk_confirm_delete_scheduled_post">Ви дійсно хочете видалити цей запланований допис\?</string>
<string name="sk_compose_draft">Допис збережеться до чернеток.</string>
<string name="sk_compose_scheduled">Заплановано на</string>
<string name="sk_draft_saved">Чернетку збережено</string>
<string name="sk_post_scheduled">Допис заплановано</string>
<string name="sk_confirm_delete_draft">Ви дійсно хочете видалити чернетку цього допису\?</string>
<string name="sk_draft_or_schedule">У чернетки чи до запланованих</string>
<string name="sk_scheduled_too_soon_title">Надто скоро заплановано</string>
<string name="sk_scheduled_too_soon">Допис має бути запланований щонайменше на 10 хвилин наперед.</string>
<string name="sk_confirm_save_changes">Зберегти зміни\?</string>
<string name="sk_mark_as_draft">Позначити чернеткою</string>
<string name="sk_schedule_post">Запланувати допис</string>
<string name="sk_confirm_save_draft">Зберегти чернетку\?</string>
</resources>

View File

@@ -90,4 +90,32 @@
<string name="sk_loading_resource_on_instance_title">在 %s 上查找</string>
<string name="sk_resource_not_found">找不到资源</string>
<string name="sk_open_with_account">用另一个帐户打开</string>
<string name="sk_bookmark_as">在其他帐户中添加书签</string>
<string name="sk_bookmarked_as">已标记为 %s</string>
<string name="sk_already_bookmarked">已加入书签</string>
<string name="sk_favorite_as">从其他帐户收藏</string>
<string name="sk_favorited_as">收藏为 %s</string>
<string name="sk_already_favorited">已收藏</string>
<string name="sk_reblog_as">从其他帐户重新登录</string>
<string name="sk_reblogged_as">重新登录为 %s</string>
<string name="sk_already_reblogged">已重新登录</string>
<string name="sk_reply_as">用其他帐号回复</string>
<string name="sk_settings_uniform_icon_for_notifications">所有通知的统一图标</string>
<string name="sk_unsent_posts">未发送的嘟文</string>
<string name="sk_confirm_delete_draft_title">删除草稿</string>
<string name="sk_draft">草稿</string>
<string name="sk_schedule">预订</string>
<string name="sk_confirm_delete_scheduled_post_title">删除预订嘟文</string>
<string name="sk_confirm_delete_scheduled_post">您确定要删除此预定嘟文吗?</string>
<string name="sk_draft_or_schedule">草稿或预订</string>
<string name="sk_compose_draft">嘟文将保存为草稿。</string>
<string name="sk_compose_scheduled">预定于</string>
<string name="sk_draft_saved">草稿已保存</string>
<string name="sk_post_scheduled">预订嘟文</string>
<string name="sk_forward_report_to">转发给 %s</string>
<string name="sk_confirm_delete_draft">您确定要删除此嘟文草稿吗?</string>
<string name="sk_scheduled_too_soon_title">预定的时间过早</string>
<string name="sk_scheduled_too_soon">嘟文必须预订在未来至少 10 分钟后。</string>
<string name="sk_save_draft">保存草稿?</string>
<string name="sk_save_changes">保存更改?</string>
</resources>

View File

@@ -91,13 +91,13 @@
<string name="sk_copy_link_to_post">Copy link to post</string>
<string name="sk_open_with_account">Open with other account</string>
<string name="sk_resource_not_found">Resource could not be found</string>
<string name="sk_bookmark_as">Bookmark in other account</string>
<string name="sk_bookmark_as">Bookmark with other account</string>
<string name="sk_bookmarked_as">Bookmarked as %s</string>
<string name="sk_already_bookmarked">Already bookmarked</string>
<string name="sk_favorite_as">Favorite from other account</string>
<string name="sk_favorite_as">Favorite with other account</string>
<string name="sk_favorited_as">Favorited as %s</string>
<string name="sk_already_favorited">Already favorited</string>
<string name="sk_reblog_as">Reblog from other account</string>
<string name="sk_reblog_as">Reblog with other account</string>
<string name="sk_reblogged_as">Reblogged as %s</string>
<string name="sk_already_reblogged">Already reblogged</string>
<string name="sk_reply_as">Reply with other account</string>
@@ -117,6 +117,12 @@
<string name="sk_post_scheduled">Post scheduled</string>
<string name="sk_scheduled_too_soon_title">Scheduled time is too soon</string>
<string name="sk_scheduled_too_soon">Post must be scheduled at least 10 minutes in the future.</string>
<string name="sk_save_draft">Save draft?</string>
<string name="sk_save_changes">Save changes?</string>
<string name="sk_confirm_save_draft">Save draft?</string>
<string name="sk_confirm_save_changes">Save changes?</string>
<string name="sk_mark_as_draft">Mark as draft</string>
<string name="sk_schedule_post">Schedule post</string>
<string name="sk_schedule_or_draft">Schedule or draft</string>
<string name="sk_compose_no_schedule">Dont schedule</string>
<string name="sk_compose_no_draft">Dont draft</string>
<string name="sk_settings_reduce_motion">Reduce motion in animations</string>
</resources>

View File

@@ -8,4 +8,4 @@
- Wischen zwischen Tabs ausschaltbar
- Links zu Kontoeinstellungen hinzugefügt
- Einstellung, um den Übersetzen-Button in der Timeline anzuzeigen
- Fehlerbehebungen
- Fehlerbehebungen

View File

@@ -0,0 +1,8 @@
- Entwürfe und geplante Posts
- Mastodon 4.0-kompatible Filter von @thiagojedi
- Langes Klicken, um mit Posts (Antworten, Boosten, Liken, Lesezeichen) von anderen eingeloggten Konten zu interagieren
- Symbole in allen Menüs
- Erwähnung bei Verwendung der Funktion "Darüber schreiben" hinzufügen
- Option zur Verwendung eines einheitlichen Benachrichtigungssymbols anstelle von unterschiedlichen Symbolen
- Option zum Zugriff auf die In-App-Regelliste über die Einstellungen
- Fehlerbehebungen

View File

@@ -4,12 +4,13 @@ Megalodon ist eine modifizierte Version der <a href="https://github.com/mastodon
- <b>Ungelistet posten</b>: Öffentlich posten, ohne dass der Beitrag in Trends, Hashtags oder öffentlichen Timelines angezeigt wird.
- <b>Föderierte Timeline</b>: Alle öffentlichen Beiträge aller anderen Fediverse-Nachbarschaften, mit denen deine Heim-Instanz verbunden ist.
- <b>Entwürfe und geplante Beiträge</b>: Ermöglicht das Vorbereiten eines Posts und das Planen des automatischen Versands zu einem bestimmten Zeitpunkt.
- <b>Bildbeschreibungen anzeigen</b>: Unkompliziert prüfen, ob Bilder und Videos Alternativ-Texte beinhalten.
- <b>Beiträge anpinnen</b>: Pinne deine wichtigsten Beiträge an dein Profil an und sieh im “Angepinnt”-Tab nach, was andere User_innen angepinnt haben.
- <b>Hashtags folgen</b>: Bringt neue Beiträge bestimmter Hashtags direkt in deine Home-Timeline.
- <b>Folgeanfragen beantworten</b>: Folgeanfragen lassen sich nun direkt über die Benachrichtigungen-Liste oder über die Folgeanfragen-Liste akzeptieren oder ablehnen.
- <b>Beiträge löschen und neu erstellen</b>: Das beliebte Feature, das das Bearbeiten von Beiträgen ohne tatsächliche Bearbeit-Funktion möglich gemacht hat.
- <b>Beiträge löschen und neu erstellen</b>: Das beliebte Feature, dass das Bearbeiten von Beiträgen ohne tatsächliche Bearbeit-Funktion möglich gemacht hat.
- <b>Sprachauswahl</b>: Wähle mühelos die Sprache für jeden deiner Beiträge, damit diese richtig gefiltert und übersetzt werden können.
- <b>Übersetzung</b>: Beiträge können nun direkt in Megalodon übersetzt werden aber nur, wenn deine Instanz dies auch unterstützt.
- <b>Sichtbarkeits-Indikator</b>: Beim Öffnen oder Antworten auf einen Beitrag zeigt ein Symbol die Sichtbarkeit des Beitrags an.
- <b>Farb-Schemata</b>: Wem das Standard-Pink nicht gefällt (der Hai verurteilt dich stillschweigend), dem verschaffen die Farb-Schemata von Moshidon Abhilfe.
- <b>Farb-Schemata</b>: Wem das Standard-Pink nicht gefällt (der Hai verurteilt dich stillschweigend), dem verschaffen die Farb-Schemata von Moshidon Abhilfe.

View File

@@ -1,7 +1,9 @@
- Drafts and scheduled posts
- Mastodon 4.0 compatible filters by @thiagojedi
- Display original post when replying
- Mastodon 4.0 compatible filters (no "hide with warning" function yet)
- Long-click to interact with posts (reply, boost, like, bookmark) from other logged-in accounts
- Icons in all menus
- Toggle for forwarding reports
- Add mention when using "Post about this" function
- Option to use uniform notifications icon instead of distinct icons
- Option to access in-app rules list from settings

View File

@@ -0,0 +1,8 @@
- Borradores y publicaciones programadas
- Filtros compatibles con Mastodon 4.0 de @thiagojedi
- Clic largo para interactuar con publicaciones (respuesta, impulso, me gusta, marcador) de otras cuentas registradas
- Iconos en todos los menús
- Agregar mención al usar la función "Escribir sobre"
- Opción para usar un ícono de notificación uniforme en lugar de íconos diferentes
- Opción para acceder a la lista de reglas en la aplicación desde la configuración
- Corrección de errores

View File

@@ -1,15 +1,16 @@
Megalodon es una versión modificada de la <a href="https://github.com/mastodon/mastodon-android">aplicación oficial de Mastodon para Android</a> que añade funcionalidades importantes que le faltan a esta, como la cronología federada, la publicación descatalogada y un visor de descripciones de imágenes.
Megalodon es una versión modificada de la <a href="https://github.com/mastodon/mastodon-android">aplicación oficial de Mastodon para Android</a> con muchas características que faltan en la aplicación oficial, como la federada Timeline , publicar publicaciones no listadas y la capacidad de ver descripciones de imágenes.
<b>Funcionalidades importantes</b>
<b>Las funciones más importantes</b>
- <b>Publicación descatalogada</b>: haga envíos públicos sin que estos figuren en tendencias, etiquetas o cronologías públicas.
- <b>Cronología federada</b>: vea todos los envíos públicos de las personas en las instalaciones del Fediverso que estén conectadas con su instalación hogar.
- <b>Visor de descripciones de imágenes</b>: compruebe con rapidez si una imagen o un vídeo tiene texto alternativo.
- <b>Anclaje de publicaciones</b>: ancle sus envíos más importantes a su perfil y vea lo que otros han anclado mediante la pestaña «Ancladas».
- <b>Seguir etiquetas</b>: vea envíos etiquetados directamente en su cronología de inicio siguiéndolas.
- <b>Respuesta a solicitudes de seguimiento</b>: acepte o rechace solicitudes de seguimiento desde sus notificaciones o desde la lista dedicada.
- <b>Eliminar y reescribir</b>: la tan querida función que hizo posible editar los envíos ante la falta de una función Editar propiamente dicha.
- <b>Selector de idioma</b>: seleccione fácilmente el idioma de cada publicación que realice para que los filtros y la traducción funcionen correctamente.
- <b>Traducción</b>: ¡Traduce fácilmente las publicaciones dentro de Megalodon! Solo funciona si la función también está disponible en su Mastodon Web.
- <b>Indicador de visibilidad de publicación</b>: al abrir o responder a una publicación, se mostrará un ícono útil que indica la visibilidad de la publicación.
- <b>Temas de color</b>: si no te gusta el color rosa predeterminado (el tiburón te está juzgando en silencio), los temas de color de Moshidon te ayudarán.
- <b>Publicación no listada</b>: publique públicamente sin mostrar la publicación en tendencias, hashtags o cronologías públicas.
- <b>Línea de tiempo federada</b>: todas las publicaciones públicas de todos los demás vecindarios de Fediverse a los que está conectada su instancia de inicio.
- <b>Borradores y publicaciones programadas</b>: permite preparar una publicación y programarla para que se envíe automáticamente a una hora específica.
- <b>Mostrar descripciones de imágenes</b>: compruebe fácilmente si las imágenes y los vídeos contienen textos alternativos.
- <b>Fijar publicaciones</b>: fije sus publicaciones más importantes a su perfil y vea lo que otros usuarios han fijado en la pestaña "Fijado".
- <b>Follow Hashtags</b>: Trae nuevas publicaciones de hashtags específicos directamente a su línea de tiempo de inicio.
- <b>Responder solicitudes de seguimiento</b>: las solicitudes de seguimiento ahora se pueden aceptar o rechazar directamente a través de la lista de notificaciones o mediante la lista de solicitudes de seguimiento.
- <b>Eliminar publicaciones y crear nuevas</b>: la característica popular que hizo posible editar publicaciones sin editarlas realmente.
- <b>Selector de idioma</b>: elija fácilmente el idioma de cada una de sus publicaciones para que puedan filtrarse y traducirse correctamente.
- <b>Traducción</b>: las publicaciones ahora se pueden traducir directamente a Megalodon, pero solo si su instancia lo admite.
- <b>Indicador de visibilidad</b>: al abrir o responder a una publicación, un ícono indica la visibilidad de la publicación.
- <b>Esquemas de color</b>: si no te gusta el rosa predeterminado (el tiburón te juzga en silencio), los esquemas de color de Moshidon pueden ayudarte.

View File

@@ -0,0 +1 @@
Andoiderako Mastodon, baino hau arrosa da eta ezaugarri gehiago ditu

1
metadata/eu-ES/title.txt Normal file
View File

@@ -0,0 +1 @@
Megalodon

View File

@@ -0,0 +1,8 @@
- Brouillons et messages planifiés
- Filtres compatibles Mastodon 4.0 par @thiagojedi
- Appuis long pour interagir avec les messages (répondre, booster, aimer, signet) d'autres comptes connectés
- Icônes dans tous les menus
- Ajout d'une mention lors de l'utilisation de la fonction "Publier à ce sujet"
- Possibilité d'utiliser une icône de notification uniforme au lieu d'icônes distinctes
- Option pour accéder à la liste des règles de l'application à partir des paramètres
- Corrections de bugs

View File

@@ -4,6 +4,7 @@ Megalodon est une version modifiée de <a href="https://github.com/mastodon/mast
- <b>Publication non répertoriée</b> : Publiez publiquement sans que votre message apparaisse dans les tendances, les hashtags ou les timelines publiques.
- <b>Timeline fédérée</b> : Affichez tous les messages publics des personnes de tout le voisinage du Fediverse auxquel votre instance est connectée.
- <b>Brouillons et messages planifiés</b> : permet de préparer un message et de programmer son envoi automatiquement à une heure précise.
- <b>Visionneuse de description d'image</b> : Vérifiez rapidement si une image ou une vidéo est associée à un texte alternatif.
- <b>Épingler des publications</b> : Épinglez vos publications les plus importantes à votre profil et voyez ce que les autres ont épinglé en utilisant l'onglet "Épinglé".
- <b>Suivez des hashtags</b> : Voir les nouveaux messages avec des hashtags spécifiques directement dans votre timeline d'accueil en les suivant.

View File

@@ -0,0 +1,8 @@
- Draft dan kiriman terjadwal
- Saringan kompatibel dengan Mastodon 4.0 oleh @thiagojedi
- Klik lama untuk berinteraksi dengan kiriman (balas, bagikan, sukai, markahi) dari akun yang sudah masuk
- Ikon di semua menu
- Tambahkan sebutan ketika menggunakan fungsi "Kirim tentang ini"
- Opsi untuk menggunakan ikon notifikasi yang sama daripada ikon yang berbeda
- Opsi untuk mengakses daftar dalam aplikasi dari pengaturan
- Perbaikan kutu

View File

@@ -3,7 +3,8 @@ Megalodon adalah versi modifikasi <a href="https://github.com/mastodon/mastodon-
<b>Fitur unggulan</b>
- <b>Pengiriman tidak terdaftar</b>: Kirim secara publik tanpa memasukkan kiriman Anda dalam tren, tagar, atau lini masa publik.
- <b>Lini masa federasi</b>: Lihat semua kiriman publik dari orang-orang di semua tetangga Fediverse lainnya yang instansi rumah Anda terhubung.
- <b>Lini masa federasi</b>: Lihat semua kiriman publik dari orang-orang di semua tetangga Fedimesta lainnya yang instansi rumah Anda terhubung.
- <b>Draf dan kiriman terjadwal</b>: Memungkinkan untuk menyiapkan kiriman dan menjadwalkannya untuk dikirim secara otomatis pada waktu yang ditentukan.
- <b>Penampil deskripsi gambar</b>: Periksa secara cepat jika gambar atau video nemiliki deskripsi alternatif.
- <b>Menyematkan kiriman</b>: Sematkan kiriman penting Anda ke profil Anda dan lihat apa yang telah disematkan oleh orang lain menggunakan tab “Disematkan”.
- <b>Ikuti tagar</b>: Lihat kiriman baru dari tagar spesifik secara langsung dalam lini masa beranda Anda dengan mengikutinya.

View File

@@ -0,0 +1,6 @@
- 리블로그를 길게 눌러 공개 범위를 설정
- 자신의 리블로그에 대해 공개 범위 표시
- 팔로우한 해시태그 목록 추가
- 길게 눌러 링크 복사
- 다른 계정으로 게시물을 열 수 있는 옵션 제공
- 버그 해결 및 소소한 수정

View File

@@ -2,4 +2,5 @@
- Adicionada a função de tradução
- Melhorada a semântica para votação em enquetes (botões de opção e caixas de seleção)
- Adicionada a opção que permite a votação de várias opções nas enquetes
- Nova tela de login
- Correções de bugs

View File

@@ -1,5 +1,5 @@
- Botão de Publicar personalizável
- Links do Fediverso no abertos no aplicativo
- Links do Fediverso abertos no aplicativo
- Clique longo em impulsionar para "citar" uma postagem
- Copie o URL da postagem ao pressionar e segurar o compartilhar
- Exclusão de notificações (desativado por padrão)

View File

@@ -0,0 +1,4 @@
- Подготовьте файлы для выпуска на F-Droid
- Исправьте автоматическое обновление
- Добавьте однотонные иконки обратно в иконки пусковой установки
- Заменить неправильную иконку без списка в расширенном нижнем колонтитуле

View File

@@ -0,0 +1,6 @@
- Сделать возможным открытие исходного сообщения при ответе (щелчком по строке "В ответ на...")
- Слияние изменений и исправлений
- Удалить неиспользуемый код "App Center"
- Добавить релиз без федеративной временной шкалы для Play Store
- Добавить пользовательский URI перенаправления для упрощения входа
- Изменить ссылку на участие в проекте

View File

@@ -0,0 +1,4 @@
- Исправлен неработающий рендеринг HTML-тегов и включите рендеринг форматирования Markdown
- Инициализирован <a href="https://translate.codeberg.org/projects/megalodon">проект перевода на Weblate</a>
- Добавлен переключатель для федеративной временной шкалы
- Версии 52-54 были небольшими корректировками для выпуска на Google Play

View File

@@ -0,0 +1,6 @@
- Пользовательские цветовые темы от @LucasGGamerM
- Новый текстовый логотип "megalodon" предоставлен @LucasGGamerM
- Улучшен поиск эмодзи при написании текста
- Настроено голосование (отображение собственного голоса, всегда отображать кнопку голосования, не обрывать длинные ответы)
- Добавлена настройка push-уведомлений для уведомлений о сообщениях
- Исправления багов

View File

@@ -0,0 +1,6 @@
- Добавить селектор языков
- Добавить функцию перевода
- Улучшение семантики для голосования в опросах (радиокнопки и чекбоксы)
- Добавить возможность разрешить голосование за несколько вариантов в опросах
- Новый экран входа в систему
- Исправления

View File

@@ -0,0 +1,5 @@
- Новые цветовые темы: Material You и Красный
- Новые темно-серые тона для всех тем
- Более отчетливая иконка повышения наполненности
- Анимация для кнопок взаимодействия
- Исправления (сбой в некоторых сообщениях, "Списки с", язык сообщений по умолчанию)

View File

@@ -0,0 +1,11 @@
- Настраиваемая кнопка "Опубликовать
- Открывать ссылки Fediverse в приложении
- Длительное нажатие кнопки увеличения для "цитирования" сообщения
- Копирование URL-адреса поста при длительном нажатии на кнопку поделиться
- Реализация удаления уведомлений (по умолчанию отключено)
- Выделенные иконки для различных типов уведомлений
- Новые серые цвета
- Добавлена настройка для отключения пролистывания между вкладками
- Добавление различных ссылок на настройки аккаунта
- Переключатель для показа/скрытия кнопки перевода на временной шкале
- Исправления и доработки

View File

@@ -0,0 +1,6 @@
- Возможность делать реблог с определенной видимостью при длительном нажатии
- Показать видимость собственных реблогов
- Добавить список отслеживаемых хэштегов
- Длинный клик для копирования ссылок
- Возможность открывать посты с другого аккаунта
- Исправления и мелкие доработки

View File

@@ -10,6 +10,6 @@ Megalodon - это модифицированная версия <a href="https:
- <b> Ответы на запросы подписчиков</b>: принимайте или отклоняйте запросы подписчиков из ваших уведомлений или специального списка запросов подписчиков.
- <b>"Удалить и исправить"</b>: очень любимая функция, которая сделала возможным редактирование без реальной функции редактирования.
- <b>Выбор языка</b>: Безболезненно выбирайте язык для каждой публикации, которую вы делаете, чтобы фильтры и перевод работали правильно.
- <b>Перевод публикации</b>: Легко переводите публикации прямо внутри Megalodon! Работает только в том случае, если администратор вашего домашнего сервера включил эту функцию для Web-клиента Mastodon.
- <b>Перевод публикации</b>: Легко переводите публикации прямо внутри Megalodon! Работает только в том случае, если администратор вашего домашнего сервера включил эту функцию для Web-клиента Mastodon.
- <b>Индикатор видимости поста</b>: При открытии поста или ответе на него будет отображаться удобный значок, указывающий на видимость поста.
- <b>Цветовая схема</b>: Если вам по умолчанию не устраивает розовый цвет в клиенте (акула молча вас осуждает), цветовые схемы Moshidon помогут вам.

View File

@@ -0,0 +1,8 @@
- Чернетки й заплановані дописи
- Фільтри, сумісні з Mastodon 4.0, від @thiagojedi
- Взаємодіяти затисканням з дописами (відповісти, поширити, уподобати, додати до закладок) від інших облікових записів, до яких ви ввійшли.
- Піктограми у всіх меню
- Додавання згадки за користування функцією «Написати про це»
- Можливість використовувати єдину піктограму сповіщень замість різних піктограм
- Можливість доступу до списку правил застосунку з налаштувань
- Виправлення помилок

View File

@@ -4,6 +4,7 @@ Megalodon — це модифікована версія <a href="https://github
- <b>Приховані дописи</b>: Створюйте загальнодоступні дописи, але не показуйте їх у трендах, хештегах чи загальнодоступних стрічках.
- <b>Федеративна стрічка</b>: Переглядайте всі загальнодоступні дописи від людей зі всього Федівсесвіту!
- <b>Чернетки й заплановані дописи</b>: Дозволяє підготувати допис і запланувати його автонадсилання у вказаний час.
- <b>Переглядач опису зображення</b>: Швидко перевірте, чи має зображення або відео альтернативний опис.
- <b>Закріплення дописів</b>: Закріплюйте ваші найважливіші дописи у своєму профілі та переглядайте, що закріпили люди у вкладці "Закріплене".
- <b>Слідкуйте за хештегами</b>: Переглядайте нові дописи з певними хештегами безпосередньо у своїй домашній стрічці, підписавшись на них.