From 5b47e66734075109b86aafdc7562aa3264f46436 Mon Sep 17 00:00:00 2001
From: Camil Staps
Date: Tue, 19 May 2015 14:38:18 +0200
Subject: SettingsActivity with data sync option
---
.../main/res/values/strings_activity_settings.xml | 34 ++++++++++++++++++++++
1 file changed, 34 insertions(+)
create mode 100644 app/src/main/res/values/strings_activity_settings.xml
(limited to 'app/src/main/res/values')
diff --git a/app/src/main/res/values/strings_activity_settings.xml b/app/src/main/res/values/strings_activity_settings.xml
new file mode 100644
index 0000000..73fa482
--- /dev/null
+++ b/app/src/main/res/values/strings_activity_settings.xml
@@ -0,0 +1,34 @@
+
+ Settings
+
+
+ General
+
+
+ Data & sync
+
+ Sync frequency
+
+ - 1 minute
+ - 2 minutes
+ - 5 minutes
+ - 10 minutes
+ - 15 minutes
+ - 30 minutes
+ - 1 hour
+ - Never
+
+
+ - 1
+ - 2
+ - 5
+ - 10
+ - 15
+ - 30
+ - 60
+ - -1
+
+
+ System sync settings
+
+
--
cgit v1.2.3
From 7ae6bbe9c7800acbea302fc4092533a9d7448f9f Mon Sep 17 00:00:00 2001
From: Camil Staps
Date: Tue, 19 May 2015 14:42:34 +0200
Subject: Framework FiltersActivity
---
app/src/main/AndroidManifest.xml | 8 +++++
.../java/org/rssin/android/FiltersActivity.java | 40 ++++++++++++++++++++++
app/src/main/res/layout/activity_filters.xml | 12 +++++++
app/src/main/res/menu/menu_filters.xml | 7 ++++
app/src/main/res/values/strings.xml | 1 +
5 files changed, 68 insertions(+)
create mode 100644 app/src/main/java/org/rssin/android/FiltersActivity.java
create mode 100644 app/src/main/res/layout/activity_filters.xml
create mode 100644 app/src/main/res/menu/menu_filters.xml
(limited to 'app/src/main/res/values')
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bc95dc9..912bd7b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -20,6 +20,14 @@
android:name="org.rssin.android.SettingsActivity"
android:label="@string/title_activity_settings" >
+
+
+
diff --git a/app/src/main/java/org/rssin/android/FiltersActivity.java b/app/src/main/java/org/rssin/android/FiltersActivity.java
new file mode 100644
index 0000000..dec349f
--- /dev/null
+++ b/app/src/main/java/org/rssin/android/FiltersActivity.java
@@ -0,0 +1,40 @@
+package org.rssin.android;
+
+import android.support.v7.app.ActionBarActivity;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuItem;
+
+import org.rssin.rssin.R;
+
+public class FiltersActivity extends ActionBarActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_filters);
+ }
+
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.menu_filters, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ // Handle action bar item clicks here. The action bar will
+ // automatically handle clicks on the Home/Up button, so long
+ // as you specify a parent activity in AndroidManifest.xml.
+ int id = item.getItemId();
+
+ //noinspection SimplifiableIfStatement
+ if (id == R.id.action_settings) {
+ return true;
+ }
+
+ return super.onOptionsItemSelected(item);
+ }
+}
diff --git a/app/src/main/res/layout/activity_filters.xml b/app/src/main/res/layout/activity_filters.xml
new file mode 100644
index 0000000..6c2912d
--- /dev/null
+++ b/app/src/main/res/layout/activity_filters.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
diff --git a/app/src/main/res/menu/menu_filters.xml b/app/src/main/res/menu/menu_filters.xml
new file mode 100644
index 0000000..0f6a87f
--- /dev/null
+++ b/app/src/main/res/menu/menu_filters.xml
@@ -0,0 +1,7 @@
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index bbe8b60..9f97ad0 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -3,4 +3,5 @@
Hello world!
Settings
+ FiltersActivity
--
cgit v1.2.3
From 59c9090e86aa11d4cf51f620bec3cb6e5312a18d Mon Sep 17 00:00:00 2001
From: Camil Staps
Date: Tue, 19 May 2015 15:59:12 +0200
Subject: Filters
---
.../java/org/rssin/android/FiltersActivity.java | 86 ++++++++++++++++++++++
.../main/java/org/rssin/android/FiltersList.java | 63 ++++++++++++++++
.../org/rssin/android/UnifiedInboxActivity.java | 4 +
.../main/java/org/rssin/neurons/NeuralNetwork.java | 2 +-
app/src/main/java/org/rssin/rss/Feed.java | 5 +-
app/src/main/java/org/rssin/rssin/Filter.java | 55 ++++++++++----
app/src/main/java/org/rssin/rssin/Keyword.java | 11 ++-
app/src/main/res/layout/activity_filters.xml | 6 +-
app/src/main/res/layout/activity_filters_item.xml | 19 +++++
app/src/main/res/values/strings.xml | 2 +-
10 files changed, 232 insertions(+), 21 deletions(-)
create mode 100644 app/src/main/java/org/rssin/android/FiltersList.java
create mode 100644 app/src/main/res/layout/activity_filters_item.xml
(limited to 'app/src/main/res/values')
diff --git a/app/src/main/java/org/rssin/android/FiltersActivity.java b/app/src/main/java/org/rssin/android/FiltersActivity.java
index dec349f..254020f 100644
--- a/app/src/main/java/org/rssin/android/FiltersActivity.java
+++ b/app/src/main/java/org/rssin/android/FiltersActivity.java
@@ -1,18 +1,59 @@
package org.rssin.android;
+import android.app.Activity;
+import android.content.Context;
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.ArrayAdapter;
+import android.widget.ListView;
+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;
+import java.util.List;
+
public class FiltersActivity extends ActionBarActivity {
+ private FiltersList filters;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_filters);
+
+ try {
+ filters = new FiltersList(this);
+ } catch (IOException ex) {
+ Toast.makeText(this, "Couldn't load filters.", Toast.LENGTH_SHORT).show();
+ Log.e("FILTER", "IOException", ex);
+
+ 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);
+
+ FilterAdapter adapter = new FilterAdapter(this, R.layout.activity_filters_item, filters.getFilters());
+ ((ListView) findViewById(R.id.filters_list)).setAdapter(adapter);
+
+ try {
+ filters.save(this);
+ } catch (IOException ex) {
+ Toast.makeText(this, "Couldn't save filters.", Toast.LENGTH_SHORT).show();
+ Log.e("FILTER", "IOException", ex);
+ }
}
@@ -37,4 +78,49 @@ public class FiltersActivity extends ActionBarActivity {
return super.onOptionsItemSelected(item);
}
+
+ private static class FilterAdapter extends ArrayAdapter {
+
+ Context context;
+ int layoutResourceId;
+ List filters;
+
+ public FilterAdapter(Context context, int resource, List objects) {
+ super(context, resource, objects);
+ this.context = context;
+ layoutResourceId = resource;
+ filters = objects;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ View row = convertView;
+ FilterHolder holder = null;
+
+ if (row == null) {
+ LayoutInflater inflater = ((Activity) context).getLayoutInflater();
+ row = inflater.inflate(layoutResourceId, parent, false);
+
+ holder = new FilterHolder();
+ holder.title = (TextView) row.findViewById(R.id.filter_item_title);
+ holder.keywords = (TextView) row.findViewById(R.id.filter_item_keywords);
+
+ row.setTag(holder);
+ } else {
+ holder = (FilterHolder) row.getTag();
+ }
+
+ Filter filter = filters.get(position);
+ holder.title.setText(filter.getTitle());
+ holder.keywords.setText(filter.getKeywordsAsString());
+
+ return row;
+ }
+
+ private static class FilterHolder {
+ TextView title;
+ TextView keywords;
+ }
+ }
+
}
diff --git a/app/src/main/java/org/rssin/android/FiltersList.java b/app/src/main/java/org/rssin/android/FiltersList.java
new file mode 100644
index 0000000..99810a0
--- /dev/null
+++ b/app/src/main/java/org/rssin/android/FiltersList.java
@@ -0,0 +1,63 @@
+package org.rssin.android;
+
+import android.content.Context;
+import android.preference.PreferenceManager;
+import android.util.Base64;
+
+import org.rssin.rssin.Filter;
+
+import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by camilstaps on 19-5-15.
+ */
+public class FiltersList {
+
+ private static final String PREF_KEY = "filters_list";
+ private final List filters;
+
+ public FiltersList(Context context) throws IOException {
+ String filters = PreferenceManager.getDefaultSharedPreferences(context).getString(PREF_KEY, null);
+ if (filters == null) {
+ this.filters = new ArrayList<>();
+ } else {
+ List filters_list;
+ try {
+ ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(Base64.decode(filters, Base64.DEFAULT)));
+ filters_list = (List) ois.readObject();
+ } catch (ClassNotFoundException ex) {
+ filters_list = new ArrayList<>();
+ }
+ this.filters = filters_list;
+ }
+ }
+
+ public FiltersList(List filters) {
+ this.filters = filters;
+ }
+
+ public FiltersList() {
+ this.filters = new ArrayList<>();
+ }
+
+ public List getFilters() {
+ return filters;
+ }
+
+ public void save(Context context) throws IOException {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(baos);
+ oos.writeObject(filters);
+ oos.close();
+ String string = Base64.encodeToString(baos.toByteArray(), Base64.DEFAULT);
+ PreferenceManager.getDefaultSharedPreferences(context).edit().putString(PREF_KEY, string).apply();
+ }
+
+}
diff --git a/app/src/main/java/org/rssin/android/UnifiedInboxActivity.java b/app/src/main/java/org/rssin/android/UnifiedInboxActivity.java
index 697a430..dbe1c89 100644
--- a/app/src/main/java/org/rssin/android/UnifiedInboxActivity.java
+++ b/app/src/main/java/org/rssin/android/UnifiedInboxActivity.java
@@ -1,5 +1,6 @@
package org.rssin.android;
+import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
@@ -14,6 +15,9 @@ public class UnifiedInboxActivity extends ActionBarActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_unified_inbox);
+
+ Intent intent = new Intent(this, FiltersActivity.class);
+ startActivity(intent);
}
diff --git a/app/src/main/java/org/rssin/neurons/NeuralNetwork.java b/app/src/main/java/org/rssin/neurons/NeuralNetwork.java
index d761e35..365991f 100755
--- a/app/src/main/java/org/rssin/neurons/NeuralNetwork.java
+++ b/app/src/main/java/org/rssin/neurons/NeuralNetwork.java
@@ -25,7 +25,7 @@ public class NeuralNetwork {
public int addInput() {
int result = 0;
for (int i = 0; i < hiddenNodes.length; i++) {
- result = hiddenNodes[i].AddWeight();
+ //result = hiddenNodes[i].AddWeight();
}
return result;
diff --git a/app/src/main/java/org/rssin/rss/Feed.java b/app/src/main/java/org/rssin/rss/Feed.java
index 5d65991..fd271d6 100644
--- a/app/src/main/java/org/rssin/rss/Feed.java
+++ b/app/src/main/java/org/rssin/rss/Feed.java
@@ -1,7 +1,10 @@
package org.rssin.rss;
+import java.io.Serializable;
+
/**
* Created by Randy on 19-5-2015.
*/
-public class Feed {
+public class Feed implements Serializable {
+ private static final long serialVersionUID = 2;
}
diff --git a/app/src/main/java/org/rssin/rssin/Filter.java b/app/src/main/java/org/rssin/rssin/Filter.java
index 6bb191f..1cffe1a 100644
--- a/app/src/main/java/org/rssin/rssin/Filter.java
+++ b/app/src/main/java/org/rssin/rssin/Filter.java
@@ -1,45 +1,70 @@
package org.rssin.rssin;
+import android.text.TextUtils;
+
import org.rssin.rss.Feed;
import java.io.Serializable;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.ArrayList;
+import java.util.List;
/**
* Created by camilstaps on 19-5-15.
*/
public class Filter implements Serializable {
- private final Set feeds;
- private final Set keywords;
+ private static final long serialVersionUID = 0;
+
+ private final List feeds;
+ private final List keywords;
+ private String title = new String("");
public Filter() {
- feeds = new HashSet<>();
- keywords = new HashSet<>();
+ feeds = new ArrayList<>();
+ keywords = new ArrayList<>();
}
- public Filter(Set keywords) {
- this.feeds = new HashSet<>();
- this.keywords = keywords;
+ public Filter(String title) {
+ this.title = title;
+ feeds = new ArrayList<>();
+ keywords = new ArrayList<>();
}
- public Filter(HashSet feeds) {
- this.feeds = feeds;
- this.keywords = new HashSet<>();
+ public Filter(String title, List keywords) {
+ this.feeds = new ArrayList<>();
+ this.keywords = keywords;
+ this.title = title;
}
- public Filter(HashSet keywords, HashSet feeds) {
+ public Filter(String title, List keywords, List feeds) {
this.feeds = feeds;
this.keywords = keywords;
+ this.title = title;
}
- public Set getFeeds() {
+ public List getFeeds() {
return feeds;
}
- public Set getKeywords() {
+ public List getKeywords() {
return keywords;
}
+ public String getKeywordsAsString() {
+ Keyword[] keywords = new Keyword[this.keywords.size()];
+ int i = 0;
+ for (Keyword keyword : this.keywords) {
+ keywords[i++] = keyword;
+ }
+ return TextUtils.join(", ", keywords);
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
}
diff --git a/app/src/main/java/org/rssin/rssin/Keyword.java b/app/src/main/java/org/rssin/rssin/Keyword.java
index 690d627..8555e1a 100644
--- a/app/src/main/java/org/rssin/rssin/Keyword.java
+++ b/app/src/main/java/org/rssin/rssin/Keyword.java
@@ -1,9 +1,13 @@
package org.rssin.rssin;
+import java.io.Serializable;
+
/**
* Created by camilstaps on 19-5-15.
*/
-public class Keyword {
+public class Keyword implements Serializable {
+
+ private static final long serialVersionUID = 1;
private final String keyword;
@@ -15,4 +19,9 @@ public class Keyword {
return keyword;
}
+ @Override
+ public String toString() {
+ return keyword;
+ }
+
}
diff --git a/app/src/main/res/layout/activity_filters.xml b/app/src/main/res/layout/activity_filters.xml
index 6c2912d..521a319 100644
--- a/app/src/main/res/layout/activity_filters.xml
+++ b/app/src/main/res/layout/activity_filters.xml
@@ -6,7 +6,9 @@
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="org.rssin.android.FiltersActivity">
-
+
diff --git a/app/src/main/res/layout/activity_filters_item.xml b/app/src/main/res/layout/activity_filters_item.xml
new file mode 100644
index 0000000..99fbb19
--- /dev/null
+++ b/app/src/main/res/layout/activity_filters_item.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
\ 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 9f97ad0..e3e9d33 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -3,5 +3,5 @@
Hello world!
Settings
- FiltersActivity
+ Filters
--
cgit v1.2.3