aboutsummaryrefslogtreecommitdiff
path: root/app/src/main
diff options
context:
space:
mode:
authorAlex Ning <chineseperson5@gmail.com>2021-02-25 15:34:26 +0000
committerAlex Ning <chineseperson5@gmail.com>2021-02-25 15:34:26 +0000
commitb86e5284a21271e2cd791538e05b3a353e28d01a (patch)
treed9abff18dcd939d012d4de283dadf250e3df07c6 /app/src/main
parentabb37707fbc34c5c1a77b3990642a44b560dcd71 (diff)
downloadinfinity-for-reddit-b86e5284a21271e2cd791538e05b3a353e28d01a.tar
infinity-for-reddit-b86e5284a21271e2cd791538e05b3a353e28d01a.tar.gz
infinity-for-reddit-b86e5284a21271e2cd791538e05b3a353e28d01a.tar.bz2
infinity-for-reddit-b86e5284a21271e2cd791538e05b3a353e28d01a.tar.lz
infinity-for-reddit-b86e5284a21271e2cd791538e05b3a353e28d01a.tar.xz
infinity-for-reddit-b86e5284a21271e2cd791538e05b3a353e28d01a.tar.zst
infinity-for-reddit-b86e5284a21271e2cd791538e05b3a353e28d01a.zip
Multi-selection in subreddit search result for CustomizePostFilterActivity.
Diffstat (limited to '')
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchActivity.java15
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchSubredditsResultActivity.java29
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubredditMultiselectionActivity.java6
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/adapters/SubredditListingRecyclerViewAdapter.java108
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/fragments/SubredditListingFragment.java28
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/subreddit/SubredditData.java12
-rw-r--r--app/src/main/res/layout/item_subreddit_listing.xml8
-rw-r--r--app/src/main/res/menu/search_subreddits_result_activity.xml10
8 files changed, 166 insertions, 50 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchActivity.java
index 9dd2a891..903f2180 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchActivity.java
@@ -53,8 +53,10 @@ public class SearchActivity extends BaseActivity {
static final String EXTRA_SEARCH_ONLY_USERS = "ESOU";
static final String EXTRA_RETURN_SUBREDDIT_NAME = "ERSN";
static final String EXTRA_RETURN_SUBREDDIT_ICON_URL = "ERSIU";
+ static final String RETURN_EXTRA_SELECTED_SUBREDDIT_NAMES = "RESSN";
static final String EXTRA_RETURN_USER_NAME = "ERUN";
static final String EXTRA_RETURN_USER_ICON_URL = "ERUIU";
+ static final String EXTRA_IS_MULTI_SELECTION = "EIMS";
private static final String SUBREDDIT_NAME_STATE = "SNS";
private static final String SUBREDDIT_IS_USER_STATE = "SIUS";
@@ -249,6 +251,7 @@ public class SearchActivity extends BaseActivity {
if (searchOnlySubreddits) {
Intent intent = new Intent(SearchActivity.this, SearchSubredditsResultActivity.class);
intent.putExtra(SearchSubredditsResultActivity.EXTRA_QUERY, query);
+ intent.putExtra(SearchSubredditsResultActivity.EXTRA_IS_MULTI_SELECTION, getIntent().getBooleanExtra(EXTRA_IS_MULTI_SELECTION, false));
startActivityForResult(intent, SUBREDDIT_SEARCH_REQUEST_CODE);
} else if (searchOnlyUsers) {
Intent intent = new Intent(this, SearchUsersResultActivity.class);
@@ -340,11 +343,15 @@ public class SearchActivity extends BaseActivity {
subredditNameTextView.setText(subredditName);
}
} else if (requestCode == SUBREDDIT_SEARCH_REQUEST_CODE) {
- String name = data.getStringExtra(SearchSubredditsResultActivity.EXTRA_RETURN_SUBREDDIT_NAME);
- String iconUrl = data.getStringExtra(SearchSubredditsResultActivity.EXTRA_RETURN_SUBREDDIT_ICON_URL);
Intent returnIntent = new Intent();
- returnIntent.putExtra(EXTRA_RETURN_SUBREDDIT_NAME, name);
- returnIntent.putExtra(EXTRA_RETURN_SUBREDDIT_ICON_URL, iconUrl);
+ if (getIntent().getBooleanExtra(EXTRA_IS_MULTI_SELECTION, false)) {
+ returnIntent.putStringArrayListExtra(RETURN_EXTRA_SELECTED_SUBREDDIT_NAMES, data.getStringArrayListExtra(SearchSubredditsResultActivity.RETURN_EXTRA_SELECTED_SUBREDDIT_NAMES));
+ } else {
+ String name = data.getStringExtra(SearchSubredditsResultActivity.EXTRA_RETURN_SUBREDDIT_NAME);
+ String iconUrl = data.getStringExtra(SearchSubredditsResultActivity.EXTRA_RETURN_SUBREDDIT_ICON_URL);
+ returnIntent.putExtra(EXTRA_RETURN_SUBREDDIT_NAME, name);
+ returnIntent.putExtra(EXTRA_RETURN_SUBREDDIT_ICON_URL, iconUrl);
+ }
setResult(Activity.RESULT_OK, returnIntent);
finish();
} else if (requestCode == USER_SEARCH_REQUEST_CODE) {
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchSubredditsResultActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchSubredditsResultActivity.java
index b6882196..597c9ca2 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchSubredditsResultActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchSubredditsResultActivity.java
@@ -5,6 +5,7 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
+import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
@@ -21,6 +22,9 @@ import com.r0adkll.slidr.Slidr;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
+import java.util.ArrayList;
+import java.util.List;
+
import javax.inject.Inject;
import javax.inject.Named;
@@ -32,6 +36,7 @@ import ml.docilealligator.infinityforreddit.R;
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
import ml.docilealligator.infinityforreddit.events.SwitchAccountEvent;
import ml.docilealligator.infinityforreddit.fragments.SubredditListingFragment;
+import ml.docilealligator.infinityforreddit.subreddit.SubredditData;
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
public class SearchSubredditsResultActivity extends BaseActivity implements ActivityToolbarInterface {
@@ -39,6 +44,8 @@ public class SearchSubredditsResultActivity extends BaseActivity implements Acti
static final String EXTRA_QUERY = "EQ";
static final String EXTRA_RETURN_SUBREDDIT_NAME = "ERSN";
static final String EXTRA_RETURN_SUBREDDIT_ICON_URL = "ERSIU";
+ static final String EXTRA_IS_MULTI_SELECTION = "EIMS";
+ static final String RETURN_EXTRA_SELECTED_SUBREDDIT_NAMES = "RESS";
private static final String FRAGMENT_OUT_STATE = "FOS";
@@ -113,6 +120,7 @@ public class SearchSubredditsResultActivity extends BaseActivity implements Acti
bundle.putBoolean(SubredditListingFragment.EXTRA_IS_GETTING_SUBREDDIT_INFO, true);
bundle.putString(SubredditListingFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
bundle.putString(SubredditListingFragment.EXTRA_ACCOUNT_NAME, mAccountName);
+ bundle.putBoolean(SubredditListingFragment.EXTRA_IS_MULTI_SELECTION, getIntent().getBooleanExtra(EXTRA_IS_MULTI_SELECTION, false));
mFragment.setArguments(bundle);
getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout_search_subreddits_result_activity, mFragment).commit();
} else {
@@ -146,10 +154,31 @@ public class SearchSubredditsResultActivity extends BaseActivity implements Acti
}
@Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ if (getIntent().getBooleanExtra(EXTRA_IS_MULTI_SELECTION, false)) {
+ getMenuInflater().inflate(R.menu.search_subreddits_result_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_save_search_subreddits_result_activity) {
+ if (mFragment != null) {
+ List<SubredditData> subreddits = ((SubredditListingFragment) mFragment).getSelectedSubreddits();
+ ArrayList<String> subredditNames = new ArrayList<>();
+ for (SubredditData s : subreddits) {
+ subredditNames.add(s.getName());
+ }
+ Intent returnIntent = new Intent();
+ returnIntent.putStringArrayListExtra(RETURN_EXTRA_SELECTED_SUBREDDIT_NAMES, subredditNames);
+ setResult(Activity.RESULT_OK, returnIntent);
+ finish();
+ }
}
return false;
}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubredditMultiselectionActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubredditMultiselectionActivity.java
index 23efef58..69b83579 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubredditMultiselectionActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/SubredditMultiselectionActivity.java
@@ -191,6 +191,7 @@ public class SubredditMultiselectionActivity extends BaseActivity implements Act
} else if (itemId == R.id.action_search_subreddit_multiselection_activity) {
Intent intent = new Intent(this, SearchActivity.class);
intent.putExtra(SearchActivity.EXTRA_SEARCH_ONLY_SUBREDDITS, true);
+ intent.putExtra(SearchActivity.EXTRA_IS_MULTI_SELECTION, true);
startActivityForResult(intent, SUBREDDIT_SEARCH_REQUEST_CODE);
}
@@ -203,7 +204,10 @@ public class SubredditMultiselectionActivity extends BaseActivity implements Act
if (requestCode == SUBREDDIT_SEARCH_REQUEST_CODE && resultCode == RESULT_OK && data != null && mAdapter != null) {
Intent returnIntent = new Intent();
ArrayList<String> selectedSubreddits = mAdapter.getAllSelectedSubreddits();
- selectedSubreddits.add(data.getStringExtra(SearchActivity.EXTRA_RETURN_SUBREDDIT_NAME));
+ ArrayList<String> searchedSubreddits = data.getStringArrayListExtra(SearchActivity.RETURN_EXTRA_SELECTED_SUBREDDIT_NAMES);
+ if (searchedSubreddits != null) {
+ selectedSubreddits.addAll(searchedSubreddits);
+ }
returnIntent.putStringArrayListExtra(EXTRA_RETURN_SELECTED_SUBREDDITS, selectedSubreddits);
setResult(RESULT_OK, returnIntent);
finish();
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/SubredditListingRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/SubredditListingRecyclerViewAdapter.java
index 1d34c29d..69fd6091 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/SubredditListingRecyclerViewAdapter.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/SubredditListingRecyclerViewAdapter.java
@@ -22,17 +22,18 @@ import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.RequestManager;
import com.bumptech.glide.request.RequestOptions;
+import com.google.android.material.checkbox.MaterialCheckBox;
import java.util.concurrent.Executor;
import butterknife.BindView;
import butterknife.ButterKnife;
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
-import ml.docilealligator.infinityforreddit.asynctasks.CheckIsSubscribedToSubreddit;
-import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
import ml.docilealligator.infinityforreddit.NetworkState;
import ml.docilealligator.infinityforreddit.R;
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
+import ml.docilealligator.infinityforreddit.asynctasks.CheckIsSubscribedToSubreddit;
+import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
import ml.docilealligator.infinityforreddit.subreddit.SubredditData;
import ml.docilealligator.infinityforreddit.subreddit.SubredditSubscription;
import pl.droidsonroids.gif.GifImageView;
@@ -61,6 +62,7 @@ public class SubredditListingRecyclerViewAdapter extends PagedListAdapter<Subred
private String accessToken;
private String accountName;
private RedditDataRoomDatabase redditDataRoomDatabase;
+ private boolean isMultiSelection;
private int colorPrimaryLightTheme;
private int primaryTextColor;
private int secondaryTextColor;
@@ -75,7 +77,7 @@ public class SubredditListingRecyclerViewAdapter extends PagedListAdapter<Subred
CustomThemeWrapper customThemeWrapper,
String accessToken, String accountName,
RedditDataRoomDatabase redditDataRoomDatabase,
- Callback callback) {
+ boolean isMultiSelection, Callback callback) {
super(DIFF_CALLBACK);
this.context = context;
this.executor = executor;
@@ -84,6 +86,7 @@ public class SubredditListingRecyclerViewAdapter extends PagedListAdapter<Subred
this.accessToken = accessToken;
this.accountName = accountName;
this.redditDataRoomDatabase = redditDataRoomDatabase;
+ this.isMultiSelection = isMultiSelection;
this.callback = callback;
glide = Glide.with(context);
colorPrimaryLightTheme = customThemeWrapper.getColorPrimaryLightTheme();
@@ -113,52 +116,66 @@ public class SubredditListingRecyclerViewAdapter extends PagedListAdapter<Subred
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
if (holder instanceof DataViewHolder) {
SubredditData subredditData = getItem(position);
- ((DataViewHolder) holder).constraintLayout.setOnClickListener(view ->
- callback.subredditSelected(subredditData.getName(), subredditData.getIconUrl()));
+ if (subredditData != null) {
+ if (isMultiSelection) {
+ ((DataViewHolder) holder).checkBox.setOnCheckedChangeListener((compoundButton, b) -> subredditData.setSelected(b));
+ }
+ ((DataViewHolder) holder).constraintLayout.setOnClickListener(view -> {
+ if (isMultiSelection) {
+ ((DataViewHolder) holder).checkBox.performClick();
+ } else {
+ callback.subredditSelected(subredditData.getName(), subredditData.getIconUrl());
+ }
+ });
- if (!subredditData.getIconUrl().equals("")) {
- glide.load(subredditData.getIconUrl())
- .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
- .error(glide.load(R.drawable.subreddit_default_icon)
- .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))))
- .into(((DataViewHolder) holder).iconGifImageView);
- } else {
- glide.load(R.drawable.subreddit_default_icon)
- .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
- .into(((DataViewHolder) holder).iconGifImageView);
- }
+ if (!subredditData.getIconUrl().equals("")) {
+ glide.load(subredditData.getIconUrl())
+ .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
+ .error(glide.load(R.drawable.subreddit_default_icon)
+ .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))))
+ .into(((DataViewHolder) holder).iconGifImageView);
+ } else {
+ glide.load(R.drawable.subreddit_default_icon)
+ .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
+ .into(((DataViewHolder) holder).iconGifImageView);
+ }
- ((DataViewHolder) holder).subredditNameTextView.setText(subredditData.getName());
+ ((DataViewHolder) holder).subredditNameTextView.setText(subredditData.getName());
- CheckIsSubscribedToSubreddit.checkIsSubscribedToSubreddit(executor, new Handler(),
- redditDataRoomDatabase, subredditData.getName(), accountName,
- new CheckIsSubscribedToSubreddit.CheckIsSubscribedToSubredditListener() {
- @Override
- public void isSubscribed() {
- ((DataViewHolder) holder).subscribeButton.setVisibility(View.GONE);
- }
+ if (!isMultiSelection) {
+ CheckIsSubscribedToSubreddit.checkIsSubscribedToSubreddit(executor, new Handler(),
+ redditDataRoomDatabase, subredditData.getName(), accountName,
+ new CheckIsSubscribedToSubreddit.CheckIsSubscribedToSubredditListener() {
+ @Override
+ public void isSubscribed() {
+ ((DataViewHolder) holder).subscribeButton.setVisibility(View.GONE);
+ }
- @Override
- public void isNotSubscribed() {
- ((DataViewHolder) holder).subscribeButton.setVisibility(View.VISIBLE);
- ((DataViewHolder) holder).subscribeButton.setOnClickListener(view -> {
- SubredditSubscription.subscribeToSubreddit(oauthRetrofit, retrofit,
- accessToken, subredditData.getName(), accountName, redditDataRoomDatabase,
- new SubredditSubscription.SubredditSubscriptionListener() {
- @Override
- public void onSubredditSubscriptionSuccess() {
- ((DataViewHolder) holder).subscribeButton.setVisibility(View.GONE);
- Toast.makeText(context, R.string.subscribed, Toast.LENGTH_SHORT).show();
- }
+ @Override
+ public void isNotSubscribed() {
+ ((DataViewHolder) holder).subscribeButton.setVisibility(View.VISIBLE);
+ ((DataViewHolder) holder).subscribeButton.setOnClickListener(view -> {
+ SubredditSubscription.subscribeToSubreddit(oauthRetrofit, retrofit,
+ accessToken, subredditData.getName(), accountName, redditDataRoomDatabase,
+ new SubredditSubscription.SubredditSubscriptionListener() {
+ @Override
+ public void onSubredditSubscriptionSuccess() {
+ ((DataViewHolder) holder).subscribeButton.setVisibility(View.GONE);
+ Toast.makeText(context, R.string.subscribed, Toast.LENGTH_SHORT).show();
+ }
- @Override
- public void onSubredditSubscriptionFail() {
- Toast.makeText(context, R.string.subscribe_failed, Toast.LENGTH_SHORT).show();
- }
- });
+ @Override
+ public void onSubredditSubscriptionFail() {
+ Toast.makeText(context, R.string.subscribe_failed, Toast.LENGTH_SHORT).show();
+ }
+ });
+ });
+ }
});
- }
- });
+ } else {
+ ((DataViewHolder) holder).checkBox.setChecked(subredditData.isSelected());
+ }
+ }
}
}
@@ -227,12 +244,17 @@ public class SubredditListingRecyclerViewAdapter extends PagedListAdapter<Subred
TextView subredditNameTextView;
@BindView(R.id.subscribe_image_view_item_subreddit_listing)
ImageView subscribeButton;
+ @BindView(R.id.checkbox__item_subreddit_listing)
+ MaterialCheckBox checkBox;
DataViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
subredditNameTextView.setTextColor(primaryTextColor);
subscribeButton.setColorFilter(unsubscribed, android.graphics.PorterDuff.Mode.SRC_IN);
+ if (isMultiSelection) {
+ checkBox.setVisibility(View.VISIBLE);
+ }
}
}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/SubredditListingFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/SubredditListingFragment.java
index 99fc5ec4..5d42a1d8 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/SubredditListingFragment.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/SubredditListingFragment.java
@@ -25,6 +25,8 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.bumptech.glide.Glide;
+import java.util.ArrayList;
+import java.util.List;
import java.util.concurrent.Executor;
import javax.inject.Inject;
@@ -35,8 +37,8 @@ import butterknife.ButterKnife;
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
import ml.docilealligator.infinityforreddit.Infinity;
import ml.docilealligator.infinityforreddit.NetworkState;
-import ml.docilealligator.infinityforreddit.RecyclerViewContentScrollingInterface;
import ml.docilealligator.infinityforreddit.R;
+import ml.docilealligator.infinityforreddit.RecyclerViewContentScrollingInterface;
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
import ml.docilealligator.infinityforreddit.SortType;
import ml.docilealligator.infinityforreddit.activities.BaseActivity;
@@ -44,6 +46,7 @@ import ml.docilealligator.infinityforreddit.activities.SearchSubredditsResultAct
import ml.docilealligator.infinityforreddit.activities.ViewSubredditDetailActivity;
import ml.docilealligator.infinityforreddit.adapters.SubredditListingRecyclerViewAdapter;
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
+import ml.docilealligator.infinityforreddit.subreddit.SubredditData;
import ml.docilealligator.infinityforreddit.subreddit.SubredditListingViewModel;
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
import retrofit2.Retrofit;
@@ -58,6 +61,7 @@ public class SubredditListingFragment extends Fragment implements FragmentCommun
public static final String EXTRA_IS_GETTING_SUBREDDIT_INFO = "EIGSI";
public static final String EXTRA_ACCESS_TOKEN = "EAT";
public static final String EXTRA_ACCOUNT_NAME = "EAN";
+ public static final String EXTRA_IS_MULTI_SELECTION = "EIMS";
@BindView(R.id.coordinator_layout_subreddit_listing_fragment)
CoordinatorLayout mCoordinatorLayout;
@@ -140,7 +144,8 @@ public class SubredditListingFragment extends Fragment implements FragmentCommun
boolean nsfw = mNsfwAndSpoilerSharedPreferences.getBoolean((accountName == null ? "" : accountName) + SharedPreferencesUtils.NSFW_BASE, false);
mAdapter = new SubredditListingRecyclerViewAdapter(mActivity, mExecutor, mOauthRetrofit, mRetrofit,
- mCustomThemeWrapper, accessToken, accountName, mRedditDataRoomDatabase,
+ mCustomThemeWrapper, accessToken, accountName,
+ mRedditDataRoomDatabase, getArguments().getBoolean(EXTRA_IS_MULTI_SELECTION, false),
new SubredditListingRecyclerViewAdapter.Callback() {
@Override
public void retryLoadingMore() {
@@ -254,4 +259,23 @@ public class SubredditListingFragment extends Fragment implements FragmentCommun
public SortType getSortType() {
return sortType;
}
+
+ public List<SubredditData> getSelectedSubreddits() {
+ if (mSubredditListingViewModel != null) {
+ List<SubredditData> allSubreddits = mSubredditListingViewModel.getSubreddits().getValue();
+ if (allSubreddits == null) {
+ return null;
+ }
+
+ List<SubredditData> selectedSubreddits = new ArrayList<>();
+ for (SubredditData s : allSubreddits) {
+ if (s.isSelected()) {
+ selectedSubreddits.add(s);
+ }
+ }
+ return selectedSubreddits;
+ }
+
+ return null;
+ }
}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/subreddit/SubredditData.java b/app/src/main/java/ml/docilealligator/infinityforreddit/subreddit/SubredditData.java
index 21d5d130..9bdada34 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/subreddit/SubredditData.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/subreddit/SubredditData.java
@@ -3,6 +3,7 @@ package ml.docilealligator.infinityforreddit.subreddit;
import androidx.annotation.NonNull;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
+import androidx.room.Ignore;
import androidx.room.PrimaryKey;
@Entity(tableName = "subreddits")
@@ -29,6 +30,8 @@ public class SubredditData {
private String suggestedCommentSort;
@ColumnInfo(name = "over18")
private boolean isNSFW;
+ @Ignore
+ private boolean isSelected;
public SubredditData(@NonNull String id, String name, String iconUrl, String bannerUrl,
String description, String sidebarDescription, int nSubscribers, long createdUTC,
@@ -43,6 +46,7 @@ public class SubredditData {
this.createdUTC = createdUTC;
this.suggestedCommentSort = suggestedCommentSort;
this.isNSFW = isNSFW;
+ this.isSelected = false;
}
@NonNull
@@ -85,4 +89,12 @@ public class SubredditData {
public boolean isNSFW() {
return isNSFW;
}
+
+ public boolean isSelected() {
+ return isSelected;
+ }
+
+ public void setSelected(boolean selected) {
+ isSelected = selected;
+ }
}
diff --git a/app/src/main/res/layout/item_subreddit_listing.xml b/app/src/main/res/layout/item_subreddit_listing.xml
index da9c0044..a308e347 100644
--- a/app/src/main/res/layout/item_subreddit_listing.xml
+++ b/app/src/main/res/layout/item_subreddit_listing.xml
@@ -44,4 +44,12 @@
android:background="?attr/selectableItemBackground"
android:visibility="gone"/>
+ <com.google.android.material.checkbox.MaterialCheckBox
+ android:id="@+id/checkbox__item_subreddit_listing"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintBottom_toBottomOf="parent" />
+
</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file
diff --git a/app/src/main/res/menu/search_subreddits_result_activity.xml b/app/src/main/res/menu/search_subreddits_result_activity.xml
new file mode 100644
index 00000000..a788cace
--- /dev/null
+++ b/app/src/main/res/menu/search_subreddits_result_activity.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto">
+ <item
+ android:id="@+id/action_save_search_subreddits_result_activity"
+ android:orderInCategory="1"
+ android:title="@string/action_save"
+ android:icon="@drawable/ic_check_circle_toolbar_24dp"
+ app:showAsAction="ifRoom" />
+</menu> \ No newline at end of file