From 1754c630ae30861d9199b9e7704b9097a1967128 Mon Sep 17 00:00:00 2001 From: Docile-Alligator <25734209+Docile-Alligator@users.noreply.github.com> Date: Sun, 28 Apr 2024 23:38:03 -0400 Subject: Migrate to ViewBinding in some activities. Remove TrendingActivity. --- app/src/main/AndroidManifest.xml | 5 - .../infinityforreddit/AppComponent.java | 3 - .../infinityforreddit/activities/MainActivity.java | 2 - .../activities/TrendingActivity.java | 345 --------------------- .../activities/ViewImageOrGifActivity.java | 68 ++-- .../activities/ViewImgurMediaActivity.java | 89 +++--- .../activities/ViewMultiRedditDetailActivity.java | 42 +-- .../activities/ViewPostDetailActivity.java | 146 ++++----- .../activities/ViewPrivateMessagesActivity.java | 85 ++--- .../activities/ViewRedditGalleryActivity.java | 29 +- .../activities/ViewSubredditDetailActivity.java | 233 ++++++-------- .../activities/ViewUserDetailActivity.java | 233 ++++++-------- .../activities/ViewVideoActivity.java | 102 +++--- .../ViewVideoActivityBindingAdapter.java | 97 ++++++ .../activities/WebViewActivity.java | 57 ++-- .../infinityforreddit/activities/WikiActivity.java | 84 ++--- .../RedditSectionRecyclerViewAdapter.java | 11 +- .../main/res/drawable-night/ic_trending_24dp.xml | 9 - app/src/main/res/drawable/ic_trending_24dp.xml | 9 - .../activity_view_multi_reddit_detail.xml | 1 - .../layout-land/activity_view_subreddit_detail.xml | 1 - .../res/layout-land/activity_view_user_detail.xml | 1 - .../activity_view_multi_reddit_detail.xml | 1 - .../activity_view_subreddit_detail.xml | 1 - .../layout-sw600dp/activity_view_user_detail.xml | 1 - app/src/main/res/layout/activity_trending.xml | 76 ----- .../main/res/layout/activity_view_image_or_gif.xml | 1 - .../main/res/layout/activity_view_imgur_media.xml | 1 - .../layout/activity_view_multi_reddit_detail.xml | 1 - .../main/res/layout/activity_view_post_detail.xml | 1 - .../res/layout/activity_view_private_messages.xml | 1 - .../res/layout/activity_view_reddit_gallery.xml | 1 - .../res/layout/activity_view_subreddit_detail.xml | 1 - .../main/res/layout/activity_view_user_detail.xml | 1 - app/src/main/res/layout/activity_view_video.xml | 1 - .../res/layout/activity_view_video_zoomable.xml | 1 - app/src/main/res/layout/activity_web_view.xml | 1 - app/src/main/res/layout/activity_wiki.xml | 1 - app/src/main/res/values-cs/strings.xml | 2 - app/src/main/res/values-de/strings.xml | 2 - app/src/main/res/values-el/strings.xml | 2 - app/src/main/res/values-es/strings.xml | 2 - app/src/main/res/values-fr/strings.xml | 2 - app/src/main/res/values-it/strings.xml | 2 - app/src/main/res/values-ja/strings.xml | 1 - app/src/main/res/values-nl/strings.xml | 2 - app/src/main/res/values-pl/strings.xml | 2 - app/src/main/res/values-pt-rBR/strings.xml | 2 - app/src/main/res/values-pt/strings.xml | 2 - app/src/main/res/values-ro/strings.xml | 2 - app/src/main/res/values-ru/strings.xml | 2 - app/src/main/res/values-ta/strings.xml | 2 - app/src/main/res/values-tr-rTR/strings.xml | 2 - app/src/main/res/values-uk/strings.xml | 2 - app/src/main/res/values-vi/strings.xml | 2 - app/src/main/res/values-zh-rCN/strings.xml | 2 - app/src/main/res/values/strings.xml | 2 - 57 files changed, 564 insertions(+), 1216 deletions(-) delete mode 100644 app/src/main/java/ml/docilealligator/infinityforreddit/activities/TrendingActivity.java create mode 100644 app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewVideoActivityBindingAdapter.java delete mode 100644 app/src/main/res/drawable-night/ic_trending_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_trending_24dp.xml delete mode 100644 app/src/main/res/layout/activity_trending.xml (limited to 'app/src') diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8a67b013..8264c208 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -75,11 +75,6 @@ android:label="@string/wiki_activity_label" android:parentActivityName=".activities.MainActivity" android:theme="@style/AppTheme.Slidable" /> - trendingSearches; - private TrendingSearchRecyclerViewAdapter adapter; - private RequestManager mGlide; - - @Override - protected void onCreate(Bundle savedInstanceState) { - ((Infinity) getApplication()).getAppComponent().inject(this); - - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_trending); - - ButterKnife.bind(this); - - EventBus.getDefault().register(this); - - applyCustomTheme(); - - if (mSharedPreferences.getBoolean(SharedPreferencesUtils.SWIPE_RIGHT_TO_GO_BACK, true)) { - Slidr.attach(this); - } - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - Window window = getWindow(); - - if (isChangeStatusBarIconColor()) { - addOnOffsetChangedListener(appBarLayout); - } - - if (isImmersiveInterface()) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { - window.setDecorFitsSystemWindows(false); - } else { - window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); - } - adjustToolbar(toolbar); - - int navBarResourceId = getResources().getIdentifier("navigation_bar_height", "dimen", "android"); - if (navBarResourceId > 0) { - recyclerView.setPadding(0, 0, 0, recyclerView.getPaddingBottom() + getResources().getDimensionPixelSize(navBarResourceId)); - } - } - } - - setSupportActionBar(toolbar); - getSupportActionBar().setDisplayHomeAsUpEnabled(true); - setToolbarGoToTop(toolbar); - - mGlide = Glide.with(this); - - DisplayMetrics displayMetrics = new DisplayMetrics(); - getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); - int windowWidth = displayMetrics.widthPixels; - - String dataSavingModeString = mSharedPreferences.getString(SharedPreferencesUtils.DATA_SAVING_MODE, SharedPreferencesUtils.DATA_SAVING_MODE_OFF); - boolean dataSavingMode = false; - if (dataSavingModeString.equals(SharedPreferencesUtils.DATA_SAVING_MODE_ALWAYS)) { - dataSavingMode = true; - } else if (dataSavingModeString.equals(SharedPreferencesUtils.DATA_SAVING_MODE_ONLY_ON_CELLULAR_DATA)) { - int networkType = Utils.getConnectedNetwork(this); - dataSavingMode = networkType == Utils.NETWORK_TYPE_CELLULAR; - } - boolean disableImagePreview = mSharedPreferences.getBoolean(SharedPreferencesUtils.DISABLE_IMAGE_PREVIEW, false); - adapter = new TrendingSearchRecyclerViewAdapter(this, mCustomThemeWrapper, windowWidth, - dataSavingMode, disableImagePreview, new TrendingSearchRecyclerViewAdapter.ItemClickListener() { - @Override - public void onClick(TrendingSearch trendingSearch) { - Intent intent = new Intent(TrendingActivity.this, SearchResultActivity.class); - intent.putExtra(SearchResultActivity.EXTRA_QUERY, trendingSearch.queryString); - intent.putExtra(SearchResultActivity.EXTRA_TRENDING_SOURCE, "trending"); - startActivity(intent); - } - }); - recyclerView.setAdapter(adapter); - - swipeRefreshLayout.setEnabled(mSharedPreferences.getBoolean(SharedPreferencesUtils.PULL_TO_REFRESH, true)); - swipeRefreshLayout.setOnRefreshListener(this::fetchTrendingSearches); - - errorLinearLayout.setOnClickListener(view -> fetchTrendingSearches()); - - if (savedInstanceState != null) { - trendingSearches = savedInstanceState.getParcelableArrayList(TRENDING_SEARCHES_STATE); - } - if (trendingSearches != null) { - adapter.setTrendingSearches(trendingSearches); - } else { - fetchTrendingSearches(); - } - } - - private void fetchTrendingSearches() { - if (isRefreshing) { - return; - } - isRefreshing = true; - - errorLinearLayout.setVisibility(View.GONE); - Glide.with(this).clear(errorImageView); - swipeRefreshLayout.setRefreshing(true); - trendingSearches = null; - adapter.setTrendingSearches(null); - Handler handler = new Handler(); - Call trendingCall; - if (accountName.equals(Account.ANONYMOUS_ACCOUNT)) { - trendingCall = mRetrofit.create(RedditAPI.class).getTrendingSearches(); - } else { - trendingCall = mOauthRetrofit.create(RedditAPI.class).getTrendingSearchesOauth(APIUtils.getOAuthHeader(accessToken)); - } - trendingCall.enqueue(new Callback<>() { - @Override - public void onResponse(@NonNull Call call, @NonNull Response response) { - if (response.isSuccessful()) { - mExecutor.execute(() -> { - try { - JSONArray trendingSearchesArray = new JSONObject(response.body()).getJSONArray(JSONUtils.TRENDING_SEARCHES_KEY); - ArrayList trendingSearchList = new ArrayList<>(); - for (int i = 0; i < trendingSearchesArray.length(); i++) { - try { - JSONObject trendingSearchObject = trendingSearchesArray.getJSONObject(i); - String queryString = trendingSearchObject.getString(JSONUtils.QUERY_STRING_KEY); - String displayString = trendingSearchObject.getString(JSONUtils.DISPLAY_STRING_KEY); - JSONArray childrenWithOnlyOneChild = trendingSearchObject - .getJSONObject(JSONUtils.RESULTS_KEY) - .getJSONObject(JSONUtils.DATA_KEY) - .getJSONArray(JSONUtils.CHILDREN_KEY); - if (childrenWithOnlyOneChild.length() > 0) { - Post post = ParsePost.parseBasicData(childrenWithOnlyOneChild.getJSONObject(0) - .getJSONObject(JSONUtils.DATA_KEY)); - - trendingSearchList.add(new TrendingSearch(queryString, displayString, - post.getTitle(), post.getPreviews())); - } - } catch (JSONException e) { - e.printStackTrace(); - } - } - - handler.post(() -> { - trendingSearches = trendingSearchList; - swipeRefreshLayout.setRefreshing(false); - adapter.setTrendingSearches(trendingSearches); - isRefreshing = false; - }); - } catch (JSONException e) { - e.printStackTrace(); - handler.post(() -> { - swipeRefreshLayout.setRefreshing(false); - showErrorView(R.string.error_parse_trending_search); - isRefreshing = false; - }); - } - }); - } else { - handler.post(() -> { - swipeRefreshLayout.setRefreshing(false); - showErrorView(R.string.error_fetch_trending_search); - isRefreshing = false; - }); - } - } - - @Override - public void onFailure(@NonNull Call call, @NonNull Throwable t) { - handler.post(() -> { - swipeRefreshLayout.setRefreshing(false); - showErrorView(R.string.error_fetch_trending_search); - isRefreshing = false; - }); - } - }); - } - - private void showErrorView(int stringId) { - errorLinearLayout.setVisibility(View.VISIBLE); - mGlide.load(R.drawable.error_image).into(errorImageView); - errorTextView.setText(stringId); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.trending_activity, menu); - applyMenuItemTheme(menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(@NonNull MenuItem item) { - if (item.getItemId() == android.R.id.home) { - finish(); - return true; - } else if (item.getItemId() == R.id.action_refresh_trending_activity) { - fetchTrendingSearches(); - return true; - } - - return false; - } - - @Override - protected void onSaveInstanceState(@NonNull Bundle outState) { - super.onSaveInstanceState(outState); - outState.putParcelableArrayList(TRENDING_SEARCHES_STATE, trendingSearches); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - EventBus.getDefault().unregister(this); - } - - @Override - public SharedPreferences getDefaultSharedPreferences() { - return mSharedPreferences; - } - - @Override - public SharedPreferences getCurrentAccountSharedPreferences() { - return mCurrentAccountSharedPreferences; - } - - @Override - public CustomThemeWrapper getCustomThemeWrapper() { - return mCustomThemeWrapper; - } - - @Override - protected void applyCustomTheme() { - coordinatorLayout.setBackgroundColor(mCustomThemeWrapper.getBackgroundColor()); - applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(appBarLayout, collapsingToolbarLayout, toolbar); - swipeRefreshLayout.setProgressBackgroundColorSchemeColor(mCustomThemeWrapper.getCircularProgressBarBackground()); - swipeRefreshLayout.setColorSchemeColors(mCustomThemeWrapper.getColorAccent()); - errorTextView.setTextColor(mCustomThemeWrapper.getSecondaryTextColor()); - if (typeface != null) { - errorTextView.setTypeface(typeface); - } - } - - @Subscribe - public void onAccountSwitchEvent(SwitchAccountEvent event) { - finish(); - } -} \ No newline at end of file diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewImageOrGifActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewImageOrGifActivity.java index 8a144d10..895d0b77 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewImageOrGifActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewImageOrGifActivity.java @@ -18,10 +18,6 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.FrameLayout; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.ProgressBar; -import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; @@ -45,9 +41,7 @@ import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView; import com.github.piasy.biv.BigImageViewer; import com.github.piasy.biv.loader.ImageLoader; import com.github.piasy.biv.loader.glide.GlideImageLoader; -import com.github.piasy.biv.view.BigImageView; import com.github.piasy.biv.view.GlideImageViewFactory; -import com.google.android.material.bottomappbar.BottomAppBar; import java.io.File; import java.util.concurrent.Executor; @@ -55,8 +49,6 @@ import java.util.concurrent.Executor; import javax.inject.Inject; import javax.inject.Named; -import butterknife.BindView; -import butterknife.ButterKnife; import ml.docilealligator.infinityforreddit.BuildConfig; import ml.docilealligator.infinityforreddit.CustomFontReceiver; import ml.docilealligator.infinityforreddit.Infinity; @@ -69,6 +61,7 @@ import ml.docilealligator.infinityforreddit.bottomsheetfragments.SetAsWallpaperB import ml.docilealligator.infinityforreddit.customviews.slidr.Slidr; import ml.docilealligator.infinityforreddit.customviews.slidr.model.SlidrConfig; import ml.docilealligator.infinityforreddit.customviews.slidr.model.SlidrPosition; +import ml.docilealligator.infinityforreddit.databinding.ActivityViewImageOrGifBinding; import ml.docilealligator.infinityforreddit.font.ContentFontFamily; import ml.docilealligator.infinityforreddit.font.ContentFontStyle; import ml.docilealligator.infinityforreddit.font.FontFamily; @@ -88,22 +81,7 @@ public class ViewImageOrGifActivity extends AppCompatActivity implements SetAsWa public static final String EXTRA_POST_TITLE_KEY = "EPTK"; public static final String EXTRA_IS_NSFW = "EIN"; private static final int PERMISSION_REQUEST_WRITE_EXTERNAL_STORAGE = 0; - @BindView(R.id.progress_bar_view_image_or_gif_activity) - ProgressBar mProgressBar; - @BindView(R.id.image_view_view_image_or_gif_activity) - BigImageView mImageView; - @BindView(R.id.load_image_error_linear_layout_view_image_or_gif_activity) - LinearLayout mLoadErrorLinearLayout; - @BindView(R.id.bottom_navigation_view_image_or_gif_activity) - BottomAppBar bottomAppBar; - @BindView(R.id.title_text_view_view_image_or_gif_activity) - TextView titleTextView; - @BindView(R.id.download_image_view_view_image_or_gif_activity) - ImageView downloadImageView; - @BindView(R.id.share_image_view_view_image_or_gif_activity) - ImageView shareImageView; - @BindView(R.id.wallpaper_image_view_view_image_or_gif_activity) - ImageView wallpaperImageView; + @Inject @Named("default") SharedPreferences mSharedPreferences; @@ -119,6 +97,7 @@ public class ViewImageOrGifActivity extends AppCompatActivity implements SetAsWa private boolean isNsfw; private Typeface typeface; private Handler handler; + private ActivityViewImageOrGifBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { @@ -148,9 +127,8 @@ public class ViewImageOrGifActivity extends AppCompatActivity implements SetAsWa BigImageViewer.initialize(GlideImageLoader.with(this.getApplicationContext())); - setContentView(R.layout.activity_view_image_or_gif); - - ButterKnife.bind(this); + binding = ActivityViewImageOrGifBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE @@ -180,7 +158,7 @@ public class ViewImageOrGifActivity extends AppCompatActivity implements SetAsWa if (postTitle != null) { Spanned title = Html.fromHtml(String.format("%s", postTitle)); if (useBottomAppBar) { - titleTextView.setText(title); + binding.titleTextViewViewImageOrGifActivity.setText(title); } else { setTitle(Utils.getTabTextWithCustomFont(typeface, title)); } @@ -192,21 +170,21 @@ public class ViewImageOrGifActivity extends AppCompatActivity implements SetAsWa if (useBottomAppBar) { getSupportActionBar().hide(); - bottomAppBar.setVisibility(View.VISIBLE); - downloadImageView.setOnClickListener(view -> { + binding.bottomNavigationViewImageOrGifActivity.setVisibility(View.VISIBLE); + binding.downloadImageViewViewImageOrGifActivity.setOnClickListener(view -> { if (isDownloading) { return; } isDownloading = true; requestPermissionAndDownload(); }); - shareImageView.setOnClickListener(view -> { + binding.shareImageViewViewImageOrGifActivity.setOnClickListener(view -> { if (isGif) shareGif(); else shareImage(); }); - wallpaperImageView.setOnClickListener(view -> { + binding.wallpaperImageViewViewImageOrGifActivity.setOnClickListener(view -> { setWallpaper(); }); } else { @@ -216,13 +194,13 @@ public class ViewImageOrGifActivity extends AppCompatActivity implements SetAsWa actionBar.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.transparentActionBarAndExoPlayerControllerColor))); } - mLoadErrorLinearLayout.setOnClickListener(view -> { - mProgressBar.setVisibility(View.VISIBLE); - mLoadErrorLinearLayout.setVisibility(View.GONE); + binding.loadImageErrorLinearLayoutViewImageOrGifActivity.setOnClickListener(view -> { + binding.progressBarViewImageOrGifActivity.setVisibility(View.VISIBLE); + binding.loadImageErrorLinearLayoutViewImageOrGifActivity.setVisibility(View.GONE); loadImage(); }); - mImageView.setOnClickListener(view -> { + binding.imageViewViewImageOrGifActivity.setOnClickListener(view -> { if (isActionBarHidden) { getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE @@ -230,7 +208,7 @@ public class ViewImageOrGifActivity extends AppCompatActivity implements SetAsWa | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); isActionBarHidden = false; if (useBottomAppBar) { - bottomAppBar.setVisibility(View.VISIBLE); + binding.bottomNavigationViewImageOrGifActivity.setVisibility(View.VISIBLE); } } else { getWindow().getDecorView().setSystemUiVisibility( @@ -242,14 +220,14 @@ public class ViewImageOrGifActivity extends AppCompatActivity implements SetAsWa | View.SYSTEM_UI_FLAG_IMMERSIVE); isActionBarHidden = true; if (useBottomAppBar) { - bottomAppBar.setVisibility(View.GONE); + binding.bottomNavigationViewImageOrGifActivity.setVisibility(View.GONE); } } }); - mImageView.setImageViewFactory(new GlideImageViewFactory()); + binding.imageViewViewImageOrGifActivity.setImageViewFactory(new GlideImageViewFactory()); - mImageView.setImageLoaderCallback(new ImageLoader.Callback() { + binding.imageViewViewImageOrGifActivity.setImageLoaderCallback(new ImageLoader.Callback() { @Override public void onCacheHit(int imageType, File image) { @@ -277,9 +255,9 @@ public class ViewImageOrGifActivity extends AppCompatActivity implements SetAsWa @Override public void onSuccess(File image) { - mProgressBar.setVisibility(View.GONE); + binding.progressBarViewImageOrGifActivity.setVisibility(View.GONE); - final SubsamplingScaleImageView view = mImageView.getSSIV(); + final SubsamplingScaleImageView view = binding.imageViewViewImageOrGifActivity.getSSIV(); if (view != null) { view.setOnImageEventListener(new SubsamplingScaleImageView.DefaultOnImageEventListener() { @@ -297,8 +275,8 @@ public class ViewImageOrGifActivity extends AppCompatActivity implements SetAsWa @Override public void onFail(Exception error) { - mProgressBar.setVisibility(View.GONE); - mLoadErrorLinearLayout.setVisibility(View.VISIBLE); + binding.progressBarViewImageOrGifActivity.setVisibility(View.GONE); + binding.loadImageErrorLinearLayoutViewImageOrGifActivity.setVisibility(View.VISIBLE); } }); @@ -313,7 +291,7 @@ public class ViewImageOrGifActivity extends AppCompatActivity implements SetAsWa } private void loadImage() { - mImageView.showImage(Uri.parse(mImageUrl)); + binding.imageViewViewImageOrGifActivity.showImage(Uri.parse(mImageUrl)); } @Override diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewImgurMediaActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewImgurMediaActivity.java index bf2b0673..5981115e 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewImgurMediaActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewImgurMediaActivity.java @@ -11,8 +11,6 @@ import android.text.Html; import android.view.Menu; import android.view.MenuItem; import android.view.View; -import android.widget.LinearLayout; -import android.widget.ProgressBar; import android.widget.Toast; import androidx.annotation.NonNull; @@ -34,9 +32,6 @@ import javax.inject.Inject; import javax.inject.Named; import app.futured.hauler.DragDirection; -import app.futured.hauler.HaulerView; -import butterknife.BindView; -import butterknife.ButterKnife; import ml.docilealligator.infinityforreddit.CustomFontReceiver; import ml.docilealligator.infinityforreddit.ImgurMedia; import ml.docilealligator.infinityforreddit.Infinity; @@ -44,7 +39,7 @@ import ml.docilealligator.infinityforreddit.R; import ml.docilealligator.infinityforreddit.SetAsWallpaperCallback; import ml.docilealligator.infinityforreddit.WallpaperSetter; import ml.docilealligator.infinityforreddit.apis.ImgurAPI; -import ml.docilealligator.infinityforreddit.customviews.ViewPagerBugFixed; +import ml.docilealligator.infinityforreddit.databinding.ActivityViewImgurMediaBinding; import ml.docilealligator.infinityforreddit.font.ContentFontFamily; import ml.docilealligator.infinityforreddit.font.ContentFontStyle; import ml.docilealligator.infinityforreddit.font.FontFamily; @@ -71,14 +66,6 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa public static final int IMGUR_TYPE_IMAGE = 2; private static final String IMGUR_IMAGES_STATE = "IIS"; - @BindView(R.id.hauler_view_view_imgur_media_activity) - HaulerView haulerView; - @BindView(R.id.progress_bar_view_imgur_media_activity) - ProgressBar progressBar; - @BindView(R.id.view_pager_view_imgur_media_activity) - ViewPagerBugFixed viewPager; - @BindView(R.id.load_image_error_linear_layout_view_imgur_media_activity) - LinearLayout errorLinearLayout; public Typeface typeface; private SectionsPagerAdapter sectionsPagerAdapter; private ArrayList images; @@ -91,6 +78,7 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa SharedPreferences sharedPreferences; @Inject Executor executor; + private ActivityViewImgurMediaBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { @@ -118,9 +106,8 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa getTheme().applyStyle(ContentFontFamily.valueOf(sharedPreferences .getString(SharedPreferencesUtils.CONTENT_FONT_FAMILY_KEY, ContentFontFamily.Default.name())).getResId(), true); - setContentView(R.layout.activity_view_imgur_media); - - ButterKnife.bind(this); + binding = ActivityViewImgurMediaBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE @@ -150,23 +137,23 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa } if (sharedPreferences.getBoolean(SharedPreferencesUtils.SWIPE_VERTICALLY_TO_GO_BACK_FROM_MEDIA, true)) { - haulerView.setOnDragDismissedListener(dragDirection -> { + binding.getRoot().setOnDragDismissedListener(dragDirection -> { int slide = dragDirection == DragDirection.UP ? R.anim.slide_out_up : R.anim.slide_out_down; finish(); overridePendingTransition(0, slide); }); } else { - haulerView.setDragEnabled(false); + binding.getRoot().setDragEnabled(false); } if (images == null) { fetchImgurMedia(imgurId); } else { - progressBar.setVisibility(View.GONE); + binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE); setupViewPager(); } - errorLinearLayout.setOnClickListener(view -> fetchImgurMedia(imgurId)); + binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setOnClickListener(view -> fetchImgurMedia(imgurId)); } public boolean isUseBottomAppBar() { @@ -174,8 +161,8 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa } private void fetchImgurMedia(String imgurId) { - errorLinearLayout.setVisibility(View.GONE); - progressBar.setVisibility(View.VISIBLE); + binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.GONE); + binding.progressBarViewImgurMediaActivity.setVisibility(View.VISIBLE); switch (getIntent().getIntExtra(EXTRA_IMGUR_TYPE, IMGUR_TYPE_IMAGE)) { case IMGUR_TYPE_GALLERY: imgurRetrofit.create(ImgurAPI.class).getGalleryImages(APIUtils.IMGUR_CLIENT_ID, imgurId) @@ -187,27 +174,27 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa @Override public void success(ArrayList images) { ViewImgurMediaActivity.this.images = images; - progressBar.setVisibility(View.GONE); - errorLinearLayout.setVisibility(View.GONE); + binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE); + binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.GONE); setupViewPager(); } @Override public void failed() { - progressBar.setVisibility(View.GONE); - errorLinearLayout.setVisibility(View.VISIBLE); + binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE); + binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.VISIBLE); } }).execute(); } else { - progressBar.setVisibility(View.GONE); - errorLinearLayout.setVisibility(View.VISIBLE); + binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE); + binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.VISIBLE); } } @Override public void onFailure(@NonNull Call call, @NonNull Throwable t) { - progressBar.setVisibility(View.GONE); - errorLinearLayout.setVisibility(View.VISIBLE); + binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE); + binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.VISIBLE); } }); break; @@ -221,27 +208,27 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa @Override public void success(ArrayList images) { ViewImgurMediaActivity.this.images = images; - progressBar.setVisibility(View.GONE); - errorLinearLayout.setVisibility(View.GONE); + binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE); + binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.GONE); setupViewPager(); } @Override public void failed() { - progressBar.setVisibility(View.GONE); - errorLinearLayout.setVisibility(View.VISIBLE); + binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE); + binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.VISIBLE); } }).execute(); } else { - progressBar.setVisibility(View.GONE); - errorLinearLayout.setVisibility(View.VISIBLE); + binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE); + binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.VISIBLE); } } @Override public void onFailure(@NonNull Call call, @NonNull Throwable t) { - progressBar.setVisibility(View.GONE); - errorLinearLayout.setVisibility(View.VISIBLE); + binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE); + binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.VISIBLE); } }); break; @@ -256,27 +243,27 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa public void success(ImgurMedia image) { ViewImgurMediaActivity.this.images = new ArrayList<>(); ViewImgurMediaActivity.this.images.add(image); - progressBar.setVisibility(View.GONE); - errorLinearLayout.setVisibility(View.GONE); + binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE); + binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.GONE); setupViewPager(); } @Override public void failed() { - progressBar.setVisibility(View.GONE); - errorLinearLayout.setVisibility(View.VISIBLE); + binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE); + binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.VISIBLE); } }).execute(); } else { - progressBar.setVisibility(View.GONE); - errorLinearLayout.setVisibility(View.VISIBLE); + binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE); + binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.VISIBLE); } } @Override public void onFailure(@NonNull Call call, @NonNull Throwable t) { - progressBar.setVisibility(View.GONE); - errorLinearLayout.setVisibility(View.VISIBLE); + binding.progressBarViewImgurMediaActivity.setVisibility(View.GONE); + binding.loadImageErrorLinearLayoutViewImgurMediaActivity.setVisibility(View.VISIBLE); } }); break; @@ -286,7 +273,7 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa private void setupViewPager() { if (!useBottomAppBar) { setToolbarTitle(0); - viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { + binding.viewPagerViewImgurMediaActivity.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { setToolbarTitle(position); @@ -294,8 +281,8 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa }); } sectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); - viewPager.setAdapter(sectionsPagerAdapter); - viewPager.setOffscreenPageLimit(3); + binding.viewPagerViewImgurMediaActivity.setAdapter(sectionsPagerAdapter); + binding.viewPagerViewImgurMediaActivity.setOffscreenPageLimit(3); } private void setToolbarTitle(int position) { @@ -384,7 +371,7 @@ public class ViewImgurMediaActivity extends AppCompatActivity implements SetAsWa } public int getCurrentPagePosition() { - return viewPager.getCurrentItem(); + return binding.viewPagerViewImgurMediaActivity.getCurrentItem(); } @Override diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewMultiRedditDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewMultiRedditDetailActivity.java index a8c900be..82346029 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewMultiRedditDetailActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewMultiRedditDetailActivity.java @@ -18,13 +18,10 @@ import android.view.inputmethod.EditorInfo; import android.widget.Toast; import androidx.annotation.NonNull; -import androidx.appcompat.widget.Toolbar; import androidx.coordinatorlayout.widget.CoordinatorLayout; import androidx.fragment.app.Fragment; 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.textfield.TextInputEditText; @@ -37,8 +34,6 @@ import java.util.concurrent.Executor; import javax.inject.Inject; import javax.inject.Named; -import butterknife.BindView; -import butterknife.ButterKnife; import ml.docilealligator.infinityforreddit.ActivityToolbarInterface; import ml.docilealligator.infinityforreddit.FragmentCommunicator; import ml.docilealligator.infinityforreddit.Infinity; @@ -61,6 +56,7 @@ import ml.docilealligator.infinityforreddit.bottomsheetfragments.SortTypeBottomS import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper; import ml.docilealligator.infinityforreddit.customviews.NavigationWrapper; import ml.docilealligator.infinityforreddit.customviews.slidr.Slidr; +import ml.docilealligator.infinityforreddit.databinding.ActivityViewMultiRedditDetailBinding; import ml.docilealligator.infinityforreddit.events.GoBackToMainPageEvent; import ml.docilealligator.infinityforreddit.events.RefreshMultiRedditsEvent; import ml.docilealligator.infinityforreddit.events.SwitchAccountEvent; @@ -90,14 +86,6 @@ public class ViewMultiRedditDetailActivity extends BaseActivity implements SortT private static final String FRAGMENT_OUT_STATE_KEY = "FOSK"; - @BindView(R.id.coordinator_layout_view_multi_reddit_detail_activity) - CoordinatorLayout coordinatorLayout; - @BindView(R.id.appbar_layout_view_multi_reddit_detail_activity) - AppBarLayout appBarLayout; - @BindView(R.id.collapsing_toolbar_layout_view_multi_reddit_detail_activity) - CollapsingToolbarLayout collapsingToolbarLayout; - @BindView(R.id.toolbar_view_multi_reddit_detail_activity) - Toolbar toolbar; @Inject @Named("oauth") Retrofit mOauthRetrofit; @@ -136,6 +124,7 @@ public class ViewMultiRedditDetailActivity extends BaseActivity implements SortT private boolean lockBottomAppBar; private Call subredditAutocompleteCall; private NavigationWrapper navigationWrapper; + private ActivityViewMultiRedditDetailBinding binding; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { @@ -148,9 +137,9 @@ public class ViewMultiRedditDetailActivity extends BaseActivity implements SortT protected void onCreate(Bundle savedInstanceState) { ((Infinity) getApplication()).getAppComponent().inject(this); super.onCreate(savedInstanceState); - setContentView(R.layout.activity_view_multi_reddit_detail); - ButterKnife.bind(this); + binding = ActivityViewMultiRedditDetailBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); EventBus.getDefault().register(this); @@ -173,7 +162,7 @@ public class ViewMultiRedditDetailActivity extends BaseActivity implements SortT Window window = getWindow(); if (isChangeStatusBarIconColor()) { - addOnOffsetChangedListener(appBarLayout); + addOnOffsetChangedListener(binding.appbarLayoutViewMultiRedditDetailActivity); } if (isImmersiveInterface()) { @@ -182,7 +171,7 @@ public class ViewMultiRedditDetailActivity extends BaseActivity implements SortT } else { window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); } - adjustToolbar(toolbar); + adjustToolbar(binding.toolbarViewMultiRedditDetailActivity); int navBarHeight = getNavBarHeight(); if (navBarHeight > 0) { @@ -199,7 +188,7 @@ public class ViewMultiRedditDetailActivity extends BaseActivity implements SortT if (multiReddit == null) { multiPath = getIntent().getStringExtra(EXTRA_MULTIREDDIT_PATH); if (multiPath != null) { - toolbar.setTitle(multiPath.substring(multiPath.lastIndexOf("/", multiPath.length() - 2) + 1)); + binding.toolbarViewMultiRedditDetailActivity.setTitle(multiPath.substring(multiPath.lastIndexOf("/", multiPath.length() - 2) + 1)); } else { Toast.makeText(this, R.string.error_getting_multi_reddit_data, Toast.LENGTH_SHORT).show(); finish(); @@ -207,12 +196,12 @@ public class ViewMultiRedditDetailActivity extends BaseActivity implements SortT } } else { multiPath = multiReddit.getPath(); - toolbar.setTitle(multiReddit.getDisplayName()); + binding.toolbarViewMultiRedditDetailActivity.setTitle(multiReddit.getDisplayName()); } - setSupportActionBar(toolbar); + setSupportActionBar(binding.toolbarViewMultiRedditDetailActivity); getSupportActionBar().setDisplayHomeAsUpEnabled(true); - setToolbarGoToTop(toolbar); + setToolbarGoToTop(binding.toolbarViewMultiRedditDetailActivity); lockBottomAppBar = mSharedPreferences.getBoolean(SharedPreferencesUtils.LOCK_BOTTOM_APP_BAR, false); @@ -581,7 +570,7 @@ public class ViewMultiRedditDetailActivity extends BaseActivity implements SortT } private void goToSubreddit() { - View rootView = getLayoutInflater().inflate(R.layout.dialog_go_to_thing_edit_text, coordinatorLayout, false); + View rootView = getLayoutInflater().inflate(R.layout.dialog_go_to_thing_edit_text, binding.getRoot(), false); TextInputEditText thingEditText = rootView.findViewById(R.id.text_input_edit_text_go_to_thing_edit_text); RecyclerView recyclerView = rootView.findViewById(R.id.recycler_view_go_to_thing_edit_text); thingEditText.requestFocus(); @@ -669,7 +658,7 @@ public class ViewMultiRedditDetailActivity extends BaseActivity implements SortT } private void goToUser() { - View rootView = getLayoutInflater().inflate(R.layout.dialog_go_to_thing_edit_text, coordinatorLayout, false); + View rootView = getLayoutInflater().inflate(R.layout.dialog_go_to_thing_edit_text, binding.getRoot(), false); TextInputEditText thingEditText = rootView.findViewById(R.id.text_input_edit_text_go_to_thing_edit_text); thingEditText.requestFocus(); Utils.showKeyboard(this, new Handler(), thingEditText); @@ -833,8 +822,9 @@ public class ViewMultiRedditDetailActivity extends BaseActivity implements SortT @Override protected void applyCustomTheme() { - coordinatorLayout.setBackgroundColor(mCustomThemeWrapper.getBackgroundColor()); - applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(appBarLayout, collapsingToolbarLayout, toolbar); + binding.getRoot().setBackgroundColor(mCustomThemeWrapper.getBackgroundColor()); + applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(binding.appbarLayoutViewMultiRedditDetailActivity, + binding.collapsingToolbarLayoutViewMultiRedditDetailActivity, binding.toolbarViewMultiRedditDetailActivity); navigationWrapper.applyCustomTheme(mCustomThemeWrapper.getBottomAppBarIconColor(), mCustomThemeWrapper.getBottomAppBarBackgroundColor()); applyFABTheme(navigationWrapper.floatingActionButton); } @@ -850,7 +840,7 @@ public class ViewMultiRedditDetailActivity extends BaseActivity implements SortT public void displaySortType() { if (mFragment != null) { SortType sortType = ((PostFragment) mFragment).getSortType(); - Utils.displaySortTypeInToolbar(sortType, toolbar); + Utils.displaySortTypeInToolbar(sortType, binding.toolbarViewMultiRedditDetailActivity); } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java index 59cab228..6676cca8 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java @@ -15,12 +15,10 @@ import android.view.MenuItem; import android.view.View; import android.view.Window; import android.view.WindowManager; -import android.widget.ImageView; 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.view.inputmethod.EditorInfoCompat; import androidx.fragment.app.Fragment; @@ -32,13 +30,7 @@ import androidx.viewpager2.widget.ViewPager2; import com.evernote.android.state.State; import com.github.piasy.biv.BigImageViewer; import com.github.piasy.biv.loader.glide.GlideImageLoader; -import com.google.android.material.appbar.AppBarLayout; -import com.google.android.material.appbar.CollapsingToolbarLayout; -import com.google.android.material.card.MaterialCardView; -import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.google.android.material.snackbar.Snackbar; -import com.google.android.material.textfield.TextInputEditText; -import com.google.android.material.textfield.TextInputLayout; import com.livefront.bridge.Bridge; import org.greenrobot.eventbus.EventBus; @@ -55,8 +47,6 @@ import java.util.concurrent.Executor; import javax.inject.Inject; import javax.inject.Named; -import butterknife.BindView; -import butterknife.ButterKnife; import ml.docilealligator.infinityforreddit.ActivityToolbarInterface; import ml.docilealligator.infinityforreddit.Infinity; import ml.docilealligator.infinityforreddit.LoadingMorePostsStatus; @@ -71,6 +61,7 @@ import ml.docilealligator.infinityforreddit.asynctasks.SwitchAccount; import ml.docilealligator.infinityforreddit.comment.Comment; import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper; import ml.docilealligator.infinityforreddit.customviews.slidr.Slidr; +import ml.docilealligator.infinityforreddit.databinding.ActivityViewPostDetailBinding; import ml.docilealligator.infinityforreddit.events.NeedForPostListFromPostFragmentEvent; import ml.docilealligator.infinityforreddit.events.ProvidePostListToViewPostDetailActivityEvent; import ml.docilealligator.infinityforreddit.events.SwitchAccountEvent; @@ -102,30 +93,6 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele public static final int EDIT_COMMENT_REQUEST_CODE = 3; @State String mNewAccountName; - @BindView(R.id.coordinator_layout_view_post_detail) - CoordinatorLayout mCoordinatorLayout; - @BindView(R.id.appbar_layout_view_post_detail_activity) - AppBarLayout mAppBarLayout; - @BindView(R.id.collapsing_toolbar_layout_view_post_detail_activity) - CollapsingToolbarLayout mCollapsingToolbarLayout; - @BindView(R.id.toolbar_view_post_detail_activity) - Toolbar mToolbar; - @BindView(R.id.view_pager_2_view_post_detail_activity) - ViewPager2 viewPager2; - @BindView(R.id.fab_view_post_detail_activity) - FloatingActionButton fab; - @BindView(R.id.search_panel_material_card_view_view_post_detail_activity) - MaterialCardView searchPanelMaterialCardView; - @BindView(R.id.search_text_input_layout_view_post_detail_activity) - TextInputLayout searchTextInputLayout; - @BindView(R.id.search_text_input_edit_text_view_post_detail_activity) - TextInputEditText searchTextInputEditText; - @BindView(R.id.previous_result_image_view_view_post_detail_activity) - ImageView previousResultImageView; - @BindView(R.id.next_result_image_view_view_post_detail_activity) - ImageView nextResultImageView; - @BindView(R.id.close_search_panel_image_view_view_post_detail_activity) - ImageView closeSearchPanelImageView; @Inject @Named("no_oauth") Retrofit mRetrofit; @@ -183,6 +150,7 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele private int orientation; private boolean mVolumeKeysNavigateComments; private boolean isNsfwSubreddit; + private ActivityViewPostDetailBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { @@ -192,12 +160,11 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele BigImageViewer.initialize(GlideImageLoader.with(this.getApplicationContext())); - setContentView(R.layout.activity_view_post_detail); + binding = ActivityViewPostDetailBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); Bridge.restoreInstanceState(this, savedInstanceState); - ButterKnife.bind(this); - EventBus.getDefault().register(this); applyCustomTheme(); @@ -206,7 +173,7 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele Window window = getWindow(); if (isChangeStatusBarIconColor()) { - addOnOffsetChangedListener(mAppBarLayout); + addOnOffsetChangedListener(binding.appbarLayoutViewPostDetailActivity); } if (isImmersiveInterface()) { @@ -215,18 +182,18 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele } else { window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); } - adjustToolbar(mToolbar); + adjustToolbar(binding.toolbarViewPostDetailActivity); int navBarHeight = getNavBarHeight(); if (navBarHeight > 0) { - CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) fab.getLayoutParams(); + CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) binding.fabViewPostDetailActivity.getLayoutParams(); params.bottomMargin += navBarHeight; - fab.setLayoutParams(params); + binding.fabViewPostDetailActivity.setLayoutParams(params); - searchPanelMaterialCardView.setContentPadding(searchPanelMaterialCardView.getPaddingStart(), - searchPanelMaterialCardView.getPaddingTop(), - searchPanelMaterialCardView.getPaddingEnd(), - searchPanelMaterialCardView.getPaddingBottom() + navBarHeight); + binding.searchPanelMaterialCardViewViewPostDetailActivity.setContentPadding(binding.searchPanelMaterialCardViewViewPostDetailActivity.getPaddingStart(), + binding.searchPanelMaterialCardViewViewPostDetailActivity.getPaddingTop(), + binding.searchPanelMaterialCardViewViewPostDetailActivity.getPaddingEnd(), + binding.searchPanelMaterialCardViewViewPostDetailActivity.getPaddingBottom() + navBarHeight); } } } @@ -236,9 +203,9 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele if (mSharedPreferences.getBoolean(SharedPreferencesUtils.SWIPE_RIGHT_TO_GO_BACK, true)) { mSliderPanel = Slidr.attach(this); } - viewPager2.setUserInputEnabled(false); + binding.viewPager2ViewPostDetailActivity.setUserInputEnabled(false); } else { - super.mViewPager2 = viewPager2; + mViewPager2 = binding.viewPager2ViewPostDetailActivity; } postFragmentId = getIntent().getLongExtra(EXTRA_POST_FRAGMENT_ID, -1); if (swipeBetweenPosts && posts == null && postFragmentId > 0) { @@ -256,9 +223,9 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele orientation = getResources().getConfiguration().orientation; - mToolbar.setTitle(""); - setSupportActionBar(mToolbar); - setToolbarGoToTop(mToolbar); + binding.toolbarViewPostDetailActivity.setTitle(""); + setSupportActionBar(binding.toolbarViewPostDetailActivity); + setToolbarGoToTop(binding.toolbarViewPostDetailActivity); if (savedInstanceState == null) { mNewAccountName = getIntent().getStringExtra(EXTRA_NEW_ACCOUNT_NAME); @@ -266,7 +233,7 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele mVolumeKeysNavigateComments = mSharedPreferences.getBoolean(SharedPreferencesUtils.VOLUME_KEYS_NAVIGATE_COMMENTS, false); - fab.setOnClickListener(view -> { + binding.fabViewPostDetailActivity.setOnClickListener(view -> { if (sectionsPagerAdapter != null) { ViewPostDetailFragment fragment = sectionsPagerAdapter.getCurrentFragment(); if (fragment != null) { @@ -275,7 +242,7 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele } }); - fab.setOnLongClickListener(view -> { + binding.fabViewPostDetailActivity.setOnLongClickListener(view -> { if (sectionsPagerAdapter != null) { ViewPostDetailFragment fragment = sectionsPagerAdapter.getCurrentFragment(); if (fragment != null) { @@ -287,7 +254,7 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele }); if (accountName.equals(Account.ANONYMOUS_ACCOUNT) && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - searchTextInputEditText.setImeOptions(searchTextInputEditText.getImeOptions() | EditorInfoCompat.IME_FLAG_NO_PERSONALIZED_LEARNING); + binding.searchTextInputEditTextViewPostDetailActivity.setImeOptions(binding.searchTextInputEditTextViewPostDetailActivity.getImeOptions() | EditorInfoCompat.IME_FLAG_NO_PERSONALIZED_LEARNING); } if (loadingMorePostsStatus == LoadingMorePostsStatus.LOADING) { @@ -299,21 +266,21 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele } public void setTitle(String title) { - if (mToolbar != null) { - mToolbar.setTitle(title); + if (binding.toolbarViewPostDetailActivity != null) { + binding.toolbarViewPostDetailActivity.setTitle(title); } } public void showFab() { - fab.show(); + binding.fabViewPostDetailActivity.show(); } public void hideFab() { - fab.hide(); + binding.fabViewPostDetailActivity.hide(); } public void showSnackBar(int resId) { - Snackbar.make(mCoordinatorLayout, resId, Snackbar.LENGTH_SHORT).show(); + Snackbar.make(binding.getRoot(), resId, Snackbar.LENGTH_SHORT).show(); } @Override @@ -333,20 +300,21 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele @Override protected void applyCustomTheme() { - mCoordinatorLayout.setBackgroundColor(mCustomThemeWrapper.getBackgroundColor()); - applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(mAppBarLayout, mCollapsingToolbarLayout, mToolbar); - applyFABTheme(fab); - searchPanelMaterialCardView.setBackgroundTintList(ColorStateList.valueOf(mCustomThemeWrapper.getColorPrimary())); + binding.getRoot().setBackgroundColor(mCustomThemeWrapper.getBackgroundColor()); + applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(binding.appbarLayoutViewPostDetailActivity, + binding.collapsingToolbarLayoutViewPostDetailActivity, binding.toolbarViewPostDetailActivity); + applyFABTheme(binding.fabViewPostDetailActivity); + binding.searchPanelMaterialCardViewViewPostDetailActivity.setBackgroundTintList(ColorStateList.valueOf(mCustomThemeWrapper.getColorPrimary())); int searchPanelTextAndIconColor = mCustomThemeWrapper.getToolbarPrimaryTextAndIconColor(); - searchTextInputLayout.setBoxStrokeColor(searchPanelTextAndIconColor); - searchTextInputLayout.setDefaultHintTextColor(ColorStateList.valueOf(searchPanelTextAndIconColor)); - searchTextInputEditText.setTextColor(searchPanelTextAndIconColor); - previousResultImageView.setColorFilter(searchPanelTextAndIconColor, android.graphics.PorterDuff.Mode.SRC_IN); - nextResultImageView.setColorFilter(searchPanelTextAndIconColor, android.graphics.PorterDuff.Mode.SRC_IN); - closeSearchPanelImageView.setColorFilter(searchPanelTextAndIconColor, android.graphics.PorterDuff.Mode.SRC_IN); + binding.searchTextInputLayoutViewPostDetailActivity.setBoxStrokeColor(searchPanelTextAndIconColor); + binding.searchTextInputLayoutViewPostDetailActivity.setDefaultHintTextColor(ColorStateList.valueOf(searchPanelTextAndIconColor)); + binding.searchTextInputEditTextViewPostDetailActivity.setTextColor(searchPanelTextAndIconColor); + binding.previousResultImageViewViewPostDetailActivity.setColorFilter(searchPanelTextAndIconColor, android.graphics.PorterDuff.Mode.SRC_IN); + binding.nextResultImageViewViewPostDetailActivity.setColorFilter(searchPanelTextAndIconColor, android.graphics.PorterDuff.Mode.SRC_IN); + binding.closeSearchPanelImageViewViewPostDetailActivity.setColorFilter(searchPanelTextAndIconColor, android.graphics.PorterDuff.Mode.SRC_IN); if (typeface != null) { - searchTextInputLayout.setTypeface(typeface); - searchTextInputEditText.setTypeface(typeface); + binding.searchTextInputLayoutViewPostDetailActivity.setTypeface(typeface); + binding.searchTextInputEditTextViewPostDetailActivity.setTypeface(typeface); } } @@ -372,11 +340,11 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele private void bindView(Bundle savedInstanceState) { sectionsPagerAdapter = new SectionsPagerAdapter(this); - viewPager2.setAdapter(sectionsPagerAdapter); + binding.viewPager2ViewPostDetailActivity.setAdapter(sectionsPagerAdapter); if (savedInstanceState == null) { - viewPager2.setCurrentItem(getIntent().getIntExtra(EXTRA_POST_LIST_POSITION, 0), false); + binding.viewPager2ViewPostDetailActivity.setCurrentItem(getIntent().getIntExtra(EXTRA_POST_LIST_POSITION, 0), false); } - viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { + binding.viewPager2ViewPostDetailActivity.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { @Override public void onPageSelected(int position) { if (posts != null && position > posts.size() - 5) { @@ -385,29 +353,29 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele } }); - searchPanelMaterialCardView.setOnClickListener(null); + binding.searchPanelMaterialCardViewViewPostDetailActivity.setOnClickListener(null); - nextResultImageView.setOnClickListener(view -> { + binding.nextResultImageViewViewPostDetailActivity.setOnClickListener(view -> { ViewPostDetailFragment fragment = sectionsPagerAdapter.getCurrentFragment(); if (fragment != null) { searchComment(fragment, true); } }); - previousResultImageView.setOnClickListener(view -> { + binding.previousResultImageViewViewPostDetailActivity.setOnClickListener(view -> { ViewPostDetailFragment fragment = sectionsPagerAdapter.getCurrentFragment(); if (fragment != null) { searchComment(fragment, false); } }); - closeSearchPanelImageView.setOnClickListener(view -> { + binding.closeSearchPanelImageViewViewPostDetailActivity.setOnClickListener(view -> { ViewPostDetailFragment fragment = sectionsPagerAdapter.getCurrentFragment(); if (fragment != null) { fragment.resetSearchCommentIndex(); } - searchPanelMaterialCardView.setVisibility(View.GONE); + binding.searchPanelMaterialCardViewViewPostDetailActivity.setVisibility(View.GONE); }); } @@ -480,19 +448,19 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele } public boolean toggleSearchPanelVisibility() { - if (searchPanelMaterialCardView.getVisibility() == View.GONE) { - searchPanelMaterialCardView.setVisibility(View.VISIBLE); + if (binding.searchPanelMaterialCardViewViewPostDetailActivity.getVisibility() == View.GONE) { + binding.searchPanelMaterialCardViewViewPostDetailActivity.setVisibility(View.VISIBLE); return false; } else { - searchPanelMaterialCardView.setVisibility(View.GONE); - searchTextInputEditText.setText(""); + binding.searchPanelMaterialCardViewViewPostDetailActivity.setVisibility(View.GONE); + binding.searchTextInputEditTextViewPostDetailActivity.setText(""); return true; } } public void searchComment(ViewPostDetailFragment fragment, boolean searchNextComment) { - if (!searchTextInputEditText.getText().toString().isEmpty()) { - fragment.searchComment(searchTextInputEditText.getText().toString(), searchNextComment); + if (!binding.searchTextInputEditTextViewPostDetailActivity.getText().toString().isEmpty()) { + fragment.searchComment(binding.searchTextInputEditTextViewPostDetailActivity.getText().toString(), searchNextComment); } } @@ -598,7 +566,7 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele posts = new ArrayList<>(postLinkedHashSet); handler.post(() -> { if (changePage) { - viewPager2.setCurrentItem(currentPostsSize - 1, false); + binding.viewPager2ViewPostDetailActivity.setCurrentItem(currentPostsSize - 1, false); } sectionsPagerAdapter.notifyItemRangeInserted(currentPostsSize, postLinkedHashSet.size() - currentPostsSize); loadingMorePostsStatus = LoadingMorePostsStatus.NOT_LOADING; @@ -680,7 +648,7 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele posts = new ArrayList<>(postLinkedHashSet); handler.post(() -> { if (changePage) { - viewPager2.setCurrentItem(currentPostsSize - 1, false); + binding.viewPager2ViewPostDetailActivity.setCurrentItem(currentPostsSize - 1, false); } sectionsPagerAdapter.notifyItemRangeInserted(currentPostsSize, postLinkedHashSet.size() - currentPostsSize); loadingMorePostsStatus = LoadingMorePostsStatus.NOT_LOADING; @@ -832,7 +800,7 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele ViewPostDetailFragment fragment = sectionsPagerAdapter.getCurrentFragment(); if (fragment != null) { fragment.changeSortType(sortType); - mToolbar.setTitle(sortType.getType().fullName); + binding.toolbarViewPostDetailActivity.setTitle(sortType.getType().fullName); } } @@ -895,10 +863,10 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele @Nullable ViewPostDetailFragment getCurrentFragment() { - if (viewPager2 == null || fragmentManager == null) { + if (fragmentManager == null) { return null; } - Fragment fragment = fragmentManager.findFragmentByTag("f" + viewPager2.getCurrentItem()); + Fragment fragment = fragmentManager.findFragmentByTag("f" + binding.viewPager2ViewPostDetailActivity.getCurrentItem()); if (fragment instanceof ViewPostDetailFragment) { return (ViewPostDetailFragment) fragment; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPrivateMessagesActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPrivateMessagesActivity.java index 4bacdc30..98bda50b 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPrivateMessagesActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPrivateMessagesActivity.java @@ -6,20 +6,12 @@ import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.view.MenuItem; -import android.view.View; -import android.widget.EditText; -import android.widget.ImageView; -import android.widget.LinearLayout; import androidx.annotation.NonNull; -import androidx.appcompat.widget.Toolbar; -import androidx.coordinatorlayout.widget.CoordinatorLayout; -import androidx.recyclerview.widget.RecyclerView; import androidx.transition.AutoTransition; import androidx.transition.TransitionManager; import com.evernote.android.state.State; -import com.google.android.material.appbar.AppBarLayout; import com.google.android.material.snackbar.Snackbar; import com.livefront.bridge.Bridge; @@ -32,8 +24,6 @@ import java.util.concurrent.Executor; import javax.inject.Inject; import javax.inject.Named; -import butterknife.BindView; -import butterknife.ButterKnife; import ml.docilealligator.infinityforreddit.ActivityToolbarInterface; import ml.docilealligator.infinityforreddit.Infinity; import ml.docilealligator.infinityforreddit.R; @@ -42,6 +32,7 @@ import ml.docilealligator.infinityforreddit.adapters.PrivateMessagesDetailRecycl import ml.docilealligator.infinityforreddit.asynctasks.LoadUserData; import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper; import ml.docilealligator.infinityforreddit.customviews.LinearLayoutManagerBugFixed; +import ml.docilealligator.infinityforreddit.databinding.ActivityViewPrivateMessagesBinding; import ml.docilealligator.infinityforreddit.events.PassPrivateMessageEvent; import ml.docilealligator.infinityforreddit.events.PassPrivateMessageIndexEvent; import ml.docilealligator.infinityforreddit.events.RepliedToPrivateMessageEvent; @@ -55,22 +46,7 @@ public class ViewPrivateMessagesActivity extends BaseActivity implements Activit public static final String EXTRA_PRIVATE_MESSAGE_INDEX = "EPM"; public static final String EXTRA_MESSAGE_POSITION = "EMP"; private static final String USER_AVATAR_STATE = "UAS"; - @BindView(R.id.coordinator_layout_view_private_messages_activity) - CoordinatorLayout mCoordinatorLayout; - @BindView(R.id.appbar_layout_view_private_messages_activity) - AppBarLayout mAppBarLayout; - @BindView(R.id.toolbar_view_private_messages_activity) - Toolbar mToolbar; - @BindView(R.id.recycler_view_view_private_messages) - RecyclerView mRecyclerView; - @BindView(R.id.edit_text_divider_view_private_messages_activity) - View mDivider; - @BindView(R.id.edit_text_view_private_messages_activity) - EditText mEditText; - @BindView(R.id.send_image_view_view_private_messages_activity) - ImageView mSendImageView; - @BindView(R.id.edit_text_wrapper_linear_layout_view_private_messages_activity) - LinearLayout mEditTextLinearLayout; + @Inject @Named("no_oauth") Retrofit mRetrofit; @@ -101,6 +77,7 @@ public class ViewPrivateMessagesActivity extends BaseActivity implements Activit private boolean isSendingMessage = false; private int mSecondaryTextColor; private int mSendMessageIconColor; + private ActivityViewPrivateMessagesBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { @@ -110,22 +87,21 @@ public class ViewPrivateMessagesActivity extends BaseActivity implements Activit super.onCreate(savedInstanceState); - setContentView(R.layout.activity_view_private_messages); + binding = ActivityViewPrivateMessagesBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); Bridge.restoreInstanceState(this, savedInstanceState); - ButterKnife.bind(this); - EventBus.getDefault().register(this); applyCustomTheme(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && isChangeStatusBarIconColor()) { - addOnOffsetChangedListener(mAppBarLayout); + addOnOffsetChangedListener(binding.appbarLayoutViewPrivateMessagesActivity); } - setSupportActionBar(mToolbar); - setToolbarGoToTop(mToolbar); + setSupportActionBar(binding.toolbarViewPrivateMessagesActivity); + setToolbarGoToTop(binding.toolbarViewPrivateMessagesActivity); mProvideUserAvatarCallbacks = new ArrayList<>(); @@ -145,7 +121,7 @@ public class ViewPrivateMessagesActivity extends BaseActivity implements Activit if (privateMessage != null) { if (privateMessage.getAuthor().equals(accountName)) { setTitle(privateMessage.getDestination()); - mToolbar.setOnClickListener(view -> { + binding.toolbarViewPrivateMessagesActivity.setOnClickListener(view -> { if (privateMessage.isDestinationDeleted()) { return; } @@ -155,7 +131,7 @@ public class ViewPrivateMessagesActivity extends BaseActivity implements Activit }); } else { setTitle(privateMessage.getAuthor()); - mToolbar.setOnClickListener(view -> { + binding.toolbarViewPrivateMessagesActivity.setOnClickListener(view -> { if (privateMessage.isAuthorDeleted()) { return; } @@ -169,12 +145,12 @@ public class ViewPrivateMessagesActivity extends BaseActivity implements Activit getResources().getConfiguration().locale, privateMessage, accountName, mCustomThemeWrapper); mLinearLayoutManager = new LinearLayoutManagerBugFixed(this); mLinearLayoutManager.setStackFromEnd(true); - mRecyclerView.setLayoutManager(mLinearLayoutManager); - mRecyclerView.setAdapter(mAdapter); + binding.recyclerViewViewPrivateMessages.setLayoutManager(mLinearLayoutManager); + binding.recyclerViewViewPrivateMessages.setAdapter(mAdapter); goToBottom(); - mSendImageView.setOnClickListener(view -> { + binding.sendImageViewViewPrivateMessagesActivity.setOnClickListener(view -> { if (!isSendingMessage) { - if (!mEditText.getText().toString().equals("")) { + if (!binding.editTextViewPrivateMessagesActivity.getText().toString().equals("")) { //Send Message if (privateMessage != null) { ArrayList replies = privateMessage.getReplies(); @@ -182,8 +158,8 @@ public class ViewPrivateMessagesActivity extends BaseActivity implements Activit replyTo = privateMessage; } isSendingMessage = true; - mSendImageView.setColorFilter(mSecondaryTextColor, android.graphics.PorterDuff.Mode.SRC_IN); - ReplyMessage.replyMessage(mEditText.getText().toString(), replyTo.getFullname(), + binding.sendImageViewViewPrivateMessagesActivity.setColorFilter(mSecondaryTextColor, android.graphics.PorterDuff.Mode.SRC_IN); + ReplyMessage.replyMessage(binding.editTextViewPrivateMessagesActivity.getText().toString(), replyTo.getFullname(), getResources().getConfiguration().locale, mOauthRetrofit, accessToken, new ReplyMessage.ReplyMessageListener() { @Override @@ -192,8 +168,8 @@ public class ViewPrivateMessagesActivity extends BaseActivity implements Activit mAdapter.addReply(message); } goToBottom(); - mEditText.setText(""); - mSendImageView.setColorFilter(mSendMessageIconColor, android.graphics.PorterDuff.Mode.SRC_IN); + binding.editTextViewPrivateMessagesActivity.setText(""); + binding.sendImageViewViewPrivateMessagesActivity.setColorFilter(mSendMessageIconColor, android.graphics.PorterDuff.Mode.SRC_IN); isSendingMessage = false; EventBus.getDefault().post(new RepliedToPrivateMessageEvent(message, getIntent().getIntExtra(EXTRA_MESSAGE_POSITION, -1))); } @@ -201,11 +177,11 @@ public class ViewPrivateMessagesActivity extends BaseActivity implements Activit @Override public void replyMessageFailed(String errorMessage) { if (errorMessage != null && !errorMessage.equals("")) { - Snackbar.make(mCoordinatorLayout, errorMessage, Snackbar.LENGTH_LONG).show(); + Snackbar.make(binding.getRoot(), errorMessage, Snackbar.LENGTH_LONG).show(); } else { - Snackbar.make(mCoordinatorLayout, R.string.reply_message_failed, Snackbar.LENGTH_LONG).show(); + Snackbar.make(binding.getRoot(), R.string.reply_message_failed, Snackbar.LENGTH_LONG).show(); } - mSendImageView.setColorFilter(mSendMessageIconColor, android.graphics.PorterDuff.Mode.SRC_IN); + binding.sendImageViewViewPrivateMessagesActivity.setColorFilter(mSendMessageIconColor, android.graphics.PorterDuff.Mode.SRC_IN); isSendingMessage = false; } }); @@ -257,7 +233,7 @@ public class ViewPrivateMessagesActivity extends BaseActivity implements Activit } public void delayTransition() { - TransitionManager.beginDelayedTransition(mRecyclerView, new AutoTransition()); + TransitionManager.beginDelayedTransition(binding.recyclerViewViewPrivateMessages, new AutoTransition()); } private void goToBottom() { @@ -307,17 +283,18 @@ public class ViewPrivateMessagesActivity extends BaseActivity implements Activit @Override protected void applyCustomTheme() { - mCoordinatorLayout.setBackgroundColor(mCustomThemeWrapper.getBackgroundColor()); - applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(mAppBarLayout, null, mToolbar); - mDivider.setBackgroundColor(mCustomThemeWrapper.getDividerColor()); - mEditText.setTextColor(mCustomThemeWrapper.getPrimaryTextColor()); + binding.getRoot().setBackgroundColor(mCustomThemeWrapper.getBackgroundColor()); + applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(binding.appbarLayoutViewPrivateMessagesActivity, + null, binding.toolbarViewPrivateMessagesActivity); + binding.editTextDividerViewPrivateMessagesActivity.setBackgroundColor(mCustomThemeWrapper.getDividerColor()); + binding.editTextViewPrivateMessagesActivity.setTextColor(mCustomThemeWrapper.getPrimaryTextColor()); mSecondaryTextColor = mCustomThemeWrapper.getSecondaryTextColor(); - mEditText.setHintTextColor(mSecondaryTextColor); - mEditTextLinearLayout.setBackgroundColor(mCustomThemeWrapper.getBackgroundColor()); + binding.editTextViewPrivateMessagesActivity.setHintTextColor(mSecondaryTextColor); + binding.editTextWrapperLinearLayoutViewPrivateMessagesActivity.setBackgroundColor(mCustomThemeWrapper.getBackgroundColor()); mSendMessageIconColor = mCustomThemeWrapper.getSendMessageIconColor(); - mSendImageView.setColorFilter(mSendMessageIconColor, android.graphics.PorterDuff.Mode.SRC_IN); + binding.sendImageViewViewPrivateMessagesActivity.setColorFilter(mSendMessageIconColor, android.graphics.PorterDuff.Mode.SRC_IN); if (typeface != null) { - mEditText.setTypeface(typeface); + binding.editTextViewPrivateMessagesActivity.setTypeface(typeface); } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewRedditGalleryActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewRedditGalleryActivity.java index 1c4b8c04..14005615 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewRedditGalleryActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewRedditGalleryActivity.java @@ -34,15 +34,12 @@ import javax.inject.Inject; import javax.inject.Named; import app.futured.hauler.DragDirection; -import app.futured.hauler.HaulerView; -import butterknife.BindView; -import butterknife.ButterKnife; import ml.docilealligator.infinityforreddit.CustomFontReceiver; import ml.docilealligator.infinityforreddit.Infinity; import ml.docilealligator.infinityforreddit.R; import ml.docilealligator.infinityforreddit.SetAsWallpaperCallback; import ml.docilealligator.infinityforreddit.WallpaperSetter; -import ml.docilealligator.infinityforreddit.customviews.ViewPagerBugFixed; +import ml.docilealligator.infinityforreddit.databinding.ActivityViewRedditGalleryBinding; import ml.docilealligator.infinityforreddit.font.ContentFontFamily; import ml.docilealligator.infinityforreddit.font.ContentFontStyle; import ml.docilealligator.infinityforreddit.font.FontFamily; @@ -62,10 +59,6 @@ public class ViewRedditGalleryActivity extends AppCompatActivity implements SetA public static final String EXTRA_IS_NSFW = "EIN"; public static final String EXTRA_GALLERY_ITEM_INDEX = "EGII"; - @BindView(R.id.hauler_view_view_reddit_gallery_activity) - HaulerView haulerView; - @BindView(R.id.view_pager_view_reddit_gallery_activity) - ViewPagerBugFixed viewPager; @Inject @Named("default") SharedPreferences sharedPreferences; @@ -78,6 +71,7 @@ public class ViewRedditGalleryActivity extends AppCompatActivity implements SetA private boolean isNsfw; private boolean useBottomAppBar; private boolean isActionBarHidden = false; + private ActivityViewRedditGalleryBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { @@ -135,9 +129,8 @@ public class ViewRedditGalleryActivity extends AppCompatActivity implements SetA getTheme().applyStyle(ContentFontFamily.valueOf(sharedPreferences .getString(SharedPreferencesUtils.CONTENT_FONT_FAMILY_KEY, ContentFontFamily.Default.name())).getResId(), true); - setContentView(R.layout.activity_view_reddit_gallery); - - ButterKnife.bind(this); + binding = ActivityViewRedditGalleryBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); useBottomAppBar = sharedPreferences.getBoolean(SharedPreferencesUtils.USE_BOTTOM_TOOLBAR_IN_MEDIA_VIEWER, false); @@ -160,13 +153,13 @@ public class ViewRedditGalleryActivity extends AppCompatActivity implements SetA isNsfw = getIntent().getBooleanExtra(EXTRA_IS_NSFW, false); if (sharedPreferences.getBoolean(SharedPreferencesUtils.SWIPE_VERTICALLY_TO_GO_BACK_FROM_MEDIA, true)) { - haulerView.setOnDragDismissedListener(dragDirection -> { + binding.getRoot().setOnDragDismissedListener(dragDirection -> { int slide = dragDirection == DragDirection.UP ? R.anim.slide_out_up : R.anim.slide_out_down; finish(); overridePendingTransition(0, slide); }); } else { - haulerView.setDragEnabled(false); + binding.getRoot().setDragEnabled(false); } setupViewPager(savedInstanceState); @@ -179,7 +172,7 @@ public class ViewRedditGalleryActivity extends AppCompatActivity implements SetA private void setupViewPager(Bundle savedInstanceState) { if (!useBottomAppBar) { setToolbarTitle(0); - viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { + binding.viewPagerViewRedditGalleryActivity.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { setToolbarTitle(position); @@ -187,10 +180,10 @@ public class ViewRedditGalleryActivity extends AppCompatActivity implements SetA }); } sectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); - viewPager.setAdapter(sectionsPagerAdapter); - viewPager.setOffscreenPageLimit(3); + binding.viewPagerViewRedditGalleryActivity.setAdapter(sectionsPagerAdapter); + binding.viewPagerViewRedditGalleryActivity.setOffscreenPageLimit(3); if (savedInstanceState == null) { - viewPager.setCurrentItem(getIntent().getIntExtra(EXTRA_GALLERY_ITEM_INDEX, 0), false); + binding.viewPagerViewRedditGalleryActivity.setCurrentItem(getIntent().getIntExtra(EXTRA_GALLERY_ITEM_INDEX, 0), false); } } @@ -276,7 +269,7 @@ public class ViewRedditGalleryActivity extends AppCompatActivity implements SetA } public int getCurrentPagePosition() { - return viewPager.getCurrentItem(); + return binding.viewPagerViewRedditGalleryActivity.getCurrentItem(); } @Override diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewSubredditDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewSubredditDetailActivity.java index 2dbb5440..ccabbcfe 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewSubredditDetailActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewSubredditDetailActivity.java @@ -98,6 +98,7 @@ import ml.docilealligator.infinityforreddit.bottomsheetfragments.UrlMenuBottomSh import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper; import ml.docilealligator.infinityforreddit.customviews.NavigationWrapper; import ml.docilealligator.infinityforreddit.customviews.slidr.Slidr; +import ml.docilealligator.infinityforreddit.databinding.ActivityViewSubredditDetailBinding; import ml.docilealligator.infinityforreddit.events.ChangeNSFWEvent; import ml.docilealligator.infinityforreddit.events.GoBackToMainPageEvent; import ml.docilealligator.infinityforreddit.events.SwitchAccountEvent; @@ -141,38 +142,7 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp private static final String NEW_ACCOUNT_NAME_STATE = "NANS"; private static final int ADD_TO_MULTIREDDIT_REQUEST_CODE = 1; public SubredditViewModel mSubredditViewModel; - @BindView(R.id.coordinator_layout_view_subreddit_detail_activity) - CoordinatorLayout coordinatorLayout; - @BindView(R.id.view_pager_view_subreddit_detail_activity) - ViewPager2 viewPager2; - @BindView(R.id.appbar_layout_view_subreddit_detail_activity) - AppBarLayout appBarLayout; - @BindView(R.id.collapsing_toolbar_layout_view_subreddit_detail_activity) - CollapsingToolbarLayout collapsingToolbarLayout; - @BindView(R.id.toolbar_linear_layout_view_subreddit_detail_activity) - LinearLayout linearLayout; - @BindView(R.id.toolbar) - MaterialToolbar toolbar; - @BindView(R.id.tab_layout_view_subreddit_detail_activity) - TabLayout tabLayout; - @BindView(R.id.banner_image_view_view_subreddit_detail_activity) - GifImageView bannerImageView; - @BindView(R.id.icon_gif_image_view_view_subreddit_detail_activity) - GifImageView iconGifImageView; - @BindView(R.id.subscribe_subreddit_chip_view_subreddit_detail_activity) - Chip subscribeSubredditChip; - @BindView(R.id.subreddit_name_text_view_view_subreddit_detail_activity) - TextView subredditNameTextView; - @BindView(R.id.subscriber_count_text_view_view_subreddit_detail_activity) - TextView nSubscribersTextView; - @BindView(R.id.online_subscriber_count_text_view_view_subreddit_detail_activity) - TextView nOnlineSubscribersTextView; - @BindView(R.id.since_text_view_view_subreddit_detail_activity) - TextView sinceTextView; - @BindView(R.id.creation_time_text_view_view_subreddit_detail_activity) - TextView creationTimeTextView; - @BindView(R.id.description_text_view_view_subreddit_detail_activity) - TextView descriptionTextView; + @Inject @Named("no_oauth") Retrofit mRetrofit; @@ -231,6 +201,7 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp private int fabOption; private MaterialAlertDialogBuilder nsfwWarningBuilder; private Bitmap subredditIconBitmap; + private ActivityViewSubredditDetailBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { @@ -238,9 +209,8 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp super.onCreate(savedInstanceState); - setContentView(R.layout.activity_view_subreddit_detail); - - ButterKnife.bind(this); + binding = ActivityViewSubredditDetailBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); hideFab = mSharedPreferences.getBoolean(SharedPreferencesUtils.HIDE_FAB_IN_POST_FEED, false); showBottomAppBar = mSharedPreferences.getBoolean(SharedPreferencesUtils.BOTTOM_APP_BAR_KEY, false); @@ -258,7 +228,7 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp mSliderPanel = Slidr.attach(this); } - mViewPager2 = viewPager2; + mViewPager2 = binding.viewPagerViewSubredditDetailActivity; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { Window window = getWindow(); @@ -269,7 +239,7 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp } else { window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); } - adjustToolbar(toolbar); + adjustToolbar(binding.toolbar); int navBarHeight = getNavBarHeight(); if (navBarHeight > 0) { @@ -285,50 +255,50 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp View decorView = window.getDecorView(); if (isChangeStatusBarIconColor()) { - appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() { + binding.appbarLayoutViewSubredditDetailActivity.addOnOffsetChangedListener(new AppBarStateChangeListener() { @Override public void onStateChanged(AppBarLayout appBarLayout, AppBarStateChangeListener.State state) { if (state == State.COLLAPSED) { decorView.setSystemUiVisibility(getSystemVisibilityToolbarCollapsed()); - tabLayout.setTabTextColors(collapsedTabTextColor, collapsedTabTextColor); - tabLayout.setSelectedTabIndicatorColor(collapsedTabIndicatorColor); - tabLayout.setBackgroundColor(collapsedTabBackgroundColor); + binding.tabLayoutViewSubredditDetailActivity.setTabTextColors(collapsedTabTextColor, collapsedTabTextColor); + binding.tabLayoutViewSubredditDetailActivity.setSelectedTabIndicatorColor(collapsedTabIndicatorColor); + binding.tabLayoutViewSubredditDetailActivity.setBackgroundColor(collapsedTabBackgroundColor); } else if (state == State.EXPANDED) { decorView.setSystemUiVisibility(getSystemVisibilityToolbarExpanded()); - tabLayout.setTabTextColors(expandedTabTextColor, expandedTabTextColor); - tabLayout.setSelectedTabIndicatorColor(expandedTabIndicatorColor); - tabLayout.setBackgroundColor(expandedTabBackgroundColor); + binding.tabLayoutViewSubredditDetailActivity.setTabTextColors(expandedTabTextColor, expandedTabTextColor); + binding.tabLayoutViewSubredditDetailActivity.setSelectedTabIndicatorColor(expandedTabIndicatorColor); + binding.tabLayoutViewSubredditDetailActivity.setBackgroundColor(expandedTabBackgroundColor); } } }); } else { - appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() { + binding.appbarLayoutViewSubredditDetailActivity.addOnOffsetChangedListener(new AppBarStateChangeListener() { @Override public void onStateChanged(AppBarLayout appBarLayout, State state) { if (state == State.COLLAPSED) { - tabLayout.setTabTextColors(collapsedTabTextColor, collapsedTabTextColor); - tabLayout.setSelectedTabIndicatorColor(collapsedTabIndicatorColor); - tabLayout.setBackgroundColor(collapsedTabBackgroundColor); + binding.tabLayoutViewSubredditDetailActivity.setTabTextColors(collapsedTabTextColor, collapsedTabTextColor); + binding.tabLayoutViewSubredditDetailActivity.setSelectedTabIndicatorColor(collapsedTabIndicatorColor); + binding.tabLayoutViewSubredditDetailActivity.setBackgroundColor(collapsedTabBackgroundColor); } else if (state == State.EXPANDED) { - tabLayout.setTabTextColors(expandedTabTextColor, expandedTabTextColor); - tabLayout.setSelectedTabIndicatorColor(expandedTabIndicatorColor); - tabLayout.setBackgroundColor(expandedTabBackgroundColor); + binding.tabLayoutViewSubredditDetailActivity.setTabTextColors(expandedTabTextColor, expandedTabTextColor); + binding.tabLayoutViewSubredditDetailActivity.setSelectedTabIndicatorColor(expandedTabIndicatorColor); + binding.tabLayoutViewSubredditDetailActivity.setBackgroundColor(expandedTabBackgroundColor); } } }); } } else { - appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() { + binding.appbarLayoutViewSubredditDetailActivity.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.tabLayoutViewSubredditDetailActivity.setTabTextColors(expandedTabTextColor, expandedTabTextColor); + binding.tabLayoutViewSubredditDetailActivity.setSelectedTabIndicatorColor(expandedTabIndicatorColor); + binding.tabLayoutViewSubredditDetailActivity.setBackgroundColor(expandedTabBackgroundColor); } else if (state == State.COLLAPSED) { - tabLayout.setTabTextColors(collapsedTabTextColor, collapsedTabTextColor); - tabLayout.setSelectedTabIndicatorColor(collapsedTabIndicatorColor); - tabLayout.setBackgroundColor(collapsedTabBackgroundColor); + binding.tabLayoutViewSubredditDetailActivity.setTabTextColors(collapsedTabTextColor, collapsedTabTextColor); + binding.tabLayoutViewSubredditDetailActivity.setSelectedTabIndicatorColor(collapsedTabIndicatorColor); + binding.tabLayoutViewSubredditDetailActivity.setBackgroundColor(collapsedTabBackgroundColor); } } }); @@ -351,7 +321,7 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp mNewAccountName = savedInstanceState.getString(NEW_ACCOUNT_NAME_STATE); if (mFetchSubredditInfoSuccess) { - nOnlineSubscribersTextView.setText(getString(R.string.online_subscribers_number_detail, mNCurrentOnlineSubscribers)); + binding.onlineSubscriberCountTextViewViewSubredditDetailActivity.setText(getString(R.string.online_subscribers_number_detail, mNCurrentOnlineSubscribers)); } } @@ -360,11 +330,11 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp fetchSubredditData(); String title = "r/" + subredditName; - subredditNameTextView.setText(title); + binding.subredditNameTextViewViewSubredditDetailActivity.setText(title); - toolbar.setTitle(title); - setSupportActionBar(toolbar); - setToolbarGoToTop(toolbar); + binding.toolbar.setTitle(title); + setSupportActionBar(binding.toolbar); + setToolbarGoToTop(binding.toolbar); glide = Glide.with(this); Locale locale = getResources().getConfiguration().locale; @@ -393,8 +363,8 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp Markwon markwon = MarkdownUtils.createDescriptionMarkwon(this, miscPlugin, onLinkLongClickListener); - descriptionTextView.setOnLongClickListener(view -> { - if (description != null && !description.equals("") && descriptionTextView.getSelectionStart() == -1 && descriptionTextView.getSelectionEnd() == -1) { + binding.descriptionTextViewViewSubredditDetailActivity.setOnLongClickListener(view -> { + if (description != null && !description.equals("") && binding.descriptionTextViewViewSubredditDetailActivity.getSelectionStart() == -1 && binding.descriptionTextViewViewSubredditDetailActivity.getSelectionEnd() == -1) { CopyTextBottomSheetFragment.show(getSupportFragmentManager(), description, null); return true; } @@ -409,12 +379,12 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp isNsfwSubreddit = subredditData.isNSFW(); if (subredditData.getBannerUrl().equals("")) { - iconGifImageView.setOnClickListener(view -> { + binding.iconGifImageViewViewSubredditDetailActivity.setOnClickListener(view -> { //Do nothing as it has no image }); } else { - glide.load(subredditData.getBannerUrl()).into(bannerImageView); - bannerImageView.setOnClickListener(view -> { + glide.load(subredditData.getBannerUrl()).into(binding.bannerImageViewViewSubredditDetailActivity); + binding.bannerImageViewViewSubredditDetailActivity.setOnClickListener(view -> { Intent intent = new Intent(ViewSubredditDetailActivity.this, ViewImageOrGifActivity.class); intent.putExtra(ViewImageOrGifActivity.EXTRA_IMAGE_URL_KEY, subredditData.getBannerUrl()); intent.putExtra(ViewImageOrGifActivity.EXTRA_FILE_NAME_KEY, subredditName + "-banner.jpg"); @@ -426,8 +396,8 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp if (subredditData.getIconUrl().equals("")) { glide.load(getDrawable(R.drawable.subreddit_default_icon)) .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(216, 0))) - .into(iconGifImageView); - iconGifImageView.setOnClickListener(null); + .into(binding.iconGifImageViewViewSubredditDetailActivity); + binding.iconGifImageViewViewSubredditDetailActivity.setOnClickListener(null); } else { glide.asBitmap() .load(subredditData.getIconUrl()) @@ -438,7 +408,7 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp @Override public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition transition) { subredditIconBitmap = resource; - iconGifImageView.setImageBitmap(resource); + binding.iconGifImageViewViewSubredditDetailActivity.setImageBitmap(resource); } @Override @@ -446,7 +416,7 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp subredditIconBitmap = null; } }); - iconGifImageView.setOnClickListener(view -> { + binding.iconGifImageViewViewSubredditDetailActivity.setOnClickListener(view -> { Intent intent = new Intent(ViewSubredditDetailActivity.this, ViewImageOrGifActivity.class); intent.putExtra(ViewImageOrGifActivity.EXTRA_IMAGE_URL_KEY, subredditData.getIconUrl()); intent.putExtra(ViewImageOrGifActivity.EXTRA_FILE_NAME_KEY, subredditName + "-icon.jpg"); @@ -459,17 +429,17 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp if (!title.equals(subredditFullName)) { getSupportActionBar().setTitle(subredditFullName); } - subredditNameTextView.setText(subredditFullName); + binding.subredditNameTextViewViewSubredditDetailActivity.setText(subredditFullName); String nSubscribers = getString(R.string.subscribers_number_detail, subredditData.getNSubscribers()); - nSubscribersTextView.setText(nSubscribers); - creationTimeTextView.setText(new SimpleDateFormat("MMM d, yyyy", + binding.subscriberCountTextViewViewSubredditDetailActivity.setText(nSubscribers); + binding.creationTimeTextViewViewSubredditDetailActivity.setText(new SimpleDateFormat("MMM d, yyyy", locale).format(subredditData.getCreatedUTC())); description = subredditData.getDescription(); if (hideSubredditDescription || description.equals("")) { - descriptionTextView.setVisibility(View.GONE); + binding.descriptionTextViewViewSubredditDetailActivity.setVisibility(View.GONE); } else { - descriptionTextView.setVisibility(View.VISIBLE); - markwon.setMarkdown(descriptionTextView, description); + binding.descriptionTextViewViewSubredditDetailActivity.setVisibility(View.VISIBLE); + markwon.setMarkdown(binding.descriptionTextViewViewSubredditDetailActivity, description); } if (subredditData.isNSFW()) { @@ -516,41 +486,42 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp @Override protected void applyCustomTheme() { - coordinatorLayout.setBackgroundColor(mCustomThemeWrapper.getBackgroundColor()); - appBarLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { + binding.getRoot().setBackgroundColor(mCustomThemeWrapper.getBackgroundColor()); + binding.appbarLayoutViewSubredditDetailActivity.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { - appBarLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this); - collapsingToolbarLayout.setScrimVisibleHeightTrigger(toolbar.getHeight() + tabLayout.getHeight() + getStatusBarHeight() * 2); + binding.appbarLayoutViewSubredditDetailActivity.getViewTreeObserver().removeOnGlobalLayoutListener(this); + binding.collapsingToolbarLayoutViewSubredditDetailActivity.setScrimVisibleHeightTrigger(binding.toolbar.getHeight() + binding.tabLayoutViewSubredditDetailActivity.getHeight() + getStatusBarHeight() * 2); } }); - applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(appBarLayout, collapsingToolbarLayout, toolbar, false); + applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(binding.appbarLayoutViewSubredditDetailActivity, + binding.collapsingToolbarLayoutViewSubredditDetailActivity, binding.toolbar, false); expandedTabTextColor = mCustomThemeWrapper.getTabLayoutWithExpandedCollapsingToolbarTextColor(); expandedTabIndicatorColor = mCustomThemeWrapper.getTabLayoutWithExpandedCollapsingToolbarTabIndicator(); expandedTabBackgroundColor = mCustomThemeWrapper.getTabLayoutWithExpandedCollapsingToolbarTabBackground(); collapsedTabTextColor = mCustomThemeWrapper.getTabLayoutWithCollapsedCollapsingToolbarTextColor(); collapsedTabIndicatorColor = mCustomThemeWrapper.getTabLayoutWithCollapsedCollapsingToolbarTabIndicator(); collapsedTabBackgroundColor = mCustomThemeWrapper.getTabLayoutWithCollapsedCollapsingToolbarTabBackground(); - linearLayout.setBackgroundColor(expandedTabBackgroundColor); - subredditNameTextView.setTextColor(mCustomThemeWrapper.getSubreddit()); - subscribeSubredditChip.setTextColor(mCustomThemeWrapper.getChipTextColor()); + binding.toolbarLinearLayoutViewSubredditDetailActivity.setBackgroundColor(expandedTabBackgroundColor); + binding.subredditNameTextViewViewSubredditDetailActivity.setTextColor(mCustomThemeWrapper.getSubreddit()); + binding.subscribeSubredditChipViewSubredditDetailActivity.setTextColor(mCustomThemeWrapper.getChipTextColor()); int primaryTextColor = mCustomThemeWrapper.getPrimaryTextColor(); - nSubscribersTextView.setTextColor(primaryTextColor); - nOnlineSubscribersTextView.setTextColor(primaryTextColor); - sinceTextView.setTextColor(primaryTextColor); - creationTimeTextView.setTextColor(primaryTextColor); - descriptionTextView.setTextColor(primaryTextColor); + binding.subscriberCountTextViewViewSubredditDetailActivity.setTextColor(primaryTextColor); + binding.onlineSubscriberCountTextViewViewSubredditDetailActivity.setTextColor(primaryTextColor); + binding.sinceTextViewViewSubredditDetailActivity.setTextColor(primaryTextColor); + binding.creationTimeTextViewViewSubredditDetailActivity.setTextColor(primaryTextColor); + binding.descriptionTextViewViewSubredditDetailActivity.setTextColor(primaryTextColor); navigationWrapper.applyCustomTheme(mCustomThemeWrapper.getBottomAppBarIconColor(), mCustomThemeWrapper.getBottomAppBarBackgroundColor()); - applyTabLayoutTheme(tabLayout); + applyTabLayoutTheme(binding.tabLayoutViewSubredditDetailActivity); applyFABTheme(navigationWrapper.floatingActionButton); if (typeface != null) { - subredditNameTextView.setTypeface(typeface); - subscribeSubredditChip.setTypeface(typeface); - nSubscribersTextView.setTypeface(typeface); - nOnlineSubscribersTextView.setTypeface(typeface); - sinceTextView.setTypeface(typeface); - creationTimeTextView.setTypeface(typeface); - descriptionTextView.setTypeface(typeface); + binding.subredditNameTextViewViewSubredditDetailActivity.setTypeface(typeface); + binding.subscribeSubredditChipViewSubredditDetailActivity.setTypeface(typeface); + binding.subscriberCountTextViewViewSubredditDetailActivity.setTypeface(typeface); + binding.onlineSubscriberCountTextViewViewSubredditDetailActivity.setTypeface(typeface); + binding.sinceTextViewViewSubredditDetailActivity.setTypeface(typeface); + binding.creationTimeTextViewViewSubredditDetailActivity.setTypeface(typeface); + binding.descriptionTextViewViewSubredditDetailActivity.setTypeface(typeface); } unsubscribedColor = mCustomThemeWrapper.getUnsubscribed(); subscribedColor = mCustomThemeWrapper.getSubscribed(); @@ -586,7 +557,7 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp @Override public void onFetchSubredditDataSuccess(SubredditData subredditData, int nCurrentOnlineSubscribers) { mNCurrentOnlineSubscribers = nCurrentOnlineSubscribers; - nOnlineSubscribersTextView.setText(getString(R.string.online_subscribers_number_detail, nCurrentOnlineSubscribers)); + binding.onlineSubscriberCountTextViewViewSubredditDetailActivity.setText(getString(R.string.online_subscribers_number_detail, nCurrentOnlineSubscribers)); InsertSubredditData.insertSubredditData(mExecutor, new Handler(), mRedditDataRoomDatabase, subredditData, () -> mFetchSubredditInfoSuccess = true); } @@ -953,18 +924,18 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp }); navigationWrapper.floatingActionButton.setVisibility(hideFab ? View.GONE : View.VISIBLE); - subscribeSubredditChip.setOnClickListener(view -> { + binding.subscribeSubredditChipViewSubredditDetailActivity.setOnClickListener(view -> { if (accountName.equals(Account.ANONYMOUS_ACCOUNT)) { if (subscriptionReady) { subscriptionReady = false; - if (getResources().getString(R.string.subscribe).contentEquals(subscribeSubredditChip.getText())) { + if (getResources().getString(R.string.subscribe).contentEquals(binding.subscribeSubredditChipViewSubredditDetailActivity.getText())) { SubredditSubscription.anonymousSubscribeToSubreddit(mExecutor, new Handler(), mRetrofit, mRedditDataRoomDatabase, subredditName, new SubredditSubscription.SubredditSubscriptionListener() { @Override public void onSubredditSubscriptionSuccess() { - subscribeSubredditChip.setText(R.string.unsubscribe); - subscribeSubredditChip.setChipBackgroundColor(ColorStateList.valueOf(subscribedColor)); + binding.subscribeSubredditChipViewSubredditDetailActivity.setText(R.string.unsubscribe); + binding.subscribeSubredditChipViewSubredditDetailActivity.setChipBackgroundColor(ColorStateList.valueOf(subscribedColor)); makeSnackbar(R.string.subscribed, false); subscriptionReady = true; } @@ -981,8 +952,8 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp new SubredditSubscription.SubredditSubscriptionListener() { @Override public void onSubredditSubscriptionSuccess() { - subscribeSubredditChip.setText(R.string.subscribe); - subscribeSubredditChip.setChipBackgroundColor(ColorStateList.valueOf(unsubscribedColor)); + binding.subscribeSubredditChipViewSubredditDetailActivity.setText(R.string.subscribe); + binding.subscribeSubredditChipViewSubredditDetailActivity.setChipBackgroundColor(ColorStateList.valueOf(unsubscribedColor)); makeSnackbar(R.string.unsubscribed, false); subscriptionReady = true; } @@ -998,14 +969,14 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp } else { if (subscriptionReady) { subscriptionReady = false; - if (getResources().getString(R.string.subscribe).contentEquals(subscribeSubredditChip.getText())) { + if (getResources().getString(R.string.subscribe).contentEquals(binding.subscribeSubredditChipViewSubredditDetailActivity.getText())) { SubredditSubscription.subscribeToSubreddit(mExecutor, new Handler(), mOauthRetrofit, mRetrofit, accessToken, subredditName, accountName, mRedditDataRoomDatabase, new SubredditSubscription.SubredditSubscriptionListener() { @Override public void onSubredditSubscriptionSuccess() { - subscribeSubredditChip.setText(R.string.unsubscribe); - subscribeSubredditChip.setChipBackgroundColor(ColorStateList.valueOf(subscribedColor)); + binding.subscribeSubredditChipViewSubredditDetailActivity.setText(R.string.unsubscribe); + binding.subscribeSubredditChipViewSubredditDetailActivity.setChipBackgroundColor(ColorStateList.valueOf(subscribedColor)); makeSnackbar(R.string.subscribed, false); subscriptionReady = true; } @@ -1022,8 +993,8 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp new SubredditSubscription.SubredditSubscriptionListener() { @Override public void onSubredditSubscriptionSuccess() { - subscribeSubredditChip.setText(R.string.subscribe); - subscribeSubredditChip.setChipBackgroundColor(ColorStateList.valueOf(unsubscribedColor)); + binding.subscribeSubredditChipViewSubredditDetailActivity.setText(R.string.subscribe); + binding.subscribeSubredditChipViewSubredditDetailActivity.setChipBackgroundColor(ColorStateList.valueOf(unsubscribedColor)); makeSnackbar(R.string.unsubscribed, false); subscriptionReady = true; } @@ -1044,21 +1015,21 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp new CheckIsSubscribedToSubreddit.CheckIsSubscribedToSubredditListener() { @Override public void isSubscribed() { - subscribeSubredditChip.setText(R.string.unsubscribe); - subscribeSubredditChip.setChipBackgroundColor(ColorStateList.valueOf(subscribedColor)); + binding.subscribeSubredditChipViewSubredditDetailActivity.setText(R.string.unsubscribe); + binding.subscribeSubredditChipViewSubredditDetailActivity.setChipBackgroundColor(ColorStateList.valueOf(subscribedColor)); subscriptionReady = true; } @Override public void isNotSubscribed() { - subscribeSubredditChip.setText(R.string.subscribe); - subscribeSubredditChip.setChipBackgroundColor(ColorStateList.valueOf(unsubscribedColor)); + binding.subscribeSubredditChipViewSubredditDetailActivity.setText(R.string.subscribe); + binding.subscribeSubredditChipViewSubredditDetailActivity.setChipBackgroundColor(ColorStateList.valueOf(unsubscribedColor)); subscriptionReady = true; } }); sectionsPagerAdapter = new SectionsPagerAdapter(this); - viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { + binding.viewPagerViewSubredditDetailActivity.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { @Override public void onPageSelected(int position) { if (position == 0) { @@ -1076,10 +1047,10 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp sectionsPagerAdapter.displaySortTypeInToolbar(); } }); - viewPager2.setAdapter(sectionsPagerAdapter); - viewPager2.setOffscreenPageLimit(ViewPager2.OFFSCREEN_PAGE_LIMIT_DEFAULT); - viewPager2.setUserInputEnabled(!mSharedPreferences.getBoolean(SharedPreferencesUtils.DISABLE_SWIPING_BETWEEN_TABS, false)); - new TabLayoutMediator(tabLayout, viewPager2, (tab, position) -> { + binding.viewPagerViewSubredditDetailActivity.setAdapter(sectionsPagerAdapter); + binding.viewPagerViewSubredditDetailActivity.setOffscreenPageLimit(ViewPager2.OFFSCREEN_PAGE_LIMIT_DEFAULT); + binding.viewPagerViewSubredditDetailActivity.setUserInputEnabled(!mSharedPreferences.getBoolean(SharedPreferencesUtils.DISABLE_SWIPING_BETWEEN_TABS, false)); + new TabLayoutMediator(binding.tabLayoutViewSubredditDetailActivity, binding.viewPagerViewSubredditDetailActivity, (tab, position) -> { switch (position) { case 0: tab.setText(R.string.posts); @@ -1088,11 +1059,11 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp tab.setText(R.string.about); } }).attach(); - fixViewPager2Sensitivity(viewPager2); + fixViewPager2Sensitivity(binding.viewPagerViewSubredditDetailActivity); boolean viewSidebar = getIntent().getBooleanExtra(EXTRA_VIEW_SIDEBAR, false); if (viewSidebar) { - viewPager2.setCurrentItem(1, false); + binding.viewPagerViewSubredditDetailActivity.setCurrentItem(1, false); } } @@ -1235,10 +1206,10 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp Toast.makeText(this, resId, Toast.LENGTH_SHORT).show(); } else { if (retry) { - Snackbar.make(coordinatorLayout, resId, Snackbar.LENGTH_SHORT).setAction(R.string.retry, + Snackbar.make(binding.getRoot(), resId, Snackbar.LENGTH_SHORT).setAction(R.string.retry, view -> fetchSubredditData()).show(); } else { - Snackbar.make(coordinatorLayout, resId, Snackbar.LENGTH_SHORT).show(); + Snackbar.make(binding.getRoot(), resId, Snackbar.LENGTH_SHORT).show(); } } } @@ -1410,7 +1381,7 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp } private void goToSubreddit() { - View rootView = getLayoutInflater().inflate(R.layout.dialog_go_to_thing_edit_text, coordinatorLayout, false); + View rootView = getLayoutInflater().inflate(R.layout.dialog_go_to_thing_edit_text, binding.getRoot(), false); TextInputEditText thingEditText = rootView.findViewById(R.id.text_input_edit_text_go_to_thing_edit_text); RecyclerView recyclerView = rootView.findViewById(R.id.recycler_view_go_to_thing_edit_text); thingEditText.requestFocus(); @@ -1498,7 +1469,7 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp } private void goToUser() { - View rootView = getLayoutInflater().inflate(R.layout.dialog_go_to_thing_edit_text, coordinatorLayout, false); + View rootView = getLayoutInflater().inflate(R.layout.dialog_go_to_thing_edit_text, binding.getRoot(), false); TextInputEditText thingEditText = rootView.findViewById(R.id.text_input_edit_text_go_to_thing_edit_text); thingEditText.requestFocus(); Utils.showKeyboard(this, new Handler(), thingEditText); @@ -1594,11 +1565,11 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp if (fragmentManager == null) { return null; } - return fragmentManager.findFragmentByTag("f" + viewPager2.getCurrentItem()); + return fragmentManager.findFragmentByTag("f" + binding.viewPagerViewSubredditDetailActivity.getCurrentItem()); } public boolean handleKeyDown(int keyCode) { - if (viewPager2.getCurrentItem() == 0) { + if (binding.viewPagerViewSubredditDetailActivity.getCurrentItem() == 0) { Fragment fragment = getCurrentFragment(); if (fragment instanceof PostFragment) { return ((PostFragment) fragment).handleKeyDown(keyCode); @@ -1626,7 +1597,7 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp Fragment fragment = getCurrentFragment(); if (fragment instanceof PostFragment) { ((PostFragment) fragment).changeSortType(sortType); - Utils.displaySortTypeInToolbar(sortType, toolbar); + Utils.displaySortTypeInToolbar(sortType, binding.toolbar); } } @@ -1655,10 +1626,10 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp void displaySortTypeInToolbar() { if (fragmentManager != null) { - Fragment fragment = fragmentManager.findFragmentByTag("f" + viewPager2.getCurrentItem()); + Fragment fragment = fragmentManager.findFragmentByTag("f" + binding.viewPagerViewSubredditDetailActivity.getCurrentItem()); if (fragment instanceof PostFragment) { SortType sortType = ((PostFragment) fragment).getSortType(); - Utils.displaySortTypeInToolbar(sortType, toolbar); + Utils.displaySortTypeInToolbar(sortType, binding.toolbar); } } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewUserDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewUserDetailActivity.java index 9ab1e2d6..fe0a49c6 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewUserDetailActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewUserDetailActivity.java @@ -20,8 +20,6 @@ import android.view.ViewTreeObserver; import android.view.Window; import android.view.WindowManager; import android.view.inputmethod.EditorInfo; -import android.widget.LinearLayout; -import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; @@ -39,12 +37,8 @@ import com.bumptech.glide.Glide; import com.bumptech.glide.RequestManager; import com.bumptech.glide.request.RequestOptions; import com.google.android.material.appbar.AppBarLayout; -import com.google.android.material.appbar.CollapsingToolbarLayout; -import com.google.android.material.appbar.MaterialToolbar; -import com.google.android.material.chip.Chip; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.snackbar.Snackbar; -import com.google.android.material.tabs.TabLayout; import com.google.android.material.tabs.TabLayoutMediator; import com.google.android.material.textfield.TextInputEditText; @@ -59,8 +53,6 @@ import java.util.concurrent.Executor; import javax.inject.Inject; import javax.inject.Named; -import butterknife.BindView; -import butterknife.ButterKnife; import io.noties.markwon.AbstractMarkwonPlugin; import io.noties.markwon.Markwon; import io.noties.markwon.MarkwonConfiguration; @@ -95,6 +87,7 @@ import ml.docilealligator.infinityforreddit.bottomsheetfragments.UserThingSortTy import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper; import ml.docilealligator.infinityforreddit.customviews.NavigationWrapper; import ml.docilealligator.infinityforreddit.customviews.slidr.Slidr; +import ml.docilealligator.infinityforreddit.databinding.ActivityViewUserDetailBinding; import ml.docilealligator.infinityforreddit.events.ChangeNSFWEvent; import ml.docilealligator.infinityforreddit.events.GoBackToMainPageEvent; import ml.docilealligator.infinityforreddit.events.SwitchAccountEvent; @@ -118,7 +111,6 @@ import ml.docilealligator.infinityforreddit.user.UserViewModel; import ml.docilealligator.infinityforreddit.utils.APIUtils; import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils; import ml.docilealligator.infinityforreddit.utils.Utils; -import pl.droidsonroids.gif.GifImageView; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; @@ -139,34 +131,6 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele private static final String MESSAGE_FULLNAME_STATE = "MFS"; private static final String NEW_ACCOUNT_NAME_STATE = "NANS"; - @BindView(R.id.coordinator_layout_view_user_detail_activity) - CoordinatorLayout coordinatorLayout; - @BindView(R.id.view_pager_view_user_detail_activity) - ViewPager2 viewPager2; - @BindView(R.id.appbar_layout_view_user_detail) - AppBarLayout appBarLayout; - @BindView(R.id.toolbar_view_user_detail_activity) - MaterialToolbar toolbar; - @BindView(R.id.toolbar_linear_layout_view_user_detail_activity) - LinearLayout linearLayout; - @BindView(R.id.tab_layout_view_user_detail_activity) - TabLayout tabLayout; - @BindView(R.id.collapsing_toolbar_layout_view_user_detail_activity) - CollapsingToolbarLayout collapsingToolbarLayout; - @BindView(R.id.banner_image_view_view_user_detail_activity) - GifImageView bannerImageView; - @BindView(R.id.icon_gif_image_view_view_user_detail_activity) - GifImageView iconGifImageView; - @BindView(R.id.user_name_text_view_view_user_detail_activity) - TextView userNameTextView; - @BindView(R.id.subscribe_user_chip_view_user_detail_activity) - Chip subscribeUserChip; - @BindView(R.id.karma_text_view_view_user_detail_activity) - TextView karmaTextView; - @BindView(R.id.cakeday_text_view_view_user_detail_activity) - TextView cakedayTextView; - @BindView(R.id.description_text_view_view_user_detail_activity) - TextView descriptionTextView; @Inject @Named("no_oauth") Retrofit mRetrofit; @@ -223,6 +187,7 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele private String mMessageFullname; private String mNewAccountName; //private MaterialAlertDialogBuilder nsfwWarningBuilder; + private ActivityViewUserDetailBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { @@ -231,9 +196,8 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele super.onCreate(savedInstanceState); - setContentView(R.layout.activity_view_user_detail); - - ButterKnife.bind(this); + binding = ActivityViewUserDetailBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); hideFab = mSharedPreferences.getBoolean(SharedPreferencesUtils.HIDE_FAB_IN_POST_FEED, false); showBottomAppBar = mSharedPreferences.getBoolean(SharedPreferencesUtils.BOTTOM_APP_BAR_KEY, false); @@ -252,7 +216,7 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele mSliderPanel = Slidr.attach(this); } - mViewPager2 = viewPager2; + mViewPager2 = binding.viewPagerViewUserDetailActivity; username = getIntent().getStringExtra(EXTRA_USER_NAME_KEY); @@ -280,11 +244,11 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele Resources resources = getResources(); String title = "u/" + username; - userNameTextView.setText(title); - toolbar.setTitle(title); + binding.userNameTextViewViewUserDetailActivity.setText(title); + binding.toolbarViewUserDetailActivity.setTitle(title); - setSupportActionBar(toolbar); - setToolbarGoToTop(toolbar); + setSupportActionBar(binding.toolbarViewUserDetailActivity); + setToolbarGoToTop(binding.toolbarViewUserDetailActivity); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { Window window = getWindow(); @@ -295,7 +259,7 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele } else { window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); } - adjustToolbar(toolbar); + adjustToolbar(binding.toolbarViewUserDetailActivity); int navBarHeight = getNavBarHeight(); if (navBarHeight > 0) { @@ -310,50 +274,50 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele View decorView = window.getDecorView(); if (isChangeStatusBarIconColor()) { - appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() { + binding.appbarLayoutViewUserDetail.addOnOffsetChangedListener(new AppBarStateChangeListener() { @Override public void onStateChanged(AppBarLayout appBarLayout, State state) { if (state == State.COLLAPSED) { decorView.setSystemUiVisibility(getSystemVisibilityToolbarCollapsed()); - tabLayout.setTabTextColors(collapsedTabTextColor, collapsedTabTextColor); - tabLayout.setSelectedTabIndicatorColor(collapsedTabIndicatorColor); - tabLayout.setBackgroundColor(collapsedTabBackgroundColor); + binding.tabLayoutViewUserDetailActivity.setTabTextColors(collapsedTabTextColor, collapsedTabTextColor); + binding.tabLayoutViewUserDetailActivity.setSelectedTabIndicatorColor(collapsedTabIndicatorColor); + binding.tabLayoutViewUserDetailActivity.setBackgroundColor(collapsedTabBackgroundColor); } else if (state == State.EXPANDED) { decorView.setSystemUiVisibility(getSystemVisibilityToolbarExpanded()); - tabLayout.setTabTextColors(expandedTabTextColor, expandedTabTextColor); - tabLayout.setSelectedTabIndicatorColor(expandedTabIndicatorColor); - tabLayout.setBackgroundColor(expandedTabBackgroundColor); + binding.tabLayoutViewUserDetailActivity.setTabTextColors(expandedTabTextColor, expandedTabTextColor); + binding.tabLayoutViewUserDetailActivity.setSelectedTabIndicatorColor(expandedTabIndicatorColor); + binding.tabLayoutViewUserDetailActivity.setBackgroundColor(expandedTabBackgroundColor); } } }); } else { - appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() { + binding.appbarLayoutViewUserDetail.addOnOffsetChangedListener(new AppBarStateChangeListener() { @Override public void onStateChanged(AppBarLayout appBarLayout, State state) { if (state == State.COLLAPSED) { - tabLayout.setTabTextColors(collapsedTabTextColor, collapsedTabTextColor); - tabLayout.setSelectedTabIndicatorColor(collapsedTabIndicatorColor); - tabLayout.setBackgroundColor(collapsedTabBackgroundColor); + binding.tabLayoutViewUserDetailActivity.setTabTextColors(collapsedTabTextColor, collapsedTabTextColor); + binding.tabLayoutViewUserDetailActivity.setSelectedTabIndicatorColor(collapsedTabIndicatorColor); + binding.tabLayoutViewUserDetailActivity.setBackgroundColor(collapsedTabBackgroundColor); } else if (state == State.EXPANDED) { - tabLayout.setTabTextColors(expandedTabTextColor, expandedTabTextColor); - tabLayout.setSelectedTabIndicatorColor(expandedTabIndicatorColor); - tabLayout.setBackgroundColor(expandedTabBackgroundColor); + binding.tabLayoutViewUserDetailActivity.setTabTextColors(expandedTabTextColor, expandedTabTextColor); + binding.tabLayoutViewUserDetailActivity.setSelectedTabIndicatorColor(expandedTabIndicatorColor); + binding.tabLayoutViewUserDetailActivity.setBackgroundColor(expandedTabBackgroundColor); } } }); } } else { - appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() { + binding.appbarLayoutViewUserDetail.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.tabLayoutViewUserDetailActivity.setTabTextColors(expandedTabTextColor, expandedTabTextColor); + binding.tabLayoutViewUserDetailActivity.setSelectedTabIndicatorColor(expandedTabIndicatorColor); + binding.tabLayoutViewUserDetailActivity.setBackgroundColor(expandedTabBackgroundColor); } else if (state == State.COLLAPSED) { - tabLayout.setTabTextColors(collapsedTabTextColor, collapsedTabTextColor); - tabLayout.setSelectedTabIndicatorColor(collapsedTabIndicatorColor); - tabLayout.setBackgroundColor(collapsedTabBackgroundColor); + binding.tabLayoutViewUserDetailActivity.setTabTextColors(collapsedTabTextColor, collapsedTabTextColor); + binding.tabLayoutViewUserDetailActivity.setSelectedTabIndicatorColor(collapsedTabIndicatorColor); + binding.tabLayoutViewUserDetailActivity.setBackgroundColor(collapsedTabBackgroundColor); } } }); @@ -385,8 +349,8 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele }; Markwon markwon = MarkdownUtils.createDescriptionMarkwon(this, miscPlugin, onLinkLongClickListener); - descriptionTextView.setOnLongClickListener(view -> { - if (description != null && !description.equals("") && descriptionTextView.getSelectionStart() == -1 && descriptionTextView.getSelectionEnd() == -1) { + binding.descriptionTextViewViewUserDetailActivity.setOnLongClickListener(view -> { + if (description != null && !description.equals("") && binding.descriptionTextViewViewUserDetailActivity.getSelectionStart() == -1 && binding.descriptionTextViewViewUserDetailActivity.getSelectionEnd() == -1) { CopyTextBottomSheetFragment.show(getSupportFragmentManager(), description, null); return true; } @@ -398,10 +362,10 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele userViewModel.getUserLiveData().observe(this, userData -> { if (userData != null) { if (userData.getBanner().equals("")) { - bannerImageView.setOnClickListener(null); + binding.bannerImageViewViewUserDetailActivity.setOnClickListener(null); } else { - glide.load(userData.getBanner()).into(bannerImageView); - bannerImageView.setOnClickListener(view -> { + glide.load(userData.getBanner()).into(binding.bannerImageViewViewUserDetailActivity); + binding.bannerImageViewViewUserDetailActivity.setOnClickListener(view -> { Intent intent = new Intent(this, ViewImageOrGifActivity.class); intent.putExtra(ViewImageOrGifActivity.EXTRA_IMAGE_URL_KEY, userData.getBanner()); intent.putExtra(ViewImageOrGifActivity.EXTRA_FILE_NAME_KEY, username + "-banner.jpg"); @@ -413,16 +377,16 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele if (userData.getIconUrl().equals("")) { glide.load(getDrawable(R.drawable.subreddit_default_icon)) .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(216, 0))) - .into(iconGifImageView); - iconGifImageView.setOnClickListener(null); + .into(binding.iconGifImageViewViewUserDetailActivity); + binding.iconGifImageViewViewUserDetailActivity.setOnClickListener(null); } else { glide.load(userData.getIconUrl()) .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(216, 0))) .error(glide.load(R.drawable.subreddit_default_icon) .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(216, 0)))) - .into(iconGifImageView); + .into(binding.iconGifImageViewViewUserDetailActivity); - iconGifImageView.setOnClickListener(view -> { + binding.iconGifImageViewViewUserDetailActivity.setOnClickListener(view -> { Intent intent = new Intent(this, ViewImageOrGifActivity.class); intent.putExtra(ViewImageOrGifActivity.EXTRA_IMAGE_URL_KEY, userData.getIconUrl()); intent.putExtra(ViewImageOrGifActivity.EXTRA_FILE_NAME_KEY, username + "-icon.jpg"); @@ -432,18 +396,18 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele } if (userData.isCanBeFollowed()) { - subscribeUserChip.setVisibility(View.VISIBLE); - subscribeUserChip.setOnClickListener(view -> { + binding.subscribeUserChipViewUserDetailActivity.setVisibility(View.VISIBLE); + binding.subscribeUserChipViewUserDetailActivity.setOnClickListener(view -> { if (subscriptionReady) { subscriptionReady = false; - if (resources.getString(R.string.follow).contentEquals(subscribeUserChip.getText())) { + if (resources.getString(R.string.follow).contentEquals(binding.subscribeUserChipViewUserDetailActivity.getText())) { if (accountName.equals(Account.ANONYMOUS_ACCOUNT)) { UserFollowing.anonymousFollowUser(mExecutor, new Handler(), mRetrofit, username, mRedditDataRoomDatabase, new UserFollowing.UserFollowingListener() { @Override public void onUserFollowingSuccess() { - subscribeUserChip.setText(R.string.unfollow); - subscribeUserChip.setChipBackgroundColor(ColorStateList.valueOf(subscribedColor)); + binding.subscribeUserChipViewUserDetailActivity.setText(R.string.unfollow); + binding.subscribeUserChipViewUserDetailActivity.setChipBackgroundColor(ColorStateList.valueOf(subscribedColor)); showMessage(R.string.followed, false); subscriptionReady = true; } @@ -459,8 +423,8 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele username, accountName, mRedditDataRoomDatabase, new UserFollowing.UserFollowingListener() { @Override public void onUserFollowingSuccess() { - subscribeUserChip.setText(R.string.unfollow); - subscribeUserChip.setChipBackgroundColor(ColorStateList.valueOf(subscribedColor)); + binding.subscribeUserChipViewUserDetailActivity.setText(R.string.unfollow); + binding.subscribeUserChipViewUserDetailActivity.setChipBackgroundColor(ColorStateList.valueOf(subscribedColor)); showMessage(R.string.followed, false); subscriptionReady = true; } @@ -478,8 +442,8 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele mRedditDataRoomDatabase, new UserFollowing.UserFollowingListener() { @Override public void onUserFollowingSuccess() { - subscribeUserChip.setText(R.string.follow); - subscribeUserChip.setChipBackgroundColor(ColorStateList.valueOf(unsubscribedColor)); + binding.subscribeUserChipViewUserDetailActivity.setText(R.string.follow); + binding.subscribeUserChipViewUserDetailActivity.setChipBackgroundColor(ColorStateList.valueOf(unsubscribedColor)); showMessage(R.string.unfollowed, false); subscriptionReady = true; } @@ -494,8 +458,8 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele username, accountName, mRedditDataRoomDatabase, new UserFollowing.UserFollowingListener() { @Override public void onUserFollowingSuccess() { - subscribeUserChip.setText(R.string.follow); - subscribeUserChip.setChipBackgroundColor(ColorStateList.valueOf(unsubscribedColor)); + binding.subscribeUserChipViewUserDetailActivity.setText(R.string.follow); + binding.subscribeUserChipViewUserDetailActivity.setChipBackgroundColor(ColorStateList.valueOf(unsubscribedColor)); showMessage(R.string.unfollowed, false); subscriptionReady = true; } @@ -515,38 +479,38 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele username, accountName, new CheckIsFollowingUser.CheckIsFollowingUserListener() { @Override public void isSubscribed() { - subscribeUserChip.setText(R.string.unfollow); - subscribeUserChip.setChipBackgroundColor(ColorStateList.valueOf(subscribedColor)); + binding.subscribeUserChipViewUserDetailActivity.setText(R.string.unfollow); + binding.subscribeUserChipViewUserDetailActivity.setChipBackgroundColor(ColorStateList.valueOf(subscribedColor)); subscriptionReady = true; } @Override public void isNotSubscribed() { - subscribeUserChip.setText(R.string.follow); - subscribeUserChip.setChipBackgroundColor(ColorStateList.valueOf(unsubscribedColor)); + binding.subscribeUserChipViewUserDetailActivity.setText(R.string.follow); + binding.subscribeUserChipViewUserDetailActivity.setChipBackgroundColor(ColorStateList.valueOf(unsubscribedColor)); subscriptionReady = true; } }); } else { - subscribeUserChip.setVisibility(View.GONE); + binding.subscribeUserChipViewUserDetailActivity.setVisibility(View.GONE); } String userFullName = "u/" + userData.getName(); - userNameTextView.setText(userFullName); + binding.userNameTextViewViewUserDetailActivity.setText(userFullName); if (!title.equals(userFullName)) { getSupportActionBar().setTitle(userFullName); } String karma = getString(R.string.karma_info_user_detail, userData.getTotalKarma(), userData.getLinkKarma(), userData.getCommentKarma()); - karmaTextView.setText(karma); - cakedayTextView.setText(getString(R.string.cakeday_info, new SimpleDateFormat("MMM d, yyyy", + binding.karmaTextViewViewUserDetailActivity.setText(karma); + binding.cakedayTextViewViewUserDetailActivity.setText(getString(R.string.cakeday_info, new SimpleDateFormat("MMM d, yyyy", locale).format(userData.getCakeday()))); if (userData.getDescription() == null || userData.getDescription().equals("")) { - descriptionTextView.setVisibility(View.GONE); + binding.descriptionTextViewViewUserDetailActivity.setVisibility(View.GONE); } else { - descriptionTextView.setVisibility(View.VISIBLE); + binding.descriptionTextViewViewUserDetailActivity.setVisibility(View.VISIBLE); description = userData.getDescription(); - markwon.setMarkdown(descriptionTextView, description); + markwon.setMarkdown(binding.descriptionTextViewViewUserDetailActivity, description); } /*if (userData.isNSFW()) { @@ -566,7 +530,7 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele } }); - karmaTextView.setOnClickListener(view -> { + binding.karmaTextViewViewUserDetailActivity.setOnClickListener(view -> { UserData userData = userViewModel.getUserLiveData().getValue(); if (userData != null) { KarmaInfoBottomSheetFragment karmaInfoBottomSheetFragment = KarmaInfoBottomSheetFragment.newInstance( @@ -603,38 +567,39 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele @Override protected void applyCustomTheme() { - coordinatorLayout.setBackgroundColor(mCustomThemeWrapper.getBackgroundColor()); - appBarLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { + binding.getRoot().setBackgroundColor(mCustomThemeWrapper.getBackgroundColor()); + binding.appbarLayoutViewUserDetail.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { - appBarLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this); - collapsingToolbarLayout.setScrimVisibleHeightTrigger(toolbar.getHeight() + tabLayout.getHeight() + getStatusBarHeight() * 2); + binding.appbarLayoutViewUserDetail.getViewTreeObserver().removeOnGlobalLayoutListener(this); + binding.collapsingToolbarLayoutViewUserDetailActivity.setScrimVisibleHeightTrigger(binding.toolbarViewUserDetailActivity.getHeight() + binding.tabLayoutViewUserDetailActivity.getHeight() + getStatusBarHeight() * 2); } }); - applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(appBarLayout, collapsingToolbarLayout, toolbar, false); + applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(binding.appbarLayoutViewUserDetail, + binding.collapsingToolbarLayoutViewUserDetailActivity, binding.toolbarViewUserDetailActivity, false); expandedTabTextColor = mCustomThemeWrapper.getTabLayoutWithExpandedCollapsingToolbarTextColor(); expandedTabIndicatorColor = mCustomThemeWrapper.getTabLayoutWithExpandedCollapsingToolbarTabIndicator(); expandedTabBackgroundColor = mCustomThemeWrapper.getTabLayoutWithExpandedCollapsingToolbarTabBackground(); collapsedTabTextColor = mCustomThemeWrapper.getTabLayoutWithCollapsedCollapsingToolbarTextColor(); collapsedTabIndicatorColor = mCustomThemeWrapper.getTabLayoutWithCollapsedCollapsingToolbarTabIndicator(); collapsedTabBackgroundColor = mCustomThemeWrapper.getTabLayoutWithCollapsedCollapsingToolbarTabBackground(); - linearLayout.setBackgroundColor(expandedTabBackgroundColor); + binding.toolbarLinearLayoutViewUserDetailActivity.setBackgroundColor(expandedTabBackgroundColor); unsubscribedColor = mCustomThemeWrapper.getUnsubscribed(); subscribedColor = mCustomThemeWrapper.getSubscribed(); - userNameTextView.setTextColor(mCustomThemeWrapper.getUsername()); - karmaTextView.setTextColor(mCustomThemeWrapper.getPrimaryTextColor()); - cakedayTextView.setTextColor(mCustomThemeWrapper.getPrimaryTextColor()); + binding.userNameTextViewViewUserDetailActivity.setTextColor(mCustomThemeWrapper.getUsername()); + binding.karmaTextViewViewUserDetailActivity.setTextColor(mCustomThemeWrapper.getPrimaryTextColor()); + binding.cakedayTextViewViewUserDetailActivity.setTextColor(mCustomThemeWrapper.getPrimaryTextColor()); navigationWrapper.applyCustomTheme(mCustomThemeWrapper.getBottomAppBarIconColor(), mCustomThemeWrapper.getBottomAppBarBackgroundColor()); applyFABTheme(navigationWrapper.floatingActionButton); - descriptionTextView.setTextColor(mCustomThemeWrapper.getPrimaryTextColor()); - subscribeUserChip.setTextColor(mCustomThemeWrapper.getChipTextColor()); - applyTabLayoutTheme(tabLayout); + binding.descriptionTextViewViewUserDetailActivity.setTextColor(mCustomThemeWrapper.getPrimaryTextColor()); + binding.subscribeUserChipViewUserDetailActivity.setTextColor(mCustomThemeWrapper.getChipTextColor()); + applyTabLayoutTheme(binding.tabLayoutViewUserDetailActivity); if (typeface != null) { - userNameTextView.setTypeface(typeface); - karmaTextView.setTypeface(typeface); - cakedayTextView.setTypeface(typeface); - subscribeUserChip.setTypeface(typeface); - descriptionTextView.setTypeface(typeface); + binding.userNameTextViewViewUserDetailActivity.setTypeface(typeface); + binding.karmaTextViewViewUserDetailActivity.setTypeface(typeface); + binding.cakedayTextViewViewUserDetailActivity.setTypeface(typeface); + binding.subscribeUserChipViewUserDetailActivity.setTypeface(typeface); + binding.descriptionTextViewViewUserDetailActivity.setTypeface(typeface); } } @@ -664,10 +629,10 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele private void initializeViewPager() { sectionsPagerAdapter = new SectionsPagerAdapter(this); - viewPager2.setAdapter(sectionsPagerAdapter); - viewPager2.setOffscreenPageLimit(ViewPager2.OFFSCREEN_PAGE_LIMIT_DEFAULT); - viewPager2.setUserInputEnabled(!mSharedPreferences.getBoolean(SharedPreferencesUtils.DISABLE_SWIPING_BETWEEN_TABS, false)); - new TabLayoutMediator(tabLayout, viewPager2, (tab, position) -> { + binding.viewPagerViewUserDetailActivity.setAdapter(sectionsPagerAdapter); + binding.viewPagerViewUserDetailActivity.setOffscreenPageLimit(ViewPager2.OFFSCREEN_PAGE_LIMIT_DEFAULT); + binding.viewPagerViewUserDetailActivity.setUserInputEnabled(!mSharedPreferences.getBoolean(SharedPreferencesUtils.DISABLE_SWIPING_BETWEEN_TABS, false)); + new TabLayoutMediator(binding.tabLayoutViewUserDetailActivity, binding.viewPagerViewUserDetailActivity, (tab, position) -> { switch (position) { case 0: tab.setText(R.string.posts); @@ -678,7 +643,7 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele } }).attach(); - viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { + binding.viewPagerViewUserDetailActivity.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { @Override public void onPageSelected(int position) { if (position == 0) { @@ -698,7 +663,7 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele } }); - fixViewPager2Sensitivity(viewPager2); + fixViewPager2Sensitivity(binding.viewPagerViewUserDetailActivity); if (mMessageFullname != null) { ReadMessage.readMessage(mOauthRetrofit, accessToken, mMessageFullname, new ReadMessage.ReadMessageListener() { @@ -1264,10 +1229,10 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele Toast.makeText(this, resId, Toast.LENGTH_SHORT).show(); } else { if (retry) { - Snackbar.make(coordinatorLayout, resId, Snackbar.LENGTH_SHORT).setAction(R.string.retry, + Snackbar.make(binding.getRoot(), resId, Snackbar.LENGTH_SHORT).setAction(R.string.retry, view -> fetchUserInfo()).show(); } else { - Snackbar.make(coordinatorLayout, resId, Snackbar.LENGTH_SHORT).show(); + Snackbar.make(binding.getRoot(), resId, Snackbar.LENGTH_SHORT).show(); } } } @@ -1348,7 +1313,7 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele } private void goToSubreddit() { - View rootView = getLayoutInflater().inflate(R.layout.dialog_go_to_thing_edit_text, coordinatorLayout, false); + View rootView = getLayoutInflater().inflate(R.layout.dialog_go_to_thing_edit_text, binding.getRoot(), false); TextInputEditText thingEditText = rootView.findViewById(R.id.text_input_edit_text_go_to_thing_edit_text); RecyclerView recyclerView = rootView.findViewById(R.id.recycler_view_go_to_thing_edit_text); thingEditText.requestFocus(); @@ -1436,7 +1401,7 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele } private void goToUser() { - View rootView = getLayoutInflater().inflate(R.layout.dialog_go_to_thing_edit_text, coordinatorLayout, false); + View rootView = getLayoutInflater().inflate(R.layout.dialog_go_to_thing_edit_text, binding.getRoot(), false); TextInputEditText thingEditText = rootView.findViewById(R.id.text_input_edit_text_go_to_thing_edit_text); thingEditText.requestFocus(); Utils.showKeyboard(this, new Handler(), thingEditText); @@ -1631,14 +1596,14 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele @Nullable private Fragment getCurrentFragment() { - if (viewPager2 == null || fragmentManager == null) { + if (fragmentManager == null) { return null; } - return fragmentManager.findFragmentByTag("f" + viewPager2.getCurrentItem()); + return fragmentManager.findFragmentByTag("f" + binding.viewPagerViewUserDetailActivity.getCurrentItem()); } public boolean handleKeyDown(int keyCode) { - if (viewPager2.getCurrentItem() == 0) { + if (binding.viewPagerViewUserDetailActivity.getCurrentItem() == 0) { Fragment fragment = getCurrentFragment(); if (fragment instanceof PostFragment) { return ((PostFragment) fragment).handleKeyDown(keyCode); @@ -1660,14 +1625,14 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele Fragment fragment = getCurrentFragment(); if (fragment instanceof PostFragment) { ((PostFragment) fragment).changeSortType(sortType); - Utils.displaySortTypeInToolbar(sortType, toolbar); + Utils.displaySortTypeInToolbar(sortType, binding.toolbarViewUserDetailActivity); } else if (fragment instanceof CommentsListingFragment) { mSortTypeSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TYPE_USER_COMMENT, sortType.getType().name()).apply(); if(sortType.getTime() != null) { mSortTypeSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TIME_USER_COMMENT, sortType.getTime().name()).apply(); } ((CommentsListingFragment) fragment).changeSortType(sortType); - Utils.displaySortTypeInToolbar(sortType, toolbar); + Utils.displaySortTypeInToolbar(sortType, binding.toolbarViewUserDetailActivity); } } @@ -1696,13 +1661,13 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele void displaySortTypeInToolbar() { if (fragmentManager != null) { - Fragment fragment = fragmentManager.findFragmentByTag("f" + viewPager2.getCurrentItem()); + Fragment fragment = fragmentManager.findFragmentByTag("f" + binding.viewPagerViewUserDetailActivity.getCurrentItem()); if (fragment instanceof PostFragment) { SortType sortType = ((PostFragment) fragment).getSortType(); - Utils.displaySortTypeInToolbar(sortType, toolbar); + Utils.displaySortTypeInToolbar(sortType, binding.toolbarViewUserDetailActivity); } else if (fragment instanceof CommentsListingFragment) { SortType sortType = ((CommentsListingFragment) fragment).getSortType(); - Utils.displaySortTypeInToolbar(sortType, toolbar); + Utils.displaySortTypeInToolbar(sortType, binding.toolbarViewUserDetailActivity); } } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewVideoActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewVideoActivity.java index 27d9e6cf..d20f57f8 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewVideoActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewVideoActivity.java @@ -29,8 +29,6 @@ import android.view.OrientationEventListener; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; -import android.widget.ProgressBar; -import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; @@ -38,7 +36,6 @@ import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatDelegate; -import androidx.coordinatorlayout.widget.CoordinatorLayout; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import androidx.core.graphics.Insets; @@ -67,8 +64,6 @@ import com.google.android.exoplayer2.upstream.cache.CacheDataSource; import com.google.android.exoplayer2.upstream.cache.SimpleCache; import com.google.android.exoplayer2.util.MimeTypes; import com.google.android.exoplayer2.video.VideoSize; -import com.google.android.material.bottomappbar.BottomAppBar; -import com.google.android.material.button.MaterialButton; import com.google.common.collect.ImmutableList; import com.otaliastudios.zoom.ZoomEngine; import com.otaliastudios.zoom.ZoomSurfaceView; @@ -83,10 +78,6 @@ import javax.inject.Named; import javax.inject.Provider; import app.futured.hauler.DragDirection; -import app.futured.hauler.HaulerView; -import app.futured.hauler.LockableNestedScrollView; -import butterknife.BindView; -import butterknife.ButterKnife; import ml.docilealligator.infinityforreddit.CustomFontReceiver; import ml.docilealligator.infinityforreddit.FetchRedgifsVideoLinks; import ml.docilealligator.infinityforreddit.FetchStreamableVideo; @@ -98,6 +89,8 @@ import ml.docilealligator.infinityforreddit.apis.StreamableAPI; import ml.docilealligator.infinityforreddit.apis.VReddIt; import ml.docilealligator.infinityforreddit.bottomsheetfragments.PlaybackSpeedBottomSheetFragment; import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper; +import ml.docilealligator.infinityforreddit.databinding.ActivityViewVideoBinding; +import ml.docilealligator.infinityforreddit.databinding.ActivityViewVideoZoomableBinding; import ml.docilealligator.infinityforreddit.font.ContentFontFamily; import ml.docilealligator.infinityforreddit.font.ContentFontStyle; import ml.docilealligator.infinityforreddit.font.FontFamily; @@ -152,29 +145,6 @@ public class ViewVideoActivity extends AppCompatActivity implements CustomFontRe private static final String ID_STATE= "IS"; private static final String PLAYBACK_SPEED_STATE = "PSS"; - @BindView(R.id.hauler_view_view_video_activity) - HaulerView haulerView; - @BindView(R.id.coordinator_layout_view_video_activity) - CoordinatorLayout coordinatorLayout; - @BindView(R.id.progress_bar_view_video_activity) - ProgressBar progressBar; - @BindView(R.id.mute_exo_playback_control_view) - MaterialButton muteButton; - @BindView(R.id.hd_exo_playback_control_view) - MaterialButton hdButton; - @BindView(R.id.bottom_navigation_exo_playback_control_view) - BottomAppBar bottomAppBar; - @BindView(R.id.title_text_view_exo_playback_control_view) - TextView titleTextView; - @BindView(R.id.back_button_exo_playback_control_view) - MaterialButton backButton; - @BindView(R.id.download_image_view_exo_playback_control_view) - MaterialButton downloadButton; - @BindView(R.id.playback_speed_image_view_exo_playback_control_view) - MaterialButton playbackSpeedButton; - @BindView(R.id.lockable_nested_scroll_view_view_video_activity) - LockableNestedScrollView nestedScrollView; - public Typeface typeface; private Uri mVideoUri; @@ -198,6 +168,7 @@ public class ViewVideoActivity extends AppCompatActivity implements CustomFontRe private Integer originalOrientation; private int playbackSpeed = 100; private boolean useBottomAppBar; + private ViewVideoActivityBindingAdapter binding; @Inject @Named("no_oauth") @@ -289,18 +260,19 @@ public class ViewVideoActivity extends AppCompatActivity implements CustomFontRe boolean zoomable = mSharedPreferences.getBoolean(SharedPreferencesUtils.PINCH_TO_ZOOM_VIDEO, false); if (zoomable) { + binding = new ViewVideoActivityBindingAdapter(ActivityViewVideoZoomableBinding.inflate(getLayoutInflater())); setContentView(R.layout.activity_view_video_zoomable); } else { + binding = new ViewVideoActivityBindingAdapter(ActivityViewVideoBinding.inflate(getLayoutInflater())); setContentView(R.layout.activity_view_video); } - ButterKnife.bind(this); setVolumeControlStream(AudioManager.STREAM_MUSIC); setTitle(" "); if (typeface != null) { - titleTextView.setTypeface(typeface); + binding.getTitleTextView().setTypeface(typeface); } Resources resources = getResources(); @@ -313,12 +285,12 @@ public class ViewVideoActivity extends AppCompatActivity implements CustomFontRe useBottomAppBar = mSharedPreferences.getBoolean(SharedPreferencesUtils.USE_BOTTOM_TOOLBAR_IN_MEDIA_VIEWER, false); if (useBottomAppBar) { getSupportActionBar().hide(); - bottomAppBar.setVisibility(View.VISIBLE); - backButton.setOnClickListener(view -> { + binding.getBottomAppBar().setVisibility(View.VISIBLE); + binding.getBackButton().setOnClickListener(view -> { finish(); }); - downloadButton.setOnClickListener(view -> { + binding.getDownloadButton().setOnClickListener(view -> { if (isDownloading) { return; } @@ -332,7 +304,7 @@ public class ViewVideoActivity extends AppCompatActivity implements CustomFontRe requestPermissionAndDownload(); }); - playbackSpeedButton.setOnClickListener(view -> { + binding.getPlaybackSpeedButton().setOnClickListener(view -> { changePlaybackSpeed(); }); } else { @@ -366,7 +338,7 @@ public class ViewVideoActivity extends AppCompatActivity implements CustomFontRe }); } - haulerView.setOnDragDismissedListener(dragDirection -> { + binding.getRoot().setOnDragDismissedListener(dragDirection -> { int slide = dragDirection == DragDirection.UP ? R.anim.slide_out_up : R.anim.slide_out_down; finish(); overridePendingTransition(0, slide); @@ -410,7 +382,7 @@ public class ViewVideoActivity extends AppCompatActivity implements CustomFontRe Post post = intent.getParcelableExtra(EXTRA_POST); if (post != null) { - titleTextView.setText(post.getTitle()); + binding.getTitleTextView().setText(post.getTitle()); videoFallbackDirectUrl = post.getVideoFallBackDirectUrl(); } @@ -466,11 +438,11 @@ public class ViewVideoActivity extends AppCompatActivity implements CustomFontRe @Override public void onUpdate(@NonNull ZoomEngine zoomEngine, @NonNull Matrix matrix) { if (zoomEngine.getZoom() < 1.00001) { - haulerView.setDragEnabled(true); - nestedScrollView.setScrollEnabled(true); + binding.getRoot().setDragEnabled(true); + binding.getNestedScrollView().setScrollEnabled(true); } else { - haulerView.setDragEnabled(false); - nestedScrollView.setScrollEnabled(false); + binding.getRoot().setDragEnabled(false); + binding.getNestedScrollView().setScrollEnabled(false); } } @@ -515,8 +487,8 @@ public class ViewVideoActivity extends AppCompatActivity implements CustomFontRe ImmutableList trackGroups = tracks.getGroups(); if (!trackGroups.isEmpty()) { if (videoType == VIDEO_TYPE_NORMAL) { - hdButton.setVisibility(View.VISIBLE); - hdButton.setOnClickListener(view -> { + binding.getHdButton().setVisibility(View.VISIBLE); + binding.getHdButton().setOnClickListener(view -> { TrackSelectionDialogBuilder builder = new TrackSelectionDialogBuilder(ViewVideoActivity.this, getString(R.string.select_video_quality), player, C.TRACK_TYPE_VIDEO); builder.setShowDisableOption(true); builder.setAllowAdaptiveSelections(false); @@ -544,24 +516,24 @@ public class ViewVideoActivity extends AppCompatActivity implements CustomFontRe ) ); } - if (muteButton.getVisibility() != View.VISIBLE) { - muteButton.setVisibility(View.VISIBLE); - muteButton.setOnClickListener(view -> { + if (binding.getMuteButton().getVisibility() != View.VISIBLE) { + binding.getMuteButton().setVisibility(View.VISIBLE); + binding.getMuteButton().setOnClickListener(view -> { if (isMute) { isMute = false; player.setVolume(1f); - muteButton.setIconResource(R.drawable.ic_unmute_24dp); + binding.getMuteButton().setIconResource(R.drawable.ic_unmute_24dp); } else { isMute = true; player.setVolume(0f); - muteButton.setIconResource(R.drawable.ic_mute_24dp); + binding.getMuteButton().setIconResource(R.drawable.ic_mute_24dp); } }); } } } } else { - muteButton.setVisibility(View.GONE); + binding.getMuteButton().setVisibility(View.GONE); } } @@ -669,17 +641,17 @@ public class ViewVideoActivity extends AppCompatActivity implements CustomFontRe isMute = savedInstanceState.getBoolean(IS_MUTE_STATE); if (isMute) { player.setVolume(0f); - muteButton.setIconResource(R.drawable.ic_mute_24dp); + binding.getMuteButton().setIconResource(R.drawable.ic_mute_24dp); } else { player.setVolume(1f); - muteButton.setIconResource(R.drawable.ic_unmute_24dp); + binding.getMuteButton().setIconResource(R.drawable.ic_unmute_24dp); } } else if (muteVideo) { isMute = true; player.setVolume(0f); - muteButton.setIconResource(R.drawable.ic_mute_24dp); + binding.getMuteButton().setIconResource(R.drawable.ic_mute_24dp); } else { - muteButton.setIconResource(R.drawable.ic_unmute_24dp); + binding.getMuteButton().setIconResource(R.drawable.ic_unmute_24dp); } } @@ -712,12 +684,12 @@ public class ViewVideoActivity extends AppCompatActivity implements CustomFontRe } private void loadRedgifsVideo(String redgifsId, Bundle savedInstanceState) { - progressBar.setVisibility(View.VISIBLE); + binding.getProgressBar().setVisibility(View.VISIBLE); FetchRedgifsVideoLinks.fetchRedgifsVideoLinks(mExecutor, new Handler(), mRedgifsRetrofit, mCurrentAccountSharedPreferences, redgifsId, new FetchRedgifsVideoLinks.FetchRedgifsVideoLinksListener() { @Override public void success(String webm, String mp4) { - progressBar.setVisibility(View.GONE); + binding.getProgressBar().setVisibility(View.GONE); mVideoUri = Uri.parse(webm); videoDownloadUrl = mp4; preparePlayer(savedInstanceState); @@ -727,7 +699,7 @@ public class ViewVideoActivity extends AppCompatActivity implements CustomFontRe @Override public void failed(int errorCode) { - progressBar.setVisibility(View.GONE); + binding.getProgressBar().setVisibility(View.GONE); loadFallbackVideo(savedInstanceState); //Toast.makeText(ViewVideoActivity.this, R.string.fetch_redgifs_video_failed, Toast.LENGTH_SHORT).show(); } @@ -735,7 +707,7 @@ public class ViewVideoActivity extends AppCompatActivity implements CustomFontRe } private void loadVReddItVideo(Bundle savedInstanceState) { - progressBar.setVisibility(View.VISIBLE); + binding.getProgressBar().setVisibility(View.VISIBLE); mVReddItRetrofit.create(VReddIt.class).getRedirectUrl(getIntent().getStringExtra(EXTRA_V_REDD_IT_URL)).enqueue(new Callback<>() { @Override public void onResponse(@NonNull Call call, @NonNull Response response) { @@ -773,7 +745,7 @@ public class ViewVideoActivity extends AppCompatActivity implements CustomFontRe player.setMediaSource(new ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(MediaItem.fromUri(mVideoUri))); preparePlayer(savedInstanceState); } else { - progressBar.setVisibility(View.GONE); + binding.getProgressBar().setVisibility(View.GONE); if (post.getVideoUrl() != null) { mVideoUri = Uri.parse(post.getVideoUrl()); subredditName = post.getSubredditName(); @@ -809,7 +781,7 @@ public class ViewVideoActivity extends AppCompatActivity implements CustomFontRe } private void loadStreamableVideo(String shortCode, Bundle savedInstanceState) { - progressBar.setVisibility(View.VISIBLE); + binding.getProgressBar().setVisibility(View.VISIBLE); FetchStreamableVideo.fetchStreamableVideo(mExecutor, new Handler(), mStreamableApiProvider, shortCode, new FetchStreamableVideo.FetchStreamableVideoListener() { @Override @@ -818,8 +790,8 @@ public class ViewVideoActivity extends AppCompatActivity implements CustomFontRe Toast.makeText(ViewVideoActivity.this, R.string.fetch_streamable_video_failed, Toast.LENGTH_SHORT).show(); return; } - titleTextView.setText(streamableVideo.title); - progressBar.setVisibility(View.GONE); + binding.getTitleTextView().setText(streamableVideo.title); + binding.getProgressBar().setVisibility(View.GONE); videoDownloadUrl = streamableVideo.mp4 == null ? streamableVideo.mp4Mobile.url : streamableVideo.mp4.url; mVideoUri = Uri.parse(videoDownloadUrl); preparePlayer(savedInstanceState); @@ -829,7 +801,7 @@ public class ViewVideoActivity extends AppCompatActivity implements CustomFontRe @Override public void failed() { - progressBar.setVisibility(View.GONE); + binding.getProgressBar().setVisibility(View.GONE); loadFallbackVideo(savedInstanceState); //Toast.makeText(ViewVideoActivity.this, R.string.fetch_streamable_video_failed, Toast.LENGTH_SHORT).show(); } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewVideoActivityBindingAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewVideoActivityBindingAdapter.java new file mode 100644 index 00000000..f37fcb7b --- /dev/null +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewVideoActivityBindingAdapter.java @@ -0,0 +1,97 @@ +package ml.docilealligator.infinityforreddit.activities; + +import android.widget.ProgressBar; +import android.widget.TextView; + +import androidx.annotation.Nullable; +import androidx.coordinatorlayout.widget.CoordinatorLayout; + +import com.google.android.material.bottomappbar.BottomAppBar; +import com.google.android.material.button.MaterialButton; + +import app.futured.hauler.HaulerView; +import app.futured.hauler.LockableNestedScrollView; +import ml.docilealligator.infinityforreddit.R; +import ml.docilealligator.infinityforreddit.databinding.ActivityViewVideoBinding; +import ml.docilealligator.infinityforreddit.databinding.ActivityViewVideoZoomableBinding; + +public class ViewVideoActivityBindingAdapter { + @Nullable + private ActivityViewVideoBinding binding; + @Nullable + private ActivityViewVideoZoomableBinding zoomableBinding; + + private MaterialButton muteButton; + private MaterialButton hdButton; + private BottomAppBar bottomAppBar; + private TextView titleTextView; + private MaterialButton backButton; + private MaterialButton downloadButton; + private MaterialButton playbackSpeedButton; + + public ViewVideoActivityBindingAdapter(ActivityViewVideoBinding binding) { + this.binding = binding; + muteButton = binding.getRoot().findViewById(R.id.mute_exo_playback_control_view); + hdButton = binding.getRoot().findViewById(R.id.hd_exo_playback_control_view); + bottomAppBar = binding.getRoot().findViewById(R.id.bottom_navigation_exo_playback_control_view); + titleTextView = binding.getRoot().findViewById(R.id.title_text_view_exo_playback_control_view); + backButton = binding.getRoot().findViewById(R.id.back_button_exo_playback_control_view); + downloadButton = binding.getRoot().findViewById(R.id.download_image_view_exo_playback_control_view); + playbackSpeedButton = binding.getRoot().findViewById(R.id.playback_speed_image_view_exo_playback_control_view); + } + + public ViewVideoActivityBindingAdapter(ActivityViewVideoZoomableBinding binding) { + zoomableBinding = binding; + muteButton = binding.getRoot().findViewById(R.id.mute_exo_playback_control_view); + hdButton = binding.getRoot().findViewById(R.id.hd_exo_playback_control_view); + bottomAppBar = binding.getRoot().findViewById(R.id.bottom_navigation_exo_playback_control_view); + titleTextView = binding.getRoot().findViewById(R.id.title_text_view_exo_playback_control_view); + backButton = binding.getRoot().findViewById(R.id.back_button_exo_playback_control_view); + downloadButton = binding.getRoot().findViewById(R.id.download_image_view_exo_playback_control_view); + playbackSpeedButton = binding.getRoot().findViewById(R.id.playback_speed_image_view_exo_playback_control_view); + } + + public HaulerView getRoot() { + return binding == null ? zoomableBinding.getRoot() : binding.getRoot(); + } + + public CoordinatorLayout getCoordinatorLayout() { + return binding == null ? zoomableBinding.coordinatorLayoutViewVideoActivity : binding.coordinatorLayoutViewVideoActivity; + } + + public ProgressBar getProgressBar() { + return binding == null ? zoomableBinding.progressBarViewVideoActivity : binding.progressBarViewVideoActivity; + } + + public MaterialButton getMuteButton() { + return binding.getRoot().findViewById(R.id.mute_exo_playback_control_view); + } + + public MaterialButton getHdButton() { + return hdButton; + } + + public BottomAppBar getBottomAppBar() { + return bottomAppBar; + } + + public TextView getTitleTextView() { + return titleTextView; + } + + public MaterialButton getBackButton() { + return backButton; + } + + public MaterialButton getDownloadButton() { + return downloadButton; + } + + public MaterialButton getPlaybackSpeedButton() { + return playbackSpeedButton; + } + + public LockableNestedScrollView getNestedScrollView() { + return binding == null ? zoomableBinding.lockableNestedScrollViewViewVideoActivity : binding.lockableNestedScrollViewViewVideoActivity; + } +} diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/WebViewActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/WebViewActivity.java index a7dd857f..106586f8 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/WebViewActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/WebViewActivity.java @@ -21,33 +21,19 @@ import android.webkit.WebViewClient; import android.widget.Toast; import androidx.annotation.NonNull; -import androidx.appcompat.widget.Toolbar; -import androidx.coordinatorlayout.widget.CoordinatorLayout; - -import com.google.android.material.appbar.AppBarLayout; 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.customtheme.CustomThemeWrapper; -import ml.docilealligator.infinityforreddit.customviews.LollipopBugFixedWebView; +import ml.docilealligator.infinityforreddit.databinding.ActivityWebViewBinding; import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils; import ml.docilealligator.infinityforreddit.utils.Utils; public class WebViewActivity extends BaseActivity { - @BindView(R.id.coordinator_layout_web_view_activity) - CoordinatorLayout coordinatorLayout; - @BindView(R.id.appbar_layout_web_view_activity) - AppBarLayout appBarLayout; - @BindView(R.id.toolbar_web_view_activity) - Toolbar toolbar; - @BindView(R.id.web_view_web_view_activity) - LollipopBugFixedWebView webView; @Inject @Named("default") SharedPreferences mSharedPreferences; @@ -57,6 +43,7 @@ public class WebViewActivity extends BaseActivity { @Inject CustomThemeWrapper mCustomThemeWrapper; private String url; + private ActivityWebViewBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { @@ -67,7 +54,8 @@ public class WebViewActivity extends BaseActivity { super.onCreate(savedInstanceState); try { - setContentView(R.layout.activity_web_view); + binding = ActivityWebViewBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); } catch (InflateException ie) { Log.e("LoginActivity", "Failed to inflate LoginActivity: " + ie.getMessage()); Toast.makeText(WebViewActivity.this, R.string.no_system_webview_error, Toast.LENGTH_SHORT).show(); @@ -75,38 +63,36 @@ public class WebViewActivity extends BaseActivity { return; } - ButterKnife.bind(this); - applyCustomTheme(); - setSupportActionBar(toolbar); + setSupportActionBar(binding.toolbarWebViewActivity); if (mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCESS_TOKEN, null) == null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - webView.setAnonymous(true); + binding.webViewWebViewActivity.setAnonymous(true); } - webView.getSettings().setJavaScriptEnabled(true); - webView.getSettings().setDomStorageEnabled(true); + binding.webViewWebViewActivity.getSettings().setJavaScriptEnabled(true); + binding.webViewWebViewActivity.getSettings().setDomStorageEnabled(true); url = getIntent().getDataString(); if (savedInstanceState == null) { - toolbar.setTitle(url); - webView.loadUrl(url); + binding.toolbarWebViewActivity.setTitle(url); + binding.webViewWebViewActivity.loadUrl(url); } WebViewClient client = new WebViewClient() { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { WebViewActivity.this.url = url; - toolbar.setTitle(url); + binding.toolbarWebViewActivity.setTitle(url); } @Override public void onPageFinished(WebView view, String url) { - toolbar.setTitle(view.getTitle()); + binding.toolbarWebViewActivity.setTitle(view.getTitle()); } }; - webView.setWebViewClient(client); + binding.webViewWebViewActivity.setWebViewClient(client); } @Override @@ -126,10 +112,11 @@ public class WebViewActivity extends BaseActivity { @Override protected void applyCustomTheme() { - coordinatorLayout.setBackgroundColor(mCustomThemeWrapper.getBackgroundColor()); - applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(appBarLayout, null, toolbar); + binding.getRoot().setBackgroundColor(mCustomThemeWrapper.getBackgroundColor()); + applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(binding.appbarLayoutWebViewActivity, + null, binding.toolbarWebViewActivity); Drawable closeIcon = Utils.getTintedDrawable(this, R.drawable.ic_close_24dp, mCustomThemeWrapper.getToolbarPrimaryTextAndIconColor()); - toolbar.setNavigationIcon(closeIcon); + binding.toolbarWebViewActivity.setNavigationIcon(closeIcon); } @Override @@ -145,7 +132,7 @@ public class WebViewActivity extends BaseActivity { finish(); return true; } else if (item.getItemId() == R.id.action_refresh_web_view_activity) { - webView.reload(); + binding.webViewWebViewActivity.reload(); return true; } else if (item.getItemId() == R.id.action_share_link_web_view_activity) { try { @@ -185,8 +172,8 @@ public class WebViewActivity extends BaseActivity { public boolean onKeyDown(int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN) { if (keyCode == KeyEvent.KEYCODE_BACK) { - if (webView.canGoBack()) { - webView.goBack(); + if (binding.webViewWebViewActivity.canGoBack()) { + binding.webViewWebViewActivity.goBack(); } else { finish(); } @@ -200,12 +187,12 @@ public class WebViewActivity extends BaseActivity { @Override protected void onSaveInstanceState(@NonNull Bundle outState) { super.onSaveInstanceState(outState); - webView.saveState(outState); + binding.webViewWebViewActivity.saveState(outState); } @Override protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); - webView.restoreState(savedInstanceState); + binding.webViewWebViewActivity.restoreState(savedInstanceState); } } \ No newline at end of file diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/WikiActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/WikiActivity.java index ecc37d68..3b14e50a 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/WikiActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/WikiActivity.java @@ -10,20 +10,12 @@ import android.view.MenuItem; import android.view.View; import android.view.Window; import android.view.WindowManager; -import android.widget.ImageView; -import android.widget.LinearLayout; import android.widget.TextView; import androidx.annotation.NonNull; -import androidx.appcompat.widget.Toolbar; -import androidx.coordinatorlayout.widget.CoordinatorLayout; -import androidx.recyclerview.widget.RecyclerView; -import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import com.bumptech.glide.Glide; import com.bumptech.glide.RequestManager; -import com.google.android.material.appbar.AppBarLayout; -import com.google.android.material.appbar.CollapsingToolbarLayout; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; @@ -33,8 +25,6 @@ import org.json.JSONObject; import javax.inject.Inject; import javax.inject.Named; -import butterknife.BindView; -import butterknife.ButterKnife; import io.noties.markwon.AbstractMarkwonPlugin; import io.noties.markwon.Markwon; import io.noties.markwon.MarkwonConfiguration; @@ -50,11 +40,12 @@ import ml.docilealligator.infinityforreddit.customviews.LinearLayoutManagerBugFi import ml.docilealligator.infinityforreddit.customviews.SwipeLockInterface; import ml.docilealligator.infinityforreddit.customviews.SwipeLockLinearLayoutManager; import ml.docilealligator.infinityforreddit.customviews.slidr.Slidr; +import ml.docilealligator.infinityforreddit.databinding.ActivityWikiBinding; import ml.docilealligator.infinityforreddit.events.ChangeNetworkStatusEvent; import ml.docilealligator.infinityforreddit.events.SwitchAccountEvent; -import ml.docilealligator.infinityforreddit.markdown.EvenBetterLinkMovementMethod; import ml.docilealligator.infinityforreddit.markdown.EmoteCloseBracketInlineProcessor; import ml.docilealligator.infinityforreddit.markdown.EmotePlugin; +import ml.docilealligator.infinityforreddit.markdown.EvenBetterLinkMovementMethod; import ml.docilealligator.infinityforreddit.markdown.ImageAndGifEntry; import ml.docilealligator.infinityforreddit.markdown.ImageAndGifPlugin; import ml.docilealligator.infinityforreddit.markdown.MarkdownUtils; @@ -72,25 +63,6 @@ public class WikiActivity extends BaseActivity { public static final String EXTRA_WIKI_PATH = "EWP"; private static final String WIKI_MARKDOWN_STATE = "WMS"; - @BindView(R.id.coordinator_layout_comment_wiki_activity) - CoordinatorLayout coordinatorLayout; - @BindView(R.id.appbar_layout_comment_wiki_activity) - AppBarLayout appBarLayout; - @BindView(R.id.collapsing_toolbar_layout_wiki_activity) - CollapsingToolbarLayout collapsingToolbarLayout; - @BindView(R.id.toolbar_comment_wiki_activity) - Toolbar toolbar; - @BindView(R.id.swipe_refresh_layout_wiki_activity) - SwipeRefreshLayout swipeRefreshLayout; - @BindView(R.id.content_markdown_view_comment_wiki_activity) - RecyclerView markdownRecyclerView; - @BindView(R.id.fetch_wiki_linear_layout_wiki_activity) - LinearLayout mFetchWikiInfoLinearLayout; - @BindView(R.id.fetch_wiki_image_view_wiki_activity) - ImageView mFetchWikiInfoImageView; - @BindView(R.id.fetch_wiki_text_view_wiki_activity) - TextView mFetchWikiInfoTextView; - @Inject @Named("no_oauth") Retrofit mRetrofit; @@ -112,21 +84,22 @@ public class WikiActivity extends BaseActivity { private MarkwonAdapter markwonAdapter; private boolean isRefreshing = false; private RequestManager mGlide; + private ActivityWikiBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { ((Infinity) getApplication()).getAppComponent().inject(this); super.onCreate(savedInstanceState); - setContentView(R.layout.activity_wiki); - ButterKnife.bind(this); + binding = ActivityWikiBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); EventBus.getDefault().register(this); applyCustomTheme(); - setSupportActionBar(toolbar); + setSupportActionBar(binding.toolbarCommentWikiActivity); getSupportActionBar().setDisplayHomeAsUpEnabled(true); if (mSharedPreferences.getBoolean(SharedPreferencesUtils.SWIPE_RIGHT_TO_GO_BACK, true)) { @@ -137,7 +110,7 @@ public class WikiActivity extends BaseActivity { Window window = getWindow(); if (isChangeStatusBarIconColor()) { - addOnOffsetChangedListener(appBarLayout); + addOnOffsetChangedListener(binding.appbarLayoutCommentWikiActivity); } if (isImmersiveInterface()) { @@ -146,8 +119,8 @@ public class WikiActivity extends BaseActivity { } else { window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); } - adjustToolbar(toolbar); - markdownRecyclerView.setPadding(markdownRecyclerView.getPaddingLeft(), 0, markdownRecyclerView.getPaddingRight(), getNavBarHeight()); + adjustToolbar(binding.toolbarCommentWikiActivity); + binding.contentMarkdownViewCommentWikiActivity.setPadding(binding.contentMarkdownViewCommentWikiActivity.getPaddingLeft(), 0, binding.contentMarkdownViewCommentWikiActivity.getPaddingRight(), getNavBarHeight()); } } @@ -155,8 +128,8 @@ public class WikiActivity extends BaseActivity { mSubredditName = getIntent().getStringExtra(EXTRA_SUBREDDIT_NAME); - swipeRefreshLayout.setEnabled(mSharedPreferences.getBoolean(SharedPreferencesUtils.PULL_TO_REFRESH, true)); - swipeRefreshLayout.setOnRefreshListener(this::loadWiki); + binding.swipeRefreshLayoutWikiActivity.setEnabled(mSharedPreferences.getBoolean(SharedPreferencesUtils.PULL_TO_REFRESH, true)); + binding.swipeRefreshLayoutWikiActivity.setOnRefreshListener(this::loadWiki); int markdownColor = mCustomThemeWrapper.getPrimaryTextColor(); int spoilerBackgroundColor = markdownColor | 0xFF000000; @@ -232,8 +205,8 @@ public class WikiActivity extends BaseActivity { } } }); - markdownRecyclerView.setLayoutManager(linearLayoutManager); - markdownRecyclerView.setAdapter(markwonAdapter); + binding.contentMarkdownViewCommentWikiActivity.setLayoutManager(linearLayoutManager); + binding.contentMarkdownViewCommentWikiActivity.setAdapter(markwonAdapter); if (savedInstanceState != null) { wikiMarkdown = savedInstanceState.getString(WIKI_MARKDOWN_STATE); @@ -254,10 +227,10 @@ public class WikiActivity extends BaseActivity { } isRefreshing = true; - swipeRefreshLayout.setRefreshing(true); + binding.swipeRefreshLayoutWikiActivity.setRefreshing(true); - Glide.with(this).clear(mFetchWikiInfoImageView); - mFetchWikiInfoLinearLayout.setVisibility(View.GONE); + Glide.with(this).clear(binding.fetchWikiImageViewWikiActivity); + binding.fetchWikiLinearLayoutWikiActivity.setVisibility(View.GONE); mRetrofit.create(RedditAPI.class).getWikiPage(mSubredditName, getIntent().getStringExtra(EXTRA_WIKI_PATH)).enqueue(new Callback<>() { @Override @@ -281,23 +254,23 @@ public class WikiActivity extends BaseActivity { } } isRefreshing = false; - swipeRefreshLayout.setRefreshing(false); + binding.swipeRefreshLayoutWikiActivity.setRefreshing(false); } @Override public void onFailure(@NonNull Call call, @NonNull Throwable t) { showErrorView(R.string.error_loading_wiki); isRefreshing = false; - swipeRefreshLayout.setRefreshing(false); + binding.swipeRefreshLayoutWikiActivity.setRefreshing(false); } }); } private void showErrorView(int stringResId) { - swipeRefreshLayout.setRefreshing(false); - mFetchWikiInfoLinearLayout.setVisibility(View.VISIBLE); - mFetchWikiInfoTextView.setText(stringResId); - mGlide.load(R.drawable.error_image).into(mFetchWikiInfoImageView); + binding.swipeRefreshLayoutWikiActivity.setRefreshing(false); + binding.fetchWikiLinearLayoutWikiActivity.setVisibility(View.VISIBLE); + binding.fetchWikiTextViewWikiActivity.setText(stringResId); + mGlide.load(R.drawable.error_image).into(binding.fetchWikiImageViewWikiActivity); } @Override @@ -339,13 +312,14 @@ public class WikiActivity extends BaseActivity { @Override protected void applyCustomTheme() { - coordinatorLayout.setBackgroundColor(mCustomThemeWrapper.getBackgroundColor()); - applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(appBarLayout, collapsingToolbarLayout, toolbar); - swipeRefreshLayout.setProgressBackgroundColorSchemeColor(mCustomThemeWrapper.getCircularProgressBarBackground()); - swipeRefreshLayout.setColorSchemeColors(mCustomThemeWrapper.getColorAccent()); - mFetchWikiInfoTextView.setTextColor(mCustomThemeWrapper.getSecondaryTextColor()); + binding.getRoot().setBackgroundColor(mCustomThemeWrapper.getBackgroundColor()); + applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(binding.appbarLayoutCommentWikiActivity, + binding.collapsingToolbarLayoutWikiActivity, binding.toolbarCommentWikiActivity); + binding.swipeRefreshLayoutWikiActivity.setProgressBackgroundColorSchemeColor(mCustomThemeWrapper.getCircularProgressBarBackground()); + binding.swipeRefreshLayoutWikiActivity.setColorSchemeColors(mCustomThemeWrapper.getColorAccent()); + binding.fetchWikiTextViewWikiActivity.setTextColor(mCustomThemeWrapper.getSecondaryTextColor()); if (typeface != null) { - mFetchWikiInfoTextView.setTypeface(typeface); + binding.fetchWikiTextViewWikiActivity.setTypeface(typeface); } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/navigationdrawer/RedditSectionRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/navigationdrawer/RedditSectionRecyclerViewAdapter.java index 4555dcbd..f61e600d 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/navigationdrawer/RedditSectionRecyclerViewAdapter.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/navigationdrawer/RedditSectionRecyclerViewAdapter.java @@ -8,7 +8,6 @@ import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; import butterknife.BindView; @@ -80,24 +79,18 @@ public class RedditSectionRecyclerViewAdapter extends RecyclerView.Adapter itemClickListener.onMenuClick(finalStringId)); + holder.itemView.setOnClickListener(view -> itemClickListener.onMenuClick(finalStringId));*/ } } @Override public int getItemCount() { - //return collapseRedditSection ? 1 : REDDIT_SECTION_ITEMS + 1; return 0; } diff --git a/app/src/main/res/drawable-night/ic_trending_24dp.xml b/app/src/main/res/drawable-night/ic_trending_24dp.xml deleted file mode 100644 index d441a7f7..00000000 --- a/app/src/main/res/drawable-night/ic_trending_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_trending_24dp.xml b/app/src/main/res/drawable/ic_trending_24dp.xml deleted file mode 100644 index b237138b..00000000 --- a/app/src/main/res/drawable/ic_trending_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/layout-land/activity_view_multi_reddit_detail.xml b/app/src/main/res/layout-land/activity_view_multi_reddit_detail.xml index ef0aecbb..42a34b16 100644 --- a/app/src/main/res/layout-land/activity_view_multi_reddit_detail.xml +++ b/app/src/main/res/layout-land/activity_view_multi_reddit_detail.xml @@ -4,7 +4,6 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:id="@+id/coordinator_layout_view_multi_reddit_detail_activity" tools:context=".activities.ViewMultiRedditDetailActivity"> - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_view_image_or_gif.xml b/app/src/main/res/layout/activity_view_image_or_gif.xml index fa0a5aa8..c7791c9f 100644 --- a/app/src/main/res/layout/activity_view_image_or_gif.xml +++ b/app/src/main/res/layout/activity_view_image_or_gif.xml @@ -2,7 +2,6 @@ diff --git a/app/src/main/res/layout/activity_view_private_messages.xml b/app/src/main/res/layout/activity_view_private_messages.xml index 01c42f70..bbffb234 100644 --- a/app/src/main/res/layout/activity_view_private_messages.xml +++ b/app/src/main/res/layout/activity_view_private_messages.xml @@ -2,7 +2,6 @@ Stále chcete tuto možnost povolit?" "Odpovědět" "Příspěvek galerie" - "Trendy" "Sdílet odkaz příspěvku" - "Trendy" "Získávat oznámení o odpovědích na příspěvek" "Galerie" "Galerie příspěvků" diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index dc8905cd..d710cc16 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -1093,9 +1093,7 @@ Automatisches Abspielen von Videos ist deaktiviert." Möchtest du trotzdem fortfahren?" "Antworten" "Galeriebeitrag" - "Trending" "Teile Beitragslink" - "Trending" "Benachrichtigungen für Antworten auf Beiträge empfangen" "Galerie" "Posts Galerie" diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 2e9a811d..5839136e 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -990,9 +990,7 @@ https://play.google.com/store/apps/details?id=ml.docilealligator.infinityforredd Θέλετε σίγουρα να το ενεργοποιήσετε;" "Απάντηση" "Ανάρτηση Εικόνας" - "Σε τάση" "Κοινοποίηση Συνδέσμου Ανάρτησης" - "Σε τάση" "Λήψη μόνο ειδοποιήσεων απαντήσεων σε αναρτήσεις" "Γκαλερί" "Συλλογή Αναρτάται" diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index e019710e..0da16465 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -1104,9 +1104,7 @@ https://s3.eu-west-1.amazonaws.com/po-pub/i/hJAe7sMhrfJzqjhp9VkDQOVC.PNG --> ¿Seguro que quieres activarlo?" "Responder" "Publicación de galería" - "Tendencias" "Compartir enlace de publicación" - "Tendencias" "Recibir notificaciones de respuesta a publicaciones" "Galería" "Publicación de galería" diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 9219d343..32d22e6b 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -1170,9 +1170,7 @@ Vous voulez toujours l'activer ?" "Publier une galerie" - "Tendance" "Partager le lien du Post" - "Tendance" "Recevoir des notifications de réponse de publication" "Gallerie" "Publication de la galerie" diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index f639c35d..f86167ed 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -994,9 +994,7 @@ La riproduzione automatica video è disabilitata." Vuoi comunque abilitare l'opzione?" "Rispondi" "Galleria post" - "Popolari" "Condividi post link" - "Popolari" "Ricevi notifiche per le risposte" "Galleria" "Galleria dei post" diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 64106cf2..174f80b1 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -1104,7 +1104,6 @@ https://play.google.com/store/apps/details?id=ml.docilealligator.infinityforredd それでも有効にしますか?" "返信" "ギャラリー投稿" - "トレンド" "投稿リンクを共有" "ギャラリー" "ギャラリーを投稿" diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index a8de9df4..13017488 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -1042,9 +1042,7 @@ Automatisch afspelen van video is uitgeschakeld." Wil je het nog steeds activeren?" "Antwoord" "Gallerijpost" - "Trending" "Deel Post Link" - "Trending" "Ontvang Post Reactie Notificaties" "Gallerij" "Post gallerij" diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 97da0690..5283be3f 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -1044,9 +1044,7 @@ użytkownika / multireddita" Nadal chcesz ją włączyć?" "Odpowiedz" "Post z galerią zdjęć" - "Popularne" "Udostępnij link do postu" - "Popularne" "Otrzymuj powiadomienia o odpowiedziach na post" "Galeria" "Reddit" diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index af71be19..ab85b277 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -1032,9 +1032,7 @@ A reprodução automática de vídeos fica desativada." Ainda quer a ativar?" "Responder" "Postar galeria" - "Tendências" "Compartilhar link da postagem" - "Em alta" "Receber notificações de respostas às postagens" "Galeria" "Postando galeria" diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 21eb51aa..80c031a3 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -1053,9 +1053,7 @@ Reprodução automática de vídeos desativada." Ainda deseja ativar esta opção?" "Responder" "Publicação de Galeria" - "Tendências" "Partilhar Endereço da Publicação" - "Tendências" "Receber notificações de respostas de publicações" "Galeria" "A Publicar Galeria" diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 876cd319..db8a0aa7 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -1044,9 +1044,7 @@ Redarea automată a videoclipurilor este dezactivată." Încă dorești să-l activezi?" "Răspunde" "Postare Galerie" - "În Tendințe" "Partajează link postare" - "În Tendințe" "Primește notificări de răspuns la postări" "Galerie" "Galeria de Postări" diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 94908ce3..e3a7fe43 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -1064,9 +1064,7 @@ https://play.google.com/store/apps/details?id=ml.docilealligator.infinityforredd Всё ещё хотите включить его?" "Ответ" "Пост в галерее" - "Популярное" "Поделиться ссылкой на пост" - "Популярное" "Получать уведомления об ответах на пост" "Галерея" "Галерея постов" diff --git a/app/src/main/res/values-ta/strings.xml b/app/src/main/res/values-ta/strings.xml index 1c2ff6ab..6fdc6705 100644 --- a/app/src/main/res/values-ta/strings.xml +++ b/app/src/main/res/values-ta/strings.xml @@ -688,9 +688,7 @@ "சிதைவறிக்கைகள் அழிக்கப்பட்டன" "பதிலளி" - "பிரபலமாகும்" "இடுகை தொடுப்பைப் பகிர்" - "பிரபலமாகும்" "காட்சியகம்" "ரெட்டிட்" "பல்ரெட்டிட்டைக் காட்டு" diff --git a/app/src/main/res/values-tr-rTR/strings.xml b/app/src/main/res/values-tr-rTR/strings.xml index 62751dcc..fae043f3 100644 --- a/app/src/main/res/values-tr-rTR/strings.xml +++ b/app/src/main/res/values-tr-rTR/strings.xml @@ -1074,9 +1074,7 @@ Otomatik video oynatma kapatılır." Yine de etkinleştirmek istiyor musunuz?" "Yanıtla" "Galeri Gönderisi" - "Trendler" "Gönderi Bağlantısını Paylaş" - "Trendler" "Gönderi yanıtlanınca bildirimlerini al" "Galeri" "Galeri Paylaşma" diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index aaff92f8..e83c4fa4 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -1048,9 +1048,7 @@ https://play.google.com/store/apps/details?id=ml.docilealligator.infinityforredd Усе ще бажаєте ввімкнути це?" "Відповісти" "Допис галереї" - "Тенденції" "Поширити ланку допису" - "Тенденції" "Отримувати сповіщення про відповіді на дописи" "Галерея" "Публікування галереї" diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 8b8bd8d4..54d4d75c 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -1067,9 +1067,7 @@ Tự động phát video bị tắt." Bạn có vẫn muốn bật tuỳ chọn này không?" "Trả lời" "Bài đăng bộ sưu tập" - "Trending" "Chia sẻ đường link bài đăng" - "Trending" "Nhận thông báo trả lời trong bài đăng" "Bộ sưu tập" "Đăng bộ sưu tập" diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 5260a84e..44bb0d19 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -1069,9 +1069,7 @@ Reddit 视频分辨率较低。 仍然要继续吗?" "回复" "相册帖" - "热门" "分享帖子链接" - "热门" "接收帖子回复提醒" "相册" "相册发布中" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 86dafe41..8049801c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -40,7 +40,6 @@ Users Select a Multireddit Gallery Post - Trending Wiki Edit Profile Poll Post @@ -141,7 +140,6 @@ History Inbox Inbox (%1$,d) - Trending Upvoted Downvoted Hidden -- cgit v1.2.3