Migrate to ViewBinding in some activities.

This commit is contained in:
Docile-Alligator
2024-03-17 09:01:46 -04:00
parent 8e6a4d1e14
commit 41daebf702
9 changed files with 251 additions and 435 deletions

View File

@ -49,6 +49,7 @@ import ml.docilealligator.infinityforreddit.bottomsheetfragments.CustomThemeOpti
import ml.docilealligator.infinityforreddit.customtheme.CustomTheme;
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeViewModel;
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
import ml.docilealligator.infinityforreddit.databinding.ActivityCustomThemeListingBinding;
import ml.docilealligator.infinityforreddit.events.RecreateActivityEvent;
import ml.docilealligator.infinityforreddit.utils.CustomThemeSharedPreferencesUtils;
import ml.docilealligator.infinityforreddit.utils.Utils;
@ -57,18 +58,6 @@ public class CustomThemeListingActivity extends BaseActivity implements
CustomThemeOptionsBottomSheetFragment.CustomThemeOptionsBottomSheetFragmentListener,
CreateThemeBottomSheetFragment.SelectBaseThemeBottomSheetFragmentListener {
@BindView(R.id.coordinator_layout_custom_theme_listing_activity)
CoordinatorLayout coordinatorLayout;
@BindView(R.id.appbar_layout_customize_theme_listing_activity)
AppBarLayout appBarLayout;
@BindView(R.id.collapsing_toolbar_layout_customize_theme_listing_activity)
CollapsingToolbarLayout collapsingToolbarLayout;
@BindView(R.id.toolbar_customize_theme_listing_activity)
Toolbar toolbar;
@BindView(R.id.recycler_view_customize_theme_listing_activity)
RecyclerView recyclerView;
@BindView(R.id.fab_custom_theme_listing_activity)
FloatingActionButton fab;
@Inject
@Named("default")
SharedPreferences sharedPreferences;
@ -91,6 +80,7 @@ public class CustomThemeListingActivity extends BaseActivity implements
@Inject
Executor executor;
public CustomThemeViewModel customThemeViewModel;
private ActivityCustomThemeListingBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -99,27 +89,26 @@ public class CustomThemeListingActivity extends BaseActivity implements
setImmersiveModeNotApplicable();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom_theme_listing);
ButterKnife.bind(this);
binding = ActivityCustomThemeListingBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
EventBus.getDefault().register(this);
applyCustomTheme();
setSupportActionBar(toolbar);
setSupportActionBar(binding.toolbarCustomizeThemeListingActivity);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
CustomThemeListingRecyclerViewAdapter adapter = new CustomThemeListingRecyclerViewAdapter(this,
CustomThemeWrapper.getPredefinedThemes(this));
recyclerView.setAdapter(adapter);
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
binding.recyclerViewCustomizeThemeListingActivity.setAdapter(adapter);
binding.recyclerViewCustomizeThemeListingActivity.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
if (dy > 0) {
fab.hide();
binding.fabCustomThemeListingActivity.hide();
} else if (dy < 0) {
fab.show();
binding.fabCustomThemeListingActivity.show();
}
}
});
@ -129,7 +118,7 @@ public class CustomThemeListingActivity extends BaseActivity implements
.get(CustomThemeViewModel.class);
customThemeViewModel.getAllCustomThemes().observe(this, adapter::setUserThemes);
fab.setOnClickListener(view -> {
binding.fabCustomThemeListingActivity.setOnClickListener(view -> {
CreateThemeBottomSheetFragment createThemeBottomSheetFragment = new CreateThemeBottomSheetFragment();
createThemeBottomSheetFragment.show(getSupportFragmentManager(), createThemeBottomSheetFragment.getTag());
});
@ -161,9 +150,9 @@ public class CustomThemeListingActivity extends BaseActivity implements
@Override
protected void applyCustomTheme() {
coordinatorLayout.setBackgroundColor(customThemeWrapper.getBackgroundColor());
applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(appBarLayout, collapsingToolbarLayout, toolbar);
applyFABTheme(fab);
binding.coordinatorLayoutCustomThemeListingActivity.setBackgroundColor(customThemeWrapper.getBackgroundColor());
applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(binding.appbarLayoutCustomizeThemeListingActivity, binding.collapsingToolbarLayoutCustomizeThemeListingActivity, binding.toolbarCustomizeThemeListingActivity);
applyFABTheme(binding.fabCustomThemeListingActivity);
}
@Override
@ -199,12 +188,12 @@ public class CustomThemeListingActivity extends BaseActivity implements
if (clipboard != null) {
ClipData clip = ClipData.newPlainText("simple text", jsonModel);
clipboard.setPrimaryClip(clip);
Snackbar.make(coordinatorLayout, R.string.theme_copied, Snackbar.LENGTH_SHORT).show();
Snackbar.make(binding.coordinatorLayoutCustomThemeListingActivity, R.string.theme_copied, Snackbar.LENGTH_SHORT).show();
} else {
Snackbar.make(coordinatorLayout, R.string.copy_theme_faied, Snackbar.LENGTH_SHORT).show();
Snackbar.make(binding.coordinatorLayoutCustomThemeListingActivity, R.string.copy_theme_faied, Snackbar.LENGTH_SHORT).show();
}
} else {
Snackbar.make(coordinatorLayout, R.string.cannot_find_theme, Snackbar.LENGTH_SHORT).show();
Snackbar.make(binding.coordinatorLayoutCustomThemeListingActivity, R.string.cannot_find_theme, Snackbar.LENGTH_SHORT).show();
}
});
}
@ -247,12 +236,12 @@ public class CustomThemeListingActivity extends BaseActivity implements
if (clipboard != null) {
ClipData clip = ClipData.newPlainText("simple text", jsonModel);
clipboard.setPrimaryClip(clip);
Snackbar.make(coordinatorLayout, R.string.theme_copied, Snackbar.LENGTH_SHORT).show();
Snackbar.make(binding.coordinatorLayoutCustomThemeListingActivity, R.string.theme_copied, Snackbar.LENGTH_SHORT).show();
} else {
Snackbar.make(coordinatorLayout, R.string.copy_theme_faied, Snackbar.LENGTH_SHORT).show();
Snackbar.make(binding.coordinatorLayoutCustomThemeListingActivity, R.string.copy_theme_faied, Snackbar.LENGTH_SHORT).show();
}
} else {
Snackbar.make(coordinatorLayout, R.string.cannot_find_theme, Snackbar.LENGTH_SHORT).show();
Snackbar.make(binding.coordinatorLayoutCustomThemeListingActivity, R.string.cannot_find_theme, Snackbar.LENGTH_SHORT).show();
}
}
@ -267,11 +256,11 @@ public class CustomThemeListingActivity extends BaseActivity implements
if (clipboard != null) {
// If it does contain data, decide if you can handle the data.
if (!clipboard.hasPrimaryClip()) {
Snackbar.make(coordinatorLayout, R.string.no_data_in_clipboard, Snackbar.LENGTH_SHORT).show();
Snackbar.make(binding.coordinatorLayoutCustomThemeListingActivity, R.string.no_data_in_clipboard, Snackbar.LENGTH_SHORT).show();
} else if (clipboard.getPrimaryClipDescription() != null &&
!clipboard.getPrimaryClipDescription().hasMimeType("text/*")) {
// since the clipboard has data but it is not text
Snackbar.make(coordinatorLayout, R.string.no_data_in_clipboard, Snackbar.LENGTH_SHORT).show();
Snackbar.make(binding.coordinatorLayoutCustomThemeListingActivity, R.string.no_data_in_clipboard, Snackbar.LENGTH_SHORT).show();
} else if (clipboard.getPrimaryClip() != null) {
ClipData.Item item = clipboard.getPrimaryClip().getItemAt(0);
String json = item.coerceToText(this.getApplicationContext()).toString();
@ -280,10 +269,10 @@ public class CustomThemeListingActivity extends BaseActivity implements
CustomTheme customTheme = CustomTheme.fromJson(json);
checkDuplicateAndImportTheme(customTheme, true);
} catch (JsonParseException e) {
Snackbar.make(coordinatorLayout, R.string.parse_theme_failed, Snackbar.LENGTH_SHORT).show();
Snackbar.make(binding.coordinatorLayoutCustomThemeListingActivity, R.string.parse_theme_failed, Snackbar.LENGTH_SHORT).show();
}
} else {
Snackbar.make(coordinatorLayout, R.string.parse_theme_failed, Snackbar.LENGTH_SHORT).show();
Snackbar.make(binding.coordinatorLayoutCustomThemeListingActivity, R.string.parse_theme_failed, Snackbar.LENGTH_SHORT).show();
}
}
}

View File

@ -19,8 +19,6 @@ import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
@ -34,9 +32,6 @@ import androidx.fragment.app.FragmentPagerAdapter;
import androidx.viewpager.widget.ViewPager;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.appbar.CollapsingToolbarLayout;
import com.google.android.material.bottomappbar.BottomAppBar;
import com.google.android.material.chip.Chip;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.tabs.TabLayout;
@ -45,17 +40,15 @@ import java.util.ArrayList;
import javax.inject.Inject;
import javax.inject.Named;
import butterknife.BindView;
import butterknife.ButterKnife;
import ml.docilealligator.infinityforreddit.AppBarStateChangeListener;
import ml.docilealligator.infinityforreddit.CustomFontReceiver;
import ml.docilealligator.infinityforreddit.Infinity;
import ml.docilealligator.infinityforreddit.R;
import ml.docilealligator.infinityforreddit.customtheme.CustomTheme;
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeSettingsItem;
import ml.docilealligator.infinityforreddit.customviews.ViewPagerBugFixed;
import ml.docilealligator.infinityforreddit.customviews.slidr.Slidr;
import ml.docilealligator.infinityforreddit.customviews.slidr.widget.SliderPanel;
import ml.docilealligator.infinityforreddit.databinding.ActivityThemePreviewBinding;
import ml.docilealligator.infinityforreddit.font.ContentFontStyle;
import ml.docilealligator.infinityforreddit.font.FontStyle;
import ml.docilealligator.infinityforreddit.font.TitleFontStyle;
@ -71,46 +64,6 @@ public class CustomThemePreviewActivity extends AppCompatActivity implements Cus
public Typeface titleTypeface;
public Typeface contentTypeface;
@BindView(R.id.coordinator_layout_theme_preview_activity)
CoordinatorLayout coordinatorLayout;
@BindView(R.id.view_pager_theme_preview_activity)
ViewPagerBugFixed viewPager;
@BindView(R.id.appbar_layout_theme_preview_activity)
AppBarLayout appBarLayout;
@BindView(R.id.collapsing_toolbar_layout_theme_preview_activity)
CollapsingToolbarLayout collapsingToolbarLayout;
@BindView(R.id.toolbar_linear_layout_theme_preview_activity)
LinearLayout linearLayout;
@BindView(R.id.extra_padding_view_theme_preview_activity)
View extraPaddingView;
@BindView(R.id.subreddit_name_text_view_theme_preview_activity)
TextView subredditNameTextView;
@BindView(R.id.user_name_text_view_theme_preview_activity)
TextView usernameTextView;
@BindView(R.id.subscribe_subreddit_chip_theme_preview_activity)
Chip subscribeSubredditChip;
@BindView(R.id.primary_text_text_view_theme_preview_activity)
TextView primaryTextView;
@BindView(R.id.secondary_text_text_view_theme_preview_activity)
TextView secondaryTextView;
@BindView(R.id.toolbar)
Toolbar toolbar;
@BindView(R.id.tab_layout_theme_preview_activity)
TabLayout tabLayout;
@BindView(R.id.bottom_navigation_theme_preview_activity)
BottomAppBar bottomNavigationView;
@BindView(R.id.linear_layout_bottom_app_bar_theme_preview_activity)
LinearLayout linearLayoutBottomAppBar;
@BindView(R.id.subscriptions_bottom_app_bar_theme_preview_activity)
ImageView subscriptionsBottomAppBar;
@BindView(R.id.multi_reddit_bottom_app_bar_theme_preview_activity)
ImageView multiRedditBottomAppBar;
@BindView(R.id.message_bottom_app_bar_theme_preview_activity)
ImageView messageBottomAppBar;
@BindView(R.id.profile_bottom_app_bar_theme_preview_activity)
ImageView profileBottomAppBar;
@BindView(R.id.fab_theme_preview_activity)
FloatingActionButton fab;
@Inject
@Named("default")
SharedPreferences mSharedPreferences;
@ -127,6 +80,7 @@ public class CustomThemePreviewActivity extends AppCompatActivity implements Cus
private int systemVisibilityToolbarExpanded = 0;
private int systemVisibilityToolbarCollapsed = 0;
private SliderPanel mSliderPanel;
private ActivityThemePreviewBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -225,9 +179,8 @@ public class CustomThemePreviewActivity extends AppCompatActivity implements Cus
getTheme().applyStyle(ContentFontStyle.valueOf(mSharedPreferences
.getString(SharedPreferencesUtils.CONTENT_FONT_SIZE_KEY, ContentFontStyle.Normal.name())).getResId(), true);
setContentView(R.layout.activity_theme_preview);
ButterKnife.bind(this);
binding = ActivityThemePreviewBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
applyCustomTheme();
@ -242,88 +195,88 @@ public class CustomThemePreviewActivity extends AppCompatActivity implements Cus
} else {
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
adjustToolbar(toolbar);
adjustToolbar(binding.toolbar);
Resources resources = getResources();
int navBarResourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
if (navBarResourceId > 0) {
int navBarHeight = resources.getDimensionPixelSize(navBarResourceId);
if (navBarHeight > 0) {
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) fab.getLayoutParams();
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) binding.fabThemePreviewActivity.getLayoutParams();
params.bottomMargin = navBarHeight;
fab.setLayoutParams(params);
linearLayoutBottomAppBar.setPadding(0,
binding.fabThemePreviewActivity.setLayoutParams(params);
binding.linearLayoutBottomAppBarThemePreviewActivity.setPadding(0,
(int) (6 * getResources().getDisplayMetrics().density), 0, navBarHeight);
}
}
}
if (changeStatusBarIconColor) {
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
binding.appbarLayoutThemePreviewActivity.addOnOffsetChangedListener(new AppBarStateChangeListener() {
@Override
public void onStateChanged(AppBarLayout appBarLayout, AppBarStateChangeListener.State state) {
if (state == State.COLLAPSED) {
decorView.setSystemUiVisibility(systemVisibilityToolbarCollapsed);
tabLayout.setTabTextColors(collapsedTabTextColor, collapsedTabTextColor);
tabLayout.setSelectedTabIndicatorColor(collapsedTabIndicatorColor);
tabLayout.setBackgroundColor(collapsedTabBackgroundColor);
binding.tabLayoutThemePreviewActivity.setTabTextColors(collapsedTabTextColor, collapsedTabTextColor);
binding.tabLayoutThemePreviewActivity.setSelectedTabIndicatorColor(collapsedTabIndicatorColor);
binding.tabLayoutThemePreviewActivity.setBackgroundColor(collapsedTabBackgroundColor);
} else if (state == State.EXPANDED) {
decorView.setSystemUiVisibility(systemVisibilityToolbarExpanded);
tabLayout.setTabTextColors(expandedTabTextColor, expandedTabTextColor);
tabLayout.setSelectedTabIndicatorColor(expandedTabIndicatorColor);
tabLayout.setBackgroundColor(expandedTabBackgroundColor);
binding.tabLayoutThemePreviewActivity.setTabTextColors(expandedTabTextColor, expandedTabTextColor);
binding.tabLayoutThemePreviewActivity.setSelectedTabIndicatorColor(expandedTabIndicatorColor);
binding.tabLayoutThemePreviewActivity.setBackgroundColor(expandedTabBackgroundColor);
}
}
});
} else {
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
binding.appbarLayoutThemePreviewActivity.addOnOffsetChangedListener(new AppBarStateChangeListener() {
@Override
public void onStateChanged(AppBarLayout appBarLayout, AppBarStateChangeListener.State state) {
if (state == State.COLLAPSED) {
tabLayout.setTabTextColors(collapsedTabTextColor, collapsedTabTextColor);
tabLayout.setSelectedTabIndicatorColor(collapsedTabIndicatorColor);
tabLayout.setBackgroundColor(collapsedTabBackgroundColor);
binding.tabLayoutThemePreviewActivity.setTabTextColors(collapsedTabTextColor, collapsedTabTextColor);
binding.tabLayoutThemePreviewActivity.setSelectedTabIndicatorColor(collapsedTabIndicatorColor);
binding.tabLayoutThemePreviewActivity.setBackgroundColor(collapsedTabBackgroundColor);
} else if (state == State.EXPANDED) {
tabLayout.setTabTextColors(expandedTabTextColor, expandedTabTextColor);
tabLayout.setSelectedTabIndicatorColor(expandedTabIndicatorColor);
tabLayout.setBackgroundColor(expandedTabBackgroundColor);
binding.tabLayoutThemePreviewActivity.setTabTextColors(expandedTabTextColor, expandedTabTextColor);
binding.tabLayoutThemePreviewActivity.setSelectedTabIndicatorColor(expandedTabIndicatorColor);
binding.tabLayoutThemePreviewActivity.setBackgroundColor(expandedTabBackgroundColor);
}
}
});
}
} else {
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
binding.appbarLayoutThemePreviewActivity.addOnOffsetChangedListener(new AppBarStateChangeListener() {
@Override
public void onStateChanged(AppBarLayout appBarLayout, State state) {
if (state == State.EXPANDED) {
tabLayout.setTabTextColors(expandedTabTextColor, expandedTabTextColor);
tabLayout.setSelectedTabIndicatorColor(expandedTabIndicatorColor);
tabLayout.setBackgroundColor(expandedTabBackgroundColor);
binding.tabLayoutThemePreviewActivity.setTabTextColors(expandedTabTextColor, expandedTabTextColor);
binding.tabLayoutThemePreviewActivity.setSelectedTabIndicatorColor(expandedTabIndicatorColor);
binding.tabLayoutThemePreviewActivity.setBackgroundColor(expandedTabBackgroundColor);
} else if (state == State.COLLAPSED) {
tabLayout.setTabTextColors(collapsedTabTextColor, collapsedTabTextColor);
tabLayout.setSelectedTabIndicatorColor(collapsedTabIndicatorColor);
tabLayout.setBackgroundColor(collapsedTabBackgroundColor);
binding.tabLayoutThemePreviewActivity.setTabTextColors(collapsedTabTextColor, collapsedTabTextColor);
binding.tabLayoutThemePreviewActivity.setSelectedTabIndicatorColor(collapsedTabIndicatorColor);
binding.tabLayoutThemePreviewActivity.setBackgroundColor(collapsedTabBackgroundColor);
}
}
});
}
setSupportActionBar(toolbar);
setSupportActionBar(binding.toolbar);
subscribeSubredditChip.setOnClickListener(view -> {
if (subscribeSubredditChip.getText().equals(getResources().getString(R.string.subscribe))) {
subscribeSubredditChip.setText(R.string.unsubscribe);
subscribeSubredditChip.setChipBackgroundColor(ColorStateList.valueOf(subscribedColor));
binding.subscribeSubredditChipThemePreviewActivity.setOnClickListener(view -> {
if (binding.subscribeSubredditChipThemePreviewActivity.getText().equals(getResources().getString(R.string.subscribe))) {
binding.subscribeSubredditChipThemePreviewActivity.setText(R.string.unsubscribe);
binding.subscribeSubredditChipThemePreviewActivity.setChipBackgroundColor(ColorStateList.valueOf(subscribedColor));
} else {
subscribeSubredditChip.setText(R.string.subscribe);
subscribeSubredditChip.setChipBackgroundColor(ColorStateList.valueOf(unsubscribedColor));
binding.subscribeSubredditChipThemePreviewActivity.setText(R.string.subscribe);
binding.subscribeSubredditChipThemePreviewActivity.setChipBackgroundColor(ColorStateList.valueOf(unsubscribedColor));
}
});
SectionsPagerAdapter sectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(sectionsPagerAdapter);
viewPager.setOffscreenPageLimit(2);
viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
binding.viewPagerThemePreviewActivity.setAdapter(sectionsPagerAdapter);
binding.viewPagerThemePreviewActivity.setOffscreenPageLimit(2);
binding.viewPagerThemePreviewActivity.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
if (position == 0) {
@ -333,51 +286,51 @@ public class CustomThemePreviewActivity extends AppCompatActivity implements Cus
}
}
});
tabLayout.setupWithViewPager(viewPager);
binding.tabLayoutThemePreviewActivity.setupWithViewPager(binding.viewPagerThemePreviewActivity);
}
private void applyCustomTheme() {
coordinatorLayout.setBackgroundColor(customTheme.backgroundColor);
appBarLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
binding.coordinatorLayoutThemePreviewActivity.setBackgroundColor(customTheme.backgroundColor);
binding.appbarLayoutThemePreviewActivity.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
appBarLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
collapsingToolbarLayout.setScrimVisibleHeightTrigger(toolbar.getHeight() + tabLayout.getHeight() + getStatusBarHeight() * 2);
binding.appbarLayoutThemePreviewActivity.getViewTreeObserver().removeOnGlobalLayoutListener(this);
binding.collapsingToolbarLayoutThemePreviewActivity.setScrimVisibleHeightTrigger(binding.toolbar.getHeight() + binding.tabLayoutThemePreviewActivity.getHeight() + getStatusBarHeight() * 2);
}
});
collapsingToolbarLayout.setContentScrimColor(customTheme.colorPrimary);
subscribeSubredditChip.setTextColor(customTheme.chipTextColor);
subscribeSubredditChip.setChipBackgroundColor(ColorStateList.valueOf(customTheme.unsubscribed));
applyAppBarLayoutAndToolbarTheme(appBarLayout, toolbar);
binding.collapsingToolbarLayoutThemePreviewActivity.setContentScrimColor(customTheme.colorPrimary);
binding.subscribeSubredditChipThemePreviewActivity.setTextColor(customTheme.chipTextColor);
binding.subscribeSubredditChipThemePreviewActivity.setChipBackgroundColor(ColorStateList.valueOf(customTheme.unsubscribed));
applyAppBarLayoutAndToolbarTheme(binding.appbarLayoutThemePreviewActivity, binding.toolbar);
expandedTabTextColor = customTheme.tabLayoutWithExpandedCollapsingToolbarTextColor;
expandedTabIndicatorColor = customTheme.tabLayoutWithExpandedCollapsingToolbarTabIndicator;
expandedTabBackgroundColor = customTheme.tabLayoutWithExpandedCollapsingToolbarTabBackground;
collapsedTabTextColor = customTheme.tabLayoutWithCollapsedCollapsingToolbarTextColor;
collapsedTabIndicatorColor = customTheme.tabLayoutWithCollapsedCollapsingToolbarTabIndicator;
collapsedTabBackgroundColor = customTheme.tabLayoutWithCollapsedCollapsingToolbarTabBackground;
linearLayout.setBackgroundColor(customTheme.tabLayoutWithExpandedCollapsingToolbarTabBackground);
extraPaddingView.setBackgroundColor(customTheme.colorPrimary);
subredditNameTextView.setTextColor(customTheme.subreddit);
usernameTextView.setTextColor(customTheme.username);
subscribeSubredditChip.setTextColor(customTheme.chipTextColor);
primaryTextView.setTextColor(customTheme.primaryTextColor);
secondaryTextView.setTextColor(customTheme.secondaryTextColor);
bottomNavigationView.setBackgroundTint(ColorStateList.valueOf(customTheme.bottomAppBarBackgroundColor));
binding.linearLayoutBottomAppBarThemePreviewActivity.setBackgroundColor(customTheme.tabLayoutWithExpandedCollapsingToolbarTabBackground);
binding.extraPaddingViewThemePreviewActivity.setBackgroundColor(customTheme.colorPrimary);
binding.subredditNameTextViewThemePreviewActivity.setTextColor(customTheme.subreddit);
binding.userNameTextViewThemePreviewActivity.setTextColor(customTheme.username);
binding.subscribeSubredditChipThemePreviewActivity.setTextColor(customTheme.chipTextColor);
binding.primaryTextTextViewThemePreviewActivity.setTextColor(customTheme.primaryTextColor);
binding.secondaryTextTextViewThemePreviewActivity.setTextColor(customTheme.secondaryTextColor);
binding.bottomNavigationThemePreviewActivity.setBackgroundTint(ColorStateList.valueOf(customTheme.bottomAppBarBackgroundColor));
int bottomAppBarIconColor = customTheme.bottomAppBarIconColor;
subscriptionsBottomAppBar.setColorFilter(bottomAppBarIconColor, android.graphics.PorterDuff.Mode.SRC_IN);
multiRedditBottomAppBar.setColorFilter(bottomAppBarIconColor, android.graphics.PorterDuff.Mode.SRC_IN);
messageBottomAppBar.setColorFilter(bottomAppBarIconColor, android.graphics.PorterDuff.Mode.SRC_IN);
profileBottomAppBar.setColorFilter(bottomAppBarIconColor, android.graphics.PorterDuff.Mode.SRC_IN);
applyTabLayoutTheme(tabLayout);
applyFABTheme(fab);
binding.subscriptionsBottomAppBarThemePreviewActivity.setColorFilter(bottomAppBarIconColor, android.graphics.PorterDuff.Mode.SRC_IN);
binding.multiRedditBottomAppBarThemePreviewActivity.setColorFilter(bottomAppBarIconColor, android.graphics.PorterDuff.Mode.SRC_IN);
binding.messageBottomAppBarThemePreviewActivity.setColorFilter(bottomAppBarIconColor, android.graphics.PorterDuff.Mode.SRC_IN);
binding.profileBottomAppBarThemePreviewActivity.setColorFilter(bottomAppBarIconColor, android.graphics.PorterDuff.Mode.SRC_IN);
applyTabLayoutTheme(binding.tabLayoutThemePreviewActivity);
applyFABTheme(binding.fabThemePreviewActivity);
unsubscribedColor = customTheme.unsubscribed;
subscribedColor = customTheme.subscribed;
if (typeface != null) {
subredditNameTextView.setTypeface(typeface);
usernameTextView.setTypeface(typeface);
primaryTextView.setTypeface(typeface);
secondaryTextView.setTypeface(typeface);
subscribeSubredditChip.setTypeface(typeface);
binding.subredditNameTextViewThemePreviewActivity.setTypeface(typeface);
binding.userNameTextViewThemePreviewActivity.setTypeface(typeface);
binding.primaryTextTextViewThemePreviewActivity.setTypeface(typeface);
binding.secondaryTextTextViewThemePreviewActivity.setTypeface(typeface);
binding.subscribeSubredditChipThemePreviewActivity.setTypeface(typeface);
}
}
@ -420,7 +373,7 @@ public class CustomThemePreviewActivity extends AppCompatActivity implements Cus
toolbar.setLayoutParams(params);
TypedValue tv = new TypedValue();
if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) {
((ViewGroup.MarginLayoutParams) linearLayout.getLayoutParams()).setMargins(0,
((ViewGroup.MarginLayoutParams) binding.linearLayoutBottomAppBarThemePreviewActivity.getLayoutParams()).setMargins(0,
TypedValue.complexToDimensionPixelSize(tv.data, getResources().getDisplayMetrics()) + statusBarHeight, 0, 0);
}
}
@ -428,9 +381,9 @@ public class CustomThemePreviewActivity extends AppCompatActivity implements Cus
protected void applyTabLayoutTheme(TabLayout tabLayout) {
int toolbarAndTabBackgroundColor = customTheme.colorPrimary;
tabLayout.setBackgroundColor(toolbarAndTabBackgroundColor);
tabLayout.setSelectedTabIndicatorColor(customTheme.tabLayoutWithCollapsedCollapsingToolbarTabIndicator);
tabLayout.setTabTextColors(customTheme.tabLayoutWithCollapsedCollapsingToolbarTextColor,
binding.tabLayoutThemePreviewActivity.setBackgroundColor(toolbarAndTabBackgroundColor);
binding.tabLayoutThemePreviewActivity.setSelectedTabIndicatorColor(customTheme.tabLayoutWithCollapsedCollapsingToolbarTabIndicator);
binding.tabLayoutThemePreviewActivity.setTabTextColors(customTheme.tabLayoutWithCollapsedCollapsingToolbarTextColor,
customTheme.tabLayoutWithCollapsedCollapsingToolbarTextColor);
}

View File

@ -10,12 +10,7 @@ import android.view.MenuItem;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.widget.Toolbar;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.appbar.CollapsingToolbarLayout;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.snackbar.Snackbar;
@ -27,8 +22,6 @@ import java.util.concurrent.Executor;
import javax.inject.Inject;
import javax.inject.Named;
import butterknife.BindView;
import butterknife.ButterKnife;
import ml.docilealligator.infinityforreddit.Infinity;
import ml.docilealligator.infinityforreddit.R;
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
@ -38,6 +31,7 @@ import ml.docilealligator.infinityforreddit.asynctasks.InsertCustomTheme;
import ml.docilealligator.infinityforreddit.customtheme.CustomTheme;
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeSettingsItem;
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
import ml.docilealligator.infinityforreddit.databinding.ActivityCustomizeThemeBinding;
import ml.docilealligator.infinityforreddit.events.RecreateActivityEvent;
import ml.docilealligator.infinityforreddit.utils.CustomThemeSharedPreferencesUtils;
@ -53,16 +47,6 @@ public class CustomizeThemeActivity extends BaseActivity {
private static final String CUSTOM_THEME_SETTINGS_ITEMS_STATE = "CTSIS";
private static final String THEME_NAME_STATE = "TNS";
@BindView(R.id.coordinator_customize_theme_activity)
CoordinatorLayout coordinatorLayout;
@BindView(R.id.appbar_layout_customize_theme_activity)
AppBarLayout appBarLayout;
@BindView(R.id.collapsing_toolbar_layout_customize_theme_activity)
CollapsingToolbarLayout collapsingToolbarLayout;
@BindView(R.id.toolbar_customize_theme_activity)
Toolbar toolbar;
@BindView(R.id.recycler_view_customize_theme_activity)
RecyclerView recyclerView;
@Inject
@Named("default")
SharedPreferences sharedPreferences;
@ -89,6 +73,7 @@ public class CustomizeThemeActivity extends BaseActivity {
private boolean isPredefinedTheme;
private ArrayList<CustomThemeSettingsItem> customThemeSettingsItems;
private CustomizeThemeRecyclerViewAdapter adapter;
private ActivityCustomizeThemeBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -97,13 +82,12 @@ public class CustomizeThemeActivity extends BaseActivity {
setImmersiveModeNotApplicable();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_customize_theme);
ButterKnife.bind(this);
binding = ActivityCustomizeThemeBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
applyCustomTheme();
setSupportActionBar(toolbar);
setSupportActionBar(binding.toolbarCustomizeThemeActivity);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
if (getIntent().getBooleanExtra(EXTRA_CREATE_THEME, false)) {
@ -152,14 +136,14 @@ public class CustomizeThemeActivity extends BaseActivity {
}
adapter = new CustomizeThemeRecyclerViewAdapter(this, customThemeWrapper, themeName);
recyclerView.setAdapter(adapter);
binding.recyclerViewCustomizeThemeActivity.setAdapter(adapter);
adapter.setCustomThemeSettingsItem(customThemeSettingsItems);
});
} else {
isPredefinedTheme = getIntent().getBooleanExtra(EXTRA_IS_PREDEFIINED_THEME, false);
themeName = getIntent().getStringExtra(EXTRA_THEME_NAME);
adapter = new CustomizeThemeRecyclerViewAdapter(this, customThemeWrapper, themeName);
recyclerView.setAdapter(adapter);
binding.recyclerViewCustomizeThemeActivity.setAdapter(adapter);
if (isPredefinedTheme) {
customThemeSettingsItems = CustomThemeSettingsItem.convertCustomThemeToSettingsItem(
CustomizeThemeActivity.this,
@ -167,7 +151,7 @@ public class CustomizeThemeActivity extends BaseActivity {
androidVersion);
adapter = new CustomizeThemeRecyclerViewAdapter(this, customThemeWrapper, themeName);
recyclerView.setAdapter(adapter);
binding.recyclerViewCustomizeThemeActivity.setAdapter(adapter);
adapter.setCustomThemeSettingsItem(customThemeSettingsItems);
} else {
GetCustomTheme.getCustomTheme(mExecutor, new Handler(), redditDataRoomDatabase,
@ -181,7 +165,7 @@ public class CustomizeThemeActivity extends BaseActivity {
}
} else {
adapter = new CustomizeThemeRecyclerViewAdapter(this, customThemeWrapper, themeName);
recyclerView.setAdapter(adapter);
binding.recyclerViewCustomizeThemeActivity.setAdapter(adapter);
adapter.setCustomThemeSettingsItem(customThemeSettingsItems);
}
}
@ -209,7 +193,7 @@ public class CustomizeThemeActivity extends BaseActivity {
if (adapter != null) {
themeName = adapter.getThemeName();
if (themeName.equals("")) {
Snackbar.make(coordinatorLayout, R.string.no_theme_name, Snackbar.LENGTH_SHORT).show();
Snackbar.make(binding.coordinatorCustomizeThemeActivity, R.string.no_theme_name, Snackbar.LENGTH_SHORT).show();
return true;
}
CustomTheme customTheme = CustomTheme.convertSettingsItemsToCustomTheme(customThemeSettingsItems, themeName);
@ -264,7 +248,7 @@ public class CustomizeThemeActivity extends BaseActivity {
@Override
protected void applyCustomTheme() {
applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(appBarLayout, collapsingToolbarLayout, toolbar);
coordinatorLayout.setBackgroundColor(customThemeWrapper.getBackgroundColor());
applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(binding.appbarLayoutCustomizeThemeActivity, binding.collapsingToolbarLayoutCustomizeThemeActivity, binding.toolbarCustomizeThemeActivity);
binding.coordinatorCustomizeThemeActivity.setBackgroundColor(customThemeWrapper.getBackgroundColor());
}
}

View File

@ -11,18 +11,13 @@ import android.os.Handler;
import android.provider.MediaStore;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.core.content.FileProvider;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.snackbar.Snackbar;
@ -40,8 +35,6 @@ import java.util.concurrent.Executor;
import javax.inject.Inject;
import javax.inject.Named;
import butterknife.BindView;
import butterknife.ButterKnife;
import ml.docilealligator.infinityforreddit.Infinity;
import ml.docilealligator.infinityforreddit.MediaMetadata;
import ml.docilealligator.infinityforreddit.R;
@ -52,6 +45,7 @@ import ml.docilealligator.infinityforreddit.apis.RedditAPI;
import ml.docilealligator.infinityforreddit.bottomsheetfragments.UploadedImagesBottomSheetFragment;
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
import ml.docilealligator.infinityforreddit.customviews.LinearLayoutManagerBugFixed;
import ml.docilealligator.infinityforreddit.databinding.ActivityEditCommentBinding;
import ml.docilealligator.infinityforreddit.events.SwitchAccountEvent;
import ml.docilealligator.infinityforreddit.markdown.RichTextJSONConverter;
import ml.docilealligator.infinityforreddit.utils.APIUtils;
@ -77,16 +71,6 @@ public class EditCommentActivity extends BaseActivity implements UploadImageEnab
private static final String UPLOADED_IMAGES_STATE = "UIS";
@BindView(R.id.coordinator_layout_edit_comment_activity)
CoordinatorLayout coordinatorLayout;
@BindView(R.id.appbar_layout_edit_comment_activity)
AppBarLayout appBarLayout;
@BindView(R.id.toolbar_edit_comment_activity)
Toolbar toolbar;
@BindView(R.id.comment_edit_text_edit_comment_activity)
EditText contentEditText;
@BindView(R.id.markdown_bottom_bar_recycler_view_edit_comment_activity)
RecyclerView markdownBottomBarRecyclerView;
@Inject
@Named("oauth")
Retrofit mOauthRetrofit;
@ -109,6 +93,7 @@ public class EditCommentActivity extends BaseActivity implements UploadImageEnab
private boolean isSubmitting = false;
private Uri capturedImageUri;
private ArrayList<UploadedImage> uploadedImages = new ArrayList<>();
private ActivityEditCommentBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -118,19 +103,17 @@ public class EditCommentActivity extends BaseActivity implements UploadImageEnab
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_comment);
ButterKnife.bind(this);
binding = ActivityEditCommentBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
EventBus.getDefault().register(this);
applyCustomTheme();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && isChangeStatusBarIconColor()) {
addOnOffsetChangedListener(appBarLayout);
addOnOffsetChangedListener(binding.appbarLayoutEditCommentActivity);
}
setSupportActionBar(toolbar);
setSupportActionBar(binding.toolbarEditCommentActivity);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mFullName = getIntent().getStringExtra(EXTRA_FULLNAME);
@ -155,7 +138,7 @@ public class EditCommentActivity extends BaseActivity implements UploadImageEnab
}
mCommentContent = sb.toString();
}
contentEditText.setText(mCommentContent);
binding.commentEditTextEditCommentActivity.setText(mCommentContent);
if (savedInstanceState != null) {
uploadedImages = savedInstanceState.getParcelableArrayList(UPLOADED_IMAGES_STATE);
@ -166,7 +149,7 @@ public class EditCommentActivity extends BaseActivity implements UploadImageEnab
@Override
public void onClick(int item) {
MarkdownBottomBarRecyclerViewAdapter.bindEditTextWithItemClickListener(
EditCommentActivity.this, contentEditText, item);
EditCommentActivity.this, binding.commentEditTextEditCommentActivity, item);
}
@Override
@ -181,12 +164,12 @@ public class EditCommentActivity extends BaseActivity implements UploadImageEnab
}
});
markdownBottomBarRecyclerView.setLayoutManager(new LinearLayoutManagerBugFixed(this,
binding.markdownBottomBarRecyclerViewEditCommentActivity.setLayoutManager(new LinearLayoutManagerBugFixed(this,
LinearLayoutManager.HORIZONTAL, false));
markdownBottomBarRecyclerView.setAdapter(adapter);
binding.markdownBottomBarRecyclerViewEditCommentActivity.setAdapter(adapter);
contentEditText.requestFocus();
Utils.showKeyboard(this, new Handler(), contentEditText);
binding.commentEditTextEditCommentActivity.requestFocus();
Utils.showKeyboard(this, new Handler(), binding.commentEditTextEditCommentActivity);
}
@Override
@ -206,12 +189,12 @@ public class EditCommentActivity extends BaseActivity implements UploadImageEnab
@Override
protected void applyCustomTheme() {
coordinatorLayout.setBackgroundColor(mCustomThemeWrapper.getBackgroundColor());
applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(appBarLayout, null, toolbar);
contentEditText.setTextColor(mCustomThemeWrapper.getCommentColor());
binding.coordinatorLayoutEditCommentActivity.setBackgroundColor(mCustomThemeWrapper.getBackgroundColor());
applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(binding.appbarLayoutEditCommentActivity, null, binding.toolbarEditCommentActivity);
binding.commentEditTextEditCommentActivity.setTextColor(mCustomThemeWrapper.getCommentColor());
if (contentTypeface != null) {
contentEditText.setTypeface(contentTypeface);
binding.commentEditTextEditCommentActivity.setTypeface(contentTypeface);
}
}
@ -232,7 +215,7 @@ public class EditCommentActivity extends BaseActivity implements UploadImageEnab
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == R.id.action_preview_edit_comment_activity) {
Intent intent = new Intent(this, FullMarkdownActivity.class);
intent.putExtra(FullMarkdownActivity.EXTRA_COMMENT_MARKDOWN, contentEditText.getText().toString());
intent.putExtra(FullMarkdownActivity.EXTRA_COMMENT_MARKDOWN, binding.commentEditTextEditCommentActivity.getText().toString());
intent.putExtra(FullMarkdownActivity.EXTRA_SUBMIT_POST, true);
startActivityForResult(intent, MARKDOWN_PREVIEW_REQUEST_CODE);
} else if (item.getItemId() == R.id.action_send_edit_comment_activity) {
@ -249,9 +232,9 @@ public class EditCommentActivity extends BaseActivity implements UploadImageEnab
if (!isSubmitting) {
isSubmitting = true;
Snackbar.make(coordinatorLayout, R.string.posting, Snackbar.LENGTH_SHORT).show();
Snackbar.make(binding.coordinatorLayoutEditCommentActivity, R.string.posting, Snackbar.LENGTH_SHORT).show();
String content = contentEditText.getText().toString();
String content = binding.commentEditTextEditCommentActivity.getText().toString();
Map<String, String> params = new HashMap<>();
params.put(APIUtils.THING_ID_KEY, mFullName);
@ -261,7 +244,7 @@ public class EditCommentActivity extends BaseActivity implements UploadImageEnab
params.put(APIUtils.TEXT_KEY, "");
} catch (JSONException e) {
isSubmitting = false;
Snackbar.make(coordinatorLayout, R.string.convert_to_richtext_json_failed, Snackbar.LENGTH_SHORT).show();
Snackbar.make(binding.coordinatorLayoutEditCommentActivity, R.string.convert_to_richtext_json_failed, Snackbar.LENGTH_SHORT).show();
return;
}
} else {
@ -284,14 +267,14 @@ public class EditCommentActivity extends BaseActivity implements UploadImageEnab
finish();
} else {
Snackbar.make(coordinatorLayout, R.string.post_failed, Snackbar.LENGTH_SHORT).show();
Snackbar.make(binding.coordinatorLayoutEditCommentActivity, R.string.post_failed, Snackbar.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) {
isSubmitting = false;
Snackbar.make(coordinatorLayout, R.string.post_failed, Snackbar.LENGTH_SHORT).show();
Snackbar.make(binding.coordinatorLayoutEditCommentActivity, R.string.post_failed, Snackbar.LENGTH_SHORT).show();
}
});
@ -318,10 +301,10 @@ public class EditCommentActivity extends BaseActivity implements UploadImageEnab
return;
}
Utils.uploadImageToReddit(this, mExecutor, mOauthRetrofit, mUploadMediaRetrofit,
mAccessToken, contentEditText, coordinatorLayout, data.getData(), uploadedImages);
mAccessToken, binding.commentEditTextEditCommentActivity, binding.coordinatorLayoutEditCommentActivity, data.getData(), uploadedImages);
} else if (requestCode == CAPTURE_IMAGE_REQUEST_CODE) {
Utils.uploadImageToReddit(this, mExecutor, mOauthRetrofit, mUploadMediaRetrofit,
mAccessToken, contentEditText, coordinatorLayout, capturedImageUri, uploadedImages);
mAccessToken, binding.commentEditTextEditCommentActivity, binding.coordinatorLayoutEditCommentActivity, capturedImageUri, uploadedImages);
} else if (requestCode == MARKDOWN_PREVIEW_REQUEST_CODE) {
editComment();
}
@ -339,7 +322,7 @@ public class EditCommentActivity extends BaseActivity implements UploadImageEnab
if (isSubmitting) {
promptAlertDialog(R.string.exit_when_submit, R.string.exit_when_edit_comment_detail);
} else {
if (contentEditText.getText().toString().equals(mCommentContent)) {
if (binding.commentEditTextEditCommentActivity.getText().toString().equals(mCommentContent)) {
finish();
} else {
promptAlertDialog(R.string.discard, R.string.discard_detail);
@ -384,15 +367,15 @@ public class EditCommentActivity extends BaseActivity implements UploadImageEnab
@Override
public void insertImageUrl(UploadedImage uploadedImage) {
int start = Math.max(contentEditText.getSelectionStart(), 0);
int end = Math.max(contentEditText.getSelectionEnd(), 0);
int start = Math.max(binding.commentEditTextEditCommentActivity.getSelectionStart(), 0);
int end = Math.max(binding.commentEditTextEditCommentActivity.getSelectionEnd(), 0);
int realStart = Math.min(start, end);
if (realStart > 0 && contentEditText.getText().toString().charAt(realStart - 1) != '\n') {
contentEditText.getText().replace(realStart, Math.max(start, end),
if (realStart > 0 && binding.commentEditTextEditCommentActivity.getText().toString().charAt(realStart - 1) != '\n') {
binding.commentEditTextEditCommentActivity.getText().replace(realStart, Math.max(start, end),
"\n![](" + uploadedImage.imageUrlOrKey + ")\n",
0, "\n![]()\n".length() + uploadedImage.imageUrlOrKey.length());
} else {
contentEditText.getText().replace(realStart, Math.max(start, end),
binding.commentEditTextEditCommentActivity.getText().replace(realStart, Math.max(start, end),
"![](" + uploadedImage.imageUrlOrKey + ")\n",
0, "![]()\n".length() + uploadedImage.imageUrlOrKey.length());
}

View File

@ -9,20 +9,11 @@ import android.os.Handler;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.Switch;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.core.view.inputmethod.EditorInfoCompat;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.appbar.CollapsingToolbarLayout;
import com.google.android.material.snackbar.Snackbar;
import java.util.concurrent.Executor;
@ -30,14 +21,13 @@ import java.util.concurrent.Executor;
import javax.inject.Inject;
import javax.inject.Named;
import butterknife.BindView;
import butterknife.ButterKnife;
import ml.docilealligator.infinityforreddit.Infinity;
import ml.docilealligator.infinityforreddit.R;
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
import ml.docilealligator.infinityforreddit.account.Account;
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
import ml.docilealligator.infinityforreddit.customviews.slidr.Slidr;
import ml.docilealligator.infinityforreddit.databinding.ActivityEditMultiRedditBinding;
import ml.docilealligator.infinityforreddit.multireddit.EditMultiReddit;
import ml.docilealligator.infinityforreddit.multireddit.FetchMultiRedditInfo;
import ml.docilealligator.infinityforreddit.multireddit.MultiReddit;
@ -51,34 +41,6 @@ public class EditMultiRedditActivity extends BaseActivity {
private static final int SUBREDDIT_SELECTION_REQUEST_CODE = 1;
private static final String MULTI_REDDIT_STATE = "MRS";
private static final String MULTI_PATH_STATE = "MPS";
@BindView(R.id.coordinator_layout_edit_multi_reddit_activity)
CoordinatorLayout coordinatorLayout;
@BindView(R.id.appbar_layout_edit_multi_reddit_activity)
AppBarLayout appBarLayout;
@BindView(R.id.collapsing_toolbar_layout_edit_multi_reddit_activity)
CollapsingToolbarLayout collapsingToolbarLayout;
@BindView(R.id.toolbar_edit_multi_reddit_activity)
Toolbar toolbar;
@BindView(R.id.progress_bar_edit_multi_reddit_activity)
ProgressBar progressBar;
@BindView(R.id.linear_layout_edit_multi_reddit_activity)
LinearLayout linearLayout;
@BindView(R.id.multi_reddit_name_edit_text_edit_multi_reddit_activity)
EditText nameEditText;
@BindView(R.id.divider_1_edit_multi_reddit_activity)
View divider1;
@BindView(R.id.description_edit_text_edit_multi_reddit_activity)
EditText descriptionEditText;
@BindView(R.id.divider_2_edit_multi_reddit_activity)
View divider2;
@BindView(R.id.visibility_wrapper_linear_layout_edit_multi_reddit_activity)
LinearLayout visibilityLinearLayout;
@BindView(R.id.visibility_text_view_edit_multi_reddit_activity)
TextView visibilityTextView;
@BindView(R.id.visibility_switch_edit_multi_reddit_activity)
Switch visibilitySwitch;
@BindView(R.id.select_subreddit_text_view_edit_multi_reddit_activity)
TextView selectSubredditTextView;
@Inject
@Named("oauth")
Retrofit mRetrofit;
@ -96,6 +58,7 @@ public class EditMultiRedditActivity extends BaseActivity {
Executor mExecutor;
private MultiReddit multiReddit;
private String multipath;
private ActivityEditMultiRedditBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -104,9 +67,8 @@ public class EditMultiRedditActivity extends BaseActivity {
setImmersiveModeNotApplicable();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_multi_reddit);
ButterKnife.bind(this);
binding = ActivityEditMultiRedditBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
applyCustomTheme();
@ -115,17 +77,17 @@ public class EditMultiRedditActivity extends BaseActivity {
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && isChangeStatusBarIconColor()) {
addOnOffsetChangedListener(appBarLayout);
addOnOffsetChangedListener(binding.appbarLayoutEditMultiRedditActivity);
}
setSupportActionBar(toolbar);
setSupportActionBar(binding.toolbarEditMultiRedditActivity);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
if (accountName.equals(Account.ANONYMOUS_ACCOUNT)) {
visibilityLinearLayout.setVisibility(View.GONE);
binding.visibilityWrapperLinearLayoutEditMultiRedditActivity.setVisibility(View.GONE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
nameEditText.setImeOptions(nameEditText.getImeOptions() | EditorInfoCompat.IME_FLAG_NO_PERSONALIZED_LEARNING);
descriptionEditText.setImeOptions(descriptionEditText.getImeOptions() | EditorInfoCompat.IME_FLAG_NO_PERSONALIZED_LEARNING);
binding.multiRedditNameEditTextEditMultiRedditActivity.setImeOptions(binding.multiRedditNameEditTextEditMultiRedditActivity.getImeOptions() | EditorInfoCompat.IME_FLAG_NO_PERSONALIZED_LEARNING);
binding.descriptionEditTextEditMultiRedditActivity.setImeOptions(binding.descriptionEditTextEditMultiRedditActivity.getImeOptions() | EditorInfoCompat.IME_FLAG_NO_PERSONALIZED_LEARNING);
}
}
@ -147,10 +109,10 @@ public class EditMultiRedditActivity extends BaseActivity {
@Override
public void success(MultiReddit multiReddit) {
EditMultiRedditActivity.this.multiReddit = multiReddit;
progressBar.setVisibility(View.GONE);
linearLayout.setVisibility(View.VISIBLE);
nameEditText.setText(multiReddit.getDisplayName());
descriptionEditText.setText(multiReddit.getDescription());
binding.progressBarEditMultiRedditActivity.setVisibility(View.GONE);
binding.linearLayoutEditMultiRedditActivity.setVisibility(View.VISIBLE);
binding.multiRedditNameEditTextEditMultiRedditActivity.setText(multiReddit.getDisplayName());
binding.descriptionEditTextEditMultiRedditActivity.setText(multiReddit.getDescription());
}
@Override
@ -163,28 +125,27 @@ public class EditMultiRedditActivity extends BaseActivity {
@Override
public void success(MultiReddit multiReddit) {
EditMultiRedditActivity.this.multiReddit = multiReddit;
progressBar.setVisibility(View.GONE);
linearLayout.setVisibility(View.VISIBLE);
nameEditText.setText(multiReddit.getDisplayName());
descriptionEditText.setText(multiReddit.getDescription());
visibilitySwitch.setChecked(!multiReddit.getVisibility().equals("public"));
binding.progressBarEditMultiRedditActivity.setVisibility(View.GONE);
binding.linearLayoutEditMultiRedditActivity.setVisibility(View.VISIBLE);
binding.multiRedditNameEditTextEditMultiRedditActivity.setText(multiReddit.getDisplayName());
binding.descriptionEditTextEditMultiRedditActivity.setText(multiReddit.getDescription());
binding.visibilitySwitchEditMultiRedditActivity.setChecked(!multiReddit.getVisibility().equals("public"));
}
@Override
public void failed() {
Snackbar.make(coordinatorLayout, R.string.cannot_fetch_multireddit, Snackbar.LENGTH_SHORT).show();
Snackbar.make(binding.coordinatorLayoutEditMultiRedditActivity, R.string.cannot_fetch_multireddit, Snackbar.LENGTH_SHORT).show();
}
});
}
} else {
progressBar.setVisibility(View.GONE);
linearLayout.setVisibility(View.VISIBLE);
nameEditText.setText(multiReddit.getDisplayName());
descriptionEditText.setText(multiReddit.getDescription());
visibilitySwitch.setChecked(!multiReddit.getVisibility().equals("public"));
binding.progressBarEditMultiRedditActivity.setVisibility(View.GONE);
binding.linearLayoutEditMultiRedditActivity.setVisibility(View.VISIBLE);
binding.multiRedditNameEditTextEditMultiRedditActivity.setText(multiReddit.getDisplayName());
binding.descriptionEditTextEditMultiRedditActivity.setText(multiReddit.getDescription());
binding.visibilitySwitchEditMultiRedditActivity.setChecked(!multiReddit.getVisibility().equals("public"));
}
selectSubredditTextView.setOnClickListener(view -> {
binding.selectSubredditTextViewEditMultiRedditActivity.setOnClickListener(view -> {
Intent intent = new Intent(EditMultiRedditActivity.this, SelectedSubredditsAndUsersActivity.class);
if (multiReddit.getSubreddits() != null) {
intent.putStringArrayListExtra(SelectedSubredditsAndUsersActivity.EXTRA_SELECTED_SUBREDDITS, multiReddit.getSubreddits());
@ -207,16 +168,16 @@ public class EditMultiRedditActivity extends BaseActivity {
finish();
return true;
} else if (itemId == R.id.action_save_edit_multi_reddit_activity) {
if (nameEditText.getText() == null || nameEditText.getText().toString().equals("")) {
Snackbar.make(coordinatorLayout, R.string.no_multi_reddit_name, Snackbar.LENGTH_SHORT).show();
if (binding.multiRedditNameEditTextEditMultiRedditActivity.getText() == null || binding.multiRedditNameEditTextEditMultiRedditActivity.getText().toString().equals("")) {
Snackbar.make(binding.coordinatorLayoutEditMultiRedditActivity, R.string.no_multi_reddit_name, Snackbar.LENGTH_SHORT).show();
return true;
}
if (accountName.equals(Account.ANONYMOUS_ACCOUNT)) {
String name = nameEditText.getText().toString();
String name = binding.multiRedditNameEditTextEditMultiRedditActivity.getText().toString();
multiReddit.setDisplayName(name);
multiReddit.setName(name);
multiReddit.setDescription(descriptionEditText.getText().toString());
multiReddit.setDescription(binding.descriptionEditTextEditMultiRedditActivity.getText().toString());
EditMultiReddit.anonymousEditMultiReddit(mExecutor, new Handler(), mRedditDataRoomDatabase,
multiReddit, new EditMultiReddit.EditMultiRedditListener() {
@Override
@ -230,8 +191,8 @@ public class EditMultiRedditActivity extends BaseActivity {
}
});
} else {
String jsonModel = new MultiRedditJSONModel(nameEditText.getText().toString(), descriptionEditText.getText().toString(),
visibilitySwitch.isChecked(), multiReddit.getSubreddits()).createJSONModel();
String jsonModel = new MultiRedditJSONModel(binding.multiRedditNameEditTextEditMultiRedditActivity.getText().toString(), binding.descriptionEditTextEditMultiRedditActivity.getText().toString(),
binding.visibilitySwitchEditMultiRedditActivity.isChecked(), multiReddit.getSubreddits()).createJSONModel();
EditMultiReddit.editMultiReddit(mRetrofit, accessToken, multiReddit.getPath(),
jsonModel, new EditMultiReddit.EditMultiRedditListener() {
@Override
@ -241,7 +202,7 @@ public class EditMultiRedditActivity extends BaseActivity {
@Override
public void failed() {
Snackbar.make(coordinatorLayout, R.string.edit_multi_reddit_failed, Snackbar.LENGTH_SHORT).show();
Snackbar.make(binding.coordinatorLayoutEditMultiRedditActivity, R.string.edit_multi_reddit_failed, Snackbar.LENGTH_SHORT).show();
}
});
}
@ -285,23 +246,23 @@ public class EditMultiRedditActivity extends BaseActivity {
@Override
protected void applyCustomTheme() {
coordinatorLayout.setBackgroundColor(mCustomThemeWrapper.getBackgroundColor());
applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(appBarLayout, collapsingToolbarLayout, toolbar);
progressBar.setIndeterminateTintList(ColorStateList.valueOf(mCustomThemeWrapper.getColorAccent()));
binding.coordinatorLayoutEditMultiRedditActivity.setBackgroundColor(mCustomThemeWrapper.getBackgroundColor());
applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(binding.appbarLayoutEditMultiRedditActivity, binding.collapsingToolbarLayoutEditMultiRedditActivity, binding.toolbarEditMultiRedditActivity);
binding.progressBarEditMultiRedditActivity.setIndeterminateTintList(ColorStateList.valueOf(mCustomThemeWrapper.getColorAccent()));
int primaryTextColor = mCustomThemeWrapper.getPrimaryTextColor();
int secondaryTextColor = mCustomThemeWrapper.getSecondaryTextColor();
nameEditText.setTextColor(primaryTextColor);
nameEditText.setHintTextColor(secondaryTextColor);
binding.multiRedditNameEditTextEditMultiRedditActivity.setTextColor(primaryTextColor);
binding.multiRedditNameEditTextEditMultiRedditActivity.setHintTextColor(secondaryTextColor);
int dividerColor = mCustomThemeWrapper.getDividerColor();
divider1.setBackgroundColor(dividerColor);
divider2.setBackgroundColor(dividerColor);
descriptionEditText.setTextColor(primaryTextColor);
descriptionEditText.setHintTextColor(secondaryTextColor);
visibilityTextView.setTextColor(primaryTextColor);
selectSubredditTextView.setTextColor(primaryTextColor);
binding.divider1EditMultiRedditActivity.setBackgroundColor(dividerColor);
binding.divider2EditMultiRedditActivity.setBackgroundColor(dividerColor);
binding.descriptionEditTextEditMultiRedditActivity.setTextColor(primaryTextColor);
binding.descriptionEditTextEditMultiRedditActivity.setHintTextColor(secondaryTextColor);
binding.visibilityTextViewEditMultiRedditActivity.setTextColor(primaryTextColor);
binding.selectSubredditTextViewEditMultiRedditActivity.setTextColor(primaryTextColor);
if (typeface != null) {
Utils.setFontToAllTextViews(coordinatorLayout, typeface);
Utils.setFontToAllTextViews(binding.coordinatorLayoutEditMultiRedditActivity, typeface);
}
}
}

View File

@ -11,19 +11,12 @@ import android.os.Handler;
import android.provider.MediaStore;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.core.content.FileProvider;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.snackbar.Snackbar;
@ -40,8 +33,6 @@ import java.util.concurrent.Executor;
import javax.inject.Inject;
import javax.inject.Named;
import butterknife.BindView;
import butterknife.ButterKnife;
import ml.docilealligator.infinityforreddit.Infinity;
import ml.docilealligator.infinityforreddit.R;
import ml.docilealligator.infinityforreddit.UploadImageEnabledActivity;
@ -52,6 +43,7 @@ import ml.docilealligator.infinityforreddit.bottomsheetfragments.UploadedImagesB
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
import ml.docilealligator.infinityforreddit.customviews.LinearLayoutManagerBugFixed;
import ml.docilealligator.infinityforreddit.customviews.slidr.Slidr;
import ml.docilealligator.infinityforreddit.databinding.ActivityEditPostBinding;
import ml.docilealligator.infinityforreddit.events.SwitchAccountEvent;
import ml.docilealligator.infinityforreddit.utils.APIUtils;
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
@ -73,20 +65,6 @@ public class EditPostActivity extends BaseActivity implements UploadImageEnabled
private static final String UPLOADED_IMAGES_STATE = "UIS";
@BindView(R.id.coordinator_layout_edit_post_activity)
CoordinatorLayout coordinatorLayout;
@BindView(R.id.appbar_layout_edit_post_activity)
AppBarLayout appBarLayout;
@BindView(R.id.toolbar_edit_post_activity)
Toolbar toolbar;
@BindView(R.id.post_title_text_view_edit_post_activity)
TextView titleTextView;
@BindView(R.id.divider_edit_post_activity)
View divider;
@BindView(R.id.post_text_content_edit_text_edit_post_activity)
EditText contentEditText;
@BindView(R.id.markdown_bottom_bar_recycler_view_edit_post_activity)
RecyclerView markdownBottomBarRecyclerView;
@Inject
@Named("oauth")
Retrofit mOauthRetrofit;
@ -109,6 +87,7 @@ public class EditPostActivity extends BaseActivity implements UploadImageEnabled
private boolean isSubmitting = false;
private Uri capturedImageUri;
private ArrayList<UploadedImage> uploadedImages = new ArrayList<>();
private ActivityEditPostBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -117,10 +96,8 @@ public class EditPostActivity extends BaseActivity implements UploadImageEnabled
setImmersiveModeNotApplicable();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_post);
ButterKnife.bind(this);
binding = ActivityEditPostBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
EventBus.getDefault().register(this);
@ -131,17 +108,17 @@ public class EditPostActivity extends BaseActivity implements UploadImageEnabled
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && isChangeStatusBarIconColor()) {
addOnOffsetChangedListener(appBarLayout);
addOnOffsetChangedListener(binding.appbarLayoutEditPostActivity);
}
setSupportActionBar(toolbar);
setSupportActionBar(binding.toolbarEditPostActivity);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mFullName = getIntent().getStringExtra(EXTRA_FULLNAME);
mAccessToken = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCESS_TOKEN, null);
titleTextView.setText(getIntent().getStringExtra(EXTRA_TITLE));
binding.postTitleTextViewEditPostActivity.setText(getIntent().getStringExtra(EXTRA_TITLE));
mPostContent = getIntent().getStringExtra(EXTRA_CONTENT);
contentEditText.setText(mPostContent);
binding.postContentEditTextEditPostActivity.setText(mPostContent);
if (savedInstanceState != null) {
uploadedImages = savedInstanceState.getParcelableArrayList(UPLOADED_IMAGES_STATE);
@ -152,7 +129,7 @@ public class EditPostActivity extends BaseActivity implements UploadImageEnabled
@Override
public void onClick(int item) {
MarkdownBottomBarRecyclerViewAdapter.bindEditTextWithItemClickListener(
EditPostActivity.this, contentEditText, item);
EditPostActivity.this, binding.postContentEditTextEditPostActivity, item);
}
@Override
@ -167,12 +144,12 @@ public class EditPostActivity extends BaseActivity implements UploadImageEnabled
}
});
markdownBottomBarRecyclerView.setLayoutManager(new LinearLayoutManagerBugFixed(this,
binding.markdownBottomBarRecyclerViewEditPostActivity.setLayoutManager(new LinearLayoutManagerBugFixed(this,
LinearLayoutManagerBugFixed.HORIZONTAL, false));
markdownBottomBarRecyclerView.setAdapter(adapter);
binding.markdownBottomBarRecyclerViewEditPostActivity.setAdapter(adapter);
contentEditText.requestFocus();
Utils.showKeyboard(this, new Handler(), contentEditText);
binding.postContentEditTextEditPostActivity.requestFocus();
Utils.showKeyboard(this, new Handler(), binding.postContentEditTextEditPostActivity);
}
@Override
@ -192,17 +169,17 @@ public class EditPostActivity extends BaseActivity implements UploadImageEnabled
@Override
protected void applyCustomTheme() {
coordinatorLayout.setBackgroundColor(mCustomThemeWrapper.getBackgroundColor());
applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(appBarLayout, null, toolbar);
titleTextView.setTextColor(mCustomThemeWrapper.getPostTitleColor());
divider.setBackgroundColor(mCustomThemeWrapper.getPostTitleColor());
contentEditText.setTextColor(mCustomThemeWrapper.getPostContentColor());
binding.coordinatorLayoutEditPostActivity.setBackgroundColor(mCustomThemeWrapper.getBackgroundColor());
applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(binding.appbarLayoutEditPostActivity, null, binding.toolbarEditPostActivity);
binding.postTitleTextViewEditPostActivity.setTextColor(mCustomThemeWrapper.getPostTitleColor());
binding.dividerEditPostActivity.setBackgroundColor(mCustomThemeWrapper.getPostTitleColor());
binding.postContentEditTextEditPostActivity.setTextColor(mCustomThemeWrapper.getPostContentColor());
if (titleTypeface != null) {
titleTextView.setTypeface(titleTypeface);
binding.postTitleTextViewEditPostActivity.setTypeface(titleTypeface);
}
if (contentTypeface != null) {
contentEditText.setTypeface(contentTypeface);
binding.postContentEditTextEditPostActivity.setTypeface(contentTypeface);
}
}
@ -223,7 +200,7 @@ public class EditPostActivity extends BaseActivity implements UploadImageEnabled
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == R.id.action_preview_edit_post_activity) {
Intent intent = new Intent(this, FullMarkdownActivity.class);
intent.putExtra(FullMarkdownActivity.EXTRA_COMMENT_MARKDOWN, contentEditText.getText().toString());
intent.putExtra(FullMarkdownActivity.EXTRA_COMMENT_MARKDOWN, binding.postContentEditTextEditPostActivity.getText().toString());
intent.putExtra(FullMarkdownActivity.EXTRA_SUBMIT_POST, true);
startActivityForResult(intent, MARKDOWN_PREVIEW_REQUEST_CODE);
} else if (item.getItemId() == R.id.action_send_edit_post_activity) {
@ -240,11 +217,11 @@ public class EditPostActivity extends BaseActivity implements UploadImageEnabled
if (!isSubmitting) {
isSubmitting = true;
Snackbar.make(coordinatorLayout, R.string.posting, Snackbar.LENGTH_SHORT).show();
Snackbar.make(binding.coordinatorLayoutEditPostActivity, R.string.posting, Snackbar.LENGTH_SHORT).show();
Map<String, String> params = new HashMap<>();
params.put(APIUtils.THING_ID_KEY, mFullName);
params.put(APIUtils.TEXT_KEY, contentEditText.getText().toString());
params.put(APIUtils.TEXT_KEY, binding.postContentEditTextEditPostActivity.getText().toString());
mOauthRetrofit.create(RedditAPI.class)
.editPostOrComment(APIUtils.getOAuthHeader(mAccessToken), params)
@ -261,7 +238,7 @@ public class EditPostActivity extends BaseActivity implements UploadImageEnabled
@Override
public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) {
isSubmitting = false;
Snackbar.make(coordinatorLayout, R.string.post_failed, Snackbar.LENGTH_SHORT).show();
Snackbar.make(binding.coordinatorLayoutEditPostActivity, R.string.post_failed, Snackbar.LENGTH_SHORT).show();
}
});
@ -278,10 +255,10 @@ public class EditPostActivity extends BaseActivity implements UploadImageEnabled
return;
}
Utils.uploadImageToReddit(this, mExecutor, mOauthRetrofit, mUploadMediaRetrofit,
mAccessToken, contentEditText, coordinatorLayout, data.getData(), uploadedImages);
mAccessToken, binding.postContentEditTextEditPostActivity, binding.coordinatorLayoutEditPostActivity, data.getData(), uploadedImages);
} else if (requestCode == CAPTURE_IMAGE_REQUEST_CODE) {
Utils.uploadImageToReddit(this, mExecutor, mOauthRetrofit, mUploadMediaRetrofit,
mAccessToken, contentEditText, coordinatorLayout, capturedImageUri, uploadedImages);
mAccessToken, binding.postContentEditTextEditPostActivity, binding.coordinatorLayoutEditPostActivity, capturedImageUri, uploadedImages);
} else if (requestCode == MARKDOWN_PREVIEW_REQUEST_CODE) {
editPost();
}
@ -309,7 +286,7 @@ public class EditPostActivity extends BaseActivity implements UploadImageEnabled
if (isSubmitting) {
promptAlertDialog(R.string.exit_when_submit, R.string.exit_when_edit_post_detail);
} else {
if (contentEditText.getText().toString().equals(mPostContent)) {
if (binding.postContentEditTextEditPostActivity.getText().toString().equals(mPostContent)) {
finish();
} else {
promptAlertDialog(R.string.discard, R.string.discard_detail);
@ -354,9 +331,9 @@ public class EditPostActivity extends BaseActivity implements UploadImageEnabled
@Override
public void insertImageUrl(UploadedImage uploadedImage) {
int start = Math.max(contentEditText.getSelectionStart(), 0);
int end = Math.max(contentEditText.getSelectionEnd(), 0);
contentEditText.getText().replace(Math.min(start, end), Math.max(start, end),
int start = Math.max(binding.postContentEditTextEditPostActivity.getSelectionStart(), 0);
int end = Math.max(binding.postContentEditTextEditPostActivity.getSelectionEnd(), 0);
binding.postContentEditTextEditPostActivity.getText().replace(Math.min(start, end), Math.max(start, end),
"[" + uploadedImage.imageName + "](" + uploadedImage.imageUrlOrKey + ")",
0, "[]()".length() + uploadedImage.imageName.length() + uploadedImage.imageUrlOrKey.length());
}

View File

@ -45,6 +45,7 @@ import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
import ml.docilealligator.infinityforreddit.account.Account;
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
import ml.docilealligator.infinityforreddit.customviews.slidr.Slidr;
import ml.docilealligator.infinityforreddit.databinding.ActivityEditProfileBinding;
import ml.docilealligator.infinityforreddit.events.SubmitChangeAvatarEvent;
import ml.docilealligator.infinityforreddit.events.SubmitChangeBannerEvent;
import ml.docilealligator.infinityforreddit.events.SubmitSaveProfileEvent;
@ -61,29 +62,6 @@ public class EditProfileActivity extends BaseActivity {
private static final int PICK_IMAGE_BANNER_REQUEST_CODE = 0x401;
private static final int PICK_IMAGE_AVATAR_REQUEST_CODE = 0x402;
@BindView(R.id.root_layout_view_edit_profile_activity)
CoordinatorLayout coordinatorLayout;
@BindView(R.id.content_view_edit_profile_activity)
LinearLayout content;
@BindView(R.id.collapsing_toolbar_layout_edit_profile_activity)
CollapsingToolbarLayout collapsingToolbarLayout;
@BindView(R.id.appbar_layout_view_edit_profile_activity)
AppBarLayout appBarLayout;
@BindView(R.id.toolbar_view_edit_profile_activity)
MaterialToolbar toolbar;
@BindView(R.id.image_view_banner_edit_profile_activity)
GifImageView bannerImageView;
@BindView(R.id.image_view_avatar_edit_profile_activity)
GifImageView avatarImageView;
@BindView(R.id.image_view_change_banner_edit_profile_activity)
ImageView changeBanner;
@BindView(R.id.image_view_change_avatar_edit_profile_activity)
ImageView changeAvatar;
@BindView(R.id.edit_text_display_name_edit_profile_activity)
EditText editTextDisplayName;
@BindView(R.id.edit_text_about_you_edit_profile_activity)
EditText editTextAboutYou;
@Inject
@Named("current_account")
SharedPreferences mCurrentAccountSharedPreferences;
@ -97,6 +75,7 @@ public class EditProfileActivity extends BaseActivity {
RedditDataRoomDatabase mRedditDataRoomDatabase;
@Inject
CustomThemeWrapper mCustomThemeWrapper;
private ActivityEditProfileBinding binding;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
@ -105,28 +84,27 @@ public class EditProfileActivity extends BaseActivity {
setImmersiveModeNotApplicable();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_profile);
ButterKnife.bind(this);
binding = ActivityEditProfileBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
EventBus.getDefault().register(this);
applyCustomTheme();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && isChangeStatusBarIconColor()) {
addOnOffsetChangedListener(appBarLayout);
addOnOffsetChangedListener(binding.appbarLayoutViewEditProfileActivity);
}
setSupportActionBar(toolbar);
setSupportActionBar(binding.toolbarViewEditProfileActivity);
if (mSharedPreferences.getBoolean(SharedPreferencesUtils.SWIPE_RIGHT_TO_GO_BACK, true)) {
Slidr.attach(this);
}
changeBanner.setOnClickListener(view -> {
binding.imageViewChangeBannerEditProfileActivity.setOnClickListener(view -> {
startPickImage(PICK_IMAGE_BANNER_REQUEST_CODE);
});
changeAvatar.setOnClickListener(view -> {
binding.imageViewChangeAvatarEditProfileActivity.setOnClickListener(view -> {
startPickImage(PICK_IMAGE_AVATAR_REQUEST_CODE);
});
@ -142,18 +120,18 @@ public class EditProfileActivity extends BaseActivity {
}
// BANNER
final String userBanner = userData.getBanner();
LayoutParams cBannerLp = (LayoutParams) changeBanner.getLayoutParams();
LayoutParams cBannerLp = (LayoutParams) binding.imageViewChangeBannerEditProfileActivity.getLayoutParams();
if (userBanner == null || userBanner.isEmpty()) {
changeBanner.setLongClickable(false);
binding.imageViewChangeBannerEditProfileActivity.setLongClickable(false);
cBannerLp.gravity = Gravity.CENTER;
changeBanner.setLayoutParams(cBannerLp);
changeBanner.setOnLongClickListener(v -> false);
binding.imageViewChangeBannerEditProfileActivity.setLayoutParams(cBannerLp);
binding.imageViewChangeBannerEditProfileActivity.setOnLongClickListener(v -> false);
} else {
changeBanner.setLongClickable(true);
binding.imageViewChangeBannerEditProfileActivity.setLongClickable(true);
cBannerLp.gravity = Gravity.END | Gravity.BOTTOM;
changeBanner.setLayoutParams(cBannerLp);
glide.load(userBanner).into(bannerImageView);
changeBanner.setOnLongClickListener(view -> {
binding.imageViewChangeBannerEditProfileActivity.setLayoutParams(cBannerLp);
glide.load(userBanner).into(binding.imageViewBannerEditProfileActivity);
binding.imageViewChangeBannerEditProfileActivity.setOnLongClickListener(view -> {
if (accountName.equals(Account.ANONYMOUS_ACCOUNT)) {
return false;
}
@ -170,7 +148,7 @@ public class EditProfileActivity extends BaseActivity {
Toast.makeText(EditProfileActivity.this,
R.string.message_remove_banner_success,
Toast.LENGTH_SHORT).show();
bannerImageView.setImageDrawable(null);//
binding.imageViewBannerEditProfileActivity.setImageDrawable(null);//
}
@Override
@ -189,14 +167,14 @@ public class EditProfileActivity extends BaseActivity {
final String userAvatar = userData.getIconUrl();
glide.load(userAvatar)
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(216, 0)))
.into(avatarImageView);
LayoutParams cAvatarLp = (LayoutParams) changeAvatar.getLayoutParams();
.into(binding.imageViewAvatarEditProfileActivity);
LayoutParams cAvatarLp = (LayoutParams) binding.imageViewChangeAvatarEditProfileActivity.getLayoutParams();
if (userAvatar.contains("avatar_default_")) {
changeAvatar.setLongClickable(false);
changeAvatar.setOnLongClickListener(v -> false);
binding.imageViewChangeAvatarEditProfileActivity.setLongClickable(false);
binding.imageViewChangeAvatarEditProfileActivity.setOnLongClickListener(v -> false);
} else {
changeAvatar.setLongClickable(true);
changeAvatar.setOnLongClickListener(view -> {
binding.imageViewChangeAvatarEditProfileActivity.setLongClickable(true);
binding.imageViewChangeAvatarEditProfileActivity.setOnLongClickListener(view -> {
if (accountName.equals(Account.ANONYMOUS_ACCOUNT)) {
return false;
}
@ -228,8 +206,8 @@ public class EditProfileActivity extends BaseActivity {
});
}
editTextAboutYou.setText(userData.getDescription());
editTextDisplayName.setText(userData.getTitle());
binding.editTextAboutYouEditProfileActivity.setText(userData.getDescription());
binding.editTextDisplayNameEditProfileActivity.setText(userData.getTitle());
});
}
@ -273,12 +251,12 @@ public class EditProfileActivity extends BaseActivity {
return true;
} else if (itemId == R.id.action_save_edit_profile_activity) {
String displayName = null;
if (editTextDisplayName.getText() != null) {
displayName = editTextDisplayName.getText().toString();
if (binding.editTextDisplayNameEditProfileActivity.getText() != null) {
displayName = binding.editTextDisplayNameEditProfileActivity.getText().toString();
}
String aboutYou = null;
if (editTextAboutYou.getText() != null) {
aboutYou = editTextAboutYou.getText().toString();
if (binding.editTextAboutYouEditProfileActivity.getText() != null) {
aboutYou = binding.editTextAboutYouEditProfileActivity.getText().toString();
}
if (aboutYou == null || displayName == null) return false; //
@ -343,11 +321,11 @@ public class EditProfileActivity extends BaseActivity {
@Override
protected void applyCustomTheme() {
applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(appBarLayout, collapsingToolbarLayout, toolbar);
coordinatorLayout.setBackgroundColor(mCustomThemeWrapper.getBackgroundColor());
changeColorTextView(content, mCustomThemeWrapper.getPrimaryTextColor());
applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(binding.appbarLayoutViewEditProfileActivity, binding.collapsingToolbarLayoutEditProfileActivity, binding.toolbarViewEditProfileActivity);
binding.rootLayoutViewEditProfileActivity.setBackgroundColor(mCustomThemeWrapper.getBackgroundColor());
changeColorTextView(binding.contentViewEditProfileActivity, mCustomThemeWrapper.getPrimaryTextColor());
if (typeface != null) {
Utils.setFontToAllTextViews(coordinatorLayout, typeface);
Utils.setFontToAllTextViews(binding.rootLayoutViewEditProfileActivity, typeface);
}
}

View File

@ -8,24 +8,18 @@ import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.button.MaterialButton;
import ml.docilealligator.infinityforreddit.R;
import ml.docilealligator.infinityforreddit.UploadImageEnabledActivity;
import ml.docilealligator.infinityforreddit.activities.BaseActivity;
import ml.docilealligator.infinityforreddit.adapters.UploadedImagesRecyclerViewAdapter;
import ml.docilealligator.infinityforreddit.customviews.LandscapeExpandedRoundedBottomSheetDialogFragment;
import ml.docilealligator.infinityforreddit.databinding.FragmentUploadedImagesBottomSheetBinding;
import ml.docilealligator.infinityforreddit.utils.Utils;
public class UploadedImagesBottomSheetFragment extends LandscapeExpandedRoundedBottomSheetDialogFragment {
public static final String EXTRA_UPLOADED_IMAGES = "EUI";
private MaterialButton uploadButton;
private MaterialButton captureButton;
private RecyclerView uploadedImagesRecyclerView;
private UploadedImagesRecyclerViewAdapter adapter;
private UploadImageEnabledActivity activity;
@ -37,36 +31,33 @@ public class UploadedImagesBottomSheetFragment extends LandscapeExpandedRoundedB
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.fragment_uploaded_images_bottom_sheet, container, false);
uploadButton = rootView.findViewById(R.id.upload_button_uploaded_images_bottom_sheet_fragment);
captureButton = rootView.findViewById(R.id.capture_button_uploaded_images_bottom_sheet_fragment);
FragmentUploadedImagesBottomSheetBinding binding = FragmentUploadedImagesBottomSheetBinding.inflate(inflater, container, false);
uploadButton.setOnClickListener(view -> {
binding.uploadButtonUploadedImagesBottomSheetFragment.setOnClickListener(view -> {
activity.uploadImage();
dismiss();
});
captureButton.setOnClickListener(view -> {
binding.captureButtonUploadedImagesBottomSheetFragment.setOnClickListener(view -> {
activity.captureImage();
dismiss();
});
uploadedImagesRecyclerView = rootView.findViewById(R.id.recycler_view_uploaded_images_bottom_sheet);
adapter = new UploadedImagesRecyclerViewAdapter(getActivity(),
getArguments().getParcelableArrayList(EXTRA_UPLOADED_IMAGES), uploadedImage -> {
activity.insertImageUrl(uploadedImage);
dismiss();
});
uploadedImagesRecyclerView.setAdapter(adapter);
binding.recyclerViewUploadedImagesBottomSheet.setAdapter(adapter);
Activity baseActivity = getActivity();
if (baseActivity instanceof BaseActivity) {
if (((BaseActivity) activity).typeface != null) {
Utils.setFontToAllTextViews(rootView, ((BaseActivity) activity).typeface);
Utils.setFontToAllTextViews(binding.getRoot(), ((BaseActivity) activity).typeface);
}
}
return rootView;
return binding.getRoot();
}
@Override

View File

@ -55,7 +55,7 @@
android:layout_height="1dp" />
<EditText
android:id="@+id/post_text_content_edit_text_edit_post_activity"
android:id="@+id/post_content_edit_text_edit_post_activity"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="top"