mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-12-30 21:07:11 +01:00
Deleting search history is now available.
This commit is contained in:
parent
fbddc73918
commit
06fdd12f0c
@ -39,6 +39,8 @@ import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper;
|
|||||||
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
|
import ml.docilealligator.infinityforreddit.RecentSearchQuery.DeleteRecentSearchQuery;
|
||||||
|
import ml.docilealligator.infinityforreddit.RecentSearchQuery.RecentSearchQuery;
|
||||||
import ml.docilealligator.infinityforreddit.RecentSearchQuery.RecentSearchQueryViewModel;
|
import ml.docilealligator.infinityforreddit.RecentSearchQuery.RecentSearchQueryViewModel;
|
||||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
import ml.docilealligator.infinityforreddit.Utils.SharedPreferencesUtils;
|
import ml.docilealligator.infinityforreddit.Utils.SharedPreferencesUtils;
|
||||||
@ -213,7 +215,17 @@ public class SearchActivity extends BaseActivity {
|
|||||||
|
|
||||||
private void bindView() {
|
private void bindView() {
|
||||||
if (mAccountName != null) {
|
if (mAccountName != null) {
|
||||||
adapter = new SearchActivityRecyclerViewAdapter(this, mCustomThemeWrapper, this::search);
|
adapter = new SearchActivityRecyclerViewAdapter(this, mCustomThemeWrapper, new SearchActivityRecyclerViewAdapter.ItemOnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(String query) {
|
||||||
|
search(query);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDelete(RecentSearchQuery recentSearchQuery) {
|
||||||
|
DeleteRecentSearchQuery.deleteRecentSearchQueryListener(mRedditDataRoomDatabase, recentSearchQuery, () -> {});
|
||||||
|
}
|
||||||
|
});
|
||||||
recyclerView.setNestedScrollingEnabled(false);
|
recyclerView.setNestedScrollingEnabled(false);
|
||||||
recyclerView.setLayoutManager(new LinearLayoutManager(this));
|
recyclerView.setLayoutManager(new LinearLayoutManager(this));
|
||||||
recyclerView.setAdapter(adapter);
|
recyclerView.setAdapter(adapter);
|
||||||
|
@ -5,6 +5,7 @@ import android.graphics.drawable.Drawable;
|
|||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
@ -23,16 +24,19 @@ public class SearchActivityRecyclerViewAdapter extends RecyclerView.Adapter<Recy
|
|||||||
private List<RecentSearchQuery> recentSearchQueries;
|
private List<RecentSearchQuery> recentSearchQueries;
|
||||||
private int primaryTextColor;
|
private int primaryTextColor;
|
||||||
private Drawable historyIcon;
|
private Drawable historyIcon;
|
||||||
|
private Drawable deleteIcon;
|
||||||
private ItemOnClickListener itemOnClickListener;
|
private ItemOnClickListener itemOnClickListener;
|
||||||
|
|
||||||
public interface ItemOnClickListener {
|
public interface ItemOnClickListener {
|
||||||
void onClick(String query);
|
void onClick(String query);
|
||||||
|
void onDelete(RecentSearchQuery recentSearchQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SearchActivityRecyclerViewAdapter(Activity activity, CustomThemeWrapper customThemeWrapper,
|
public SearchActivityRecyclerViewAdapter(Activity activity, CustomThemeWrapper customThemeWrapper,
|
||||||
ItemOnClickListener itemOnClickListener) {
|
ItemOnClickListener itemOnClickListener) {
|
||||||
this.primaryTextColor = customThemeWrapper.getPrimaryTextColor();
|
this.primaryTextColor = customThemeWrapper.getPrimaryTextColor();
|
||||||
this.historyIcon = Utils.getTintedDrawable(activity, R.drawable.ic_history_24dp, customThemeWrapper.getPrimaryIconColor());
|
this.historyIcon = Utils.getTintedDrawable(activity, R.drawable.ic_history_24dp, customThemeWrapper.getPrimaryIconColor());
|
||||||
|
this.deleteIcon = Utils.getTintedDrawable(activity, R.drawable.ic_delete_24dp, customThemeWrapper.getPrimaryIconColor());
|
||||||
this.itemOnClickListener = itemOnClickListener;
|
this.itemOnClickListener = itemOnClickListener;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,6 +68,8 @@ public class SearchActivityRecyclerViewAdapter extends RecyclerView.Adapter<Recy
|
|||||||
class RecentSearchQueryViewHolder extends RecyclerView.ViewHolder {
|
class RecentSearchQueryViewHolder extends RecyclerView.ViewHolder {
|
||||||
@BindView(R.id.recent_search_query_text_view_item_recent_search_query)
|
@BindView(R.id.recent_search_query_text_view_item_recent_search_query)
|
||||||
TextView recentSearchQueryTextView;
|
TextView recentSearchQueryTextView;
|
||||||
|
@BindView(R.id.delete_image_view_item_recent_search_query)
|
||||||
|
ImageView deleteImageView;
|
||||||
|
|
||||||
public RecentSearchQueryViewHolder(@NonNull View itemView) {
|
public RecentSearchQueryViewHolder(@NonNull View itemView) {
|
||||||
super(itemView);
|
super(itemView);
|
||||||
@ -72,12 +78,17 @@ public class SearchActivityRecyclerViewAdapter extends RecyclerView.Adapter<Recy
|
|||||||
|
|
||||||
recentSearchQueryTextView.setTextColor(primaryTextColor);
|
recentSearchQueryTextView.setTextColor(primaryTextColor);
|
||||||
recentSearchQueryTextView.setCompoundDrawablesWithIntrinsicBounds(historyIcon, null, null, null);
|
recentSearchQueryTextView.setCompoundDrawablesWithIntrinsicBounds(historyIcon, null, null, null);
|
||||||
|
deleteImageView.setImageDrawable(deleteIcon);
|
||||||
|
|
||||||
itemView.setOnClickListener(view -> {
|
itemView.setOnClickListener(view -> {
|
||||||
if (recentSearchQueries != null && !recentSearchQueries.isEmpty()) {
|
if (recentSearchQueries != null && !recentSearchQueries.isEmpty()) {
|
||||||
itemOnClickListener.onClick(recentSearchQueries.get(getAdapterPosition()).getSearchQuery());
|
itemOnClickListener.onClick(recentSearchQueries.get(getAdapterPosition()).getSearchQuery());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
deleteImageView.setOnClickListener(view -> {
|
||||||
|
itemOnClickListener.onDelete(recentSearchQueries.get(getAdapterPosition()));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,44 @@
|
|||||||
|
package ml.docilealligator.infinityforreddit.RecentSearchQuery;
|
||||||
|
|
||||||
|
import android.os.AsyncTask;
|
||||||
|
|
||||||
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
|
|
||||||
|
public class DeleteRecentSearchQuery {
|
||||||
|
public interface DeleteRecentSearchQueryListener {
|
||||||
|
void success();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void deleteRecentSearchQueryListener(RedditDataRoomDatabase redditDataRoomDatabase,
|
||||||
|
RecentSearchQuery recentSearchQuery,
|
||||||
|
DeleteRecentSearchQueryListener deleteRecentSearchQueryListener) {
|
||||||
|
new DeleteRecentSearchQueryAsyncTask(redditDataRoomDatabase, recentSearchQuery, deleteRecentSearchQueryListener).execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class DeleteRecentSearchQueryAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||||
|
|
||||||
|
private RecentSearchQueryDao recentSearchQueryDao;
|
||||||
|
private RecentSearchQuery recentSearchQuery;
|
||||||
|
private DeleteRecentSearchQueryListener deleteRecentSearchQueryListener;
|
||||||
|
|
||||||
|
public DeleteRecentSearchQueryAsyncTask(RedditDataRoomDatabase redditDataRoomDatabase,
|
||||||
|
RecentSearchQuery recentSearchQuery,
|
||||||
|
DeleteRecentSearchQueryListener deleteRecentSearchQueryListener) {
|
||||||
|
this.recentSearchQueryDao = redditDataRoomDatabase.recentSearchQueryDao();
|
||||||
|
this.recentSearchQuery = recentSearchQuery;
|
||||||
|
this.deleteRecentSearchQueryListener = deleteRecentSearchQueryListener;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Void doInBackground(Void... voids) {
|
||||||
|
recentSearchQueryDao.deleteRecentSearchQueries(recentSearchQuery);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPostExecute(Void aVoid) {
|
||||||
|
super.onPostExecute(aVoid);
|
||||||
|
deleteRecentSearchQueryListener.success();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -10,10 +10,21 @@
|
|||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/recent_search_query_text_view_item_recent_search_query"
|
android:id="@+id/recent_search_query_text_view_item_recent_search_query"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
android:fontFamily="?attr/font_family"
|
android:fontFamily="?attr/font_family"
|
||||||
android:textSize="?attr/font_default"
|
android:textSize="?attr/font_default"
|
||||||
android:drawablePadding="16dp" />
|
android:drawablePadding="16dp" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/delete_image_view_item_recent_search_query"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:clickable="true"
|
||||||
|
android:focusable="true"
|
||||||
|
android:background="?attr/selectableItemBackground" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
Loading…
Reference in New Issue
Block a user