diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/InstanceInfoFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/InstanceInfoFragment.java index 49bf59c7e..b9c420bb2 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/InstanceInfoFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/InstanceInfoFragment.java @@ -10,6 +10,9 @@ import android.os.Bundle; import android.text.SpannableStringBuilder; import android.text.TextUtils; import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.ViewOutlineProvider; @@ -72,12 +75,10 @@ public class InstanceInfoFragment extends LoaderFragment { private CoverImageView cover; private TextView uri, description, readMore; - private Button timelineButton, pinButton, rulesButton, serversButton; - private View spaceBelowText; private final CoverOverlayGradientDrawable coverGradient=new CoverOverlayGradientDrawable(); - private ScrollView textScrollView; + private ScrollView scrollView, textScrollView; private float titleTransY; private String accountID; @@ -127,13 +128,10 @@ public class InstanceInfoFragment extends LoaderFragment { public View onCreateContentView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ View content=inflater.inflate(R.layout.fragment_instance_info, container, false); + scrollView=content.findViewById(R.id.scroll_view); cover=content.findViewById(R.id.cover); uri =content.findViewById(R.id.uri); description=content.findViewById(R.id.description); - timelineButton=content.findViewById(R.id.timeline_btn); - pinButton=content.findViewById(R.id.timeline_pin_btn); - rulesButton=content.findViewById(R.id.rules_btn); - serversButton=content.findViewById(R.id.servers_btn); list=content.findViewById(R.id.metadata); textScrollView=content.findViewById(R.id.text_scroll_view); readMore=content.findViewById(R.id.read_more); @@ -151,10 +149,6 @@ public class InstanceInfoFragment extends LoaderFragment { } }); - timelineButton.setOnClickListener(this::onTimelineButtonClick); - pinButton.setOnClickListener(this::onPinButtonClick); - rulesButton.setOnClickListener(this::onRulesButtonClick); - serversButton.setOnClickListener(this::onSeversButtonClick); cover.setOnClickListener(this::onCoverClick); readMore.setOnClickListener(this::onReadMoreClick); @@ -327,14 +321,44 @@ public class InstanceInfoFragment extends LoaderFragment { toolbarTitleView.setTranslationY(titleTransY); toolbarSubtitleView.setTranslationY(titleTransY); } + getToolbar().setOnClickListener(v->scrollToTop()); getToolbar().setNavigationContentDescription(R.string.back); } + public void scrollToTop(){ + scrollView.smoothScrollTo(0, 0); + } + + + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater){ + inflater.inflate(R.menu.instance_info, menu); + UiUtils.enableOptionsMenuIcons(getActivity(), menu); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item){ + int id=item.getItemId(); + if (id==R.id.open_timeline) { + Bundle args=new Bundle(); + args.putString("account", accountID); + args.putString("domain", instance.uri); + Nav.go(getActivity(), CustomLocalTimelineFragment.class, args); + }else if (id==R.id.rules) { + Bundle args=new Bundle(); + args.putParcelable("instance", Parcels.wrap(instance)); + Nav.go(getActivity(), InstanceRulesFragment.class, args); + } else if (id==R.id.moderated_servers) { + + } + return true; + } + + @Override public boolean wantsLightStatusBar(){ return false; } - @Override protected int getToolbarResource(){ return R.layout.profile_toolbar; @@ -344,32 +368,6 @@ public class InstanceInfoFragment extends LoaderFragment { bindHeaderView(); } - private void onTimelineButtonClick(View view) { - Bundle args=new Bundle(); - args.putString("account", accountID); - args.putString("domain", instance.uri); - Nav.go(getActivity(), CustomLocalTimelineFragment.class, args); - } - - private void onPinButtonClick(View view) { - List timelines = GlobalUserPreferences.pinnedTimelines.get(accountID); - if (timelines == null) { - timelines = List.of(TimelineDefinition.HOME_TIMELINE); - } - timelines.add(TimelineDefinition.ofCustomLocalTimeline(instance.uri)); - GlobalUserPreferences.pinnedTimelines.put(accountID, timelines); - GlobalUserPreferences.save(); - updatedTimelines = true; - } - - private void onRulesButtonClick(View view) { - Bundle args=new Bundle(); - args.putParcelable("instance", Parcels.wrap(instance)); - Nav.go(getActivity(), InstanceRulesFragment.class, args); - } - private void onSeversButtonClick(View view) { - } - private void onCoverClick(View v){ Drawable drawable=cover.getDrawable(); 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 306d5d7bf..32d181202 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java @@ -383,6 +383,9 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList followersBtn.setOnClickListener(this::onFollowersOrFollowingClick); followingBtn.setOnClickListener(this::onFollowersOrFollowingClick); + + //this currently takes up the whole username + //in the future it might need to be change to only the instance uri username.setOnClickListener(v -> { Bundle args=new Bundle(); args.putString("account", accountID); diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java index c20d7dc2a..0459e269e 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java @@ -920,6 +920,8 @@ public class UiUtils { } } + /// Add icons to the menu. + /// Passing in items will be colored to be visible on the background. public static void enableOptionsMenuIcons(Context context, Menu menu, @IdRes int... asAction) { if(menu.getClass().getSimpleName().equals("MenuBuilder")){ try { diff --git a/mastodon/src/main/res/drawable/ic_fluent_book_exclamation_mark_24_filled.xml b/mastodon/src/main/res/drawable/ic_fluent_book_exclamation_mark_24_filled.xml new file mode 100644 index 000000000..ef0a9e70a --- /dev/null +++ b/mastodon/src/main/res/drawable/ic_fluent_book_exclamation_mark_24_filled.xml @@ -0,0 +1,9 @@ + + + diff --git a/mastodon/src/main/res/layout/fragment_instance_info.xml b/mastodon/src/main/res/layout/fragment_instance_info.xml index d11cbadb3..d491e0900 100644 --- a/mastodon/src/main/res/layout/fragment_instance_info.xml +++ b/mastodon/src/main/res/layout/fragment_instance_info.xml @@ -6,6 +6,7 @@ android:layout_height="match_parent"> @@ -96,90 +97,6 @@ android:layout_below="@id/border_top" android:background="?colorBackgroundLightest" android:paddingTop="4dp" /> - - - - - - -