Merge remote-tracking branch 'megalodon_main/main'
# Conflicts: # mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java # mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTabFragment.java # mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java # mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java
This commit is contained in:
@@ -12,7 +12,7 @@ gab.protohype.net
|
||||
social.unzensiert.to
|
||||
freeatlantis.com
|
||||
|
||||
# reactionary bigotry and hatespeech against magrinalized groups
|
||||
# reactionary bigotry and hatespeech against marginalized groups
|
||||
poa.st
|
||||
freespeechextremist.com
|
||||
rdrama.cc
|
||||
|
||||
|
@@ -49,7 +49,6 @@ import org.joinmastodon.android.ui.photoviewer.PhotoViewer;
|
||||
import org.joinmastodon.android.ui.photoviewer.PhotoViewerHost;
|
||||
import org.joinmastodon.android.ui.utils.MediaAttachmentViewController;
|
||||
import org.joinmastodon.android.ui.utils.UiUtils;
|
||||
import org.joinmastodon.android.ui.views.MediaGridLayout;
|
||||
import org.joinmastodon.android.utils.TypedObjectPool;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -90,10 +89,10 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
|
||||
public BaseStatusListFragment(){
|
||||
super(20);
|
||||
if (withComposeButton()) setListLayoutId(R.layout.recycler_fragment_with_fab);
|
||||
if (wantsComposeButton()) setListLayoutId(R.layout.recycler_fragment_with_fab);
|
||||
}
|
||||
|
||||
protected boolean withComposeButton() {
|
||||
protected boolean wantsComposeButton() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -109,8 +108,6 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
setRetainInstance(true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected RecyclerView.Adapter getAdapter(){
|
||||
return adapter=new DisplayItemsAdapter();
|
||||
@@ -278,6 +275,36 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
});
|
||||
}
|
||||
|
||||
public @Nullable View getFab() {
|
||||
if (getParentFragment() instanceof HasFab l) return l.getFab();
|
||||
else return fab;
|
||||
}
|
||||
|
||||
public void animateFab(boolean show) {
|
||||
View fab = getFab();
|
||||
if (fab == null) return;
|
||||
if (show && fab.getVisibility() != View.VISIBLE) {
|
||||
fab.setVisibility(View.VISIBLE);
|
||||
TranslateAnimation animate = new TranslateAnimation(
|
||||
0,
|
||||
0,
|
||||
fab.getHeight() * 2,
|
||||
0);
|
||||
animate.setDuration(300);
|
||||
fab.startAnimation(animate);
|
||||
} else if (!show && fab.getVisibility() == View.VISIBLE) {
|
||||
TranslateAnimation animate = new TranslateAnimation(
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
fab.getHeight() * 2);
|
||||
animate.setDuration(300);
|
||||
fab.startAnimation(animate);
|
||||
fab.setVisibility(View.INVISIBLE);
|
||||
scrollDiff = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, Bundle savedInstanceState){
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
@@ -289,47 +316,21 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
if(currentPhotoViewer!=null)
|
||||
currentPhotoViewer.offsetView(-dx, -dy);
|
||||
|
||||
if (fab!=null && GlobalUserPreferences.enableFabAutoHide) {
|
||||
// This piece of code should make it so that the fab is always visible if the status list scroll view is at the item at the top
|
||||
if(list.getChildAt(0).getTop() == 0){
|
||||
scrollDiff= THRESHOLD +1;
|
||||
}else{
|
||||
if(dy > 0){
|
||||
scrollDiff=0;
|
||||
}
|
||||
}
|
||||
|
||||
View fab = getFab();
|
||||
if (fab!=null && GlobalUserPreferences.autoHideFab) {
|
||||
if (dy > 0 && fab.getVisibility() == View.VISIBLE) {
|
||||
TranslateAnimation animate = new TranslateAnimation(
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
fab.getHeight() * 2);
|
||||
animate.setDuration(300);
|
||||
// animate.setFillAfter(true);
|
||||
fab.startAnimation(animate);
|
||||
fab.setEnabled(false);
|
||||
fab.setVisibility(View.INVISIBLE);
|
||||
scrollDiff = 0;
|
||||
animateFab(false);
|
||||
} else if (dy < 0 && fab.getVisibility() != View.VISIBLE) {
|
||||
if (scrollDiff > THRESHOLD) {
|
||||
TranslateAnimation animate = new TranslateAnimation(
|
||||
0,
|
||||
0,
|
||||
fab.getHeight() * 2,
|
||||
0);
|
||||
animate.setDuration(300);
|
||||
// animate.setFillAfter(true);
|
||||
fab.startAnimation(animate);
|
||||
fab.setEnabled(true);
|
||||
fab.setVisibility(View.VISIBLE);
|
||||
if (list.getChildAt(0).getTop() == 0 || scrollDiff > THRESHOLD) {
|
||||
animateFab(true);
|
||||
scrollDiff = 0;
|
||||
} else {
|
||||
scrollDiff += Math.abs(dy);
|
||||
}
|
||||
}
|
||||
}
|
||||
}});
|
||||
}
|
||||
});
|
||||
list.addItemDecoration(new StatusListItemDecoration());
|
||||
((UsableRecyclerView)list).setSelectorBoundsProvider(new UsableRecyclerView.SelectorBoundsProvider(){
|
||||
private Rect tmpRect=new Rect();
|
||||
@@ -364,11 +365,12 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
((UsableRecyclerView) list).setIncludeMarginsInItemHitbox(true);
|
||||
updateToolbar();
|
||||
|
||||
if (withComposeButton()) {
|
||||
fab = view.findViewById(R.id.fab);
|
||||
if (wantsComposeButton() && !getArguments().getBoolean("__disable_fab", false)) {
|
||||
fab.setVisibility(View.VISIBLE);
|
||||
fab.setOnClickListener(this::onFabClick);
|
||||
fab.setOnLongClickListener(this::onFabLongClick);
|
||||
} else if (fab != null) {
|
||||
fab.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -696,13 +698,13 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
currentPhotoViewer.onPause();
|
||||
}
|
||||
|
||||
protected void onFabClick(View v){
|
||||
public void onFabClick(View v){
|
||||
Bundle args=new Bundle();
|
||||
args.putString("account", accountID);
|
||||
Nav.go(getActivity(), ComposeFragment.class, args);
|
||||
}
|
||||
|
||||
protected boolean onFabLongClick(View v) {
|
||||
public boolean onFabLongClick(View v) {
|
||||
return UiUtils.pickAccountForCompose(getActivity(), accountID);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package org.joinmastodon.android.fragments;
|
||||
|
||||
import android.view.View;
|
||||
|
||||
public interface HasFab {
|
||||
View getFab();
|
||||
}
|
||||
@@ -40,7 +40,7 @@ public class HashtagTimelineFragment extends PinnableStatusListFragment {
|
||||
private MenuItem followButton;
|
||||
|
||||
@Override
|
||||
protected boolean withComposeButton() {
|
||||
protected boolean wantsComposeButton() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -146,12 +146,12 @@ public class HashtagTimelineFragment extends PinnableStatusListFragment {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean onFabLongClick(View v) {
|
||||
public boolean onFabLongClick(View v) {
|
||||
return UiUtils.pickAccountForCompose(getActivity(), accountID, '#'+hashtag+' ');
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onFabClick(View v){
|
||||
public void onFabClick(View v){
|
||||
Bundle args=new Bundle();
|
||||
args.putString("account", accountID);
|
||||
args.putString("prefilledText", '#'+hashtag+' ');
|
||||
|
||||
@@ -25,6 +25,7 @@ import android.view.ViewParent;
|
||||
import android.view.ViewTreeObserver;
|
||||
import android.widget.Button;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.PopupMenu;
|
||||
import android.widget.TextView;
|
||||
@@ -72,7 +73,7 @@ import me.grishka.appkit.fragments.OnBackPressedListener;
|
||||
import me.grishka.appkit.utils.CubicBezierInterpolator;
|
||||
import me.grishka.appkit.utils.V;
|
||||
|
||||
public class HomeTabFragment extends MastodonToolbarFragment implements ScrollableToTop, OnBackPressedListener, DomainDisplay {
|
||||
public class HomeTabFragment extends MastodonToolbarFragment implements ScrollableToTop, OnBackPressedListener, DomainDisplay, HasFab {
|
||||
private static final int ANNOUNCEMENTS_RESULT = 654;
|
||||
|
||||
private String accountID;
|
||||
@@ -100,6 +101,7 @@ public class HomeTabFragment extends MastodonToolbarFragment implements Scrollab
|
||||
private PopupMenu overflowPopup;
|
||||
private View overflowActionView = null;
|
||||
private boolean announcementsBadged, settingsBadged;
|
||||
private ImageButton fab;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
@@ -128,6 +130,10 @@ public class HomeTabFragment extends MastodonToolbarFragment implements Scrollab
|
||||
@Override
|
||||
public View onCreateContentView(LayoutInflater inflater, ViewGroup container, Bundle bundle) {
|
||||
FrameLayout view = new FrameLayout(getContext());
|
||||
inflater.inflate(R.layout.compose_fab, view);
|
||||
fab = view.findViewById(R.id.fab);
|
||||
fab.setOnClickListener(this::onFabClick);
|
||||
fab.setOnLongClickListener(this::onFabLongClick);
|
||||
pager = new ViewPager2(getContext());
|
||||
toolbarFrame = (FrameLayout) LayoutInflater.from(getContext()).inflate(R.layout.home_toolbar, getToolbar(), false);
|
||||
|
||||
@@ -135,6 +141,7 @@ public class HomeTabFragment extends MastodonToolbarFragment implements Scrollab
|
||||
Bundle args = new Bundle();
|
||||
args.putString("account", accountID);
|
||||
args.putBoolean("__is_tab", true);
|
||||
args.putBoolean("__disable_fab", true);
|
||||
args.putBoolean("onlyPosts", true);
|
||||
|
||||
for (int i = 0; i < timelineDefinitions.size(); i++) {
|
||||
@@ -298,6 +305,20 @@ public class HomeTabFragment extends MastodonToolbarFragment implements Scrollab
|
||||
return DomainDisplay.super.getDomain();
|
||||
}
|
||||
|
||||
private void onFabClick(View v){
|
||||
if (fragments[pager.getCurrentItem()] instanceof BaseStatusListFragment<?> l) {
|
||||
l.onFabClick(v);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean onFabLongClick(View v) {
|
||||
if (fragments[pager.getCurrentItem()] instanceof BaseStatusListFragment<?> l) {
|
||||
return l.onFabLongClick(v);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private void addListsToOverflowMenu() {
|
||||
Context ctx = getContext();
|
||||
listsMenu.clear();
|
||||
@@ -448,6 +469,7 @@ public class HomeTabFragment extends MastodonToolbarFragment implements Scrollab
|
||||
private void updateSwitcherIcon(int i) {
|
||||
timelineIcon.setImageResource(timelines[i].getIcon().iconRes);
|
||||
timelineTitle.setText(timelines[i].getTitle(getContext()));
|
||||
if (fragments[i] instanceof BaseStatusListFragment<?> l) l.animateFab(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -686,6 +708,10 @@ public class HomeTabFragment extends MastodonToolbarFragment implements Scrollab
|
||||
return hashtagsItems.values();
|
||||
}
|
||||
|
||||
public ImageButton getFab() {
|
||||
return fab;
|
||||
}
|
||||
|
||||
private class HomePagerAdapter extends RecyclerView.Adapter<SimpleViewHolder> {
|
||||
@NonNull
|
||||
@Override
|
||||
|
||||
@@ -38,7 +38,7 @@ public class HomeTimelineFragment extends StatusListFragment {
|
||||
private String lastSavedMarkerID;
|
||||
|
||||
@Override
|
||||
protected boolean withComposeButton() {
|
||||
protected boolean wantsComposeButton() {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ public class ListTimelineFragment extends PinnableStatusListFragment {
|
||||
private ListTimeline.RepliesPolicy repliesPolicy;
|
||||
|
||||
@Override
|
||||
protected boolean withComposeButton() {
|
||||
protected boolean wantsComposeButton() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -152,7 +152,7 @@ public class ListTimelineFragment extends PinnableStatusListFragment {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onFabClick(View v){
|
||||
public void onFabClick(View v){
|
||||
Bundle args=new Bundle();
|
||||
args.putString("account", accountID);
|
||||
Nav.go(getActivity(), ComposeFragment.class, args);
|
||||
|
||||
@@ -19,7 +19,6 @@ import org.joinmastodon.android.model.CacheablePaginatedResponse;
|
||||
import org.joinmastodon.android.model.Emoji;
|
||||
import org.joinmastodon.android.model.Filter;
|
||||
import org.joinmastodon.android.model.Notification;
|
||||
import org.joinmastodon.android.model.PaginatedResponse;
|
||||
import org.joinmastodon.android.model.Status;
|
||||
import org.joinmastodon.android.ui.displayitems.AccountCardStatusDisplayItem;
|
||||
import org.joinmastodon.android.ui.displayitems.HeaderStatusDisplayItem;
|
||||
@@ -50,8 +49,8 @@ public class NotificationsListFragment extends BaseStatusListFragment<Notificati
|
||||
private final DiscoverInfoBannerHelper bannerHelper = new DiscoverInfoBannerHelper(DiscoverInfoBannerHelper.BannerType.POST_NOTIFICATIONS);
|
||||
|
||||
@Override
|
||||
protected boolean withComposeButton() {
|
||||
return true;
|
||||
protected boolean wantsComposeButton() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -107,7 +106,8 @@ public class NotificationsListFragment extends BaseStatusListFragment<Notificati
|
||||
case UPDATE -> getString(R.string.sk_post_edited);
|
||||
case SIGN_UP -> getString(R.string.sk_signed_up);
|
||||
case REPORT -> getString(R.string.sk_reported);
|
||||
case EMOJI_REACTION -> getString(R.string.sk_reacted, n.emoji);
|
||||
case REACTION, PLEROMA_EMOJI_REACTION ->
|
||||
n.emoji != null ? getString(R.string.sk_reacted_with, n.emoji) : getString(R.string.sk_reacted);
|
||||
};
|
||||
HeaderStatusDisplayItem titleItem=extraText!=null ? new HeaderStatusDisplayItem(n.id, n.account, n.createdAt, this, accountID, n.status, n.emojiUrl!=null ? HtmlParser.parseCustomEmoji(extraText, Collections.singletonList(emoji)) : extraText, n, null) : null;
|
||||
if(n.status!=null){
|
||||
@@ -214,7 +214,6 @@ public class NotificationsListFragment extends BaseStatusListFragment<Notificati
|
||||
public void onViewCreated(View view, Bundle savedInstanceState){
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
list.addItemDecoration(new InsetStatusItemDecoration(this));
|
||||
if (getParentFragment() instanceof NotificationsFragment) fab.setVisibility(View.GONE);
|
||||
if (onlyPosts) bannerHelper.maybeAddBanner(contentWrap);
|
||||
}
|
||||
|
||||
|
||||
@@ -115,7 +115,7 @@ import me.grishka.appkit.utils.CubicBezierInterpolator;
|
||||
import me.grishka.appkit.utils.V;
|
||||
import me.grishka.appkit.views.UsableRecyclerView;
|
||||
|
||||
public class ProfileFragment extends LoaderFragment implements OnBackPressedListener, ScrollableToTop{
|
||||
public class ProfileFragment extends LoaderFragment implements OnBackPressedListener, ScrollableToTop, HasFab{
|
||||
private static final int AVATAR_RESULT=722;
|
||||
private static final int COVER_RESULT=343;
|
||||
|
||||
@@ -158,7 +158,6 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
private WindowInsets childInsets;
|
||||
private PhotoViewer currentPhotoViewer;
|
||||
private boolean editModeLoading;
|
||||
protected int scrollDiff = 0;
|
||||
|
||||
private static final int MAX_FIELDS=4;
|
||||
|
||||
@@ -232,7 +231,6 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
followingCount=content.findViewById(R.id.following_count);
|
||||
followingLabel=content.findViewById(R.id.following_label);
|
||||
followingBtn=content.findViewById(R.id.following_btn);
|
||||
|
||||
postsCount=content.findViewById(R.id.posts_count);
|
||||
postsLabel=content.findViewById(R.id.posts_label);
|
||||
postsBtn=content.findViewById(R.id.posts_btn);
|
||||
@@ -594,7 +592,6 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
|
||||
boolean isSelf=AccountSessionManager.getInstance().isSelf(accountID, account);
|
||||
|
||||
|
||||
if(account.locked){
|
||||
ssb=new SpannableStringBuilder("@");
|
||||
ssb.append(account.acct);
|
||||
@@ -902,36 +899,6 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
if(currentPhotoViewer!=null){
|
||||
currentPhotoViewer.offsetView(0, oldScrollY-scrollY);
|
||||
}
|
||||
|
||||
if(GlobalUserPreferences.enableFabAutoHide){
|
||||
int dy = scrollY - oldScrollY;
|
||||
|
||||
if (dy > 0 && fab.getVisibility() == View.VISIBLE) {
|
||||
TranslateAnimation animate = new TranslateAnimation(
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
fab.getHeight() * 2);
|
||||
animate.setDuration(300);
|
||||
fab.startAnimation(animate);
|
||||
fab.setVisibility(View.INVISIBLE);
|
||||
scrollDiff = 0;
|
||||
} else if (dy < 0 && fab.getVisibility() != View.VISIBLE) {
|
||||
if (scrollDiff > 400) {
|
||||
fab.setVisibility(View.VISIBLE);
|
||||
TranslateAnimation animate = new TranslateAnimation(
|
||||
0,
|
||||
0,
|
||||
fab.getHeight() * 2,
|
||||
0);
|
||||
animate.setDuration(300);
|
||||
fab.startAnimation(animate);
|
||||
scrollDiff = 0;
|
||||
} else {
|
||||
scrollDiff += Math.abs(dy);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Fragment getFragmentForPage(int page){
|
||||
|
||||
@@ -32,7 +32,7 @@ public class ScheduledStatusListFragment extends BaseStatusListFragment<Schedule
|
||||
private static final int SCHEDULED_STATUS_LIST_OPENED = 161;
|
||||
|
||||
@Override
|
||||
protected boolean withComposeButton() {
|
||||
protected boolean wantsComposeButton() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ public class ScheduledStatusListFragment extends BaseStatusListFragment<Schedule
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onFabClick(View v) {
|
||||
public void onFabClick(View v) {
|
||||
Bundle args=new Bundle();
|
||||
args.putString("account", accountID);
|
||||
args.putSerializable("scheduledAt", CreateStatus.getDraftInstant());
|
||||
@@ -65,7 +65,7 @@ public class ScheduledStatusListFragment extends BaseStatusListFragment<Schedule
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean onFabLongClick(View v) {
|
||||
public boolean onFabLongClick(View v) {
|
||||
Bundle args=new Bundle();
|
||||
args.putString("account", accountID);
|
||||
args.putSerializable("scheduledAt", CreateStatus.getDraftInstant());
|
||||
|
||||
@@ -21,7 +21,7 @@ public class FederatedTimelineFragment extends StatusListFragment {
|
||||
private String maxID;
|
||||
|
||||
@Override
|
||||
protected boolean withComposeButton() {
|
||||
protected boolean wantsComposeButton() {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ public class LocalTimelineFragment extends StatusListFragment {
|
||||
private String maxID;
|
||||
|
||||
@Override
|
||||
protected boolean withComposeButton() {
|
||||
protected boolean wantsComposeButton() {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -53,12 +53,14 @@ public class Notification extends BaseModel implements DisplayItemsParent{
|
||||
STATUS,
|
||||
@SerializedName("update")
|
||||
UPDATE,
|
||||
@SerializedName("reaction")
|
||||
REACTION,
|
||||
@SerializedName("pleroma:emoji_reaction")
|
||||
PLEROMA_EMOJI_REACTION,
|
||||
@SerializedName("admin.sign_up")
|
||||
SIGN_UP,
|
||||
@SerializedName("admin.report")
|
||||
REPORT,
|
||||
@SerializedName("pleroma:emoji_reaction")
|
||||
EMOJI_REACTION
|
||||
REPORT
|
||||
}
|
||||
|
||||
@Parcel
|
||||
|
||||
@@ -207,7 +207,6 @@ public abstract class StatusDisplayItem{
|
||||
items.add(new GapStatusDisplayItem(parentID, fragment));
|
||||
}
|
||||
}
|
||||
|
||||
int i=1;
|
||||
for(StatusDisplayItem item:items){
|
||||
item.inset=inset;
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -82,8 +82,8 @@
|
||||
<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>
|
||||
<string name="sk_loading_fediverse_resource_title">Suche im Fediverse</string>
|
||||
<string name="sk_undo_reblog">Reblog rückgängig machen</string>
|
||||
<string name="sk_reblog_with_visibility">Rebloggen mit Sichtbarkeit</string>
|
||||
<string name="sk_undo_reblog">Teilen rückgängig machen</string>
|
||||
<string name="sk_reblog_with_visibility">Teilen mit Sichtbarkeit</string>
|
||||
<string name="sk_quote_post">Drüberkommentieren</string>
|
||||
<string name="sk_hashtags_you_follow">Hashtags, denen du folgst</string>
|
||||
<string name="sk_copy_link_to_post">Link zum Beitrag kopieren</string>
|
||||
@@ -96,9 +96,9 @@
|
||||
<string name="sk_favorite_as">Favorit mit 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">Mit 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_reblog_as">Mit einem anderen Konto teilen</string>
|
||||
<string name="sk_reblogged_as">Geteilt als %s</string>
|
||||
<string name="sk_already_reblogged">Bereits geteilt</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>
|
||||
@@ -269,7 +269,9 @@
|
||||
<string name="sk_quoting_user">Zitiere %s</string>
|
||||
<string name="sk_notification_action_replied">Antwort an %s gesendet</string>
|
||||
<string name="sk_show_thread">Thread öffnen</string>
|
||||
<string name="sk_compact_reblog_reply_line">Kompakte Geteilt/Geantwortet-Zeile</string>
|
||||
<string name="sk_compact_reblog_reply_line">Kompakte Geteilt-/Geantwortet-Zeile</string>
|
||||
<string name="sk_reply_line_above_avatar">“Als Antwort auf”-Zeile über Profilbild</string>
|
||||
<string name="sk_settings_confirm_before_reblog">Vor dem Teilen bestätigen</string>
|
||||
<string name="sk_reacted">hat reagiert</string>
|
||||
<string name="sk_reacted_with">hat mit %s reagiert</string>
|
||||
</resources>
|
||||
@@ -82,8 +82,8 @@
|
||||
<string name="sk_settings_translation_availability_note_unavailable">%s ne semble pas prendre en charge la traduction.</string>
|
||||
<string name="sk_clear_all_notifications_confirm">Voulez-vous vraiment supprimer toutes les notifications \?</string>
|
||||
<string name="sk_loading_fediverse_resource_title">Rechercher sur le Fediverse</string>
|
||||
<string name="sk_reblog_with_visibility">Reposter avec la visibilité</string>
|
||||
<string name="sk_undo_reblog">Annuler le repost</string>
|
||||
<string name="sk_reblog_with_visibility">Booster avec la visibilité</string>
|
||||
<string name="sk_undo_reblog">Annuler le boost</string>
|
||||
<string name="sk_quote_post">Poster à ce sujet</string>
|
||||
<string name="sk_hashtags_you_follow">Hashtags que vous suivez</string>
|
||||
<string name="sk_open_in_account">Ouvrir dans un autre compte</string>
|
||||
@@ -94,13 +94,13 @@
|
||||
<string name="sk_favorite_as">Mettre en favoris avec 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_reblogged_as">Boosté en tant que %s</string>
|
||||
<string name="sk_already_reblogged">Déjà boosté</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 avec un autre compte</string>
|
||||
<string name="sk_reblog_as">Reposter avec un autre compte</string>
|
||||
<string name="sk_reblog_as">Booster avec 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>
|
||||
@@ -171,7 +171,7 @@
|
||||
<string name="sk_alt_button">ALT</string>
|
||||
<string name="sk_post_edited">édité</string>
|
||||
<string name="sk_edit_timeline">Modifier la timeline</string>
|
||||
<string name="sk_notify_update">Modifie un article reposté</string>
|
||||
<string name="sk_notify_update">Modifier un article boosté</string>
|
||||
<string name="sk_settings_disable_alt_text_reminder">Désactiver le rappel pour ajouter du texte alternatif</string>
|
||||
<string name="sk_notification_type_update">Messages modifiés</string>
|
||||
<string name="sk_icon_code">Code</string>
|
||||
@@ -271,7 +271,7 @@
|
||||
<string name="sk_settings_reply_visibility_self">Me répond</string>
|
||||
<string name="sk_notification_action_replied">Réponse envoyée à %s</string>
|
||||
<string name="sk_show_thread">Afficher le fil</string>
|
||||
<string name="sk_compact_reblog_reply_line">Ligne de repost/réponse compacte</string>
|
||||
<string name="sk_compact_reblog_reply_line">Ligne boost/réponse compacte</string>
|
||||
<string name="sk_reply_line_above_avatar">Ligne \"En réponse à\" au-dessus de l\'avatar</string>
|
||||
<string name="sk_settings_confirm_before_reblog">Confirmer avant de reposter</string>
|
||||
<string name="sk_settings_confirm_before_reblog">Confirmer avant de booster</string>
|
||||
</resources>
|
||||
@@ -79,8 +79,8 @@
|
||||
<string name="sk_favorite_as">Favorecer con outra conta</string>
|
||||
<string name="sk_favorited_as">Favorita con %s</string>
|
||||
<string name="sk_already_favorited">Xa foi favorecida</string>
|
||||
<string name="sk_reblogged_as">Promovida por %s</string>
|
||||
<string name="sk_already_reblogged">Xa foi promovida</string>
|
||||
<string name="sk_reblogged_as">Impulsado coma %s</string>
|
||||
<string name="sk_already_reblogged">Xa foi impulsado</string>
|
||||
<string name="sk_reply_as">Responder con outra conta</string>
|
||||
<string name="sk_settings_uniform_icon_for_notifications">Icona uniforme para tódalas notificacións</string>
|
||||
<string name="sk_enable_delete_notifications">Activar a eliminación de notificacións</string>
|
||||
@@ -88,9 +88,9 @@
|
||||
<string name="sk_settings_publish_button_text_title">Personalizar o texto do botón de publicar</string>
|
||||
<string name="sk_settings_translation_availability_note_unavailable">%s non semella ter soporte para tradución.</string>
|
||||
<string name="sk_loading_fediverse_resource_title">Buscando no Fediverso</string>
|
||||
<string name="sk_reblog_with_visibility">Promover con visibilidade</string>
|
||||
<string name="sk_reblog_with_visibility">Impulsar con visibilidade</string>
|
||||
<string name="sk_quote_post">Publicar acerca disto</string>
|
||||
<string name="sk_undo_reblog">Retirar a promoción</string>
|
||||
<string name="sk_undo_reblog">Desfacer o impulso</string>
|
||||
<string name="sk_copy_link_to_post">Copiar ligazón á publicación</string>
|
||||
<string name="sk_loading_resource_on_instance_title">Buscando en %s</string>
|
||||
<string name="sk_open_with_account">Abrir con outra conta</string>
|
||||
@@ -113,7 +113,7 @@
|
||||
<string name="sk_schedule_or_draft">Programar ou borrador</string>
|
||||
<string name="sk_compose_no_schedule">Non programar</string>
|
||||
<string name="sk_compose_no_draft">Non facer borrador</string>
|
||||
<string name="sk_reblog_as">Promover con outra conta</string>
|
||||
<string name="sk_reblog_as">Impulsar con outra conta</string>
|
||||
<string name="sk_settings_reduce_motion">Reducir movemento nas animacións</string>
|
||||
<string name="sk_announcements">Anuncios</string>
|
||||
<string name="sk_mark_as_read">Marcar como lido</string>
|
||||
@@ -225,7 +225,7 @@
|
||||
<string name="sk_icon_gavel">Mazo</string>
|
||||
<string name="sk_icon_gauge">Indicador</string>
|
||||
<string name="sk_icon_math_formula">Fórmula matemática</string>
|
||||
<string name="sk_notify_update">Edita unha publicación promovida</string>
|
||||
<string name="sk_notify_update">Edita unha publicación impulsada</string>
|
||||
<string name="sk_no_results">Sen resultados</string>
|
||||
<string name="sk_save_draft">Gardar borrador\?</string>
|
||||
<string name="sk_no_alt_text">Sen texto descriptivo</string>
|
||||
@@ -271,5 +271,6 @@
|
||||
<string name="sk_notification_action_replied">Resposta enviada a %s</string>
|
||||
<string name="sk_reply_line_above_avatar">Liña \"en resposta a\" sobre o avatar</string>
|
||||
<string name="sk_show_thread">Mostrar chío</string>
|
||||
<string name="sk_compact_reblog_reply_line">Compactar liña de promoción/resposta</string>
|
||||
<string name="sk_compact_reblog_reply_line">Compactar liña de impulso/resposta</string>
|
||||
<string name="sk_settings_confirm_before_reblog">Confirma antes de impulsar</string>
|
||||
</resources>
|
||||
@@ -252,7 +252,8 @@
|
||||
<string name="sk_settings_glitch_mode_explanation">Enable this if your home instance runs on Glitch. Not needed for Hometown or Akkoma.</string>
|
||||
<string name="sk_signed_up">signed up</string>
|
||||
<string name="sk_reported">reported</string>
|
||||
<string name="sk_reacted">reacted with %s</string>
|
||||
<string name="sk_reacted_with">reacted with %s</string>
|
||||
<string name="sk_reacted">reacted</string>
|
||||
<string name="sk_sign_ups">Users signing up</string>
|
||||
<string name="sk_new_reports">New reports</string>
|
||||
<string name="sk_settings_server_version">Server version: %s</string>
|
||||
|
||||
@@ -222,6 +222,7 @@
|
||||
<item name="android:actionBarTheme">@style/Theme.Mastodon.Toolbar.Dark.TrueBlack</item>
|
||||
<item name="colorBackgroundLight">@color/black</item>
|
||||
<item name="colorButtonText">@color/black</item>
|
||||
<item name="toolbarBackground">@color/black</item>
|
||||
<item name="colorPollVoted">?colorGray700</item>
|
||||
<item name="colorSearchField">?colorGray900</item>
|
||||
<item name="colorBackgroundLightest">@color/black</item>
|
||||
@@ -257,7 +258,7 @@
|
||||
</style>
|
||||
|
||||
<style name="Theme.Mastodon.Toolbar.Dark.TrueBlack" parent="android:ThemeOverlay.Material.Dark.ActionBar">
|
||||
<item name="android:colorPrimary">@color/black</item>
|
||||
<item name="android:colorPrimary">?toolbarBackground</item>
|
||||
<item name="android:toolbarStyle">@style/Widget.Mastodon.Toolbar</item>
|
||||
<!-- Why must we re-add this? So that the text color isn't wrong. I don't know why it doesn't work, but we shall do this so it looks right -->
|
||||
<item name="android:textColorPrimary">?colorGray50</item>
|
||||
|
||||
Reference in New Issue
Block a user