From 2a4efbcf0dd087b9880be132fbee862eb8b80ae0 Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Wed, 10 Jun 2015 17:55:51 +0200 Subject: Cleanup --- .../java/org/rssin/android/ArticleActivity.java | 12 +-- .../java/org/rssin/android/FeedItemAdapter.java | 3 +- .../org/rssin/android/FeedItemsListFragment.java | 90 ++++++++++++++++++++ .../java/org/rssin/android/FeedSorterProvider.java | 2 - .../main/java/org/rssin/android/FeedsActivity.java | 2 +- .../org/rssin/android/FilterSettingsActivity.java | 6 +- .../main/java/org/rssin/android/FirstTimeBoot.java | 3 - .../java/org/rssin/android/HomeScreenActivity.java | 10 +-- .../org/rssin/android/InternalStorageProvider.java | 2 - .../org/rssin/android/NavigationDrawerAdapter.java | 2 +- .../android/NavigationDrawerAllFeedsFragment.java | 72 +--------------- .../android/NavigationDrawerFeedFragment.java | 96 ++-------------------- .../android/NavigationDrawerFilterFragment.java | 96 +--------------------- .../rssin/android/NavigationDrawerFragment.java | 17 ++-- .../NavigationDrawerManageFeedsFragment.java | 8 -- .../NavigationDrawerManageFiltersFragment.java | 4 - .../android/SharedPreferencesStorageProvider.java | 2 - .../main/java/org/rssin/neurons/FeedSorter.java | 2 - .../java/org/rssin/neurons/MultiNeuralNetwork.java | 3 - .../main/java/org/rssin/neurons/NeuralNetwork.java | 3 - app/src/main/java/org/rssin/neurons/Neuron.java | 3 - app/src/main/java/org/rssin/rss/Feed.java | 1 - app/src/main/java/org/rssin/rss/FeedLoader.java | 14 ++-- app/src/main/java/org/rssin/rssin/Feed.java | 2 - .../java/org/rssin/rssin/FeedLoaderAndSorter.java | 17 ++-- app/src/main/java/org/rssin/rssin/Filter.java | 7 -- .../main/java/org/rssin/summaries/BablukiAPI.java | 8 +- app/src/main/res/drawable/msg_loading.xml | 9 ++ app/src/main/res/layout/fragment_home_screen.xml | 23 +++++- app/src/main/res/values/strings.xml | 2 + app/src/main/res/values/styles.xml | 7 +- 31 files changed, 179 insertions(+), 349 deletions(-) create mode 100644 app/src/main/java/org/rssin/android/FeedItemsListFragment.java create mode 100644 app/src/main/res/drawable/msg_loading.xml 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 feeds; + private View loadingView; + private FeedItemAdapter feedItemAdapter; + private Context context; + + public static FeedItemsListFragment newInstance(List feeds) { + FeedItemsListFragment fragment = new FeedItemsListFragment(); + fragment.setFeedsList(feeds); + return fragment; + } + + public void setFeedsList(List 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()); + 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, Object>() { + @Override + public void finish() { + loadingView.setVisibility(View.GONE); + } + + @Override + public void onReceive(List 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()); - 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, Object>() { - @Override - public void finish() { - // @todo finish - } - - @Override - public void onReceive(List 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 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 singleFeedList = new ArrayList(); - singleFeedList.add(feed); - - final FeedItemAdapter feedItemAdapter = new FeedItemAdapter(new ArrayList()); - 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, Object>() { - @Override - public void finish() { - // @todo finish - } - - @Override - public void onReceive(List 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()); - 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, Object>() { - @Override - public void finish() { - // @todo finish - } - - @Override - public void onReceive(List 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, Object> listener) { final List 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 @@ + + + + + + \ 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 @@ - + android:orientation="vertical"> + + - + 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 @@ Open navigation drawer Close navigation drawer + Loading... + Example action Written by: 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 @@ - @@ -10,4 +10,9 @@ parent="@android:style/Widget.Holo.Light.ActionBar"> @drawable/actionbar_color + + #ffc400 + #ff9900 + #e32d2d + #5ccbf7 -- cgit v1.2.3