aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCamil Staps2015-06-10 17:55:51 +0200
committerCamil Staps2015-06-10 17:55:51 +0200
commit2a4efbcf0dd087b9880be132fbee862eb8b80ae0 (patch)
tree3c20d533fc27fad788d7092b708085493015dde1
parentFixed bug where fragments were shown over one another (diff)
Cleanup
-rwxr-xr-xapp/src/main/java/org/rssin/android/ArticleActivity.java12
-rwxr-xr-xapp/src/main/java/org/rssin/android/FeedItemAdapter.java3
-rw-r--r--app/src/main/java/org/rssin/android/FeedItemsListFragment.java90
-rwxr-xr-xapp/src/main/java/org/rssin/android/FeedSorterProvider.java2
-rwxr-xr-xapp/src/main/java/org/rssin/android/FeedsActivity.java2
-rwxr-xr-xapp/src/main/java/org/rssin/android/FilterSettingsActivity.java6
-rw-r--r--app/src/main/java/org/rssin/android/FirstTimeBoot.java3
-rwxr-xr-xapp/src/main/java/org/rssin/android/HomeScreenActivity.java10
-rw-r--r--app/src/main/java/org/rssin/android/InternalStorageProvider.java2
-rwxr-xr-xapp/src/main/java/org/rssin/android/NavigationDrawerAdapter.java2
-rwxr-xr-xapp/src/main/java/org/rssin/android/NavigationDrawerAllFeedsFragment.java72
-rwxr-xr-xapp/src/main/java/org/rssin/android/NavigationDrawerFeedFragment.java96
-rwxr-xr-xapp/src/main/java/org/rssin/android/NavigationDrawerFilterFragment.java96
-rwxr-xr-xapp/src/main/java/org/rssin/android/NavigationDrawerFragment.java17
-rwxr-xr-xapp/src/main/java/org/rssin/android/NavigationDrawerManageFeedsFragment.java8
-rwxr-xr-xapp/src/main/java/org/rssin/android/NavigationDrawerManageFiltersFragment.java4
-rwxr-xr-xapp/src/main/java/org/rssin/android/SharedPreferencesStorageProvider.java2
-rwxr-xr-xapp/src/main/java/org/rssin/neurons/FeedSorter.java2
-rwxr-xr-xapp/src/main/java/org/rssin/neurons/MultiNeuralNetwork.java3
-rwxr-xr-xapp/src/main/java/org/rssin/neurons/NeuralNetwork.java3
-rwxr-xr-xapp/src/main/java/org/rssin/neurons/Neuron.java3
-rw-r--r--app/src/main/java/org/rssin/rss/Feed.java1
-rwxr-xr-xapp/src/main/java/org/rssin/rss/FeedLoader.java14
-rwxr-xr-xapp/src/main/java/org/rssin/rssin/Feed.java2
-rwxr-xr-xapp/src/main/java/org/rssin/rssin/FeedLoaderAndSorter.java17
-rwxr-xr-xapp/src/main/java/org/rssin/rssin/Filter.java7
-rw-r--r--app/src/main/java/org/rssin/summaries/BablukiAPI.java8
-rw-r--r--app/src/main/res/drawable/msg_loading.xml9
-rwxr-xr-xapp/src/main/res/layout/fragment_home_screen.xml23
-rwxr-xr-xapp/src/main/res/values/strings.xml2
-rw-r--r--app/src/main/res/values/styles.xml7
31 files changed, 179 insertions, 349 deletions
diff --git a/app/src/main/java/org/rssin/android/ArticleActivity.java b/app/src/main/java/org/rssin/android/ArticleActivity.java
index 2512949..fa5a3d4 100755
--- a/app/src/main/java/org/rssin/android/ArticleActivity.java
+++ b/app/src/main/java/org/rssin/android/ArticleActivity.java
@@ -1,24 +1,20 @@
package org.rssin.android;
import android.content.Intent;
-import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
-import android.support.v7.internal.widget.AdapterViewCompat;
+import android.support.v7.app.ActionBarActivity;
import android.text.Html;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
import android.widget.Toast;
-import org.rssin.rssin.SortedFeedItemContainer;
import org.rssin.rss.FeedItem;
import org.rssin.rssin.R;
+import org.rssin.rssin.SortedFeedItemContainer;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import static org.rssin.neurons.Feedback.*;
+import static org.rssin.neurons.Feedback.Dislike;
+import static org.rssin.neurons.Feedback.Like;
public class ArticleActivity extends ActionBarActivity {
private SortedFeedItemContainer container;
diff --git a/app/src/main/java/org/rssin/android/FeedItemAdapter.java b/app/src/main/java/org/rssin/android/FeedItemAdapter.java
index 7210254..904ca65 100755
--- a/app/src/main/java/org/rssin/android/FeedItemAdapter.java
+++ b/app/src/main/java/org/rssin/android/FeedItemAdapter.java
@@ -6,15 +6,14 @@ package org.rssin.android;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
-import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import org.rssin.neurons.Feedback;
-import org.rssin.rssin.SortedFeedItemContainer;
import org.rssin.rssin.R;
+import org.rssin.rssin.SortedFeedItemContainer;
import org.rssin.summaries.BablukiAPI;
import org.rssin.summaries.LengthMode;
import org.rssin.summaries.SummaryAPIInterface;
diff --git a/app/src/main/java/org/rssin/android/FeedItemsListFragment.java b/app/src/main/java/org/rssin/android/FeedItemsListFragment.java
new file mode 100644
index 0000000..223152f
--- /dev/null
+++ b/app/src/main/java/org/rssin/android/FeedItemsListFragment.java
@@ -0,0 +1,90 @@
+package org.rssin.android;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import org.rssin.listener.RealtimeListener;
+import org.rssin.rssin.Feed;
+import org.rssin.rssin.FeedLoaderAndSorter;
+import org.rssin.rssin.R;
+import org.rssin.rssin.SortedFeedItemContainer;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by camilstaps on 6/10/15.
+ */
+public class FeedItemsListFragment extends Fragment {
+
+ private List<Feed> feeds;
+ private View loadingView;
+ private FeedItemAdapter feedItemAdapter;
+ private Context context;
+
+ public static FeedItemsListFragment newInstance(List<Feed> feeds) {
+ FeedItemsListFragment fragment = new FeedItemsListFragment();
+ fragment.setFeedsList(feeds);
+ return fragment;
+ }
+
+ public void setFeedsList(List<Feed> feeds) {
+ this.feeds = feeds;
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ container.removeAllViews();
+
+ View rootView = inflater.inflate(R.layout.fragment_home_screen, container, false);
+
+ loadingView = rootView.findViewById(R.id.loading);
+ RecyclerView recyclerView = (RecyclerView) rootView.findViewById(R.id.unified_inbox_feeditems);
+ context = recyclerView.getContext();
+
+ RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(context);
+ recyclerView.setLayoutManager(layoutManager);
+
+ feedItemAdapter = new FeedItemAdapter(new ArrayList<SortedFeedItemContainer>());
+ recyclerView.setAdapter(feedItemAdapter);
+ recyclerView.setHasFixedSize(false);
+
+ refresh();
+
+ return rootView;
+ }
+
+ private void refresh() {
+ loadingView.setVisibility(View.VISIBLE);
+
+ FeedLoaderAndSorter loaderAndSorter = new FeedLoaderAndSorter(feeds);
+ loaderAndSorter.getFilteredFeedItems(
+ context,
+ VolleyFetcher.getInstance(context),
+ new RealtimeListener<List<SortedFeedItemContainer>, Object>() {
+ @Override
+ public void finish() {
+ loadingView.setVisibility(View.GONE);
+ }
+
+ @Override
+ public void onReceive(List<SortedFeedItemContainer> data) {
+ feedItemAdapter.feedItems = data;
+ feedItemAdapter.notifyDataSetChanged();
+ }
+
+ @Override
+ public void onError(Object error) {
+ Frontend.error(context, R.string.error_net_load);
+ }
+ }
+ );
+ }
+
+}
diff --git a/app/src/main/java/org/rssin/android/FeedSorterProvider.java b/app/src/main/java/org/rssin/android/FeedSorterProvider.java
index fcdeca2..0b20ab4 100755
--- a/app/src/main/java/org/rssin/android/FeedSorterProvider.java
+++ b/app/src/main/java/org/rssin/android/FeedSorterProvider.java
@@ -6,8 +6,6 @@ import android.util.Log;
import org.rssin.neurons.FeedSorter;
import org.rssin.storage.StorageProvider;
-import java.io.IOException;
-
/**
* @author Jos.
*/
diff --git a/app/src/main/java/org/rssin/android/FeedsActivity.java b/app/src/main/java/org/rssin/android/FeedsActivity.java
index f28b363..2f1555c 100755
--- a/app/src/main/java/org/rssin/android/FeedsActivity.java
+++ b/app/src/main/java/org/rssin/android/FeedsActivity.java
@@ -6,8 +6,8 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.ActivityInfo;
-import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
+import android.support.v7.app.ActionBarActivity;
import android.text.InputType;
import android.view.LayoutInflater;
import android.view.Menu;
diff --git a/app/src/main/java/org/rssin/android/FilterSettingsActivity.java b/app/src/main/java/org/rssin/android/FilterSettingsActivity.java
index c5e6250..b9e0c02 100755
--- a/app/src/main/java/org/rssin/android/FilterSettingsActivity.java
+++ b/app/src/main/java/org/rssin/android/FilterSettingsActivity.java
@@ -2,15 +2,12 @@ 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.content.pm.ActivityInfo;
-import android.graphics.Color;
-import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
+import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
@@ -20,7 +17,6 @@ import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.CheckBox;
import android.widget.EditText;
-import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
diff --git a/app/src/main/java/org/rssin/android/FirstTimeBoot.java b/app/src/main/java/org/rssin/android/FirstTimeBoot.java
index dfae4fd..dc0991c 100644
--- a/app/src/main/java/org/rssin/android/FirstTimeBoot.java
+++ b/app/src/main/java/org/rssin/android/FirstTimeBoot.java
@@ -6,18 +6,15 @@ package org.rssin.android;
import android.app.Activity;
import android.content.Context;
-import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
-import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
-import org.rssin.neurons.Feedback;
import org.rssin.rssin.R;
public class FirstTimeBoot extends Activity {
diff --git a/app/src/main/java/org/rssin/android/HomeScreenActivity.java b/app/src/main/java/org/rssin/android/HomeScreenActivity.java
index 337cb80..070dacc 100755
--- a/app/src/main/java/org/rssin/android/HomeScreenActivity.java
+++ b/app/src/main/java/org/rssin/android/HomeScreenActivity.java
@@ -1,14 +1,14 @@
package org.rssin.android;
import android.content.Intent;
-import android.support.v7.app.ActionBarActivity;
-import android.support.v7.app.ActionBar;
+import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
-import android.os.Bundle;
+import android.support.v4.widget.DrawerLayout;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
-import android.support.v4.widget.DrawerLayout;
import org.rssin.rssin.R;
@@ -41,7 +41,7 @@ public class HomeScreenActivity extends ActionBarActivity implements NavigationD
R.id.navigation_drawer,
(DrawerLayout) findViewById(R.id.drawer_layout));
- NavigationDrawerAllFeedsFragment initialFragment = NavigationDrawerAllFeedsFragment.newInstance();
+ FeedItemsListFragment initialFragment = NavigationDrawerAllFeedsFragment.newInstance();
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.container, currentFragment = initialFragment)
diff --git a/app/src/main/java/org/rssin/android/InternalStorageProvider.java b/app/src/main/java/org/rssin/android/InternalStorageProvider.java
index b6787b4..c6d1d09 100644
--- a/app/src/main/java/org/rssin/android/InternalStorageProvider.java
+++ b/app/src/main/java/org/rssin/android/InternalStorageProvider.java
@@ -1,7 +1,6 @@
package org.rssin.android;
import android.content.Context;
-import android.util.Log;
import org.rssin.neurons.FeedSorter;
import org.rssin.rssin.Filter;
@@ -9,7 +8,6 @@ import org.rssin.storage.FilterStorageProvider;
import org.rssin.storage.Storable;
import org.rssin.storage.StorageProvider;
-import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
diff --git a/app/src/main/java/org/rssin/android/NavigationDrawerAdapter.java b/app/src/main/java/org/rssin/android/NavigationDrawerAdapter.java
index 973f7ab..46fdc66 100755
--- a/app/src/main/java/org/rssin/android/NavigationDrawerAdapter.java
+++ b/app/src/main/java/org/rssin/android/NavigationDrawerAdapter.java
@@ -15,8 +15,8 @@ import org.rssin.rssin.Filter;
import org.rssin.rssin.R;
import java.io.IOException;
-import java.util.List;
import java.util.ArrayList;
+import java.util.List;
/**
* @author Jos.
diff --git a/app/src/main/java/org/rssin/android/NavigationDrawerAllFeedsFragment.java b/app/src/main/java/org/rssin/android/NavigationDrawerAllFeedsFragment.java
index db6a464..e6bd7f1 100755
--- a/app/src/main/java/org/rssin/android/NavigationDrawerAllFeedsFragment.java
+++ b/app/src/main/java/org/rssin/android/NavigationDrawerAllFeedsFragment.java
@@ -1,81 +1,17 @@
package org.rssin.android;
-import android.app.Activity;
-import android.content.Context;
-import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import org.rssin.listener.RealtimeListener;
-import org.rssin.rssin.FeedLoaderAndSorter;
-import org.rssin.rssin.R;
-import org.rssin.rssin.SortedFeedItemContainer;
-
-import java.util.ArrayList;
-import java.util.List;
-
/**
* @author Jos.
*/
-public class NavigationDrawerAllFeedsFragment extends Fragment {
+public class NavigationDrawerAllFeedsFragment extends FeedItemsListFragment {
+
/**
* Returns a new instance of this fragment for the given section
* number.
*/
- public static NavigationDrawerAllFeedsFragment newInstance() {
- NavigationDrawerAllFeedsFragment fragment = new NavigationDrawerAllFeedsFragment();
- return fragment;
+ public static FeedItemsListFragment newInstance() {
+ return FeedItemsListFragment.newInstance(FeedsList.getInstance().getFeeds());
}
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- container.removeAllViews();
-
- final View rootView = inflater.inflate(R.layout.fragment_home_screen, container, false);
- final RecyclerView mRecyclerView = (RecyclerView) rootView.findViewById(R.id.unified_inbox_feeditems);
- final Context context = mRecyclerView.getContext();
- RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(context);
- mRecyclerView.setLayoutManager(mLayoutManager);
-
- final FeedItemAdapter feedItemAdapter = new FeedItemAdapter(new ArrayList<SortedFeedItemContainer>());
- mRecyclerView.setAdapter(feedItemAdapter);
- mRecyclerView.setHasFixedSize(true);
-
- /**
- * @todo Now, feed items are only returned after *all* feeds have been loaded. With many
- * filters that may take a while, so it would be preferable to return intermediate
- * results. We could do this for example with {@link org.rssin.listener.RealtimeListener}
- */
- FeedLoaderAndSorter loaderAndSorter = new FeedLoaderAndSorter(FeedsList.getInstance().getFeeds());
- loaderAndSorter.getFilteredFeedItems(context, VolleyFetcher.getInstance(context), new RealtimeListener<List<SortedFeedItemContainer>, Object>() {
- @Override
- public void finish() {
- // @todo finish
- }
-
- @Override
- public void onReceive(List<SortedFeedItemContainer> data) {
- feedItemAdapter.feedItems = data;
- feedItemAdapter.notifyDataSetChanged();
- }
-
- @Override
- public void onError(Object error) {
- Frontend.error(context, R.string.error_net_load);
- }
- });
-
- return rootView;
- }
-
- @Override
- public void onAttach(Activity activity) {
- super.onAttach(activity);
- }
} \ No newline at end of file
diff --git a/app/src/main/java/org/rssin/android/NavigationDrawerFeedFragment.java b/app/src/main/java/org/rssin/android/NavigationDrawerFeedFragment.java
index cafbb84..383dbd9 100755
--- a/app/src/main/java/org/rssin/android/NavigationDrawerFeedFragment.java
+++ b/app/src/main/java/org/rssin/android/NavigationDrawerFeedFragment.java
@@ -1,108 +1,24 @@
package org.rssin.android;
-import android.app.Activity;
-import android.content.Context;
-import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import com.android.volley.VolleyError;
-
-import org.rssin.listener.FallibleListener;
-import org.rssin.listener.RealtimeListener;
import org.rssin.rssin.Feed;
-import org.rssin.rssin.FeedLoaderAndSorter;
-import org.rssin.rssin.R;
-import org.rssin.rssin.SortedFeedItemContainer;
-import java.io.IOException;
-import java.util.List;
import java.util.ArrayList;
+import java.util.List;
/**
* @author Jos.
*/
-public class NavigationDrawerFeedFragment extends Fragment {
- /**
- * The fragment argument representing the section number for this
- * fragment.
- */
- private static final String ARG_FEED_NAME = "feed_id";
-
- private Feed feed;
+public class NavigationDrawerFeedFragment extends FeedItemsListFragment {
/**
* Returns a new instance of this fragment for the given section
* number.
*/
- public static NavigationDrawerFeedFragment newInstance(Feed feed) {
- NavigationDrawerFeedFragment fragment = new NavigationDrawerFeedFragment();
- Bundle args = new Bundle();
- args.putSerializable(ARG_FEED_NAME, feed);
- fragment.setArguments(args);
- return fragment;
+ public static FeedItemsListFragment newInstance(Feed feed) {
+ List<Feed> list = new ArrayList<>();
+ list.add(feed);
+ return FeedItemsListFragment.newInstance(list);
}
- public NavigationDrawerFeedFragment() {
-
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState)
- {
- container.removeAllViews();
-
- final Bundle args = getArguments();
- final View rootView = inflater.inflate(R.layout.fragment_home_screen, container, false);
- final RecyclerView mRecyclerView = (RecyclerView) rootView.findViewById(R.id.unified_inbox_feeditems);
- final Context context = mRecyclerView.getContext();
- RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(context);
- mRecyclerView.setLayoutManager(mLayoutManager);
-
- feed = (Feed) args.get(ARG_FEED_NAME);
-
- List<Feed> singleFeedList = new ArrayList<Feed>();
- singleFeedList.add(feed);
-
- final FeedItemAdapter feedItemAdapter = new FeedItemAdapter(new ArrayList<SortedFeedItemContainer>());
- mRecyclerView.setAdapter(feedItemAdapter);
- mRecyclerView.setHasFixedSize(true);
-
- /**
- * @todo Now, feed items are only returned after *all* feeds have been loaded. With many
- * filters that may take a while, so it would be preferable to return intermediate
- * results. We could do this for example with {@link org.rssin.listener.RealtimeListener}
- */
- FeedLoaderAndSorter loaderAndSorter = new FeedLoaderAndSorter(singleFeedList);
- loaderAndSorter.getFilteredFeedItems(context, VolleyFetcher.getInstance(context), new RealtimeListener<List<SortedFeedItemContainer>, Object>() {
- @Override
- public void finish() {
- // @todo finish
- }
-
- @Override
- public void onReceive(List<SortedFeedItemContainer> data) {
- feedItemAdapter.feedItems = data;
- feedItemAdapter.notifyDataSetChanged();
- }
-
- @Override
- public void onError(Object error) {
- Frontend.error(context, R.string.error_net_load);
- }
- });
-
- return rootView;
- }
-
- @Override
- public void onAttach(Activity activity) {
- super.onAttach(activity);
- }
}
diff --git a/app/src/main/java/org/rssin/android/NavigationDrawerFilterFragment.java b/app/src/main/java/org/rssin/android/NavigationDrawerFilterFragment.java
index 287ca3b..0b67391 100755
--- a/app/src/main/java/org/rssin/android/NavigationDrawerFilterFragment.java
+++ b/app/src/main/java/org/rssin/android/NavigationDrawerFilterFragment.java
@@ -1,108 +1,20 @@
package org.rssin.android;
-import android.app.Activity;
-import android.content.Context;
-import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import com.android.volley.VolleyError;
-
-import org.rssin.listener.FallibleListener;
-import org.rssin.listener.RealtimeListener;
-import org.rssin.rssin.FeedLoaderAndSorter;
import org.rssin.rssin.Filter;
-import org.rssin.rssin.R;
-import org.rssin.rssin.SortedFeedItemContainer;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
/**
* @author Jos.
*/
-public class NavigationDrawerFilterFragment extends Fragment {
- /**
- * The fragment argument representing the section number for this
- * fragment.
- */
- private static final String ARG_FILTER_NAME = "filter_id";
-
- private Filter filter;
+public class NavigationDrawerFilterFragment extends FeedItemsListFragment {
/**
* Returns a new instance of this fragment for the given section
* number.
*/
- public static NavigationDrawerFilterFragment newInstance(Filter filter) {
- NavigationDrawerFilterFragment fragment = new NavigationDrawerFilterFragment();
- Bundle args = new Bundle();
- args.putInt(ARG_FILTER_NAME, filter.hashCode());
- fragment.setArguments(args);
- return fragment;
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState)
- {
- container.removeAllViews();
-
- final Bundle args = getArguments();
- final View rootView = inflater.inflate(R.layout.fragment_home_screen, container, false);
- final RecyclerView mRecyclerView = (RecyclerView) rootView.findViewById(R.id.unified_inbox_feeditems);
- final Context context = mRecyclerView.getContext();
- RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(context);
- mRecyclerView.setLayoutManager(mLayoutManager);
-
-
- try {
- filter = FiltersList.getInstance(mRecyclerView.getContext()).getFilterFromHashCode(args.getInt(ARG_FILTER_NAME));
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- filter.ensureFeeds(DefaultStorageProvider.getInstance(context));
-
- final FeedItemAdapter feedItemAdapter = new FeedItemAdapter(new ArrayList<SortedFeedItemContainer>());
- mRecyclerView.setAdapter(feedItemAdapter);
- mRecyclerView.setHasFixedSize(true);
-
- /**
- * @todo Now, feed items are only returned after *all* feeds have been loaded. With many
- * filters that may take a while, so it would be preferable to return intermediate
- * results. We could do this for example with {@link org.rssin.listener.RealtimeListener}
- */
- FeedLoaderAndSorter loaderAndSorter = new FeedLoaderAndSorter(filter.getFeeds());
- loaderAndSorter.getFilteredFeedItems(context, VolleyFetcher.getInstance(context), new RealtimeListener<List<SortedFeedItemContainer>, Object>() {
- @Override
- public void finish() {
- // @todo finish
- }
-
- @Override
- public void onReceive(List<SortedFeedItemContainer> data) {
- feedItemAdapter.feedItems = data;
- feedItemAdapter.notifyDataSetChanged();
- }
-
- @Override
- public void onError(Object error) {
- Frontend.error(context, R.string.error_net_load);
- }
- });
-
- return rootView;
+ public static FeedItemsListFragment newInstance(Filter filter) {
+ filter.ensureFeeds(DefaultStorageProvider.getInstance());
+ return FeedItemsListFragment.newInstance(filter.getFeeds());
}
- @Override
- public void onAttach(Activity activity) {
- super.onAttach(activity);
- }
}
diff --git a/app/src/main/java/org/rssin/android/NavigationDrawerFragment.java b/app/src/main/java/org/rssin/android/NavigationDrawerFragment.java
index 3fc286e..6b8ba51 100755
--- a/app/src/main/java/org/rssin/android/NavigationDrawerFragment.java
+++ b/app/src/main/java/org/rssin/android/NavigationDrawerFragment.java
@@ -1,17 +1,16 @@
package org.rssin.android;
-import android.database.DataSetObserver;
-import android.support.v7.app.ActionBarActivity;
import android.app.Activity;
-import android.support.v7.app.ActionBar;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.ActionBarDrawerToggle;
-import android.support.v4.view.GravityCompat;
-import android.support.v4.widget.DrawerLayout;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.os.Bundle;
import android.preference.PreferenceManager;
+import android.support.v4.app.ActionBarDrawerToggle;
+import android.support.v4.app.Fragment;
+import android.support.v4.view.GravityCompat;
+import android.support.v4.widget.DrawerLayout;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
@@ -19,11 +18,7 @@ import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
-import android.widget.ArrayAdapter;
-import android.widget.ListAdapter;
import android.widget.ListView;
-import android.widget.TextView;
-import android.widget.Toast;
import org.rssin.rssin.R;
diff --git a/app/src/main/java/org/rssin/android/NavigationDrawerManageFeedsFragment.java b/app/src/main/java/org/rssin/android/NavigationDrawerManageFeedsFragment.java
index d115a1e..f11f4ec 100755
--- a/app/src/main/java/org/rssin/android/NavigationDrawerManageFeedsFragment.java
+++ b/app/src/main/java/org/rssin/android/NavigationDrawerManageFeedsFragment.java
@@ -4,14 +4,10 @@ import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
-import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.support.v4.app.Fragment;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
import android.text.InputType;
import android.view.LayoutInflater;
-import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
@@ -21,14 +17,10 @@ import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
-import com.android.volley.VolleyError;
-
import org.rssin.listener.FallibleListener;
import org.rssin.rssin.Feed;
-import org.rssin.rssin.FeedLoaderAndSorter;
import org.rssin.rssin.Filter;
import org.rssin.rssin.R;
-import org.rssin.rssin.SortedFeedItemContainer;
import java.io.IOException;
import java.util.List;
diff --git a/app/src/main/java/org/rssin/android/NavigationDrawerManageFiltersFragment.java b/app/src/main/java/org/rssin/android/NavigationDrawerManageFiltersFragment.java
index 1c8200c..5c00958 100755
--- a/app/src/main/java/org/rssin/android/NavigationDrawerManageFiltersFragment.java
+++ b/app/src/main/java/org/rssin/android/NavigationDrawerManageFiltersFragment.java
@@ -5,13 +5,9 @@ import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
-import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.support.v4.app.Fragment;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
-import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
diff --git a/app/src/main/java/org/rssin/android/SharedPreferencesStorageProvider.java b/app/src/main/java/org/rssin/android/SharedPreferencesStorageProvider.java
index ffcf0e1..4cf618e 100755
--- a/app/src/main/java/org/rssin/android/SharedPreferencesStorageProvider.java
+++ b/app/src/main/java/org/rssin/android/SharedPreferencesStorageProvider.java
@@ -7,7 +7,6 @@ import android.util.Log;
import org.rssin.rssin.Feed;
import org.rssin.rssin.Filter;
-import org.rssin.rssin.R;
import org.rssin.storage.FeedStorageProvider;
import org.rssin.storage.FilterStorageProvider;
import org.rssin.storage.Storable;
@@ -18,7 +17,6 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
-import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
diff --git a/app/src/main/java/org/rssin/neurons/FeedSorter.java b/app/src/main/java/org/rssin/neurons/FeedSorter.java
index bfd61a1..025cebb 100755
--- a/app/src/main/java/org/rssin/neurons/FeedSorter.java
+++ b/app/src/main/java/org/rssin/neurons/FeedSorter.java
@@ -5,9 +5,7 @@ import android.util.Log;
import org.rssin.rss.FeedItem;
import org.rssin.rssin.SortedFeedItemContainer;
import org.rssin.storage.Storable;
-import org.rssin.serialization.SerializationTools;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
diff --git a/app/src/main/java/org/rssin/neurons/MultiNeuralNetwork.java b/app/src/main/java/org/rssin/neurons/MultiNeuralNetwork.java
index 904591c..f30e901 100755
--- a/app/src/main/java/org/rssin/neurons/MultiNeuralNetwork.java
+++ b/app/src/main/java/org/rssin/neurons/MultiNeuralNetwork.java
@@ -1,8 +1,5 @@
package org.rssin.neurons;
-import org.rssin.serialization.SerializationTools;
-
-import java.io.IOException;
import java.io.Serializable;
/**
diff --git a/app/src/main/java/org/rssin/neurons/NeuralNetwork.java b/app/src/main/java/org/rssin/neurons/NeuralNetwork.java
index aa34e4f..6f19bf9 100755
--- a/app/src/main/java/org/rssin/neurons/NeuralNetwork.java
+++ b/app/src/main/java/org/rssin/neurons/NeuralNetwork.java
@@ -2,9 +2,6 @@ package org.rssin.neurons;
import android.annotation.SuppressLint;
-import org.rssin.serialization.SerializationTools;
-
-import java.io.IOException;
import java.io.Serializable;
/**
diff --git a/app/src/main/java/org/rssin/neurons/Neuron.java b/app/src/main/java/org/rssin/neurons/Neuron.java
index 6b8b76e..621eee6 100755
--- a/app/src/main/java/org/rssin/neurons/Neuron.java
+++ b/app/src/main/java/org/rssin/neurons/Neuron.java
@@ -1,8 +1,5 @@
package org.rssin.neurons;
-import org.rssin.serialization.SerializationTools;
-
-import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
diff --git a/app/src/main/java/org/rssin/rss/Feed.java b/app/src/main/java/org/rssin/rss/Feed.java
index 3718af2..4cc30a2 100644
--- a/app/src/main/java/org/rssin/rss/Feed.java
+++ b/app/src/main/java/org/rssin/rss/Feed.java
@@ -1,7 +1,6 @@
package org.rssin.rss;
import java.io.Serializable;
-
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedList;
diff --git a/app/src/main/java/org/rssin/rss/FeedLoader.java b/app/src/main/java/org/rssin/rss/FeedLoader.java
index 4cdf80f..d072b96 100755
--- a/app/src/main/java/org/rssin/rss/FeedLoader.java
+++ b/app/src/main/java/org/rssin/rss/FeedLoader.java
@@ -1,13 +1,5 @@
package org.rssin.rss;
-import android.util.Log;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.net.URL;
-import java.util.Date;
-import java.util.LinkedList;
-
import org.rssin.http.Fetcher;
import org.rssin.http.Request;
import org.rssin.listener.FallibleListener;
@@ -15,6 +7,12 @@ import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.net.URL;
+import java.util.Date;
+import java.util.LinkedList;
+
/**
* Created by Randy on 19-5-2015.
diff --git a/app/src/main/java/org/rssin/rssin/Feed.java b/app/src/main/java/org/rssin/rssin/Feed.java
index d108017..5b8dd46 100755
--- a/app/src/main/java/org/rssin/rssin/Feed.java
+++ b/app/src/main/java/org/rssin/rssin/Feed.java
@@ -1,7 +1,6 @@
package org.rssin.rssin;
import android.content.Context;
-import android.util.Log;
import org.json.JSONException;
import org.json.JSONObject;
@@ -11,7 +10,6 @@ import org.rssin.rss.FeedLoader;
import org.rssin.serialization.Jsonable;
import org.rssin.storage.FeedStorageProvider;
import org.rssin.storage.Storable;
-import org.rssin.storage.StorageProvider;
import java.io.IOException;
import java.io.ObjectInputStream;
diff --git a/app/src/main/java/org/rssin/rssin/FeedLoaderAndSorter.java b/app/src/main/java/org/rssin/rssin/FeedLoaderAndSorter.java
index 5a08ab7..4d6267c 100755
--- a/app/src/main/java/org/rssin/rssin/FeedLoaderAndSorter.java
+++ b/app/src/main/java/org/rssin/rssin/FeedLoaderAndSorter.java
@@ -1,11 +1,11 @@
package org.rssin.rssin;
import android.content.Context;
+import android.util.Log;
import org.rssin.android.FeedSorterProvider;
import org.rssin.http.Fetcher;
import org.rssin.listener.FallibleListener;
-import org.rssin.listener.Listener;
import org.rssin.listener.RealtimeListener;
import org.rssin.neurons.FeedSorter;
import org.rssin.rss.FeedItem;
@@ -40,6 +40,7 @@ public class FeedLoaderAndSorter {
final RealtimeListener<List<SortedFeedItemContainer>, Object> listener) {
final List<SortedFeedItemContainer> resultingItems = new ArrayList<>();
final Counter counter = new Counter(feeds.size());
+ Log.v("FLAS", "Counter has size " + feeds.size());
final FeedSorter sorter = FeedSorterProvider.getInstance(context).getFeedSorter();
for (Feed feed : feeds) {
@@ -94,10 +95,16 @@ public class FeedLoaderAndSorter {
feedSorter.sortItems(resultingItems);
}
- if (counter.decr().isZero() || listener.getClass() == RealtimeListener.class) {
- listener.onReceive(resultingItems);
- if (counter.decr().isZero() && listener.getClass() == RealtimeListener.class) {
- ((RealtimeListener) listener).finish();
+ synchronized (counter) {
+ counter.decr();
+ Log.v("FLAS", "Counter has size " + counter.count);
+ if (counter.isZero()) {
+ Log.v("FLAS", "Calling onReceive");
+ listener.onReceive(resultingItems);
+ if (counter.isZero()) {
+ Log.v("FLAS", "Calling finish");
+ ((RealtimeListener) listener).finish();
+ }
}
}
}
diff --git a/app/src/main/java/org/rssin/rssin/Filter.java b/app/src/main/java/org/rssin/rssin/Filter.java
index 283bde0..ee72fe2 100755
--- a/app/src/main/java/org/rssin/rssin/Filter.java
+++ b/app/src/main/java/org/rssin/rssin/Filter.java
@@ -1,22 +1,15 @@
package org.rssin.rssin;
import android.support.annotation.Nullable;
-import android.util.Log;
-import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
-import org.rssin.neurons.FeedSorter;
import org.rssin.serialization.JsonSerializer;
import org.rssin.serialization.Jsonable;
import org.rssin.storage.FeedStorageProvider;
import org.rssin.storage.FilterStorageProvider;
import org.rssin.storage.Storable;
-import org.rssin.storage.StorageProvider;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
diff --git a/app/src/main/java/org/rssin/summaries/BablukiAPI.java b/app/src/main/java/org/rssin/summaries/BablukiAPI.java
index 5bbed5c..961eeb1 100644
--- a/app/src/main/java/org/rssin/summaries/BablukiAPI.java
+++ b/app/src/main/java/org/rssin/summaries/BablukiAPI.java
@@ -5,15 +5,11 @@
*/
package org.rssin.summaries;
-import android.graphics.drawable.Drawable;
-import android.text.Editable;
import android.text.Html;
-import java.util.ArrayList;
-import java.util.LinkedList;
-
import org.rssin.rss.FeedItem;
-import org.xml.sax.XMLReader;
+
+import java.util.ArrayList;
/**
* Java/SummaryAPI implementation of the Babluki summary tool.
diff --git a/app/src/main/res/drawable/msg_loading.xml b/app/src/main/res/drawable/msg_loading.xml
new file mode 100644
index 0000000..b44da14
--- /dev/null
+++ b/app/src/main/res/drawable/msg_loading.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="rectangle">
+
+ <solid
+ android:color="@color/loading"/>
+
+</shape> \ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_home_screen.xml b/app/src/main/res/layout/fragment_home_screen.xml
index b8c5e17..d9db383 100755
--- a/app/src/main/res/layout/fragment_home_screen.xml
+++ b/app/src/main/res/layout/fragment_home_screen.xml
@@ -1,8 +1,23 @@
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ tools:context="org.rssin.android.HomeScreenActivity.AllFeedsFragment"
+ android:id="@+id/refreshlayout"
android:layout_height="match_parent"
+ android:layout_width="match_parent"
android:padding="0dp"
- tools:context="org.rssin.android.HomeScreenActivity.AllFeedsFragment">
+ android:orientation="vertical">
+
+ <TextView
+ android:id="@+id/loading"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/loading"
+ android:visibility="visible"
+ android:padding="@dimen/listview_item_padding"
+ android:textSize="@dimen/font_size_normal"
+ android:gravity="center_horizontal"
+ android:background="@drawable/msg_loading"/>
<android.support.v7.widget.RecyclerView
android:id="@+id/unified_inbox_feeditems"
@@ -10,4 +25,4 @@
android:layout_width="match_parent"
android:layout_height="match_parent"/>
-</RelativeLayout>
+</LinearLayout>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 9129913..c11dbeb 100755
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -59,6 +59,8 @@
<string name="navigation_drawer_open">Open navigation drawer</string>
<string name="navigation_drawer_close">Close navigation drawer</string>
+ <string name="loading">Loading...</string>
+
<string name="action_example">Example action</string>
<string name="article_author">Written by:</string>
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 9036525..40abb7b 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -1,7 +1,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Base application theme. -->
- <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
+ <style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
@@ -10,4 +10,9 @@
parent="@android:style/Widget.Holo.Light.ActionBar">
<item name="android:background">@drawable/actionbar_color</item>
</style>
+
+ <color name="loading">#ffc400</color>
+ <color name="warning">#ff9900</color>
+ <color name="error">#e32d2d</color>
+ <color name="info">#5ccbf7</color>
</resources>