diff options
author | Camil Staps | 2015-05-20 11:30:49 +0200 |
---|---|---|
committer | Camil Staps | 2015-05-20 11:30:49 +0200 |
commit | 07305a6ed2b066f1ba5cae82ac8af352d4ebf2a7 (patch) | |
tree | 012a99d0dec3608cafe9e5e95c5af5d74727fafd /app/src | |
parent | merge fix (diff) |
FilterSettingsActivity
Diffstat (limited to 'app/src')
-rw-r--r-- | app/src/main/java/org/rssin/android/FilterSettingsActivity.java | 152 | ||||
-rw-r--r-- | app/src/main/java/org/rssin/android/FiltersActivity.java | 10 | ||||
-rw-r--r-- | app/src/main/java/org/rssin/rssin/Feed.java | 54 | ||||
-rw-r--r-- | app/src/main/java/org/rssin/rssin/Filter.java | 2 | ||||
-rw-r--r-- | app/src/main/res/layout/activity_filter_settings.xml | 47 | ||||
-rw-r--r-- | app/src/main/res/layout/activity_filters.xml | 15 | ||||
-rw-r--r-- | app/src/main/res/layout/fragment_filter_settings_keywords.xml | 13 | ||||
-rw-r--r-- | app/src/main/res/layout/item_filter.xml (renamed from app/src/main/res/layout/activity_filters_item.xml) | 0 | ||||
-rw-r--r-- | app/src/main/res/layout/item_filter_settings_feed.xml | 19 | ||||
-rw-r--r-- | app/src/main/res/layout/item_filter_settings_keyword.xml | 13 | ||||
-rw-r--r-- | app/src/main/res/values/strings.xml | 3 |
11 files changed, 306 insertions, 22 deletions
diff --git a/app/src/main/java/org/rssin/android/FilterSettingsActivity.java b/app/src/main/java/org/rssin/android/FilterSettingsActivity.java index 3b06ff9..b2d4ed9 100644 --- a/app/src/main/java/org/rssin/android/FilterSettingsActivity.java +++ b/app/src/main/java/org/rssin/android/FilterSettingsActivity.java @@ -1,16 +1,168 @@ package org.rssin.android; +import android.app.Activity; +import android.app.AlertDialog; +import android.app.Dialog; +import android.app.DialogFragment; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.support.annotation.Nullable; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.ListView; +import android.widget.TextView; +import org.rssin.rssin.Feed; +import org.rssin.rssin.Filter; +import org.rssin.rssin.Keyword; import org.rssin.rssin.R; +import java.util.List; + public class FilterSettingsActivity extends ActionBarActivity { + private Filter filter; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_filter_settings); + + Intent intent = getIntent(); + filter = (Filter) intent.getSerializableExtra("filter"); + + ((TextView) findViewById(R.id.filter_settings_title)).setText(filter.getTitle()); + ((TextView) findViewById(R.id.filter_settings_keywords)).setText(filter.getKeywordsAsString()); + + final FeedAdapter fAdapter = new FeedAdapter(this, R.layout.item_filter_settings_feed, filter.getFeeds()); + ((ListView) findViewById(R.id.filter_settings_feeds_list)).setAdapter(fAdapter); + } + + public void openKeywordsDialog(View v) { + (new KeywordsDialogFragment()).show(getFragmentManager(), ""); + } + + public class KeywordsDialogFragment extends DialogFragment { + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_filter_settings_keywords, container); + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + + final KeywordAdapter kAdapter = new KeywordAdapter(getActivity(), R.layout.item_filter_settings_keyword, filter.getKeywords()); + ((ListView) getActivity().findViewById(R.id.filter_settings_feeds_list)).setAdapter(kAdapter); + } + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + builder.setMessage("Hello world") + .setPositiveButton("Yes", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + // FIRE ZE MISSILES! + } + }) + .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + // User cancelled the dialog + } + }); + // Create the AlertDialog object and return it + return builder.create(); + } + } + + private static class FeedAdapter extends ArrayAdapter<Feed> { + + Context context; + int layoutResourceId; + List<Feed> feeds; + + public FeedAdapter(Context context, int resource, List<Feed> objects) { + super(context, resource, objects); + this.context = context; + layoutResourceId = resource; + feeds = objects; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + View row = convertView; + FeedHolder holder = null; + + if (row == null) { + LayoutInflater inflater = ((Activity) context).getLayoutInflater(); + row = inflater.inflate(layoutResourceId, parent, false); + + holder = new FeedHolder(); + holder.title = (TextView) row.findViewById(R.id.filter_settings_feed_item_title); + holder.url = (TextView) row.findViewById(R.id.filter_settings_feed_item_url); + + row.setTag(holder); + } else { + holder = (FeedHolder) row.getTag(); + } + + Feed feed = feeds.get(position); + holder.title.setText(feed.getTitle()); + holder.url.setText(feed.getURL().toString()); + + return row; + } + + private static class FeedHolder { + TextView title; + TextView url; + } + } + + private static class KeywordAdapter extends ArrayAdapter<Keyword> { + + Context context; + int layoutResourceId; + List<Keyword> keywords; + + public KeywordAdapter(Context context, int resource, List<Keyword> objects) { + super(context, resource, objects); + this.context = context; + layoutResourceId = resource; + keywords = objects; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + View row = convertView; + KeywordHolder holder = null; + + if (row == null) { + LayoutInflater inflater = ((Activity) context).getLayoutInflater(); + row = inflater.inflate(layoutResourceId, parent, false); + + holder = new KeywordHolder(); + holder.title = (TextView) row.findViewById(R.id.filter_settings_keyword_item_title); + + row.setTag(holder); + } else { + holder = (KeywordHolder) row.getTag(); + } + + Keyword keyword = keywords.get(position); + holder.title.setText(keyword.getKeyword()); + + return row; + } + + private static class KeywordHolder { + TextView title; + } } } diff --git a/app/src/main/java/org/rssin/android/FiltersActivity.java b/app/src/main/java/org/rssin/android/FiltersActivity.java index 54a380f..6b1a3d7 100644 --- a/app/src/main/java/org/rssin/android/FiltersActivity.java +++ b/app/src/main/java/org/rssin/android/FiltersActivity.java @@ -7,8 +7,6 @@ import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; @@ -18,7 +16,6 @@ import android.widget.TextView; import android.widget.Toast; import org.rssin.rssin.Filter; -import org.rssin.rssin.Keyword; import org.rssin.rssin.R; import java.io.IOException; @@ -48,12 +45,7 @@ public class FiltersActivity extends ActionBarActivity { filters = new FiltersList(); } - Filter filter = new Filter("Hello world"); - filter.getKeywords().add(new Keyword("Keyword test")); - filter.getKeywords().add(new Keyword("Keyword test 2")); - filters.getFilters().add(filter); - - final FilterAdapter adapter = new FilterAdapter(this, R.layout.activity_filters_item, filters.getFilters()); + final FilterAdapter adapter = new FilterAdapter(this, R.layout.item_filter, filters.getFilters()); filtersView.setAdapter(adapter); try { diff --git a/app/src/main/java/org/rssin/rssin/Feed.java b/app/src/main/java/org/rssin/rssin/Feed.java new file mode 100644 index 0000000..1dcb4d8 --- /dev/null +++ b/app/src/main/java/org/rssin/rssin/Feed.java @@ -0,0 +1,54 @@ +package org.rssin.rssin; + +import java.net.MalformedURLException; +import java.net.URL; + +/** + * Created by camilstaps on 20-5-15. + */ +public class Feed { + + private String title; + private URL url; + + public Feed(URL url) { + this.url = url; + this.title = url.toString(); + } + + public Feed(String url) throws MalformedURLException { + this.url = new URL(url); + this.title = url; + } + + public Feed(URL url, String title) { + this.url = url; + this.title = title; + } + + public Feed(String url, String title) throws MalformedURLException { + this.url = new URL(url); + this.title = title; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public URL getURL() { + return url; + } + + public void setURL(URL url) { + this.url = url; + } + + public void setURL(String url) throws MalformedURLException { + this.url = new URL(url); + } + +} diff --git a/app/src/main/java/org/rssin/rssin/Filter.java b/app/src/main/java/org/rssin/rssin/Filter.java index 1cffe1a..a5a4cd9 100644 --- a/app/src/main/java/org/rssin/rssin/Filter.java +++ b/app/src/main/java/org/rssin/rssin/Filter.java @@ -2,8 +2,6 @@ package org.rssin.rssin; import android.text.TextUtils; -import org.rssin.rss.Feed; - import java.io.Serializable; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/res/layout/activity_filter_settings.xml b/app/src/main/res/layout/activity_filter_settings.xml index 6fb9932..4f3b177 100644 --- a/app/src/main/res/layout/activity_filter_settings.xml +++ b/app/src/main/res/layout/activity_filter_settings.xml @@ -1,9 +1,46 @@ -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + tools:context="org.rssin.android.FilterSettingsActivity" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" - tools:context="org.rssin.android.FilterSettingsActivity"> + android:orientation="vertical"> -</RelativeLayout> + <TextView + android:id="@+id/filter_settings_title" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textSize="22sp" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingTop="6dp" + android:paddingBottom="6dp" + android:orientation="horizontal"> + + <Button + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/filter_settings_edit_keywords" + android:onClick="openKeywordsDialog"/> + + <TextView + android:id="@+id/filter_settings_keywords" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:scrollbars="horizontal" + android:maxLines="1"/> + + </LinearLayout> + + <ListView + android:id="@+id/filter_settings_feeds_list" + android:layout_width="match_parent" + android:layout_height="match_parent"></ListView> + +</LinearLayout> diff --git a/app/src/main/res/layout/activity_filters.xml b/app/src/main/res/layout/activity_filters.xml index 521a319..700e939 100644 --- a/app/src/main/res/layout/activity_filters.xml +++ b/app/src/main/res/layout/activity_filters.xml @@ -1,9 +1,12 @@ -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" - android:paddingRight="@dimen/activity_horizontal_margin" - android:paddingTop="@dimen/activity_vertical_margin" - android:paddingBottom="@dimen/activity_vertical_margin" +<RelativeLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:paddingLeft="0dp" + android:paddingRight="0dp" + android:paddingTop="0dp" + android:paddingBottom="0dp" tools:context="org.rssin.android.FiltersActivity"> <ListView diff --git a/app/src/main/res/layout/fragment_filter_settings_keywords.xml b/app/src/main/res/layout/fragment_filter_settings_keywords.xml new file mode 100644 index 0000000..418129e --- /dev/null +++ b/app/src/main/res/layout/fragment_filter_settings_keywords.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <ListView + android:id="@+id/filter_settings_keywords_list" + android:layout_width="match_parent" + android:layout_height="match_parent"></ListView> + +</LinearLayout>
\ No newline at end of file diff --git a/app/src/main/res/layout/activity_filters_item.xml b/app/src/main/res/layout/item_filter.xml index 99fbb19..99fbb19 100644 --- a/app/src/main/res/layout/activity_filters_item.xml +++ b/app/src/main/res/layout/item_filter.xml diff --git a/app/src/main/res/layout/item_filter_settings_feed.xml b/app/src/main/res/layout/item_filter_settings_feed.xml new file mode 100644 index 0000000..7512330 --- /dev/null +++ b/app/src/main/res/layout/item_filter_settings_feed.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="vertical" + android:layout_width="fill_parent" + android:layout_height="fill_parent"> + + <TextView android:id="@+id/filter_settings_feed_item_title" + android:layout_width="fill_parent" + android:layout_height="fill_parent" + android:textSize="22sp" + android:padding="10dp"/> + + <TextView android:id="@+id/filter_settings_feed_item_url" + android:layout_width="fill_parent" + android:layout_height="fill_parent" + android:padding="10dp"/> + +</LinearLayout>
\ No newline at end of file diff --git a/app/src/main/res/layout/item_filter_settings_keyword.xml b/app/src/main/res/layout/item_filter_settings_keyword.xml new file mode 100644 index 0000000..ad9a231 --- /dev/null +++ b/app/src/main/res/layout/item_filter_settings_keyword.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="vertical" + android:layout_width="fill_parent" + android:layout_height="fill_parent"> + + <TextView android:id="@+id/filter_settings_keyword_item_title" + android:layout_width="fill_parent" + android:layout_height="fill_parent" + android:padding="10dp"/> + +</LinearLayout>
\ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 73c7f17..7bd62cc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3,6 +3,9 @@ <string name="action_settings">Settings</string> <string name="action_filters">Filters</string> + <string name="title_activity_filters">Filters</string> <string name="title_activity_filter_settings">Filter Settings</string> + + <string name="filter_settings_edit_keywords">Edit</string> </resources> |