Minor fixes
This commit is contained in:
@@ -52,6 +52,7 @@ public class ProfileAboutFragment extends Fragment implements WindowInsetsAwareF
|
|||||||
private boolean isInEditMode;
|
private boolean isInEditMode;
|
||||||
private ItemTouchHelper dragHelper=new ItemTouchHelper(new ReorderCallback());
|
private ItemTouchHelper dragHelper=new ItemTouchHelper(new ReorderCallback());
|
||||||
private ListImageLoaderWrapper imgLoader;
|
private ListImageLoaderWrapper imgLoader;
|
||||||
|
private boolean editDirty;
|
||||||
|
|
||||||
public void setFields(List<AccountField> fields){
|
public void setFields(List<AccountField> fields){
|
||||||
this.fields=fields;
|
this.fields=fields;
|
||||||
@@ -83,12 +84,17 @@ public class ProfileAboutFragment extends Fragment implements WindowInsetsAwareF
|
|||||||
fields=editableFields;
|
fields=editableFields;
|
||||||
adapter.notifyDataSetChanged();
|
adapter.notifyDataSetChanged();
|
||||||
dragHelper.attachToRecyclerView(list);
|
dragHelper.attachToRecyclerView(list);
|
||||||
|
editDirty=false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<AccountField> getFields(){
|
public List<AccountField> getFields(){
|
||||||
return fields;
|
return fields;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isEditDirty(){
|
||||||
|
return editDirty;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onApplyWindowInsets(WindowInsets insets){
|
public void onApplyWindowInsets(WindowInsets insets){
|
||||||
if(Build.VERSION.SDK_INT>=29 && insets.getTappableElementInsets().bottom==0){
|
if(Build.VERSION.SDK_INT>=29 && insets.getTappableElementInsets().bottom==0){
|
||||||
@@ -209,6 +215,7 @@ public class ProfileAboutFragment extends Fragment implements WindowInsetsAwareF
|
|||||||
private class EditableAboutViewHolder extends BaseViewHolder{
|
private class EditableAboutViewHolder extends BaseViewHolder{
|
||||||
private final EditText title;
|
private final EditText title;
|
||||||
private final EditText value;
|
private final EditText value;
|
||||||
|
private boolean ignoreTextChange;
|
||||||
|
|
||||||
public EditableAboutViewHolder(){
|
public EditableAboutViewHolder(){
|
||||||
super(R.layout.onboarding_profile_field);
|
super(R.layout.onboarding_profile_field);
|
||||||
@@ -218,16 +225,26 @@ public class ProfileAboutFragment extends Fragment implements WindowInsetsAwareF
|
|||||||
dragHelper.startDrag(this);
|
dragHelper.startDrag(this);
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
title.addTextChangedListener(new SimpleTextWatcher(e->item.name=e.toString()));
|
title.addTextChangedListener(new SimpleTextWatcher(e->{
|
||||||
value.addTextChangedListener(new SimpleTextWatcher(e->item.value=e.toString()));
|
item.name=e.toString();
|
||||||
|
if(!ignoreTextChange)
|
||||||
|
editDirty=true;
|
||||||
|
}));
|
||||||
|
value.addTextChangedListener(new SimpleTextWatcher(e->{
|
||||||
|
item.value=e.toString();
|
||||||
|
if(!ignoreTextChange)
|
||||||
|
editDirty=true;
|
||||||
|
}));
|
||||||
findViewById(R.id.delete).setOnClickListener(this::onRemoveRowClick);
|
findViewById(R.id.delete).setOnClickListener(this::onRemoveRowClick);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBind(AccountField item){
|
public void onBind(AccountField item){
|
||||||
super.onBind(item);
|
super.onBind(item);
|
||||||
|
ignoreTextChange=true;
|
||||||
title.setText(item.name);
|
title.setText(item.name);
|
||||||
value.setText(item.value);
|
value.setText(item.value);
|
||||||
|
ignoreTextChange=false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onRemoveRowClick(View v){
|
private void onRemoveRowClick(View v){
|
||||||
|
|||||||
@@ -67,6 +67,7 @@ import org.joinmastodon.android.ui.tabs.TabLayout;
|
|||||||
import org.joinmastodon.android.ui.tabs.TabLayoutMediator;
|
import org.joinmastodon.android.ui.tabs.TabLayoutMediator;
|
||||||
import org.joinmastodon.android.ui.text.CustomEmojiSpan;
|
import org.joinmastodon.android.ui.text.CustomEmojiSpan;
|
||||||
import org.joinmastodon.android.ui.text.HtmlParser;
|
import org.joinmastodon.android.ui.text.HtmlParser;
|
||||||
|
import org.joinmastodon.android.ui.utils.SimpleTextWatcher;
|
||||||
import org.joinmastodon.android.ui.utils.UiUtils;
|
import org.joinmastodon.android.ui.utils.UiUtils;
|
||||||
import org.joinmastodon.android.ui.views.CoverImageView;
|
import org.joinmastodon.android.ui.views.CoverImageView;
|
||||||
import org.joinmastodon.android.ui.views.CustomDrawingOrderLinearLayout;
|
import org.joinmastodon.android.ui.views.CustomDrawingOrderLinearLayout;
|
||||||
@@ -134,7 +135,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
|||||||
private boolean isOwnProfile;
|
private boolean isOwnProfile;
|
||||||
private ArrayList<AccountField> fields=new ArrayList<>();
|
private ArrayList<AccountField> fields=new ArrayList<>();
|
||||||
|
|
||||||
private boolean isInEditMode;
|
private boolean isInEditMode, editDirty;
|
||||||
private Uri editNewAvatar, editNewCover;
|
private Uri editNewAvatar, editNewCover;
|
||||||
private String profileAccountID;
|
private String profileAccountID;
|
||||||
private boolean refreshing;
|
private boolean refreshing;
|
||||||
@@ -304,6 +305,9 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
|||||||
refreshLayout.setProgressBackgroundColorSchemeColor(UiUtils.alphaBlendColors(colorBackground, colorPrimary, 0.11f));
|
refreshLayout.setProgressBackgroundColorSchemeColor(UiUtils.alphaBlendColors(colorBackground, colorPrimary, 0.11f));
|
||||||
refreshLayout.setColorSchemeColors(colorPrimary);
|
refreshLayout.setColorSchemeColors(colorPrimary);
|
||||||
|
|
||||||
|
nameEdit.addTextChangedListener(new SimpleTextWatcher(e->editDirty=true));
|
||||||
|
bioEdit.addTextChangedListener(new SimpleTextWatcher(e->editDirty=true));
|
||||||
|
|
||||||
return sizeWrapper;
|
return sizeWrapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -813,6 +817,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
|||||||
|
|
||||||
aboutFragment.enterEditMode(account.source.fields);
|
aboutFragment.enterEditMode(account.source.fields);
|
||||||
refreshLayout.setEnabled(false);
|
refreshLayout.setEnabled(false);
|
||||||
|
editDirty=false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void exitEditMode(){
|
private void exitEditMode(){
|
||||||
@@ -896,11 +901,15 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
|||||||
@Override
|
@Override
|
||||||
public boolean onBackPressed(){
|
public boolean onBackPressed(){
|
||||||
if(isInEditMode){
|
if(isInEditMode){
|
||||||
|
if(editDirty || aboutFragment.isEditDirty()){
|
||||||
new M3AlertDialogBuilder(getActivity())
|
new M3AlertDialogBuilder(getActivity())
|
||||||
.setTitle(R.string.discard_changes)
|
.setTitle(R.string.discard_changes)
|
||||||
.setPositiveButton(R.string.discard, (dlg, btn)->exitEditMode())
|
.setPositiveButton(R.string.discard, (dlg, btn)->exitEditMode())
|
||||||
.setNegativeButton(R.string.cancel, null)
|
.setNegativeButton(R.string.cancel, null)
|
||||||
.show();
|
.show();
|
||||||
|
}else{
|
||||||
|
exitEditMode();
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@@ -961,9 +970,11 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
|||||||
if(requestCode==AVATAR_RESULT){
|
if(requestCode==AVATAR_RESULT){
|
||||||
editNewAvatar=data.getData();
|
editNewAvatar=data.getData();
|
||||||
ViewImageLoader.loadWithoutAnimation(avatar, null, new UrlImageLoaderRequest(editNewAvatar, V.dp(100), V.dp(100)));
|
ViewImageLoader.loadWithoutAnimation(avatar, null, new UrlImageLoaderRequest(editNewAvatar, V.dp(100), V.dp(100)));
|
||||||
|
editDirty=true;
|
||||||
}else if(requestCode==COVER_RESULT){
|
}else if(requestCode==COVER_RESULT){
|
||||||
editNewCover=data.getData();
|
editNewCover=data.getData();
|
||||||
ViewImageLoader.loadWithoutAnimation(cover, null, new UrlImageLoaderRequest(editNewCover, V.dp(1000), V.dp(1000)));
|
ViewImageLoader.loadWithoutAnimation(cover, null, new UrlImageLoaderRequest(editNewCover, V.dp(1000), V.dp(1000)));
|
||||||
|
editDirty=true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -88,6 +88,7 @@
|
|||||||
android:paddingRight="16dp"
|
android:paddingRight="16dp"
|
||||||
android:textAppearance="@style/m3_body_large"
|
android:textAppearance="@style/m3_body_large"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
|
android:textColor="?colorM3OnSurface"
|
||||||
tools:text="\@mastodon.social"/>
|
tools:text="\@mastodon.social"/>
|
||||||
|
|
||||||
</org.joinmastodon.android.ui.views.FloatingHintEditTextLayout>
|
</org.joinmastodon.android.ui.views.FloatingHintEditTextLayout>
|
||||||
|
|||||||
@@ -84,14 +84,17 @@
|
|||||||
android:layout_below="@id/cover"
|
android:layout_below="@id/cover"
|
||||||
android:layout_alignParentEnd="true"
|
android:layout_alignParentEnd="true"
|
||||||
android:layout_marginTop="16dp"
|
android:layout_marginTop="16dp"
|
||||||
android:layout_marginEnd="16dp">
|
android:layout_marginHorizontal="16dp"
|
||||||
|
android:paddingStart="120dp">
|
||||||
|
|
||||||
<org.joinmastodon.android.ui.views.ProgressBarButton
|
<org.joinmastodon.android.ui.views.ProgressBarButton
|
||||||
android:id="@+id/profile_action_btn"
|
android:id="@+id/profile_action_btn"
|
||||||
style="@style/Widget.Mastodon.M3.Button.Filled"
|
android:layout_width="wrap_content"
|
||||||
android:layout_width="156dp"
|
|
||||||
android:layout_height="40dp"
|
android:layout_height="40dp"
|
||||||
tools:text="Edit Profile" />
|
style="@style/Widget.Mastodon.M3.Button.Filled"
|
||||||
|
android:minWidth="156dp"
|
||||||
|
android:paddingHorizontal="16dp"
|
||||||
|
tools:text="@string/save_changes" />
|
||||||
|
|
||||||
<ProgressBar
|
<ProgressBar
|
||||||
android:id="@+id/action_progress"
|
android:id="@+id/action_progress"
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
android:textAppearance="@style/m3_body_large"
|
android:textAppearance="@style/m3_body_large"
|
||||||
android:paddingStart="56dp"
|
android:paddingStart="56dp"
|
||||||
android:paddingEnd="24dp"
|
android:paddingEnd="24dp"
|
||||||
|
android:textColor="?colorM3OnSurface"
|
||||||
android:text="@string/login_subtitle"/>
|
android:text="@string/login_subtitle"/>
|
||||||
|
|
||||||
<org.joinmastodon.android.ui.views.FloatingHintEditTextLayout
|
<org.joinmastodon.android.ui.views.FloatingHintEditTextLayout
|
||||||
|
|||||||
Reference in New Issue
Block a user