From a91538582acc99410cc4927873cf12b97b885631 Mon Sep 17 00:00:00 2001 From: Grishka Date: Sun, 13 Feb 2022 16:16:20 +0300 Subject: [PATCH] Fix state save/restore and move colors to attrs --- .../fragments/BaseStatusListFragment.java | 6 ++ .../android/fragments/ComposeFragment.java | 54 ++++++++++-- .../android/fragments/HomeFragment.java | 50 ++++++----- .../fragments/ProfileAboutFragment.java | 3 +- .../android/fragments/ProfileFragment.java | 84 +++++++++++++------ .../android/fragments/ThreadFragment.java | 6 +- .../android/ui/CustomEmojiPopupKeyboard.java | 3 +- .../displayitems/FooterStatusDisplayItem.java | 6 +- .../ReblogOrReplyLineStatusDisplayItem.java | 4 +- .../android/ui/utils/UiUtils.java | 14 +++- .../joinmastodon/android/ui/views/TabBar.java | 8 ++ mastodon/src/main/res/color/boost_icon.xml | 4 +- mastodon/src/main/res/color/button_bg.xml | 4 +- .../main/res/color/button_bg_secondary.xml | 5 ++ mastodon/src/main/res/color/favorite_icon.xml | 2 +- .../main/res/drawable/bg_button_secondary.xml | 2 +- mastodon/src/main/res/drawable/bg_fab.xml | 2 +- .../src/main/res/drawable/bg_poll_option.xml | 2 +- .../res/drawable/bg_poll_option_clickable.xml | 2 +- .../drawable/bg_profile_field_edit_text.xml | 2 +- .../main/res/layout/compose_poll_option.xml | 1 + .../main/res/layout/display_item_footer.xml | 4 +- .../main/res/layout/display_item_header.xml | 1 + .../res/layout/display_item_poll_footer.xml | 2 +- .../display_item_reblog_or_reply_line.xml | 2 +- .../src/main/res/layout/fragment_compose.xml | 8 +- .../src/main/res/layout/fragment_profile.xml | 6 +- .../main/res/layout/item_emoji_section.xml | 2 +- .../main/res/layout/item_profile_about.xml | 2 +- .../res/layout/item_profile_about_add_row.xml | 2 +- .../layout/item_profile_about_editable.xml | 2 +- mastodon/src/main/res/values/attrs.xml | 10 +++ mastodon/src/main/res/values/colors.xml | 2 - mastodon/src/main/res/values/ids.xml | 5 ++ mastodon/src/main/res/values/styles.xml | 52 ++++++++---- 35 files changed, 255 insertions(+), 109 deletions(-) create mode 100644 mastodon/src/main/res/color/button_bg_secondary.xml create mode 100644 mastodon/src/main/res/values/attrs.xml diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java index 9cf464f8..6e2441c6 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java @@ -52,6 +52,12 @@ public abstract class BaseStatusListFragment exten super(20); } + @Override + public void onCreate(Bundle savedInstanceState){ + super.onCreate(savedInstanceState); + setRetainInstance(true); + } + @Override protected RecyclerView.Adapter getAdapter(){ return adapter=new DisplayItemsAdapter(); diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java index 8f28c04e..73527ffa 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java @@ -132,11 +132,13 @@ public class ComposeFragment extends ToolbarFragment implements OnBackPressedLis private String initialReplyMentions; private String uuid; private int pollDuration=24*3600; + private String pollDurationStr; @Override - public void onAttach(Activity activity){ - super.onAttach(activity); - setHasOptionsMenu(true); + public void onCreate(Bundle savedInstanceState){ + super.onCreate(savedInstanceState); + setRetainInstance(true); + accountID=getArguments().getString("account"); AccountSession session=AccountSessionManager.getInstance().getAccount(accountID); charLimit=session.tootCharLimit; @@ -145,15 +147,21 @@ public class ComposeFragment extends ToolbarFragment implements OnBackPressedLis self=session.self; instanceDomain=session.domain; customEmojis=AccountSessionManager.getInstance().getCustomEmojis(instanceDomain); - emojiKeyboard=new CustomEmojiPopupKeyboard(activity, customEmojis, instanceDomain); - emojiKeyboard.setListener(this::onCustomEmojiClick); - if(getArguments().containsKey("replyTo")) replyTo=Parcels.unwrap(getArguments().getParcelable("replyTo")); } + @Override + public void onAttach(Activity activity){ + super.onAttach(activity); + setHasOptionsMenu(true); + } + @Override public View onCreateContentView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ + emojiKeyboard=new CustomEmojiPopupKeyboard(getActivity(), customEmojis, instanceDomain); + emojiKeyboard.setListener(this::onCustomEmojiClick); + View view=inflater.inflate(R.layout.fragment_compose, container, false); mainEditText=view.findViewById(R.id.toot_text); charCounter=view.findViewById(R.id.char_counter); @@ -206,12 +214,42 @@ public class ComposeFragment extends ToolbarFragment implements OnBackPressedLis }); pollOptionsView.setDragListener(this::onSwapPollOptions); pollDurationView=view.findViewById(R.id.poll_duration); - pollDurationView.setText(getString(R.string.compose_poll_duration, getResources().getQuantityString(R.plurals.x_days, 1, 1))); pollDurationView.setOnClickListener(v->showPollDurationMenu()); + pollOptions.clear(); + if(savedInstanceState!=null && savedInstanceState.containsKey("pollOptions")){ + pollBtn.setSelected(true); + mediaBtn.setEnabled(false); + pollWrap.setVisibility(View.VISIBLE); + for(String oldText:savedInstanceState.getStringArrayList("pollOptions")){ + DraftPollOption opt=createDraftPollOption(); + opt.edit.setText(oldText); + } + updatePollOptionHints(); + pollDurationView.setText(getString(R.string.compose_poll_duration, pollDurationStr)); + }else{ + pollDurationView.setText(getString(R.string.compose_poll_duration, pollDurationStr=getResources().getQuantityString(R.plurals.x_days, 1, 1))); + } + + // TODO save and restore media attachments (when design is ready) + return view; } + @Override + public void onSaveInstanceState(Bundle outState){ + super.onSaveInstanceState(outState); + if(!pollOptions.isEmpty()){ + ArrayList opts=new ArrayList<>(); + for(DraftPollOption opt:pollOptions){ + opts.add(opt.edit.getText().toString()); + } + outState.putStringArrayList("pollOptions", opts); + outState.putInt("pollDuration", pollDuration); + outState.putString("pollDurationStr", pollDurationStr); + } + } + @Override public void onResume(){ super.onResume(); @@ -592,7 +630,7 @@ public class ComposeFragment extends ToolbarFragment implements OnBackPressedLis case 7 -> 7*24*3600; default -> throw new IllegalStateException("Unexpected value: "+item.getItemId()); }; - pollDurationView.setText(getString(R.string.compose_poll_duration, item.getTitle())); + pollDurationView.setText(getString(R.string.compose_poll_duration, pollDurationStr=item.getTitle().toString())); return true; }); menu.show(); diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeFragment.java index 557f5a69..257b6c89 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeFragment.java @@ -48,6 +48,24 @@ public class HomeFragment extends AppKitFragment implements OnBackPressedListene public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); accountID=getArguments().getString("account"); + + setRetainInstance(true); + + Bundle args=new Bundle(); + args.putString("account", accountID); + homeTimelineFragment=new HomeTimelineFragment(); + homeTimelineFragment.setArguments(args); + args=new Bundle(args); + args.putBoolean("noAutoLoad", true); + searchFragment=new SearchFragment(); + searchFragment.setArguments(args); + notificationsFragment=new NotificationsFragment(); + notificationsFragment.setArguments(args); + args=new Bundle(args); + args.putParcelable("profileAccount", Parcels.wrap(AccountSessionManager.getInstance().getAccount(accountID).self)); + args.putBoolean("noAutoLoad", true); + profileFragment=new ProfileFragment(); + profileFragment.setArguments(args); } @Nullable @@ -76,28 +94,16 @@ public class HomeFragment extends AppKitFragment implements OnBackPressedListene Account self=AccountSessionManager.getInstance().getAccount(accountID).self; ViewImageLoader.load(tabBarAvatar, null, new UrlImageLoaderRequest(self.avatar, V.dp(28), V.dp(28))); - Bundle args=new Bundle(); - args.putString("account", accountID); - homeTimelineFragment=new HomeTimelineFragment(); - homeTimelineFragment.setArguments(args); - args=new Bundle(args); - args.putBoolean("noAutoLoad", true); - searchFragment=new SearchFragment(); - searchFragment.setArguments(args); - notificationsFragment=new NotificationsFragment(); - notificationsFragment.setArguments(args); - args=new Bundle(args); - args.putParcelable("profileAccount", Parcels.wrap(AccountSessionManager.getInstance().getAccount(accountID).self)); - args.putBoolean("noAutoLoad", true); - profileFragment=new ProfileFragment(); - profileFragment.setArguments(args); - - getChildFragmentManager().beginTransaction() - .add(R.id.fragment_wrap, homeTimelineFragment) - .add(R.id.fragment_wrap, searchFragment).hide(searchFragment) - .add(R.id.fragment_wrap, notificationsFragment).hide(notificationsFragment) - .add(R.id.fragment_wrap, profileFragment).hide(profileFragment) - .commit(); + if(savedInstanceState==null){ + getChildFragmentManager().beginTransaction() + .add(R.id.fragment_wrap, homeTimelineFragment) + .add(R.id.fragment_wrap, searchFragment).hide(searchFragment) + .add(R.id.fragment_wrap, notificationsFragment).hide(notificationsFragment) + .add(R.id.fragment_wrap, profileFragment).hide(profileFragment) + .commit(); + }else{ + tabBar.selectTab(currentTab); + } return content; } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileAboutFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileAboutFragment.java index 80883ec3..52ecfd95 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileAboutFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileAboutFragment.java @@ -20,6 +20,7 @@ import org.joinmastodon.android.R; import org.joinmastodon.android.model.AccountField; import org.joinmastodon.android.ui.text.CustomEmojiSpan; import org.joinmastodon.android.ui.utils.SimpleTextWatcher; +import org.joinmastodon.android.ui.utils.UiUtils; import org.joinmastodon.android.ui.views.LinkedTextView; import java.util.Collections; @@ -164,7 +165,7 @@ public class ProfileAboutFragment extends Fragment{ public BaseViewHolder(int layout){ super(getActivity(), layout, list); - background.getPaint().setColor(getResources().getColor(R.color.gray_50)); + background.getPaint().setColor(UiUtils.getThemeColor(getActivity(), R.attr.colorBackgroundLight)); itemView.setBackground(background); } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java index 6e1aa6fb..34e36531 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java @@ -99,6 +99,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList private View postsBtn, followersBtn, followingBtn; private EditText nameEdit, bioEdit; private ProgressBar actionProgress; + private FrameLayout[] tabViews; private Account account; private String accountID; @@ -114,10 +115,17 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList super(R.layout.loader_fragment_overlay_toolbar); } + @Override + public void onCreate(Bundle savedInstanceState){ + super.onCreate(savedInstanceState); + setRetainInstance(true); + accountID=getArguments().getString("account"); + + } + @Override public void onAttach(Activity activity){ super.onAttach(activity); - accountID=getArguments().getString("account"); setHasOptionsMenu(true); if(!getArguments().getBoolean("noAutoLoad", false)) loadData(); @@ -159,6 +167,31 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList }); avatar.setClipToOutline(true); + FrameLayout sizeWrapper=new FrameLayout(getActivity()){ + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){ + Toolbar toolbar=getToolbar(); + pager.getLayoutParams().height=MeasureSpec.getSize(heightMeasureSpec)-getPaddingTop()-getPaddingBottom()-toolbar.getLayoutParams().height-statusBarHeight-V.dp(38); + coverGradient.setTopPadding(statusBarHeight+toolbar.getLayoutParams().height); + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + }; + + tabViews=new FrameLayout[4]; + for(int i=0;i R.id.profile_posts; + case 1 -> R.id.profile_posts_with_replies; + case 2 -> R.id.profile_media; + case 3 -> R.id.profile_about; + default -> throw new IllegalStateException("Unexpected value: "+i); + }); + tabView.setVisibility(View.GONE); + sizeWrapper.addView(tabView); // needed so the fragment manager will have somewhere to restore the tab fragment + tabViews[i]=tabView; + } + pager.setOffscreenPageLimit(4); pager.setAdapter(new ProfilePagerAdapter()); pager.getLayoutParams().height=getResources().getDisplayMetrics().heightPixels; @@ -174,18 +207,9 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList scrollView.setScrollableChildSupplier(this::getScrollableRecyclerView); - FrameLayout sizeWrapper=new FrameLayout(getActivity()){ - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){ - Toolbar toolbar=getToolbar(); - pager.getLayoutParams().height=MeasureSpec.getSize(heightMeasureSpec)-getPaddingTop()-getPaddingBottom()-toolbar.getLayoutParams().height-statusBarHeight-V.dp(38); - coverGradient.setTopPadding(statusBarHeight+toolbar.getLayoutParams().height); - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - } - }; sizeWrapper.addView(content); - tabbar.setTabTextColors(getResources().getColor(R.color.gray_500), getResources().getColor(R.color.gray_800)); + tabbar.setTabTextColors(UiUtils.getThemeColor(getActivity(), android.R.attr.textColorSecondary), UiUtils.getThemeColor(getActivity(), android.R.attr.textColorPrimary)); tabbar.setTabTextSize(V.dp(16)); new TabLayoutMediator(tabbar, pager, new TabLayoutMediator.TabConfigurationStrategy(){ @Override @@ -224,6 +248,17 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList } + @Override + public void dataLoaded(){ + postsFragment=AccountTimelineFragment.newInstance(accountID, account, GetAccountStatuses.Filter.DEFAULT, true); + postsWithRepliesFragment=AccountTimelineFragment.newInstance(accountID, account, GetAccountStatuses.Filter.INCLUDE_REPLIES, false); + mediaFragment=AccountTimelineFragment.newInstance(accountID, account, GetAccountStatuses.Filter.MEDIA, false); + aboutFragment=new ProfileAboutFragment(); + aboutFragment.setFields(fields); + pager.getAdapter().notifyDataSetChanged(); + super.dataLoaded(); + } + @Override public void onViewCreated(View view, Bundle savedInstanceState){ super.onViewCreated(view, savedInstanceState); @@ -258,6 +293,11 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList } } + @Override + public void onDestroyView(){ + super.onDestroyView(); + } + @Override public void onConfigurationChanged(Configuration newConfig){ super.onConfigurationChanged(newConfig); @@ -739,31 +779,23 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList @NonNull @Override public SimpleViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType){ - FrameLayout view=new FrameLayout(getActivity()); - view.setId(View.generateViewId()); + FrameLayout view=tabViews[viewType]; + ((ViewGroup)view.getParent()).removeView(view); + view.setVisibility(View.VISIBLE); view.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); return new SimpleViewHolder(view); } @Override public void onBindViewHolder(@NonNull SimpleViewHolder holder, int position){ - Fragment fragment=switch(position){ - case 0 -> postsFragment=AccountTimelineFragment.newInstance(accountID, account, GetAccountStatuses.Filter.DEFAULT, true); - case 1 -> postsWithRepliesFragment=AccountTimelineFragment.newInstance(accountID, account, GetAccountStatuses.Filter.INCLUDE_REPLIES, false); - case 2 -> mediaFragment=AccountTimelineFragment.newInstance(accountID, account, GetAccountStatuses.Filter.MEDIA, false); - case 3 -> { - aboutFragment=new ProfileAboutFragment(); - aboutFragment.setFields(fields); - yield aboutFragment; - } - default -> throw new IllegalArgumentException(); - }; - getChildFragmentManager().beginTransaction().add(holder.itemView.getId(), fragment).commit(); + Fragment fragment=getFragmentForPage(position); + if(!fragment.isAdded()) + getChildFragmentManager().beginTransaction().add(holder.itemView.getId(), getFragmentForPage(position)).commit(); } @Override public int getItemCount(){ - return 4; + return loaded ? 4 : 0; } @Override diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java index fa93df6b..8dc5ef0f 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java @@ -22,15 +22,15 @@ public class ThreadFragment extends StatusListFragment{ private Status mainStatus; @Override - public void onAttach(Activity activity){ - super.onAttach(activity); + public void onCreate(Bundle savedInstanceState){ + super.onCreate(savedInstanceState); mainStatus=Parcels.unwrap(getArguments().getParcelable("status")); Account inReplyToAccount=Parcels.unwrap(getArguments().getParcelable("inReplyToAccount")); if(inReplyToAccount!=null) knownAccounts.put(inReplyToAccount.id, inReplyToAccount); - setTitle(HtmlParser.parseCustomEmoji(getString(R.string.post_from_user, mainStatus.account.displayName), mainStatus.account.emojis)); data.add(mainStatus); onAppendItems(Collections.singletonList(mainStatus)); + setTitle(HtmlParser.parseCustomEmoji(getString(R.string.post_from_user, mainStatus.account.displayName), mainStatus.account.emojis)); } @Override diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/CustomEmojiPopupKeyboard.java b/mastodon/src/main/java/org/joinmastodon/android/ui/CustomEmojiPopupKeyboard.java index e236d478..feca36d5 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/CustomEmojiPopupKeyboard.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/CustomEmojiPopupKeyboard.java @@ -14,6 +14,7 @@ import android.widget.TextView; import org.joinmastodon.android.R; import org.joinmastodon.android.model.Emoji; import org.joinmastodon.android.model.EmojiCategory; +import org.joinmastodon.android.ui.utils.UiUtils; import java.util.List; import java.util.function.Consumer; @@ -91,7 +92,7 @@ public class CustomEmojiPopupKeyboard extends PopupKeyboard{ } } }); - list.setBackgroundResource(R.color.gray_100); + list.setBackgroundColor(UiUtils.getThemeColor(activity, android.R.attr.colorBackground)); list.setSelector(null); return list; diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java index 68ed889f..05d7e1f0 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java @@ -50,9 +50,9 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{ favorite=findViewById(R.id.favorite); share=findViewById(R.id.share); if(Build.VERSION.SDK_INT - - + + \ No newline at end of file diff --git a/mastodon/src/main/res/color/button_bg.xml b/mastodon/src/main/res/color/button_bg.xml index 45dc00fd..a958d220 100644 --- a/mastodon/src/main/res/color/button_bg.xml +++ b/mastodon/src/main/res/color/button_bg.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/mastodon/src/main/res/color/button_bg_secondary.xml b/mastodon/src/main/res/color/button_bg_secondary.xml new file mode 100644 index 00000000..77c67e1e --- /dev/null +++ b/mastodon/src/main/res/color/button_bg_secondary.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/mastodon/src/main/res/color/favorite_icon.xml b/mastodon/src/main/res/color/favorite_icon.xml index 9ad6f01b..5c11b63c 100644 --- a/mastodon/src/main/res/color/favorite_icon.xml +++ b/mastodon/src/main/res/color/favorite_icon.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/mastodon/src/main/res/drawable/bg_button_secondary.xml b/mastodon/src/main/res/drawable/bg_button_secondary.xml index 32caacae..13455930 100644 --- a/mastodon/src/main/res/drawable/bg_button_secondary.xml +++ b/mastodon/src/main/res/drawable/bg_button_secondary.xml @@ -4,7 +4,7 @@ - + diff --git a/mastodon/src/main/res/drawable/bg_fab.xml b/mastodon/src/main/res/drawable/bg_fab.xml index cbfc5b18..320e3e27 100644 --- a/mastodon/src/main/res/drawable/bg_fab.xml +++ b/mastodon/src/main/res/drawable/bg_fab.xml @@ -3,7 +3,7 @@ android:color="?android:colorControlHighlight"> - + diff --git a/mastodon/src/main/res/drawable/bg_poll_option.xml b/mastodon/src/main/res/drawable/bg_poll_option.xml index 83adba7e..74575de7 100644 --- a/mastodon/src/main/res/drawable/bg_poll_option.xml +++ b/mastodon/src/main/res/drawable/bg_poll_option.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/mastodon/src/main/res/drawable/bg_poll_option_clickable.xml b/mastodon/src/main/res/drawable/bg_poll_option_clickable.xml index 27a2dda5..2ca7b19a 100644 --- a/mastodon/src/main/res/drawable/bg_poll_option_clickable.xml +++ b/mastodon/src/main/res/drawable/bg_poll_option_clickable.xml @@ -2,7 +2,7 @@ - + diff --git a/mastodon/src/main/res/drawable/bg_profile_field_edit_text.xml b/mastodon/src/main/res/drawable/bg_profile_field_edit_text.xml index cc86207e..b289dcf1 100644 --- a/mastodon/src/main/res/drawable/bg_profile_field_edit_text.xml +++ b/mastodon/src/main/res/drawable/bg_profile_field_edit_text.xml @@ -5,7 +5,7 @@ - + diff --git a/mastodon/src/main/res/layout/compose_poll_option.xml b/mastodon/src/main/res/layout/compose_poll_option.xml index bdd166f0..f7dc468f 100644 --- a/mastodon/src/main/res/layout/compose_poll_option.xml +++ b/mastodon/src/main/res/layout/compose_poll_option.xml @@ -29,6 +29,7 @@ android:paddingEnd="16dp" android:textAppearance="@style/m3_title_medium" android:inputType="textCapSentences" + android:saveEnabled="false" android:singleLine="true"/> diff --git a/mastodon/src/main/res/layout/display_item_footer.xml b/mastodon/src/main/res/layout/display_item_footer.xml index 140e71ae..594abc0e 100644 --- a/mastodon/src/main/res/layout/display_item_footer.xml +++ b/mastodon/src/main/res/layout/display_item_footer.xml @@ -19,7 +19,7 @@ android:layout_gravity="center" android:drawableStart="@drawable/ic_fluent_chat_multiple_24_regular" android:drawablePadding="8dp" - android:drawableTint="@color/text_secondary" + android:drawableTint="?android:textColorSecondary" android:gravity="center_vertical" android:textAppearance="@style/m3_label_large" tools:text="123"/> @@ -89,7 +89,7 @@ android:layout_height="24dp" android:layout_gravity="center" android:src="@drawable/ic_fluent_share_24_regular" - android:tint="@color/text_secondary" + android:tint="?android:textColorSecondary" android:gravity="center_vertical"/> diff --git a/mastodon/src/main/res/layout/display_item_header.xml b/mastodon/src/main/res/layout/display_item_header.xml index 99980001..075061d5 100644 --- a/mastodon/src/main/res/layout/display_item_header.xml +++ b/mastodon/src/main/res/layout/display_item_header.xml @@ -34,6 +34,7 @@ android:ellipsize="end" android:singleLine="true" android:textAppearance="@style/m3_title_medium" + android:textAlignment="viewStart" tools:text="Eugen" /> \ No newline at end of file + android:textColor="?android:textColorPrimary" /> \ No newline at end of file diff --git a/mastodon/src/main/res/layout/display_item_reblog_or_reply_line.xml b/mastodon/src/main/res/layout/display_item_reblog_or_reply_line.xml index 3643b9ab..e5695e2b 100644 --- a/mastodon/src/main/res/layout/display_item_reblog_or_reply_line.xml +++ b/mastodon/src/main/res/layout/display_item_reblog_or_reply_line.xml @@ -13,7 +13,7 @@ android:layout_height="wrap_content" android:textAppearance="@style/m3_title_small" android:drawableStart="@drawable/ic_fluent_arrow_repeat_all_20_filled" - android:drawableTint="@color/gray_500" + android:drawableTint="?android:textColorSecondary" android:drawablePadding="6dp" android:singleLine="true" android:ellipsize="end"/> diff --git a/mastodon/src/main/res/layout/fragment_compose.xml b/mastodon/src/main/res/layout/fragment_compose.xml index a1beb20c..bfdbc670 100644 --- a/mastodon/src/main/res/layout/fragment_compose.xml +++ b/mastodon/src/main/res/layout/fragment_compose.xml @@ -25,7 +25,7 @@ android:layout_marginTop="16dp" android:textAppearance="@style/m3_title_small" android:drawableStart="@drawable/ic_fluent_arrow_reply_20_filled" - android:drawableTint="@color/gray_500" + android:drawableTint="?android:textColorSecondary" android:drawablePadding="6dp" android:singleLine="true" android:ellipsize="end"/> @@ -117,7 +117,7 @@ android:layout_marginRight="16dp" android:layout_marginBottom="8dp" android:textAppearance="@style/m3_label_large" - android:textColor="@color/gray_800" + android:textColor="?android:textColorPrimary" tools:text="Duration: 7 days"/> @@ -135,7 +135,7 @@ android:layout_height="48dp" android:orientation="horizontal" android:gravity="center_vertical" - android:background="@color/gray_25" + android:background="?colorBackgroundLightest" android:elevation="2dp" android:outlineProvider="bounds" android:paddingLeft="16dp" @@ -207,7 +207,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="@style/m3_body_large" - android:textColor="@color/gray_500" + android:textColor="?android:textColorSecondary" tools:text="500"/> diff --git a/mastodon/src/main/res/layout/fragment_profile.xml b/mastodon/src/main/res/layout/fragment_profile.xml index 341633ee..256d8121 100644 --- a/mastodon/src/main/res/layout/fragment_profile.xml +++ b/mastodon/src/main/res/layout/fragment_profile.xml @@ -147,7 +147,7 @@ style="?android:progressBarStyleSmall" android:elevation="10dp" android:outlineProvider="none" - android:indeterminateTint="@color/text_button" + android:indeterminateTint="?colorButtonText" android:visibility="gone"/> @@ -161,6 +161,7 @@ android:layout_marginTop="16dp" android:layout_toStartOf="@id/profile_action_btn_wrap" android:textAppearance="@style/m3_headline_small" + android:textAlignment="viewStart" tools:text="Eugen" /> diff --git a/mastodon/src/main/res/layout/item_profile_about_add_row.xml b/mastodon/src/main/res/layout/item_profile_about_add_row.xml index 4cf9d9dc..1380849c 100644 --- a/mastodon/src/main/res/layout/item_profile_about_add_row.xml +++ b/mastodon/src/main/res/layout/item_profile_about_add_row.xml @@ -10,7 +10,7 @@ android:layout_height="24dp" android:layout_gravity="start|center_vertical" android:layout_marginStart="16dp" - android:backgroundTint="@color/gray_900" + android:backgroundTint="?colorDarkIcon" android:background="@drawable/ic_fluent_add_circle_24_regular"/> \ No newline at end of file diff --git a/mastodon/src/main/res/layout/item_profile_about_editable.xml b/mastodon/src/main/res/layout/item_profile_about_editable.xml index 04870b1f..cdbfc53c 100644 --- a/mastodon/src/main/res/layout/item_profile_about_editable.xml +++ b/mastodon/src/main/res/layout/item_profile_about_editable.xml @@ -4,7 +4,7 @@ android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@color/gray_50" + android:background="?colorBackgroundLight" android:elevation="2dp" android:outlineProvider="background" android:padding="16dp"> diff --git a/mastodon/src/main/res/values/attrs.xml b/mastodon/src/main/res/values/attrs.xml new file mode 100644 index 00000000..307ec33c --- /dev/null +++ b/mastodon/src/main/res/values/attrs.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/mastodon/src/main/res/values/colors.xml b/mastodon/src/main/res/values/colors.xml index dc2cf41f..9a6baf2e 100644 --- a/mastodon/src/main/res/values/colors.xml +++ b/mastodon/src/main/res/values/colors.xml @@ -26,8 +26,6 @@ #80282C37 #606984 - @color/gray_800 - @color/gray_500 #E9EDF2 #282C37 #80667085 diff --git a/mastodon/src/main/res/values/ids.xml b/mastodon/src/main/res/values/ids.xml index 1eb6b1f8..9770f9ba 100644 --- a/mastodon/src/main/res/values/ids.xml +++ b/mastodon/src/main/res/values/ids.xml @@ -1,4 +1,9 @@ + + + + + \ No newline at end of file diff --git a/mastodon/src/main/res/values/styles.xml b/mastodon/src/main/res/values/styles.xml index 9f028ca4..ce85c63f 100644 --- a/mastodon/src/main/res/values/styles.xml +++ b/mastodon/src/main/res/values/styles.xml @@ -9,14 +9,25 @@ @color/white @color/actionbar_bg @color/navigation_bar_bg - @color/gray_800 - @color/gray_800 - @color/gray_100 @style/Theme.Mastodon.Toolbar @style/Widget.Mastodon.Button @style/Theme.Mastodon.Dialog.Alert @drawable/ic_fluent_arrow_left_24_regular false + + + @color/primary_700 + @color/gray_800 + @color/gray_100 + @color/gray_800 + @color/gray_500 + @color/gray_800 + @color/gray_600 + @color/gray_50 + #E9EDF2 + @color/gray_50 + @color/gray_25 + @color/gray_900 @@ -53,8 +64,21 @@ @style/alert_title 24dp @drawable/bg_alert - @color/gray_100 @style/Widget.Mastodon.ButtonBarButton + + + @color/primary_700 + @color/gray_800 + @color/gray_100 + @color/gray_800 + @color/gray_500 + @color/gray_800 + @color/gray_600 + @color/gray_50 + #E9EDF2 + @color/gray_50 + @color/gray_25 + @color/gray_900