diff options
author | Camil Staps | 2015-06-10 17:55:51 +0200 |
---|---|---|
committer | Camil Staps | 2015-06-10 17:55:51 +0200 |
commit | 2a4efbcf0dd087b9880be132fbee862eb8b80ae0 (patch) | |
tree | 3c20d533fc27fad788d7092b708085493015dde1 | |
parent | Fixed bug where fragments were shown over one another (diff) |
Cleanup
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> |