mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-11-10 20:57:25 +01:00
New option in ViewPostDetailFragment: Add to Post Filter. Fix a bug when saving a Post Filter.
This commit is contained in:
parent
5976999131
commit
398d53c162
@ -4,6 +4,7 @@ import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
@ -49,6 +50,11 @@ public class CustomizePostFilterActivity extends BaseActivity {
|
||||
|
||||
public static final String EXTRA_POST_FILTER = "EPF";
|
||||
public static final String EXTRA_FROM_SETTINGS = "EFS";
|
||||
public static final String EXTRA_EXCLUDE_SUBREDDIT = "EES";
|
||||
public static final String EXTRA_EXCLUDE_USER = "EEU";
|
||||
public static final String EXTRA_EXCLUDE_FLAIR = "EEF";
|
||||
public static final String EXTRA_CONTAIN_FLAIR = "ECF";
|
||||
public static final String EXTRA_EXCLUDE_DOMAIN = "EED";
|
||||
public static final String RETURN_EXTRA_POST_FILTER = "REPF";
|
||||
private static final String POST_FILTER_STATE = "PFS";
|
||||
private static final String ORIGINAL_NAME_STATE = "ONS";
|
||||
@ -309,6 +315,44 @@ public class CustomizePostFilterActivity extends BaseActivity {
|
||||
maxCommentsTextInputEditText.setText(Integer.toString(postFilter.maxComments));
|
||||
minAwardsTextInputEditText.setText(Integer.toString(postFilter.minAwards));
|
||||
maxAwardsTextInputEditText.setText(Integer.toString(postFilter.maxAwards));
|
||||
|
||||
Intent intent = getIntent();
|
||||
String excludeSubreddit = intent.getStringExtra(EXTRA_EXCLUDE_SUBREDDIT);
|
||||
String excludeUser = intent.getStringExtra(EXTRA_EXCLUDE_USER);
|
||||
String excludeFlair = intent.getStringExtra(EXTRA_EXCLUDE_FLAIR);
|
||||
String containFlair = intent.getStringExtra(EXTRA_CONTAIN_FLAIR);
|
||||
String excludeDomain = intent.getStringExtra(EXTRA_EXCLUDE_DOMAIN);
|
||||
|
||||
if (excludeSubreddit != null && !excludeSubreddit.equals("")) {
|
||||
if (!excludesSubredditsTextInputEditText.getText().toString().equals("")) {
|
||||
excludesSubredditsTextInputEditText.append(",");
|
||||
}
|
||||
excludesSubredditsTextInputEditText.append(excludeSubreddit);
|
||||
}
|
||||
if (excludeUser != null && !excludeUser.equals("")) {
|
||||
if (!excludesUsersTextInputEditText.getText().toString().equals("")) {
|
||||
excludesUsersTextInputEditText.append(",");
|
||||
}
|
||||
excludesUsersTextInputEditText.append(excludeUser);
|
||||
}
|
||||
if (excludeFlair != null && !excludeFlair.equals("")) {
|
||||
if (!excludesFlairsTextInputEditText.getText().toString().equals("")) {
|
||||
excludesFlairsTextInputEditText.append(",");
|
||||
}
|
||||
excludesFlairsTextInputEditText.append(excludeFlair);
|
||||
}
|
||||
if (containFlair != null && !containFlair.equals("")) {
|
||||
if (!containsFlairsTextInputEditText.getText().toString().equals("")) {
|
||||
containsFlairsTextInputEditText.append(",");
|
||||
}
|
||||
containsFlairsTextInputEditText.append(containFlair);
|
||||
}
|
||||
if (excludeDomain != null && !excludeDomain.equals("")) {
|
||||
if (!excludesDomainsTextInputEditText.getText().toString().equals("")) {
|
||||
excludesDomainsTextInputEditText.append(",");
|
||||
}
|
||||
excludesDomainsTextInputEditText.append(Uri.parse(excludeDomain).getHost());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -496,7 +540,7 @@ public class CustomizePostFilterActivity extends BaseActivity {
|
||||
postFilter.postTitleExcludesStrings = titleExcludesStringsTextInputEditText.getText().toString();
|
||||
postFilter.excludeSubreddits = excludesSubredditsTextInputEditText.getText().toString();
|
||||
postFilter.excludeUsers = excludesUsersTextInputEditText.getText().toString();
|
||||
postFilter.excludeFlairs = excludesUsersTextInputEditText.getText().toString();
|
||||
postFilter.excludeFlairs = excludesFlairsTextInputEditText.getText().toString();
|
||||
postFilter.containFlairs = containsFlairsTextInputEditText.getText().toString();
|
||||
postFilter.excludeDomains = excludesDomainsTextInputEditText.getText().toString();
|
||||
postFilter.containTextType = postTypeTextCheckBox.isChecked();
|
||||
|
@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.google.android.material.appbar.AppBarLayout;
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
@ -27,12 +28,15 @@ import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||
import ml.docilealligator.infinityforreddit.adapters.PostFilterRecyclerViewAdapter;
|
||||
import ml.docilealligator.infinityforreddit.bottomsheetfragments.PostFilterOptionsBottomSheetFragment;
|
||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
||||
import ml.docilealligator.infinityforreddit.post.Post;
|
||||
import ml.docilealligator.infinityforreddit.postfilter.DeletePostFilter;
|
||||
import ml.docilealligator.infinityforreddit.postfilter.PostFilter;
|
||||
import ml.docilealligator.infinityforreddit.postfilter.PostFilterViewModel;
|
||||
|
||||
public class PostFilterPreferenceActivity extends BaseActivity {
|
||||
|
||||
public static final String EXTRA_POST = "EP";
|
||||
|
||||
@BindView(R.id.coordinator_layout_post_filter_preference_activity)
|
||||
CoordinatorLayout coordinatorLayout;
|
||||
@BindView(R.id.appbar_layout_post_filter_preference_activity)
|
||||
@ -71,18 +75,28 @@ public class PostFilterPreferenceActivity extends BaseActivity {
|
||||
setSupportActionBar(toolbar);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
Post post = getIntent().getParcelableExtra(EXTRA_POST);
|
||||
|
||||
fab.setOnClickListener(view -> {
|
||||
Intent intent = new Intent(PostFilterPreferenceActivity.this, CustomizePostFilterActivity.class);
|
||||
intent.putExtra(CustomizePostFilterActivity.EXTRA_FROM_SETTINGS, true);
|
||||
startActivity(intent);
|
||||
if (post == null) {
|
||||
Intent intent = new Intent(PostFilterPreferenceActivity.this, CustomizePostFilterActivity.class);
|
||||
intent.putExtra(CustomizePostFilterActivity.EXTRA_FROM_SETTINGS, true);
|
||||
startActivity(intent);
|
||||
} else {
|
||||
showPostFilterOptions(post, null);
|
||||
}
|
||||
});
|
||||
|
||||
adapter = new PostFilterRecyclerViewAdapter(postFilter -> {
|
||||
PostFilterOptionsBottomSheetFragment postFilterOptionsBottomSheetFragment = new PostFilterOptionsBottomSheetFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putParcelable(PostFilterOptionsBottomSheetFragment.EXTRA_POST_FILTER, postFilter);
|
||||
postFilterOptionsBottomSheetFragment.setArguments(bundle);
|
||||
postFilterOptionsBottomSheetFragment.show(getSupportFragmentManager(), postFilterOptionsBottomSheetFragment.getTag());
|
||||
if (post == null) {
|
||||
PostFilterOptionsBottomSheetFragment postFilterOptionsBottomSheetFragment = new PostFilterOptionsBottomSheetFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putParcelable(PostFilterOptionsBottomSheetFragment.EXTRA_POST_FILTER, postFilter);
|
||||
postFilterOptionsBottomSheetFragment.setArguments(bundle);
|
||||
postFilterOptionsBottomSheetFragment.show(getSupportFragmentManager(), postFilterOptionsBottomSheetFragment.getTag());
|
||||
} else {
|
||||
showPostFilterOptions(post, postFilter);
|
||||
}
|
||||
});
|
||||
|
||||
recyclerView.setAdapter(adapter);
|
||||
@ -93,6 +107,44 @@ public class PostFilterPreferenceActivity extends BaseActivity {
|
||||
postFilterViewModel.getPostFilterListLiveData().observe(this, postFilters -> adapter.setPostFilterList(postFilters));
|
||||
}
|
||||
|
||||
public void showPostFilterOptions(Post post, PostFilter postFilter) {
|
||||
String[] options = getResources().getStringArray(R.array.add_to_post_filter_options);
|
||||
boolean[] selectedOptions = new boolean[]{false, false, false, false, false};
|
||||
new MaterialAlertDialogBuilder(this, R.style.MaterialAlertDialogTheme)
|
||||
.setTitle(R.string.select)
|
||||
.setMultiChoiceItems(options, selectedOptions, (dialogInterface, i, b) -> selectedOptions[i] = b)
|
||||
.setPositiveButton(R.string.ok, (dialogInterface, i) -> {
|
||||
Intent intent = new Intent(PostFilterPreferenceActivity.this, CustomizePostFilterActivity.class);
|
||||
if (postFilter != null) {
|
||||
intent.putExtra(CustomizePostFilterActivity.EXTRA_POST_FILTER, postFilter);
|
||||
}
|
||||
intent.putExtra(CustomizePostFilterActivity.EXTRA_FROM_SETTINGS, true);
|
||||
for (int j = 0; j < selectedOptions.length; j++) {
|
||||
if (selectedOptions[j]) {
|
||||
switch (j) {
|
||||
case 0:
|
||||
intent.putExtra(CustomizePostFilterActivity.EXTRA_EXCLUDE_SUBREDDIT, post.getSubredditName());
|
||||
break;
|
||||
case 1:
|
||||
intent.putExtra(CustomizePostFilterActivity.EXTRA_EXCLUDE_USER, post.getAuthor());
|
||||
break;
|
||||
case 2:
|
||||
intent.putExtra(CustomizePostFilterActivity.EXTRA_EXCLUDE_FLAIR, post.getFlair());
|
||||
break;
|
||||
case 3:
|
||||
intent.putExtra(CustomizePostFilterActivity.EXTRA_CONTAIN_FLAIR, post.getFlair());
|
||||
break;
|
||||
case 4:
|
||||
intent.putExtra(CustomizePostFilterActivity.EXTRA_EXCLUDE_DOMAIN, post.getUrl());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
startActivity(intent);
|
||||
})
|
||||
.show();
|
||||
}
|
||||
|
||||
public void editPostFilter(PostFilter postFilter) {
|
||||
Intent intent = new Intent(PostFilterPreferenceActivity.this, CustomizePostFilterActivity.class);
|
||||
intent.putExtra(CustomizePostFilterActivity.EXTRA_POST_FILTER, postFilter);
|
||||
|
@ -71,7 +71,7 @@ public class PostFilterRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
|
||||
super(itemView);
|
||||
textView = (TextView) itemView;
|
||||
itemView.setOnClickListener(view -> {
|
||||
onItemClickListener.onItemClick(postFilterList.get(getAdapterPosition() - 1));
|
||||
onItemClickListener.onItemClick(postFilterList.get(getBindingAdapterPosition() - 1));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -72,6 +72,7 @@ import ml.docilealligator.infinityforreddit.SortType;
|
||||
import ml.docilealligator.infinityforreddit.activities.CommentActivity;
|
||||
import ml.docilealligator.infinityforreddit.activities.EditPostActivity;
|
||||
import ml.docilealligator.infinityforreddit.activities.GiveAwardActivity;
|
||||
import ml.docilealligator.infinityforreddit.activities.PostFilterPreferenceActivity;
|
||||
import ml.docilealligator.infinityforreddit.activities.ReportActivity;
|
||||
import ml.docilealligator.infinityforreddit.activities.SubmitCrosspostActivity;
|
||||
import ml.docilealligator.infinityforreddit.activities.ViewPostDetailActivity;
|
||||
@ -953,6 +954,11 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
submitCrosspostIntent.putExtra(SubmitCrosspostActivity.EXTRA_POST, mPost);
|
||||
startActivity(submitCrosspostIntent);
|
||||
return true;
|
||||
} else if (itemId == R.id.action_add_to_post_filter_view_post_detail_fragment) {
|
||||
Intent intent = new Intent(activity, PostFilterPreferenceActivity.class);
|
||||
intent.putExtra(PostFilterPreferenceActivity.EXTRA_POST, mPost);
|
||||
startActivity(intent);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -99,4 +99,10 @@
|
||||
android:orderInCategory="15"
|
||||
android:title="@string/action_crosspost"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_add_to_post_filter_view_post_detail_fragment"
|
||||
android:orderInCategory="16"
|
||||
android:title="@string/action_add_to_post_filter"
|
||||
app:showAsAction="never" />
|
||||
</menu>
|
||||
|
@ -421,4 +421,12 @@
|
||||
<item>2</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="add_to_post_filter_options">
|
||||
<item>@string/exclude_subreddit</item>
|
||||
<item>@string/exclude_user</item>
|
||||
<item>@string/exclude_flair</item>
|
||||
<item>@string/contain_flair</item>
|
||||
<item>@string/exclude_domain</item>
|
||||
</string-array>
|
||||
|
||||
</resources>
|
@ -81,6 +81,7 @@
|
||||
<string name="action_add_to_multireddit">Add to Multireddit</string>
|
||||
<string name="action_share_link">Share Link</string>
|
||||
<string name="action_copy_link">Copy Link</string>
|
||||
<string name="action_add_to_post_filter">Add to Post Filter</string>
|
||||
|
||||
<string name="parse_json_response_error">Error occurred when parsing the JSON response</string>
|
||||
<string name="retrieve_token_error">Error Retrieving the token</string>
|
||||
@ -1083,4 +1084,11 @@
|
||||
<string name="upvote">Upvote</string>
|
||||
<string name="downvote">Downvote</string>
|
||||
|
||||
<string name="select">Select</string>
|
||||
<string name="exclude_subreddit">Exclude this subreddit</string>
|
||||
<string name="exclude_user">Exclude this user</string>
|
||||
<string name="exclude_flair">Exclude this flair</string>
|
||||
<string name="contain_flair">Contain this flair</string>
|
||||
<string name="exclude_domain">Exclude Domain</string>
|
||||
|
||||
</resources>
|
||||
|
Loading…
Reference in New Issue
Block a user