mirror of
				https://github.com/KokaKiwi/BarInsta
				synced 2025-11-03 21:15:35 +00:00 
			
		
		
		
	Added settings for KeywordFilter
This commit is contained in:
		
							parent
							
								
									741aa0dfa5
								
							
						
					
					
						commit
						a4c99568ef
					
				@ -0,0 +1,51 @@
 | 
				
			|||||||
 | 
					package awais.instagrabber.adapters;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import android.content.Context;
 | 
				
			||||||
 | 
					import android.view.LayoutInflater;
 | 
				
			||||||
 | 
					import android.view.View;
 | 
				
			||||||
 | 
					import android.view.ViewGroup;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import androidx.annotation.NonNull;
 | 
				
			||||||
 | 
					import androidx.recyclerview.widget.RecyclerView;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.HashSet;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import awais.instagrabber.R;
 | 
				
			||||||
 | 
					import awais.instagrabber.adapters.viewholder.dialogs.KeywordsFilterDialogViewHolder;
 | 
				
			||||||
 | 
					import awais.instagrabber.utils.Constants;
 | 
				
			||||||
 | 
					import awais.instagrabber.utils.SettingsHelper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class KeywordsFilterAdapter extends RecyclerView.Adapter<KeywordsFilterDialogViewHolder> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final Context context;
 | 
				
			||||||
 | 
					    private final ArrayList<String> items;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public KeywordsFilterAdapter(Context context, ArrayList<String> items){
 | 
				
			||||||
 | 
					        this.context = context;
 | 
				
			||||||
 | 
					        this.items = items;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @NonNull
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public KeywordsFilterDialogViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
 | 
				
			||||||
 | 
					        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_keyword, parent, false);
 | 
				
			||||||
 | 
					        return new KeywordsFilterDialogViewHolder(v);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void onBindViewHolder(@NonNull KeywordsFilterDialogViewHolder holder, int position) {
 | 
				
			||||||
 | 
					        holder.getTextView().setText(items.get(position));
 | 
				
			||||||
 | 
					        holder.getDeleteButton().setOnClickListener(view -> {
 | 
				
			||||||
 | 
					            SettingsHelper settingsHelper = new SettingsHelper(context);
 | 
				
			||||||
 | 
					            items.remove(items.get(position));
 | 
				
			||||||
 | 
					            settingsHelper.putStringSet(Constants.KEYWORD_FILTERS, new HashSet<>(items));
 | 
				
			||||||
 | 
					            notifyDataSetChanged();
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public int getItemCount() {
 | 
				
			||||||
 | 
					        return 0;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					package awais.instagrabber.adapters.viewholder.dialogs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import android.view.View;
 | 
				
			||||||
 | 
					import android.widget.ImageView;
 | 
				
			||||||
 | 
					import android.widget.TextView;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import androidx.annotation.NonNull;
 | 
				
			||||||
 | 
					import androidx.recyclerview.widget.RecyclerView;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import awais.instagrabber.R;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class KeywordsFilterDialogViewHolder extends RecyclerView.ViewHolder {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final ImageView deleteButton;
 | 
				
			||||||
 | 
					    private final TextView item;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public KeywordsFilterDialogViewHolder(@NonNull View itemView) {
 | 
				
			||||||
 | 
					        super(itemView);
 | 
				
			||||||
 | 
					        deleteButton = itemView.findViewById(R.id.keyword_delete);
 | 
				
			||||||
 | 
					        item = itemView.findViewById(R.id.keyword_text);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public ImageView getDeleteButton(){
 | 
				
			||||||
 | 
					        return deleteButton;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public TextView getTextView(){
 | 
				
			||||||
 | 
					        return item;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,61 @@
 | 
				
			|||||||
 | 
					package awais.instagrabber.dialogs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import android.content.Context;
 | 
				
			||||||
 | 
					import android.os.Bundle;
 | 
				
			||||||
 | 
					import android.view.LayoutInflater;
 | 
				
			||||||
 | 
					import android.view.View;
 | 
				
			||||||
 | 
					import android.view.ViewGroup;
 | 
				
			||||||
 | 
					import android.widget.EditText;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import androidx.annotation.NonNull;
 | 
				
			||||||
 | 
					import androidx.annotation.Nullable;
 | 
				
			||||||
 | 
					import androidx.fragment.app.DialogFragment;
 | 
				
			||||||
 | 
					import androidx.recyclerview.widget.LinearLayoutManager;
 | 
				
			||||||
 | 
					import androidx.recyclerview.widget.RecyclerView;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.HashSet;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import awais.instagrabber.adapters.KeywordsFilterAdapter;
 | 
				
			||||||
 | 
					import awais.instagrabber.databinding.DialogKeywordsFilterBinding;
 | 
				
			||||||
 | 
					import awais.instagrabber.utils.Constants;
 | 
				
			||||||
 | 
					import awais.instagrabber.utils.SettingsHelper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public final class KeywordsFilterDialog extends DialogFragment {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Nullable
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
 | 
				
			||||||
 | 
					        DialogKeywordsFilterBinding dialogKeywordsFilterBinding = DialogKeywordsFilterBinding.inflate(inflater, container, false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        final Context context = getContext();
 | 
				
			||||||
 | 
					        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);
 | 
				
			||||||
 | 
					        final RecyclerView recyclerView = dialogKeywordsFilterBinding.recycler;
 | 
				
			||||||
 | 
					        recyclerView.setLayoutManager(linearLayoutManager);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        SettingsHelper settingsHelper = new SettingsHelper(context);
 | 
				
			||||||
 | 
					        ArrayList<String> items = new ArrayList<>(settingsHelper.getStringSet(Constants.KEYWORD_FILTERS));
 | 
				
			||||||
 | 
					        KeywordsFilterAdapter adapter = new KeywordsFilterAdapter(context, items);
 | 
				
			||||||
 | 
					        recyclerView.setAdapter(adapter);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        final EditText editText = dialogKeywordsFilterBinding.editText;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        dialogKeywordsFilterBinding.addIcon.setOnClickListener(view ->{
 | 
				
			||||||
 | 
					            final String s = editText.getText().toString();
 | 
				
			||||||
 | 
					            if(s.isEmpty()) return;
 | 
				
			||||||
 | 
					            if(items.contains(s)) {
 | 
				
			||||||
 | 
					                editText.setText("");
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            items.add(s);
 | 
				
			||||||
 | 
					            settingsHelper.putStringSet(Constants.KEYWORD_FILTERS, new HashSet<>(items));
 | 
				
			||||||
 | 
					            adapter.notifyDataSetChanged();
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        dialogKeywordsFilterBinding.btnOK.setOnClickListener(view ->{
 | 
				
			||||||
 | 
					            this.dismiss();
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return super.onCreateView(inflater, container, savedInstanceState);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -7,10 +7,10 @@ import androidx.preference.Preference;
 | 
				
			|||||||
import androidx.preference.PreferenceScreen;
 | 
					import androidx.preference.PreferenceScreen;
 | 
				
			||||||
import androidx.preference.SwitchPreferenceCompat;
 | 
					import androidx.preference.SwitchPreferenceCompat;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import awais.instagrabber.R;
 | 
					 | 
				
			||||||
import awais.instagrabber.utils.Constants;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static awais.instagrabber.utils.Utils.settingsHelper;
 | 
					import awais.instagrabber.R;
 | 
				
			||||||
 | 
					import awais.instagrabber.dialogs.KeywordsFilterDialog;
 | 
				
			||||||
 | 
					import awais.instagrabber.utils.Constants;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class PostPreferencesFragment extends BasePreferencesFragment {
 | 
					public class PostPreferencesFragment extends BasePreferencesFragment {
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
@ -20,6 +20,8 @@ public class PostPreferencesFragment extends BasePreferencesFragment {
 | 
				
			|||||||
        // generalCategory.addPreference(getAutoPlayVideosPreference(context));
 | 
					        // generalCategory.addPreference(getAutoPlayVideosPreference(context));
 | 
				
			||||||
        screen.addPreference(getAlwaysMuteVideosPreference(context));
 | 
					        screen.addPreference(getAlwaysMuteVideosPreference(context));
 | 
				
			||||||
        screen.addPreference(getShowCaptionPreference(context));
 | 
					        screen.addPreference(getShowCaptionPreference(context));
 | 
				
			||||||
 | 
					        screen.addPreference(getToggleKeywordFilterPreference(context));
 | 
				
			||||||
 | 
					        screen.addPreference(getEditKeywordFilterPreference(context));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private Preference getAutoPlayVideosPreference(@NonNull final Context context) {
 | 
					    private Preference getAutoPlayVideosPreference(@NonNull final Context context) {
 | 
				
			||||||
@ -46,4 +48,24 @@ public class PostPreferencesFragment extends BasePreferencesFragment {
 | 
				
			|||||||
        preference.setIconSpaceReserved(false);
 | 
					        preference.setIconSpaceReserved(false);
 | 
				
			||||||
        return preference;
 | 
					        return preference;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private Preference getToggleKeywordFilterPreference(@NonNull final Context context) {
 | 
				
			||||||
 | 
					        final SwitchPreferenceCompat preference = new SwitchPreferenceCompat(context);
 | 
				
			||||||
 | 
					        preference.setKey(Constants.TOGGLE_KEYWORD_FILTER);
 | 
				
			||||||
 | 
					        preference.setDefaultValue(false);
 | 
				
			||||||
 | 
					        preference.setTitle(R.string.toggle_keyword_filter);
 | 
				
			||||||
 | 
					        preference.setIconSpaceReserved(false);
 | 
				
			||||||
 | 
					        return preference;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private Preference getEditKeywordFilterPreference(@NonNull final Context context){
 | 
				
			||||||
 | 
					        final Preference preference = new Preference(context);
 | 
				
			||||||
 | 
					        preference.setTitle(R.string.edit_keyword_filter);
 | 
				
			||||||
 | 
					        preference.setIconSpaceReserved(false);
 | 
				
			||||||
 | 
					        preference.setOnPreferenceClickListener(view ->{
 | 
				
			||||||
 | 
					            new KeywordsFilterDialog().show(getParentFragmentManager(), null);
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        return preference;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,8 +1,5 @@
 | 
				
			|||||||
package awais.instagrabber.utils;
 | 
					package awais.instagrabber.utils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.HashSet;
 | 
					 | 
				
			||||||
import java.util.Set;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public final class Constants {
 | 
					public final class Constants {
 | 
				
			||||||
    // string prefs
 | 
					    // string prefs
 | 
				
			||||||
    public static final String FOLDER_PATH = "custom_path";
 | 
					    public static final String FOLDER_PATH = "custom_path";
 | 
				
			||||||
@ -20,6 +17,7 @@ public final class Constants {
 | 
				
			|||||||
    public static final String APP_UA_CODE = "app_ua_code";
 | 
					    public static final String APP_UA_CODE = "app_ua_code";
 | 
				
			||||||
    // boolean prefs
 | 
					    // boolean prefs
 | 
				
			||||||
    public static final String DOWNLOAD_USER_FOLDER = "download_user_folder";
 | 
					    public static final String DOWNLOAD_USER_FOLDER = "download_user_folder";
 | 
				
			||||||
 | 
					    public static final String TOGGLE_KEYWORD_FILTER = "toggle_keyword_filter";
 | 
				
			||||||
    // deprecated: public static final String BOTTOM_TOOLBAR = "bottom_toolbar";
 | 
					    // deprecated: public static final String BOTTOM_TOOLBAR = "bottom_toolbar";
 | 
				
			||||||
    public static final String FOLDER_SAVE_TO = "saved_to";
 | 
					    public static final String FOLDER_SAVE_TO = "saved_to";
 | 
				
			||||||
    public static final String AUTOPLAY_VIDEOS = "autoplay_videos";
 | 
					    public static final String AUTOPLAY_VIDEOS = "autoplay_videos";
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,47 @@
 | 
				
			|||||||
 | 
					package awais.instagrabber.utils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.Locale;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import awais.instagrabber.repositories.responses.Caption;
 | 
				
			||||||
 | 
					import awais.instagrabber.repositories.responses.Media;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public final class KeywordsFilterUtils {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final ArrayList<String> keywords;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public KeywordsFilterUtils(ArrayList<String> keywords){
 | 
				
			||||||
 | 
					        this.keywords = keywords;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean filter(final String caption){
 | 
				
			||||||
 | 
					        if(caption == null) return false;
 | 
				
			||||||
 | 
					        final String temp = caption.toLowerCase(Locale.getDefault());
 | 
				
			||||||
 | 
					        for(final String s:keywords){
 | 
				
			||||||
 | 
					            if(temp.contains(s)) return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean filter(final Media media){
 | 
				
			||||||
 | 
					        if(media == null) return false;
 | 
				
			||||||
 | 
					        final Caption c = media.getCaption();
 | 
				
			||||||
 | 
					        if(c == null) return false;
 | 
				
			||||||
 | 
					        final String temp = c.getText().toLowerCase(LocaleUtils.getCurrentLocale());
 | 
				
			||||||
 | 
					        for(final String s:keywords){
 | 
				
			||||||
 | 
					            if(temp.contains(s)) return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public List<Media> filter(final List<Media> media){
 | 
				
			||||||
 | 
					        if(media == null) return new ArrayList<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        final List<Media> result= new ArrayList<>();
 | 
				
			||||||
 | 
					        for(final Media m:media){
 | 
				
			||||||
 | 
					            if(filter(m)) result.add(m);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return result;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -57,6 +57,7 @@ import static awais.instagrabber.utils.Constants.SHOW_QUICK_ACCESS_DIALOG;
 | 
				
			|||||||
import static awais.instagrabber.utils.Constants.SKIPPED_VERSION;
 | 
					import static awais.instagrabber.utils.Constants.SKIPPED_VERSION;
 | 
				
			||||||
import static awais.instagrabber.utils.Constants.STORY_SORT;
 | 
					import static awais.instagrabber.utils.Constants.STORY_SORT;
 | 
				
			||||||
import static awais.instagrabber.utils.Constants.SWAP_DATE_TIME_FORMAT_ENABLED;
 | 
					import static awais.instagrabber.utils.Constants.SWAP_DATE_TIME_FORMAT_ENABLED;
 | 
				
			||||||
 | 
					import static awais.instagrabber.utils.Constants.TOGGLE_KEYWORD_FILTER;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public final class SettingsHelper {
 | 
					public final class SettingsHelper {
 | 
				
			||||||
    private final SharedPreferences sharedPreferences;
 | 
					    private final SharedPreferences sharedPreferences;
 | 
				
			||||||
@ -155,7 +156,7 @@ public final class SettingsHelper {
 | 
				
			|||||||
    @StringDef({DOWNLOAD_USER_FOLDER, FOLDER_SAVE_TO, AUTOPLAY_VIDEOS, SHOW_QUICK_ACCESS_DIALOG, MUTED_VIDEOS,
 | 
					    @StringDef({DOWNLOAD_USER_FOLDER, FOLDER_SAVE_TO, AUTOPLAY_VIDEOS, SHOW_QUICK_ACCESS_DIALOG, MUTED_VIDEOS,
 | 
				
			||||||
                       SHOW_CAPTIONS, CUSTOM_DATE_TIME_FORMAT_ENABLED, MARK_AS_SEEN, DM_MARK_AS_SEEN, CHECK_ACTIVITY,
 | 
					                       SHOW_CAPTIONS, CUSTOM_DATE_TIME_FORMAT_ENABLED, MARK_AS_SEEN, DM_MARK_AS_SEEN, CHECK_ACTIVITY,
 | 
				
			||||||
                       CHECK_UPDATES, SWAP_DATE_TIME_FORMAT_ENABLED, PREF_ENABLE_DM_NOTIFICATIONS, PREF_ENABLE_DM_AUTO_REFRESH,
 | 
					                       CHECK_UPDATES, SWAP_DATE_TIME_FORMAT_ENABLED, PREF_ENABLE_DM_NOTIFICATIONS, PREF_ENABLE_DM_AUTO_REFRESH,
 | 
				
			||||||
                       FLAG_SECURE})
 | 
					                       FLAG_SECURE, TOGGLE_KEYWORD_FILTER})
 | 
				
			||||||
    public @interface BooleanSettings {}
 | 
					    public @interface BooleanSettings {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @StringDef({PREV_INSTALL_VERSION, BROWSER_UA_CODE, APP_UA_CODE, PREF_ENABLE_DM_AUTO_REFRESH_FREQ_NUMBER})
 | 
					    @StringDef({PREV_INSTALL_VERSION, BROWSER_UA_CODE, APP_UA_CODE, PREF_ENABLE_DM_AUTO_REFRESH_FREQ_NUMBER})
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										52
									
								
								app/src/main/res/layout/dialog_keywords_filter.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								app/src/main/res/layout/dialog_keywords_filter.xml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,52 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
 | 
					    android:layout_width="match_parent"
 | 
				
			||||||
 | 
					    android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					    android:padding="16dp">
 | 
				
			||||||
 | 
					    <LinearLayout
 | 
				
			||||||
 | 
					        android:layout_width="match_parent"
 | 
				
			||||||
 | 
					        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					        android:orientation="vertical">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <LinearLayout
 | 
				
			||||||
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					            android:orientation="horizontal"
 | 
				
			||||||
 | 
					            android:layout_marginTop="8dp"
 | 
				
			||||||
 | 
					            android:layout_marginBottom="8dp">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <androidx.appcompat.widget.AppCompatEditText
 | 
				
			||||||
 | 
					                android:id="@+id/edit_text"
 | 
				
			||||||
 | 
					                android:layout_width="320dp"
 | 
				
			||||||
 | 
					                android:layout_height="48dp"
 | 
				
			||||||
 | 
					                android:hint="@string/hint_keyword" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <ImageView
 | 
				
			||||||
 | 
					                android:id="@+id/add_icon"
 | 
				
			||||||
 | 
					                android:layout_width="48dp"
 | 
				
			||||||
 | 
					                android:layout_height="48dp"
 | 
				
			||||||
 | 
					                android:background="?android:attr/selectableItemBackgroundBorderless"
 | 
				
			||||||
 | 
					                android:scaleType="center"
 | 
				
			||||||
 | 
					                android:layout_marginStart="8dp" />
 | 
				
			||||||
 | 
					        </LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <androidx.recyclerview.widget.RecyclerView
 | 
				
			||||||
 | 
					            android:id="@+id/recycler"
 | 
				
			||||||
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="wrap_content" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <FrameLayout
 | 
				
			||||||
 | 
					            android:layout_width="match_parent"
 | 
				
			||||||
 | 
					            android:layout_height="wrap_content">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <androidx.appcompat.widget.AppCompatButton
 | 
				
			||||||
 | 
					                android:id="@+id/btnOK"
 | 
				
			||||||
 | 
					                style="@style/Widget.AppCompat.Button.ButtonBar.AlertDialog"
 | 
				
			||||||
 | 
					                android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_gravity="end"
 | 
				
			||||||
 | 
					                android:text="@string/ok" />
 | 
				
			||||||
 | 
					        </FrameLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    </LinearLayout>
 | 
				
			||||||
 | 
					</ScrollView>
 | 
				
			||||||
							
								
								
									
										23
									
								
								app/src/main/res/layout/item_keyword.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								app/src/main/res/layout/item_keyword.xml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
 | 
					    android:layout_width="match_parent"
 | 
				
			||||||
 | 
					    android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					    android:gravity="center_vertical"
 | 
				
			||||||
 | 
					    android:orientation="horizontal"
 | 
				
			||||||
 | 
					    android:paddingBottom="8dp"
 | 
				
			||||||
 | 
					    android:paddingTop="8dp">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <androidx.appcompat.widget.AppCompatTextView
 | 
				
			||||||
 | 
					        android:id="@+id/keyword_text"
 | 
				
			||||||
 | 
					        android:layout_width="0dp"
 | 
				
			||||||
 | 
					        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					        android:layout_weight="1" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <ImageView
 | 
				
			||||||
 | 
					        android:id="@+id/keyword_delete"
 | 
				
			||||||
 | 
					        android:layout_width="48dp"
 | 
				
			||||||
 | 
					        android:layout_height="48dp"
 | 
				
			||||||
 | 
					        android:background="?android:attr/selectableItemBackground"
 | 
				
			||||||
 | 
					        android:scaleType="center" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</LinearLayout>
 | 
				
			||||||
@ -466,4 +466,7 @@
 | 
				
			|||||||
    <string name="generic_null_response">Response is null!</string>
 | 
					    <string name="generic_null_response">Response is null!</string>
 | 
				
			||||||
    <string name="generic_not_ok_response">Response status is not ok!</string>
 | 
					    <string name="generic_not_ok_response">Response status is not ok!</string>
 | 
				
			||||||
    <string name="generic_failed_request">Request failed!</string>
 | 
					    <string name="generic_failed_request">Request failed!</string>
 | 
				
			||||||
 | 
					    <string name="hint_keyword">Keyword</string>
 | 
				
			||||||
 | 
					    <string name="toggle_keyword_filter">Enable keyword filter</string>
 | 
				
			||||||
 | 
					    <string name="edit_keyword_filter">Edit keyword filters</string>
 | 
				
			||||||
</resources>
 | 
					</resources>
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user