diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/SplashFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/SplashFragment.java index 35d691b60..b11047400 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/SplashFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/SplashFragment.java @@ -173,16 +173,7 @@ public class SplashFragment extends AppKitFragment{ TextView title=new TextView(getActivity()); title.setTextAppearance(R.style.m3_headline_medium); title.setText(switch(page){ - case 0 -> { - String src=getString(R.string.welcome_page1_title); - SpannableString ss=new SpannableString(src); - int start=src.indexOf("{logo}"); - if(start!=-1){ - LogoSpan span=new LogoSpan(getResources().getDrawable(R.drawable.splash_logo, getActivity().getTheme())); - ss.setSpan(span, start, start+6, 0); - } - yield ss; - } + case 0 -> getString(R.string.welcome_page1_title); case 1 -> getString(R.string.welcome_page2_title); case 2 -> getString(R.string.welcome_page3_title); default -> throw new IllegalStateException("Unexpected value: "+page); @@ -204,26 +195,4 @@ public class SplashFragment extends AppKitFragment{ ll.addView(text, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); } } - - private class LogoSpan extends ReplacementSpan{ - private final Drawable drawable; - - private LogoSpan(Drawable drawable){ - this.drawable=drawable; - } - - @Override - public int getSize(@NonNull Paint paint, CharSequence text, int start, int end, @Nullable Paint.FontMetricsInt fm){ - return drawable.getIntrinsicWidth(); - } - - @Override - public void draw(@NonNull Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, @NonNull Paint paint){ - drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); - canvas.save(); - canvas.translate(x, y-V.dp(20)); - drawable.draw(canvas); - canvas.restore(); - } - } } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/InstanceCatalogSignupFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/InstanceCatalogSignupFragment.java index fd33891d0..5fe8149db 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/InstanceCatalogSignupFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/InstanceCatalogSignupFragment.java @@ -20,7 +20,6 @@ import android.view.WindowInsets; import android.view.inputmethod.InputMethodManager; import android.widget.HorizontalScrollView; import android.widget.ImageButton; -import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.PopupMenu; import android.widget.RadioButton; @@ -56,9 +55,6 @@ import me.grishka.appkit.Nav; import me.grishka.appkit.api.Callback; import me.grishka.appkit.api.ErrorResponse; import me.grishka.appkit.fragments.OnBackPressedListener; -import me.grishka.appkit.imageloader.ImageLoaderRecyclerAdapter; -import me.grishka.appkit.imageloader.ImageLoaderViewHolder; -import me.grishka.appkit.imageloader.requests.ImageLoaderRequest; import me.grishka.appkit.utils.BindableViewHolder; import me.grishka.appkit.utils.CubicBezierInterpolator; import me.grishka.appkit.utils.MergeRecyclerAdapter; @@ -366,6 +362,9 @@ public class InstanceCatalogSignupFragment extends InstanceCatalogFragment imple }).collect(Collectors.toList()); focusThing=view.findViewById(R.id.focus_thing); focusThing.requestFocus(); + + view.findViewById(R.id.btn_random_instance).setOnClickListener(this::onPickRandomInstanceClick); + nextButton.setEnabled(chosenInstance!=null); } private void onRegionFilterClick(View v){ @@ -396,22 +395,6 @@ public class InstanceCatalogSignupFragment extends InstanceCatalogFragment imple updateFilteredList(); } - @Override - protected void onNextClick(View v){ - if(chosenInstance==null){ - String lang=Locale.getDefault().getLanguage(); - List instances=data.stream().filter(ci->!ci.approvalRequired && ("general".equals(ci.category) || (ci.categories!=null && ci.categories.contains("general"))) && (lang.equals(ci.language) || (ci.languages!=null && ci.languages.contains(lang)))).collect(Collectors.toList()); - if(instances.isEmpty()){ - instances=data.stream().filter(ci->!ci.approvalRequired && ("general".equals(ci.category) || (ci.categories!=null && ci.categories.contains("general")))).collect(Collectors.toList()); - } - if(instances.isEmpty()){ - return; - } - chosenInstance=instances.get(new Random().nextInt(instances.size())); - } - super.onNextClick(v); - } - @Override protected void proceedWithAuthOrSignup(Instance instance){ getActivity().getSystemService(InputMethodManager.class).hideSoftInputFromWindow(contentView.getWindowToken(), 0); @@ -428,6 +411,19 @@ public class InstanceCatalogSignupFragment extends InstanceCatalogFragment imple Nav.go(getActivity(), InstanceRulesFragment.class, args); } + private void onPickRandomInstanceClick(View v){ + String lang=Locale.getDefault().getLanguage(); + List instances=data.stream().filter(ci->!ci.approvalRequired && ("general".equals(ci.category) || (ci.categories!=null && ci.categories.contains("general"))) && (lang.equals(ci.language) || (ci.languages!=null && ci.languages.contains(lang)))).collect(Collectors.toList()); + if(instances.isEmpty()){ + instances=data.stream().filter(ci->!ci.approvalRequired && ("general".equals(ci.category) || (ci.categories!=null && ci.categories.contains("general")))).collect(Collectors.toList()); + } + if(instances.isEmpty()){ + return; + } + chosenInstance=instances.get(new Random().nextInt(instances.size())); + onNextClick(v); + } + // private String getEmojiForCategory(String category){ // return switch(category){ // case "all" -> "💬"; @@ -577,7 +573,7 @@ public class InstanceCatalogSignupFragment extends InstanceCatalogFragment imple updateFilteredList(); } - private class InstancesAdapter extends UsableRecyclerView.Adapter implements ImageLoaderRecyclerAdapter{ + private class InstancesAdapter extends UsableRecyclerView.Adapter{ public InstancesAdapter(){ super(imgLoader); } @@ -603,22 +599,11 @@ public class InstanceCatalogSignupFragment extends InstanceCatalogFragment imple public int getItemViewType(int position){ return -1; } - - @Override - public int getImageCountForItem(int position){ - return filteredData.get(position).thumbnailRequest!=null ? 1 : 0; - } - - @Override - public ImageLoaderRequest getImageRequest(int position, int image){ - return filteredData.get(position).thumbnailRequest; - } } - private class InstanceViewHolder extends BindableViewHolder implements UsableRecyclerView.DisableableClickable, ImageLoaderViewHolder{ + private class InstanceViewHolder extends BindableViewHolder implements UsableRecyclerView.DisableableClickable{ private final TextView title, description; private final RadioButton radioButton; - private final ImageView thumbnail; private boolean enabled; public InstanceViewHolder(){ @@ -626,15 +611,12 @@ public class InstanceCatalogSignupFragment extends InstanceCatalogFragment imple title=findViewById(R.id.title); description=findViewById(R.id.description); radioButton=findViewById(R.id.radiobtn); - thumbnail=findViewById(R.id.image); } @Override public void onBind(CatalogInstance item){ title.setText(item.normalizedDomain); radioButton.setChecked(chosenInstance==item); - if(item.thumbnailRequest==null) - thumbnail.setImageDrawable(null); Instance realInstance=instancesCache.get(item.normalizedDomain); float alpha; if(realInstance!=null && !realInstance.registrations){ @@ -649,7 +631,6 @@ public class InstanceCatalogSignupFragment extends InstanceCatalogFragment imple title.setAlpha(alpha); description.setAlpha(alpha); radioButton.setAlpha(alpha); - thumbnail.setAlpha(alpha); } @Override @@ -672,6 +653,9 @@ public class InstanceCatalogSignupFragment extends InstanceCatalogFragment imple adapter.notifyItemChanged(idx); } } + if(!nextButton.isEnabled()){ + nextButton.setEnabled(true); + } radioButton.setChecked(true); if(chosenInstance==null) nextButton.setEnabled(true); @@ -679,16 +663,6 @@ public class InstanceCatalogSignupFragment extends InstanceCatalogFragment imple loadInstanceInfo(chosenInstance.domain, false); } - @Override - public void setImage(int index, Drawable image){ - thumbnail.setImageDrawable(image); - } - - @Override - public void clearImage(int index){ - setImage(index, null); - } - @Override public boolean isEnabled(){ return enabled; diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/InstanceRulesFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/InstanceRulesFragment.java index 4c0bf0135..ec508a2bc 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/InstanceRulesFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/onboarding/InstanceRulesFragment.java @@ -72,6 +72,8 @@ public class InstanceRulesFragment extends ToolbarFragment{ btn.setOnClickListener(v->onButtonClick()); buttonBar=view.findViewById(R.id.button_bar); + view.findViewById(R.id.btn_back).setOnClickListener(v->Nav.finish(this)); + return view; } diff --git a/mastodon/src/main/res/drawable/splash_logo.xml b/mastodon/src/main/res/drawable/splash_logo.xml deleted file mode 100644 index 0486618e4..000000000 --- a/mastodon/src/main/res/drawable/splash_logo.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - diff --git a/mastodon/src/main/res/layout/fragment_onboarding_activation.xml b/mastodon/src/main/res/layout/fragment_onboarding_activation.xml index b06b31155..b14f47e29 100644 --- a/mastodon/src/main/res/layout/fragment_onboarding_activation.xml +++ b/mastodon/src/main/res/layout/fragment_onboarding_activation.xml @@ -58,13 +58,14 @@ android:id="@+id/btn_resend" android:layout_width="wrap_content" android:layout_height="40dp" + android:layout_marginStart="36dp" android:text="@string/resend" android:paddingTop="0dp" android:paddingBottom="0dp" android:paddingLeft="12dp" android:paddingRight="12dp" android:fontFeatureSettings="'tnum'" - style="@style/Widget.Mastodon.M3.Button.Text"/> + style="@style/Widget.Mastodon.M3.Button.Filled"/> diff --git a/mastodon/src/main/res/layout/fragment_onboarding_common.xml b/mastodon/src/main/res/layout/fragment_onboarding_common.xml index d3e7ef23f..4cad26f59 100644 --- a/mastodon/src/main/res/layout/fragment_onboarding_common.xml +++ b/mastodon/src/main/res/layout/fragment_onboarding_common.xml @@ -135,6 +135,16 @@ android:textColor="?colorM3OnSurfaceVariant" android:text="@string/signup_random_server_explain"/> +