From d1a7c366aa662beb7f46dbd19e181c24585bc86b Mon Sep 17 00:00:00 2001 From: RyanBateman Date: Thu, 19 Jul 2012 10:04:51 -0400 Subject: [PATCH] Added basic loading view when initially loading content. --- .../res/layout/fragment_loadingitems.xml | 21 ++++++++++ media/android/NewsBlur/res/values/strings.xml | 1 + .../src/com/newsblur/activity/Reading.java | 22 +++++++---- .../com/newsblur/database/ReadingAdapter.java | 38 ++++++++++++------- .../newsblur/fragment/LoadingFragment.java | 18 +++++++++ .../fragment/ReadingItemFragment.java | 5 --- 6 files changed, 79 insertions(+), 26 deletions(-) create mode 100644 media/android/NewsBlur/res/layout/fragment_loadingitems.xml create mode 100644 media/android/NewsBlur/src/com/newsblur/fragment/LoadingFragment.java diff --git a/media/android/NewsBlur/res/layout/fragment_loadingitems.xml b/media/android/NewsBlur/res/layout/fragment_loadingitems.xml new file mode 100644 index 000000000..62938e03f --- /dev/null +++ b/media/android/NewsBlur/res/layout/fragment_loadingitems.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file diff --git a/media/android/NewsBlur/res/values/strings.xml b/media/android/NewsBlur/res/values/strings.xml index 5e9a3d18b..16521cbac 100644 --- a/media/android/NewsBlur/res/values/strings.xml +++ b/media/android/NewsBlur/res/values/strings.xml @@ -17,6 +17,7 @@ Hello World! Alert + Loading… There was a problem following the user. Check your internet connection and try again. There was a problem unfollowing the user. Check your internet connection and try again. diff --git a/media/android/NewsBlur/src/com/newsblur/activity/Reading.java b/media/android/NewsBlur/src/com/newsblur/activity/Reading.java index 1b5a1ec94..0427359df 100644 --- a/media/android/NewsBlur/src/com/newsblur/activity/Reading.java +++ b/media/android/NewsBlur/src/com/newsblur/activity/Reading.java @@ -15,6 +15,7 @@ import com.actionbarsherlock.app.SherlockFragmentActivity; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuInflater; import com.actionbarsherlock.view.MenuItem; +import com.actionbarsherlock.view.Window; import com.newsblur.R; import com.newsblur.database.FeedProvider; import com.newsblur.database.ReadingAdapter; @@ -39,6 +40,9 @@ public class Reading extends SherlockFragmentActivity { @Override protected void onCreate(Bundle savedInstanceBundle) { + requestWindowFeature(Window.FEATURE_PROGRESS); + requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); + super.onCreate(savedInstanceBundle); setContentView(R.layout.activity_reading); @@ -47,14 +51,15 @@ public class Reading extends SherlockFragmentActivity { getSupportActionBar().setDisplayHomeAsUpEnabled(true); readingAdapter = new ReadingAdapter(fragmentManager, this, feedId); - getSupportLoaderManager().initLoader(READING_LOADER , null, readingAdapter); - + contentResolver = getContentResolver(); final Uri feedUri = FeedProvider.FEEDS_URI.buildUpon().appendPath(feedId).build(); feed = Feed.fromCursor(contentResolver.query(feedUri, null, null, null, null)); setTitle(feed.title); + getSupportLoaderManager().initLoader(READING_LOADER , null, readingAdapter); + syncFragment = (SyncReadingUpdaterFragment) fragmentManager.findFragmentByTag(SyncReadingUpdaterFragment.TAG); if (syncFragment == null) { syncFragment = new SyncReadingUpdaterFragment(); @@ -64,16 +69,17 @@ public class Reading extends SherlockFragmentActivity { pager = (ViewPager) findViewById(R.id.reading_pager); pager.setAdapter(readingAdapter); + setProgressBarVisibility(true); } - + @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); MenuInflater inflater = getSupportMenuInflater(); - inflater.inflate(R.menu.reading, menu); - return true; + inflater.inflate(R.menu.reading, menu); + return true; } - + public void triggerRefresh() { final Intent intent = new Intent(Intent.ACTION_SYNC, null, this, SyncService.class); intent.putExtra(SyncService.EXTRA_STATUS_RECEIVER, syncFragment.receiver); @@ -85,13 +91,14 @@ public class Reading extends SherlockFragmentActivity { public void redrawUI() { Log.d(TAG, "Redrawing reading pager..."); getSupportLoaderManager().restartLoader(READING_LOADER, null, readingAdapter); + setProgressBarVisibility(false); } @Override public boolean onOptionsItemSelected(MenuItem item) { int currentItem = pager.getCurrentItem(); Story story = readingAdapter.getStory(currentItem); - + switch (item.getItemId()) { case android.R.id.home: finish(); @@ -154,7 +161,6 @@ public class Reading extends SherlockFragmentActivity { break; } } - } diff --git a/media/android/NewsBlur/src/com/newsblur/database/ReadingAdapter.java b/media/android/NewsBlur/src/com/newsblur/database/ReadingAdapter.java index a45238305..8f5db67ae 100644 --- a/media/android/NewsBlur/src/com/newsblur/database/ReadingAdapter.java +++ b/media/android/NewsBlur/src/com/newsblur/database/ReadingAdapter.java @@ -13,25 +13,28 @@ import android.support.v4.content.Loader; import android.util.Log; import com.newsblur.domain.Story; +import com.newsblur.fragment.LoadingFragment; import com.newsblur.fragment.ReadingItemFragment; public class ReadingAdapter extends FragmentStatePagerAdapter implements LoaderManager.LoaderCallbacks { - + private Context context; private Cursor cursor; private Uri feedUri; - private String TAG = "ReadingAdapter"; - + private String TAG = "ReadingAdapter"; + private LoadingFragment loadingFragment; + public ReadingAdapter(final FragmentManager fragmentManager, final Context context, final String feedId) { super(fragmentManager); this.context = context; feedUri = FeedProvider.STORIES_URI.buildUpon().appendPath(feedId).build(); } - + @Override public Fragment getItem(int position) { - if (cursor == null) { - return null; + if (cursor == null || cursor.getCount() == 0) { + loadingFragment = new LoadingFragment(); + return loadingFragment; } else { cursor.moveToPosition(position); return new ReadingItemFragment(Story.fromCursor(cursor)); @@ -40,14 +43,14 @@ public class ReadingAdapter extends FragmentStatePagerAdapter implements LoaderM @Override public int getCount() { - if (cursor != null) { + if (cursor != null && cursor.getCount() > 0) { return cursor.getCount(); } else { - Log.d(TAG , "No cursor"); - return 0; + Log.d(TAG , "No cursor - use loading view."); + return 1; } } - + public Story getStory(int position) { if (cursor == null || position > cursor.getCount()) { return null; @@ -56,11 +59,20 @@ public class ReadingAdapter extends FragmentStatePagerAdapter implements LoaderM return Story.fromCursor(cursor); } } + + @Override + public int getItemPosition(Object object) { + if (object instanceof LoadingFragment) { + return POSITION_NONE; + } else { + return POSITION_UNCHANGED; + } + } @Override public Loader onCreateLoader(int loaderId, Bundle bundle) { CursorLoader cursorLoader = new CursorLoader(context, feedUri, null, null, null, null); - return cursorLoader; + return cursorLoader; } @Override @@ -73,7 +85,7 @@ public class ReadingAdapter extends FragmentStatePagerAdapter implements LoaderM public void onLoaderReset(Loader loader) { notifyDataSetChanged(); } - - + + } diff --git a/media/android/NewsBlur/src/com/newsblur/fragment/LoadingFragment.java b/media/android/NewsBlur/src/com/newsblur/fragment/LoadingFragment.java new file mode 100644 index 000000000..3018c090d --- /dev/null +++ b/media/android/NewsBlur/src/com/newsblur/fragment/LoadingFragment.java @@ -0,0 +1,18 @@ +package com.newsblur.fragment; + +import com.newsblur.R; + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +public class LoadingFragment extends Fragment { + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_loadingitems, null); + } + +} diff --git a/media/android/NewsBlur/src/com/newsblur/fragment/ReadingItemFragment.java b/media/android/NewsBlur/src/com/newsblur/fragment/ReadingItemFragment.java index 008370fb8..cff9fb544 100644 --- a/media/android/NewsBlur/src/com/newsblur/fragment/ReadingItemFragment.java +++ b/media/android/NewsBlur/src/com/newsblur/fragment/ReadingItemFragment.java @@ -7,18 +7,14 @@ import android.view.View; import android.view.ViewGroup; import android.webkit.WebSettings; import android.webkit.WebView; -import android.widget.ImageView; import android.widget.TextView; import com.newsblur.R; -import com.newsblur.domain.Feed; import com.newsblur.domain.Story; -import com.newsblur.util.ImageLoader; public class ReadingItemFragment extends Fragment { final Story story; - private ImageLoader imageLoader; public ReadingItemFragment() { story = null; @@ -32,7 +28,6 @@ public class ReadingItemFragment extends Fragment { View view = inflater.inflate(R.layout.fragment_readingitem, null); WebView web = (WebView) view.findViewById(R.id.reading_webview); - imageLoader = new ImageLoader(getActivity()); setupWebview(web); setupItemMetadata(view);