mirror of
https://github.com/Docile-Alligator/Infinity-For-Reddit.git
synced 2026-02-25 20:15:46 +00:00
Continue adding comment filter.
This commit is contained in:
@ -23,8 +23,7 @@
|
||||
android:maxSdkVersion="28" />
|
||||
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||
|
||||
<application
|
||||
android:name=".Infinity"
|
||||
@ -36,6 +35,15 @@
|
||||
android:theme="@style/AppTheme"
|
||||
android:usesCleartextTraffic="true"
|
||||
tools:replace="android:label">
|
||||
<activity
|
||||
android:name=".activities.CommentFilterUsageListingActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".activities.CustomizeCommentFilterActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".activities.CommentFilterPreferenceActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".activities.HistoryActivity"
|
||||
android:exported="false"
|
||||
|
||||
@ -9,6 +9,7 @@ import dagger.Component;
|
||||
import ml.docilealligator.infinityforreddit.activities.AccountPostsActivity;
|
||||
import ml.docilealligator.infinityforreddit.activities.AccountSavedThingActivity;
|
||||
import ml.docilealligator.infinityforreddit.activities.CommentActivity;
|
||||
import ml.docilealligator.infinityforreddit.activities.CommentFilterPreferenceActivity;
|
||||
import ml.docilealligator.infinityforreddit.activities.CreateMultiRedditActivity;
|
||||
import ml.docilealligator.infinityforreddit.activities.CustomThemeListingActivity;
|
||||
import ml.docilealligator.infinityforreddit.activities.CustomThemePreviewActivity;
|
||||
@ -307,6 +308,8 @@ public interface AppComponent {
|
||||
|
||||
void inject(MorePostsInfoFragment morePostsInfoFragment);
|
||||
|
||||
void inject(CommentFilterPreferenceActivity commentFilterPreferenceActivity);
|
||||
|
||||
@Component.Factory
|
||||
interface Factory {
|
||||
AppComponent create(@BindsInstance Application application);
|
||||
|
||||
@ -14,7 +14,9 @@ import androidx.sqlite.db.SupportSQLiteDatabase;
|
||||
import ml.docilealligator.infinityforreddit.account.Account;
|
||||
import ml.docilealligator.infinityforreddit.account.AccountDao;
|
||||
import ml.docilealligator.infinityforreddit.commentfilter.CommentFilter;
|
||||
import ml.docilealligator.infinityforreddit.commentfilter.CommentFilterDao;
|
||||
import ml.docilealligator.infinityforreddit.commentfilter.CommentFilterUsage;
|
||||
import ml.docilealligator.infinityforreddit.commentfilter.CommentFilterUsageDao;
|
||||
import ml.docilealligator.infinityforreddit.customtheme.CustomTheme;
|
||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeDao;
|
||||
import ml.docilealligator.infinityforreddit.multireddit.AnonymousMultiredditSubreddit;
|
||||
@ -80,6 +82,10 @@ public abstract class RedditDataRoomDatabase extends RoomDatabase {
|
||||
|
||||
public abstract AnonymousMultiredditSubredditDao anonymousMultiredditSubredditDao();
|
||||
|
||||
public abstract CommentFilterDao commentFilterDao();
|
||||
|
||||
public abstract CommentFilterUsageDao commentFilterUsageDao();
|
||||
|
||||
private static final Migration MIGRATION_1_2 = new Migration(1, 2) {
|
||||
@Override
|
||||
public void migrate(SupportSQLiteDatabase database) {
|
||||
|
||||
@ -0,0 +1,125 @@
|
||||
package ml.docilealligator.infinityforreddit.activities;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
|
||||
import butterknife.ButterKnife;
|
||||
import ml.docilealligator.infinityforreddit.Infinity;
|
||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||
import ml.docilealligator.infinityforreddit.adapters.CommentFilterWithUsageRecyclerViewAdapter;
|
||||
import ml.docilealligator.infinityforreddit.bottomsheetfragments.CommentFilterOptionsBottomSheetFragment;
|
||||
import ml.docilealligator.infinityforreddit.commentfilter.CommentFilter;
|
||||
import ml.docilealligator.infinityforreddit.commentfilter.CommentFilterWithUsageViewModel;
|
||||
import ml.docilealligator.infinityforreddit.commentfilter.DeleteCommentFilter;
|
||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
||||
import ml.docilealligator.infinityforreddit.databinding.ActivityCommentFilterPreferenceBinding;
|
||||
|
||||
public class CommentFilterPreferenceActivity extends BaseActivity {
|
||||
|
||||
private ActivityCommentFilterPreferenceBinding binding;
|
||||
|
||||
@Inject
|
||||
@Named("default")
|
||||
SharedPreferences sharedPreferences;
|
||||
@Inject
|
||||
RedditDataRoomDatabase redditDataRoomDatabase;
|
||||
@Inject
|
||||
CustomThemeWrapper customThemeWrapper;
|
||||
@Inject
|
||||
Executor executor;
|
||||
public CommentFilterWithUsageViewModel commentFilterWithUsageViewModel;
|
||||
private CommentFilterWithUsageRecyclerViewAdapter adapter;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
((Infinity) getApplication()).getAppComponent().inject(this);
|
||||
|
||||
setImmersiveModeNotApplicable();
|
||||
|
||||
super.onCreate(savedInstanceState);
|
||||
binding = ActivityCommentFilterPreferenceBinding.inflate(getLayoutInflater());
|
||||
|
||||
setContentView(binding.getRoot());
|
||||
|
||||
ButterKnife.bind(this);
|
||||
|
||||
applyCustomTheme();
|
||||
|
||||
setSupportActionBar(binding.toolbarCommentFilterPreferenceActivity);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
binding.fabCommentFilterPreferenceActivity.setOnClickListener(view -> {
|
||||
Intent intent = new Intent(this, CustomizeCommentFilterActivity.class);
|
||||
intent.putExtra(CustomizeCommentFilterActivity.EXTRA_FROM_SETTINGS, true);
|
||||
startActivity(intent);
|
||||
});
|
||||
|
||||
adapter = new CommentFilterWithUsageRecyclerViewAdapter(this, commentFilter -> {
|
||||
CommentFilterOptionsBottomSheetFragment commentFilterOptionsBottomSheetFragment = new CommentFilterOptionsBottomSheetFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putParcelable(CommentFilterOptionsBottomSheetFragment.EXTRA_POST_FILTER, commentFilter);
|
||||
commentFilterOptionsBottomSheetFragment.setArguments(bundle);
|
||||
commentFilterOptionsBottomSheetFragment.show(getSupportFragmentManager(), commentFilterOptionsBottomSheetFragment.getTag());
|
||||
});
|
||||
|
||||
binding.recyclerViewCommentFilterPreferenceActivity.setAdapter(adapter);
|
||||
|
||||
commentFilterWithUsageViewModel = new ViewModelProvider(this,
|
||||
new CommentFilterWithUsageViewModel.Factory(redditDataRoomDatabase)).get(CommentFilterWithUsageViewModel.class);
|
||||
|
||||
commentFilterWithUsageViewModel.getCommentFilterWithUsageListLiveData().observe(this, commentFilterWithUsages -> adapter.setCommentFilterWithUsageList(commentFilterWithUsages));
|
||||
}
|
||||
|
||||
public void editCommentFilter(CommentFilter commentFilter) {
|
||||
Intent intent = new Intent(this, CustomizeCommentFilterActivity.class);
|
||||
intent.putExtra(CustomizeCommentFilterActivity.EXTRA_POST_FILTER, commentFilter);
|
||||
intent.putExtra(CustomizeCommentFilterActivity.EXTRA_FROM_SETTINGS, true);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
public void applyCommentFilterTo(CommentFilter commentFilter) {
|
||||
Intent intent = new Intent(this, CommentFilterUsageListingActivity.class);
|
||||
intent.putExtra(CommentFilterUsageListingActivity.EXTRA_POST_FILTER, commentFilter);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
public void deleteCommentFilter(CommentFilter commentFilter) {
|
||||
DeleteCommentFilter.deleteCommentFilter(redditDataRoomDatabase, executor, commentFilter);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SharedPreferences getDefaultSharedPreferences() {
|
||||
return sharedPreferences;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected CustomThemeWrapper getCustomThemeWrapper() {
|
||||
return customThemeWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void applyCustomTheme() {
|
||||
applyAppBarLayoutAndCollapsingToolbarLayoutAndToolbarTheme(binding.appbarLayoutCommentFilterPreferenceActivity, binding.collapsingToolbarLayoutCommentFilterPreferenceActivity, binding.toolbarCommentFilterPreferenceActivity);
|
||||
applyFABTheme(binding.fabCommentFilterPreferenceActivity);
|
||||
binding.getRoot().setBackgroundColor(customThemeWrapper.getBackgroundColor());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||
if (item.getItemId() == android.R.id.home) {
|
||||
finish();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,18 @@
|
||||
package ml.docilealligator.infinityforreddit.activities;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
|
||||
public class CommentFilterUsageListingActivity extends AppCompatActivity {
|
||||
|
||||
public static final String EXTRA_POST_FILTER = "EPF";
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_comment_filter_usage_listing);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,19 @@
|
||||
package ml.docilealligator.infinityforreddit.activities;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
|
||||
public class CustomizeCommentFilterActivity extends AppCompatActivity {
|
||||
|
||||
public static final String EXTRA_POST_FILTER = "EPF";
|
||||
public static final String EXTRA_FROM_SETTINGS = "EFS";
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_customize_comment_filter);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,79 @@
|
||||
package ml.docilealligator.infinityforreddit.adapters;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.activities.BaseActivity;
|
||||
import ml.docilealligator.infinityforreddit.commentfilter.CommentFilterUsage;
|
||||
import ml.docilealligator.infinityforreddit.databinding.ItemCommentFilterUsageEmbeddedBinding;
|
||||
|
||||
public class CommentFilterUsageEmbeddedRecyclerViewAdapter extends RecyclerView.Adapter<CommentFilterUsageEmbeddedRecyclerViewAdapter.EntryViewHolder> {
|
||||
private BaseActivity baseActivity;
|
||||
private List<CommentFilterUsage> commentFilterUsageList;
|
||||
|
||||
public CommentFilterUsageEmbeddedRecyclerViewAdapter(BaseActivity baseActivity) {
|
||||
this.baseActivity = baseActivity;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public EntryViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
return new EntryViewHolder(ItemCommentFilterUsageEmbeddedBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull EntryViewHolder holder, int position) {
|
||||
if (commentFilterUsageList == null || commentFilterUsageList.isEmpty()) {
|
||||
holder.textView.setText(R.string.click_to_apply_post_filter);
|
||||
} else if (holder.getBindingAdapterPosition() > 4) {
|
||||
holder.textView.setText(baseActivity.getString(R.string.post_filter_usage_embedded_more_count, commentFilterUsageList.size() - 5));
|
||||
} else {
|
||||
CommentFilterUsage commentFilterUsage = commentFilterUsageList.get(holder.getBindingAdapterPosition());
|
||||
switch (commentFilterUsage.usage) {
|
||||
case CommentFilterUsage.SUBREDDIT_TYPE:
|
||||
holder.textView.setText("r/" + commentFilterUsage.nameOfUsage);
|
||||
break;
|
||||
case CommentFilterUsage.USER_TYPE:
|
||||
holder.textView.setText("u/" + commentFilterUsage.nameOfUsage);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return commentFilterUsageList == null || commentFilterUsageList.isEmpty() ? 1 : (commentFilterUsageList.size() > 5 ? 6 : commentFilterUsageList.size());
|
||||
}
|
||||
|
||||
public void setCommentFilterUsageList(List<CommentFilterUsage> commentFilterUsageList) {
|
||||
this.commentFilterUsageList = commentFilterUsageList;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
class EntryViewHolder extends RecyclerView.ViewHolder {
|
||||
TextView textView;
|
||||
|
||||
public EntryViewHolder(@NonNull ItemCommentFilterUsageEmbeddedBinding binding) {
|
||||
super(binding.getRoot());
|
||||
textView = binding.getRoot();
|
||||
|
||||
textView.setTextColor(baseActivity.customThemeWrapper.getSecondaryTextColor());
|
||||
|
||||
if (baseActivity.typeface != null) {
|
||||
textView.setTypeface(baseActivity.typeface);
|
||||
}
|
||||
|
||||
textView.setOnClickListener(view -> {
|
||||
Toast.makeText(baseActivity, textView.getText(), Toast.LENGTH_SHORT).show();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,80 @@
|
||||
package ml.docilealligator.infinityforreddit.adapters;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import ml.docilealligator.infinityforreddit.activities.BaseActivity;
|
||||
import ml.docilealligator.infinityforreddit.commentfilter.CommentFilter;
|
||||
import ml.docilealligator.infinityforreddit.commentfilter.CommentFilterWithUsage;
|
||||
import ml.docilealligator.infinityforreddit.customviews.LinearLayoutManagerBugFixed;
|
||||
import ml.docilealligator.infinityforreddit.databinding.ItemCommentFilterWithUsageBinding;
|
||||
|
||||
public class CommentFilterWithUsageRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||
private BaseActivity activity;
|
||||
private final OnItemClickListener onItemClickListener;
|
||||
private List<CommentFilterWithUsage> commentFilterWithUsageList;
|
||||
private RecyclerView.RecycledViewPool recycledViewPool;
|
||||
|
||||
public interface OnItemClickListener {
|
||||
void onItemClick(CommentFilter commentFilter);
|
||||
}
|
||||
|
||||
public CommentFilterWithUsageRecyclerViewAdapter(BaseActivity activity, OnItemClickListener onItemClickListener) {
|
||||
this.activity = activity;
|
||||
this.recycledViewPool = new RecyclerView.RecycledViewPool();
|
||||
this.onItemClickListener = onItemClickListener;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
return new CommentFilterViewHolder(ItemCommentFilterWithUsageBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
||||
if (holder instanceof CommentFilterViewHolder) {
|
||||
((CommentFilterViewHolder) holder).binding.commentFilterNameTextViewItemCommentFilter.setText(commentFilterWithUsageList.get(position - 1).commentFilter.name);
|
||||
((CommentFilterViewHolder) holder).adapter.setCommentFilterUsageList(commentFilterWithUsageList.get(position - 1).commentFilterUsageList);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return commentFilterWithUsageList == null ? 1 : 1 + commentFilterWithUsageList.size();
|
||||
}
|
||||
|
||||
public void setCommentFilterWithUsageList(List<CommentFilterWithUsage> commentFilterWithUsageList) {
|
||||
this.commentFilterWithUsageList = commentFilterWithUsageList;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
private class CommentFilterViewHolder extends RecyclerView.ViewHolder {
|
||||
ItemCommentFilterWithUsageBinding binding;
|
||||
CommentFilterUsageEmbeddedRecyclerViewAdapter adapter;
|
||||
|
||||
public CommentFilterViewHolder(@NonNull ItemCommentFilterWithUsageBinding binding) {
|
||||
super(binding.getRoot());
|
||||
this.binding = binding;
|
||||
binding.commentFilterNameTextViewItemCommentFilter.setTextColor(activity.customThemeWrapper.getPrimaryTextColor());
|
||||
|
||||
if (activity.typeface != null) {
|
||||
binding.commentFilterNameTextViewItemCommentFilter.setTypeface(activity.typeface);
|
||||
}
|
||||
|
||||
binding.getRoot().setOnClickListener(view -> {
|
||||
onItemClickListener.onItemClick(commentFilterWithUsageList.get(getBindingAdapterPosition() - 1).commentFilter);
|
||||
});
|
||||
|
||||
binding.commentFilterUsageRecyclerViewItemCommentFilter.setRecycledViewPool(recycledViewPool);
|
||||
binding.commentFilterUsageRecyclerViewItemCommentFilter.setLayoutManager(new LinearLayoutManagerBugFixed(activity));
|
||||
adapter = new CommentFilterUsageEmbeddedRecyclerViewAdapter(activity);
|
||||
binding.commentFilterUsageRecyclerViewItemCommentFilter.setAdapter(adapter);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,63 @@
|
||||
package ml.docilealligator.infinityforreddit.bottomsheetfragments;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.activities.CommentFilterPreferenceActivity;
|
||||
import ml.docilealligator.infinityforreddit.commentfilter.CommentFilter;
|
||||
import ml.docilealligator.infinityforreddit.customviews.LandscapeExpandedRoundedBottomSheetDialogFragment;
|
||||
import ml.docilealligator.infinityforreddit.databinding.FragmentCommentFilterOptionsBottomSheetBinding;
|
||||
import ml.docilealligator.infinityforreddit.utils.Utils;
|
||||
|
||||
public class CommentFilterOptionsBottomSheetFragment extends LandscapeExpandedRoundedBottomSheetDialogFragment {
|
||||
|
||||
public static final String EXTRA_POST_FILTER = "EPF";
|
||||
private CommentFilterPreferenceActivity activity;
|
||||
|
||||
public CommentFilterOptionsBottomSheetFragment() {
|
||||
// Required empty public constructor
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
// Inflate the layout for this fragment
|
||||
FragmentCommentFilterOptionsBottomSheetBinding binding = FragmentCommentFilterOptionsBottomSheetBinding.inflate(inflater, container, false);
|
||||
|
||||
CommentFilter commentFilter = getArguments().getParcelable(EXTRA_POST_FILTER);
|
||||
|
||||
binding.editTextViewCommentFilterOptionsBottomSheetFragment.setOnClickListener(view -> {
|
||||
activity.editCommentFilter(commentFilter);
|
||||
dismiss();
|
||||
});
|
||||
|
||||
binding.applyToTextViewCommentFilterOptionsBottomSheetFragment.setOnClickListener(view -> {
|
||||
activity.applyCommentFilterTo(commentFilter);
|
||||
dismiss();
|
||||
});
|
||||
|
||||
binding.deleteTextViewCommentFilterOptionsBottomSheetFragment.setOnClickListener(view -> {
|
||||
activity.deleteCommentFilter(commentFilter);
|
||||
dismiss();
|
||||
});
|
||||
|
||||
if (activity.typeface != null) {
|
||||
Utils.setFontToAllTextViews(binding.getRoot(), activity.typeface);
|
||||
}
|
||||
|
||||
return binding.getRoot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(@NonNull Context context) {
|
||||
super.onAttach(context);
|
||||
activity = (CommentFilterPreferenceActivity) context;
|
||||
}
|
||||
}
|
||||
@ -5,26 +5,17 @@ import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.activities.PostFilterPreferenceActivity;
|
||||
import ml.docilealligator.infinityforreddit.customviews.LandscapeExpandedRoundedBottomSheetDialogFragment;
|
||||
import ml.docilealligator.infinityforreddit.databinding.FragmentPostFilterOptionsBottomSheetBinding;
|
||||
import ml.docilealligator.infinityforreddit.postfilter.PostFilter;
|
||||
import ml.docilealligator.infinityforreddit.utils.Utils;
|
||||
|
||||
public class PostFilterOptionsBottomSheetFragment extends LandscapeExpandedRoundedBottomSheetDialogFragment {
|
||||
|
||||
@BindView(R.id.edit_text_view_post_filter_options_bottom_sheet_fragment)
|
||||
TextView editTextView;
|
||||
@BindView(R.id.apply_to_text_view_post_filter_options_bottom_sheet_fragment)
|
||||
TextView applyToTextView;
|
||||
@BindView(R.id.delete_text_view_post_filter_options_bottom_sheet_fragment)
|
||||
TextView deleteTextView;
|
||||
public static final String EXTRA_POST_FILTER = "EPF";
|
||||
private PostFilterPreferenceActivity activity;
|
||||
|
||||
@ -36,32 +27,30 @@ public class PostFilterOptionsBottomSheetFragment extends LandscapeExpandedRound
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
// Inflate the layout for this fragment
|
||||
View rootView = inflater.inflate(R.layout.fragment_post_filter_options_bottom_sheet, container, false);
|
||||
|
||||
ButterKnife.bind(this, rootView);
|
||||
FragmentPostFilterOptionsBottomSheetBinding binding = FragmentPostFilterOptionsBottomSheetBinding.inflate(inflater, container, false);
|
||||
|
||||
PostFilter postFilter = getArguments().getParcelable(EXTRA_POST_FILTER);
|
||||
|
||||
editTextView.setOnClickListener(view -> {
|
||||
binding.editTextViewPostFilterOptionsBottomSheetFragment.setOnClickListener(view -> {
|
||||
activity.editPostFilter(postFilter);
|
||||
dismiss();
|
||||
});
|
||||
|
||||
applyToTextView.setOnClickListener(view -> {
|
||||
binding.applyToTextViewPostFilterOptionsBottomSheetFragment.setOnClickListener(view -> {
|
||||
activity.applyPostFilterTo(postFilter);
|
||||
dismiss();
|
||||
});
|
||||
|
||||
deleteTextView.setOnClickListener(view -> {
|
||||
binding.deleteTextViewPostFilterOptionsBottomSheetFragment.setOnClickListener(view -> {
|
||||
activity.deletePostFilter(postFilter);
|
||||
dismiss();
|
||||
});
|
||||
|
||||
if (activity.typeface != null) {
|
||||
Utils.setFontToAllTextViews(rootView, activity.typeface);
|
||||
Utils.setFontToAllTextViews(binding.getRoot(), activity.typeface);
|
||||
}
|
||||
|
||||
return rootView;
|
||||
return binding.getRoot();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -1,5 +1,16 @@
|
||||
package ml.docilealligator.infinityforreddit.commentfilter;
|
||||
|
||||
public class CommentFilterWithUsage {
|
||||
import androidx.room.Embedded;
|
||||
import androidx.room.Relation;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class CommentFilterWithUsage {
|
||||
@Embedded
|
||||
public CommentFilter commentFilter;
|
||||
@Relation(
|
||||
parentColumn = "name",
|
||||
entityColumn = "name"
|
||||
)
|
||||
public List<CommentFilterUsage> commentFilterUsageList;
|
||||
}
|
||||
|
||||
@ -0,0 +1,38 @@
|
||||
package ml.docilealligator.infinityforreddit.commentfilter;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.ViewModel;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||
|
||||
public class CommentFilterWithUsageViewModel extends ViewModel {
|
||||
private LiveData<List<CommentFilterWithUsage>> mCommentFilterWithUsageListLiveData;
|
||||
|
||||
public CommentFilterWithUsageViewModel(RedditDataRoomDatabase redditDataRoomDatabase) {
|
||||
mCommentFilterWithUsageListLiveData = redditDataRoomDatabase.commentFilterDao().getAllCommentFilterWithUsageLiveData();
|
||||
}
|
||||
|
||||
public LiveData<List<CommentFilterWithUsage>> getCommentFilterWithUsageListLiveData() {
|
||||
return mCommentFilterWithUsageListLiveData;
|
||||
}
|
||||
|
||||
public static class Factory extends ViewModelProvider.NewInstanceFactory {
|
||||
|
||||
private final RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||
|
||||
public Factory(RedditDataRoomDatabase redditDataRoomDatabase) {
|
||||
mRedditDataRoomDatabase = redditDataRoomDatabase;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
|
||||
//noinspection unchecked
|
||||
return (T) new CommentFilterWithUsageViewModel(mRedditDataRoomDatabase);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
package ml.docilealligator.infinityforreddit.commentfilter;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||
|
||||
public class DeleteCommentFilter {
|
||||
public static void deleteCommentFilter(RedditDataRoomDatabase redditDataRoomDatabase, Executor executor, CommentFilter commentFilter) {
|
||||
executor.execute(() -> redditDataRoomDatabase.commentFilterDao().deleteCommentFilter(commentFilter));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".activities.CommentFilterPreferenceActivity">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:id="@+id/appbar_layout_comment_filter_preference_activity"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="@style/AppTheme.AppBarOverlay">
|
||||
|
||||
<com.google.android.material.appbar.CollapsingToolbarLayout
|
||||
android:id="@+id/collapsing_toolbar_layout_comment_filter_preference_activity"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_scrollFlags="scroll|enterAlways"
|
||||
app:titleEnabled="false"
|
||||
app:toolbarId="@+id/toolbar_comment_filter_preference_activity">
|
||||
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar_comment_filter_preference_activity"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:minHeight="?attr/actionBarSize"
|
||||
app:popupTheme="@style/AppTheme.PopupOverlay"
|
||||
app:navigationIcon="?attr/homeAsUpIndicator" />
|
||||
|
||||
</com.google.android.material.appbar.CollapsingToolbarLayout>
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_view_comment_filter_preference_activity"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
|
||||
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/fab_comment_filter_preference_activity"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="@dimen/fab_margin"
|
||||
android:layout_gravity="bottom|end"
|
||||
app:backgroundTint="?attr/colorPrimaryLightTheme"
|
||||
app:srcCompat="@drawable/ic_add_day_night_24dp"
|
||||
app:tint="@android:color/white" />
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".activities.CommentFilterUsageListingActivity">
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".activities.CustomizeCommentFilterActivity">
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@ -0,0 +1,70 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:paddingBottom="8dp"
|
||||
android:overScrollMode="never">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/edit_text_view_comment_filter_options_bottom_sheet_fragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/edit"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="?attr/font_default"
|
||||
android:fontFamily="?attr/font_family"
|
||||
android:paddingTop="16dp"
|
||||
android:paddingBottom="16dp"
|
||||
android:paddingStart="32dp"
|
||||
android:paddingEnd="32dp"
|
||||
app:drawableStartCompat="@drawable/ic_edit_24dp"
|
||||
android:drawablePadding="48dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:background="?attr/selectableItemBackground" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/apply_to_text_view_comment_filter_options_bottom_sheet_fragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/apply_to"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="?attr/font_default"
|
||||
android:fontFamily="?attr/font_family"
|
||||
android:paddingTop="16dp"
|
||||
android:paddingBottom="16dp"
|
||||
android:paddingStart="32dp"
|
||||
android:paddingEnd="32dp"
|
||||
app:drawableStartCompat="@drawable/ic_apply_to_24dp"
|
||||
android:drawablePadding="48dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:background="?attr/selectableItemBackground" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/delete_text_view_comment_filter_options_bottom_sheet_fragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/delete"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="?attr/font_default"
|
||||
android:fontFamily="?attr/font_family"
|
||||
android:paddingTop="16dp"
|
||||
android:paddingBottom="16dp"
|
||||
android:paddingStart="32dp"
|
||||
android:paddingEnd="32dp"
|
||||
app:drawableStartCompat="@drawable/ic_delete_24dp"
|
||||
android:drawablePadding="48dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:background="?attr/selectableItemBackground" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
@ -33,7 +33,7 @@
|
||||
android:id="@+id/apply_to_text_view_post_filter_options_bottom_sheet_fragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/apply_post_filter_to"
|
||||
android:text="@string/apply_to"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="?attr/font_default"
|
||||
android:fontFamily="?attr/font_family"
|
||||
|
||||
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="8dp"
|
||||
android:layout_marginStart="24dp"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="?attr/font_default"
|
||||
android:fontFamily="?attr/font_family" />
|
||||
28
app/src/main/res/layout/item_comment_filter_with_usage.xml
Normal file
28
app/src/main/res/layout/item_comment_filter_with_usage.xml
Normal file
@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ml.docilealligator.infinityforreddit.customviews.InterceptTouchEventLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:paddingTop="16dp"
|
||||
android:paddingBottom="16dp"
|
||||
android:paddingStart="72dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:background="?attr/selectableItemBackground">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/comment_filter_name_text_view_item_comment_filter"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:fontFamily="?attr/font_family"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="?attr/font_16" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/comment_filter_usage_recycler_view_item_comment_filter"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:nestedScrollingEnabled="false" />
|
||||
|
||||
</ml.docilealligator.infinityforreddit.customviews.InterceptTouchEventLinearLayout>
|
||||
@ -958,7 +958,7 @@ Zpráva: %2$s"</string>
|
||||
<string name="post_filter_requires_a_name">"Jak se jmenuje tento filtr příspěvků?"</string>
|
||||
<string name="duplicate_post_filter_dialog_title">"'%1$s' již existuje"</string>
|
||||
<string name="duplicate_post_filter_dialog_message">"Chcete jej přepsat?"</string>
|
||||
<string name="apply_post_filter_to">"Použít na"</string>
|
||||
<string name="apply_to">"Použít na"</string>
|
||||
<string name="post_filter_usage_home">"Domů"</string>
|
||||
<string name="post_filter_usage_subreddit">"Subreddit: %1$s"</string>
|
||||
<string name="post_filter_usage_subreddit_all">"Subreddit"</string>
|
||||
|
||||
@ -991,7 +991,7 @@ Nachricht: %2$s"</string>
|
||||
<string name="post_filter_requires_a_name">"Wie lautet der Name des Beitragsfilters?"</string>
|
||||
<string name="duplicate_post_filter_dialog_title">"'%1$s' existiert bereits"</string>
|
||||
<string name="duplicate_post_filter_dialog_message">"Überschreiben?"</string>
|
||||
<string name="apply_post_filter_to">"Anwenden auf"</string>
|
||||
<string name="apply_to">"Anwenden auf"</string>
|
||||
<string name="post_filter_usage_home">"Home"</string>
|
||||
<string name="post_filter_usage_subreddit">"Subreddit: %1$s"</string>
|
||||
<string name="post_filter_usage_subreddit_all">"Subreddit"</string>
|
||||
|
||||
@ -902,7 +902,7 @@ https://play.google.com/store/apps/details?id=ml.docilealligator.infinityforredd
|
||||
<string name="post_filter_requires_a_name">"Ποιο είναι το όνομα αυτού του φίλτρου ανάρτησης;"</string>
|
||||
<string name="duplicate_post_filter_dialog_title">"%1$s Υπάρχουν Ήδη"</string>
|
||||
<string name="duplicate_post_filter_dialog_message">"Παράκαμψη;"</string>
|
||||
<string name="apply_post_filter_to">"Εφαρμογή σε"</string>
|
||||
<string name="apply_to">"Εφαρμογή σε"</string>
|
||||
<string name="post_filter_usage_home">"Αρχική"</string>
|
||||
<string name="post_filter_usage_subreddit">"Subreddit: %1$s"</string>
|
||||
<string name="post_filter_usage_subreddit_all">"Subreddit"</string>
|
||||
|
||||
@ -1006,7 +1006,7 @@ Mensaje: %2$s"</string>
|
||||
<string name="post_filter_requires_a_name">"¿Cuál es el nombre de este filtro de publicaciones?"</string>
|
||||
<string name="duplicate_post_filter_dialog_title">"'%1$s' Ya Existe"</string>
|
||||
<string name="duplicate_post_filter_dialog_message">"¿Sobrescribir?"</string>
|
||||
<string name="apply_post_filter_to">"Aplicar a"</string>
|
||||
<string name="apply_to">"Aplicar a"</string>
|
||||
<string name="post_filter_usage_home">"Inicio"</string>
|
||||
<string name="post_filter_usage_subreddit">"Subreddit: %1$s"</string>
|
||||
<string name="post_filter_usage_subreddit_all">"Subreddit"</string>
|
||||
|
||||
@ -1061,7 +1061,7 @@ Les onglets pourraient perdre tout leur contenu quand vous passez d'un onglet à
|
||||
<string name="post_filter_requires_a_name">"Quel est le nom de ce filtre de publication ?"</string>
|
||||
<string name="duplicate_post_filter_dialog_title">"'%1$s' Existe déjà"</string>
|
||||
<string name="duplicate_post_filter_dialog_message">"Le remplacer ?"</string>
|
||||
<string name="apply_post_filter_to">"Appliquer à"</string>
|
||||
<string name="apply_to">"Appliquer à"</string>
|
||||
<string name="post_filter_usage_home">"Acceuil"</string>
|
||||
<string name="post_filter_usage_subreddit">"Subreddit: %1$s"</string>
|
||||
<string name="post_filter_usage_subreddit_all">"Subreddit"</string>
|
||||
|
||||
@ -1030,7 +1030,7 @@ https://play.google.com/store/apps/details?id=ml.docilealligator.infinityforredd
|
||||
<string name="post_filter_name_hint">"Post filter का नाम"</string>
|
||||
<string name="post_filter_requires_a_name">"इस post filter का नाम क्या है?"</string>
|
||||
<string name="duplicate_post_filter_dialog_title">"'%1$s' पहले से ही है"</string>
|
||||
<string name="apply_post_filter_to">"लागू करें"</string>
|
||||
<string name="apply_to">"लागू करें"</string>
|
||||
<string name="post_filter_usage_subreddit">"Subreddit: %1$s"</string>
|
||||
<string name="post_filter_usage_subreddit_all">"Subreddit"</string>
|
||||
<string name="post_filter_usage_user">"User: %1$s"</string>
|
||||
|
||||
@ -937,7 +937,7 @@ Videó autómatikus lejátszása le van tiltva."</string>
|
||||
<string name="duplicate_post_filter_dialog_message">"Írja fölül?"</string>
|
||||
|
||||
<!-- Fuzzy -->
|
||||
<string name="apply_post_filter_to">"Alkalmazd"</string>
|
||||
<string name="apply_to">"Alkalmazd"</string>
|
||||
<string name="post_filter_usage_home">"Home"</string>
|
||||
<string name="post_filter_usage_subreddit">"Subreddit: %1$s"</string>
|
||||
<string name="post_filter_usage_subreddit_all">"Subreddit"</string>
|
||||
|
||||
@ -906,7 +906,7 @@ Messaggio: %2$s"</string>
|
||||
<string name="post_filter_requires_a_name">"Come vuoi chiamare questo filtro post?"</string>
|
||||
<string name="duplicate_post_filter_dialog_title">"'%1$s' esiste già"</string>
|
||||
<string name="duplicate_post_filter_dialog_message">"Vuoi sovrascriverlo?"</string>
|
||||
<string name="apply_post_filter_to">"Applica a"</string>
|
||||
<string name="apply_to">"Applica a"</string>
|
||||
<string name="post_filter_usage_home">"Home"</string>
|
||||
<string name="post_filter_usage_subreddit">"Subreddit: %1$s"</string>
|
||||
<string name="post_filter_usage_subreddit_all">"Subreddit"</string>
|
||||
|
||||
@ -1033,7 +1033,7 @@ https://play.google.com/store/apps/details?id=ml.docilealligator.infinityforredd
|
||||
<string name="min_awards_hint">"最小のアワード数 (-1: 制限なし)"</string>
|
||||
<string name="duplicate_post_filter_dialog_title">"「%1$s 」は既に存在します"</string>
|
||||
<string name="duplicate_post_filter_dialog_message">"上書きしますか?"</string>
|
||||
<string name="apply_post_filter_to">"適用"</string>
|
||||
<string name="apply_to">"適用"</string>
|
||||
<string name="post_filter_usage_home">"ホーム"</string>
|
||||
<string name="post_filter_usage_subreddit_all">"Subreddit"</string>
|
||||
<string name="post_filter_usage_user">"ユーザー: %1$s"</string>
|
||||
|
||||
@ -966,7 +966,7 @@ Bericht: %2$s"</string>
|
||||
<string name="post_filter_requires_a_name">"Wat is de naam van deze post filter?"</string>
|
||||
<string name="duplicate_post_filter_dialog_title">"'%1$s' Bestaat Al"</string>
|
||||
<string name="duplicate_post_filter_dialog_message">"Overschrijven?"</string>
|
||||
<string name="apply_post_filter_to">"Toepassen op"</string>
|
||||
<string name="apply_to">"Toepassen op"</string>
|
||||
<string name="post_filter_usage_home">"Thuis"</string>
|
||||
<string name="post_filter_usage_subreddit">"Subreddit: %1$s"</string>
|
||||
<string name="post_filter_usage_subreddit_all">"Subreddit"</string>
|
||||
|
||||
@ -956,7 +956,7 @@ Wiadomość: %2$s"</string>
|
||||
<string name="post_filter_requires_a_name">"Jaka jest nazwa filtru tego posta?"</string>
|
||||
<string name="duplicate_post_filter_dialog_title">"'%1$s' już istnieje"</string>
|
||||
<string name="duplicate_post_filter_dialog_message">"Nadpisać?"</string>
|
||||
<string name="apply_post_filter_to">"Zastosuj do"</string>
|
||||
<string name="apply_to">"Zastosuj do"</string>
|
||||
<string name="post_filter_usage_home">"Strona główna"</string>
|
||||
<string name="post_filter_usage_subreddit">"Subreddit: %1$s"</string>
|
||||
<string name="post_filter_usage_subreddit_all">"Subreddit"</string>
|
||||
|
||||
@ -944,7 +944,7 @@ Mensagem: %2$s"</string>
|
||||
<string name="post_filter_requires_a_name">"Qual é o nome deste filtro de postagem?"</string>
|
||||
<string name="duplicate_post_filter_dialog_title">"'%1$s' já existe"</string>
|
||||
<string name="duplicate_post_filter_dialog_message">"Substituir isto?"</string>
|
||||
<string name="apply_post_filter_to">"Aplicar a"</string>
|
||||
<string name="apply_to">"Aplicar a"</string>
|
||||
<string name="post_filter_usage_home">"Início"</string>
|
||||
<string name="post_filter_usage_subreddit">"Subreddit: %1$s"</string>
|
||||
<string name="post_filter_usage_subreddit_all">"Subreddit"</string>
|
||||
|
||||
@ -953,7 +953,7 @@ Mensagem: %2$s"</string>
|
||||
<string name="post_filter_requires_a_name">"Qual é o nome deste Filtro de Publicações?"</string>
|
||||
<string name="duplicate_post_filter_dialog_title">"'%1$s' já existe"</string>
|
||||
<string name="duplicate_post_filter_dialog_message">"Substituir?"</string>
|
||||
<string name="apply_post_filter_to">"Aplicar a"</string>
|
||||
<string name="apply_to">"Aplicar a"</string>
|
||||
<string name="post_filter_usage_home">"Início"</string>
|
||||
<string name="post_filter_usage_subreddit">"Comunidade: %1$s"</string>
|
||||
<string name="post_filter_usage_subreddit_all">"Comunidade"</string>
|
||||
|
||||
@ -950,7 +950,7 @@ Mesaj: %2$s"</string>
|
||||
<string name="post_filter_requires_a_name">"Care este numele acestui filtru de post?"</string>
|
||||
<string name="duplicate_post_filter_dialog_title">"%1$s' Există Deja"</string>
|
||||
<string name="duplicate_post_filter_dialog_message">"Îl înlocuiești?"</string>
|
||||
<string name="apply_post_filter_to">"Se aplică la"</string>
|
||||
<string name="apply_to">"Se aplică la"</string>
|
||||
<string name="post_filter_usage_home">"Acasă"</string>
|
||||
<string name="post_filter_usage_subreddit">"Subreddit: %1$s"</string>
|
||||
<string name="post_filter_usage_subreddit_all">"Subreddit"</string>
|
||||
|
||||
@ -966,7 +966,7 @@ https://play.google.com/store/apps/details?id=ml.docilealligator.infinityforredd
|
||||
<string name="post_filter_requires_a_name">"Как называется этот фильтр постов?"</string>
|
||||
<string name="duplicate_post_filter_dialog_title">"«%1$s» уже существует"</string>
|
||||
<string name="duplicate_post_filter_dialog_message">"Переопределить это?"</string>
|
||||
<string name="apply_post_filter_to">"Применить к"</string>
|
||||
<string name="apply_to">"Применить к"</string>
|
||||
<string name="post_filter_usage_home">"Домашняя"</string>
|
||||
<string name="post_filter_usage_subreddit">"Сабреддит: %1$s"</string>
|
||||
<string name="post_filter_usage_subreddit_all">"Сабреддит"</string>
|
||||
|
||||
@ -974,7 +974,7 @@ Mesaj: %2$s"</string>
|
||||
<string name="post_filter_requires_a_name">"Bu gönderi filtresinin adı nedir?"</string>
|
||||
<string name="duplicate_post_filter_dialog_title">"'%1$s' Zaten Var"</string>
|
||||
<string name="duplicate_post_filter_dialog_message">"Geçersiz kılınsın mı?"</string>
|
||||
<string name="apply_post_filter_to">"Uygulanan:"</string>
|
||||
<string name="apply_to">"Uygulanan:"</string>
|
||||
<string name="post_filter_usage_home">"Ana Sayfa"</string>
|
||||
<string name="post_filter_usage_subreddit">"Subreddit: %1$s"</string>
|
||||
<string name="post_filter_usage_subreddit_all">"Subreddit"</string>
|
||||
|
||||
@ -954,7 +954,7 @@ https://play.google.com/store/apps/details?id=ml.docilealligator.infinityforredd
|
||||
<string name="post_filter_requires_a_name">"Яка назва для цього фільтру дописів?"</string>
|
||||
<string name="duplicate_post_filter_dialog_title">"'%1$s' вже існує"</string>
|
||||
<string name="duplicate_post_filter_dialog_message">"Перезаписати його?"</string>
|
||||
<string name="apply_post_filter_to">"Задіяно для"</string>
|
||||
<string name="apply_to">"Задіяно для"</string>
|
||||
<string name="post_filter_usage_home">"Домівка"</string>
|
||||
<string name="post_filter_usage_subreddit">"Сабредит: %1$s"</string>
|
||||
<string name="post_filter_usage_subreddit_all">"Сабредит"</string>
|
||||
|
||||
@ -967,7 +967,7 @@ Thông báo: %2$s"</string>
|
||||
<string name="post_filter_requires_a_name">"Bộ lọc bài đăng này tên là gì?"</string>
|
||||
<string name="duplicate_post_filter_dialog_title">"'%1$s' đã tồn tại"</string>
|
||||
<string name="duplicate_post_filter_dialog_message">"Ghi đè nó?"</string>
|
||||
<string name="apply_post_filter_to">"Áp dụng vào"</string>
|
||||
<string name="apply_to">"Áp dụng vào"</string>
|
||||
<string name="post_filter_usage_home">"Trang chủ"</string>
|
||||
<string name="post_filter_usage_subreddit">"Subreddit: %1$s"</string>
|
||||
<string name="post_filter_usage_subreddit_all">"Subreddit"</string>
|
||||
|
||||
@ -981,7 +981,7 @@ Reddit 视频分辨率较低。
|
||||
<string name="post_filter_requires_a_name">"该帖子过滤器的名称是什么?"</string>
|
||||
<string name="duplicate_post_filter_dialog_title">"“%1$s”已经存在"</string>
|
||||
<string name="duplicate_post_filter_dialog_message">"覆盖吗?"</string>
|
||||
<string name="apply_post_filter_to">"应用于"</string>
|
||||
<string name="apply_to">"应用于"</string>
|
||||
<string name="post_filter_usage_home">"主页"</string>
|
||||
<string name="post_filter_usage_subreddit">"版块:%1$s"</string>
|
||||
<string name="post_filter_usage_subreddit_all">"版块"</string>
|
||||
|
||||
@ -1141,7 +1141,7 @@
|
||||
<string name="post_filter_requires_a_name">What is the name of this post filter?</string>
|
||||
<string name="duplicate_post_filter_dialog_title">\'%1$s\' Already Exists</string>
|
||||
<string name="duplicate_post_filter_dialog_message">Override it?</string>
|
||||
<string name="apply_post_filter_to">Apply to</string>
|
||||
<string name="apply_to">Apply to</string>
|
||||
<string name="post_filter_usage_home">Home</string>
|
||||
<string name="post_filter_usage_subreddit">Subreddit: %1$s</string>
|
||||
<string name="post_filter_usage_subreddit_all">Subreddit</string>
|
||||
|
||||
Reference in New Issue
Block a user