diff --git a/media/android/NewsBlur/res/layout/row_feed.xml b/media/android/NewsBlur/res/layout/row_feed.xml index 07e5e5b2b..b55891b34 100644 --- a/media/android/NewsBlur/res/layout/row_feed.xml +++ b/media/android/NewsBlur/res/layout/row_feed.xml @@ -2,18 +2,29 @@ - - + + - + android:textSize="16dp" + android:layout_marginLeft="70dp" + android:textStyle="bold" /> + + + \ No newline at end of file diff --git a/media/android/NewsBlur/res/layout/row_folder_collapsed.xml b/media/android/NewsBlur/res/layout/row_folder_collapsed.xml index b2cc36027..65d232c94 100644 --- a/media/android/NewsBlur/res/layout/row_folder_collapsed.xml +++ b/media/android/NewsBlur/res/layout/row_folder_collapsed.xml @@ -3,7 +3,8 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" - android:padding="8dp" + android:paddingTop="8dp" + android:paddingBottom="8dp" android:background="@color/lightgray"> \ No newline at end of file diff --git a/media/android/NewsBlur/res/layout/row_folder_expanded.xml b/media/android/NewsBlur/res/layout/row_folder_expanded.xml index 4040851c8..c2a65a920 100644 --- a/media/android/NewsBlur/res/layout/row_folder_expanded.xml +++ b/media/android/NewsBlur/res/layout/row_folder_expanded.xml @@ -3,7 +3,8 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" - android:padding="8dp" + android:paddingTop="8dp" + android:paddingBottom="8dp" android:background="@color/lightgray"> Press to log in. NewsBlur Logo Press to sign up + The feed\'s favicon diff --git a/media/android/NewsBlur/src/com/newsblur/database/BlurDatabase.java b/media/android/NewsBlur/src/com/newsblur/database/BlurDatabase.java index 2bbcbb71b..38b870285 100644 --- a/media/android/NewsBlur/src/com/newsblur/database/BlurDatabase.java +++ b/media/android/NewsBlur/src/com/newsblur/database/BlurDatabase.java @@ -28,6 +28,7 @@ public class BlurDatabase extends SQLiteOpenHelper { DatabaseConstants.FEED_ACTIVE + TEXT + ", " + DatabaseConstants.FEED_ADDRESS + TEXT + ", " + DatabaseConstants.FEED_FAVICON_COLOUR + TEXT + ", " + + DatabaseConstants.FEED_FAVICON + TEXT + ", " + DatabaseConstants.FEED_FAVICON_FADE + TEXT + ", " + DatabaseConstants.FEED_LINK + TEXT + ", " + DatabaseConstants.FEED_SUBSCRIBERS + TEXT + ", " + diff --git a/media/android/NewsBlur/src/com/newsblur/database/DatabaseConstants.java b/media/android/NewsBlur/src/com/newsblur/database/DatabaseConstants.java index b48d691c6..634ab66be 100644 --- a/media/android/NewsBlur/src/com/newsblur/database/DatabaseConstants.java +++ b/media/android/NewsBlur/src/com/newsblur/database/DatabaseConstants.java @@ -18,6 +18,7 @@ public class DatabaseConstants { public static final String FEED_FAVICON_FADE = "favicon_fade"; public static final String FEED_FAVICON_COLOUR = "favicon_colour"; public static final String FEED_ACTIVE = "active"; + public static final String FEED_FAVICON = "favicon"; public static final String FEED_FOLDER_MAP_TABLE = "feed_folder_map"; public static final String FEED_FOLDER_FEED_ID = "feed_id"; @@ -42,5 +43,6 @@ public class DatabaseConstants { public static final String STORY_INTELLIGENCE_TITLE = "intelligence_title"; public static final String STORY_READ = "read"; public static final String STORY_FEED_ID = "feed_id"; + } diff --git a/media/android/NewsBlur/src/com/newsblur/database/FolderTreeAdapter.java b/media/android/NewsBlur/src/com/newsblur/database/FolderTreeAdapter.java index 8bf2f5c76..f1280c39e 100644 --- a/media/android/NewsBlur/src/com/newsblur/database/FolderTreeAdapter.java +++ b/media/android/NewsBlur/src/com/newsblur/database/FolderTreeAdapter.java @@ -23,5 +23,5 @@ public class FolderTreeAdapter extends SimpleCursorTreeAdapter { final Uri uri = FeedProvider.FEED_FOLDER_MAP_URI.buildUpon().appendPath(parentFolder.getName()).build(); return resolver.query(uri, null, null, null, null); } - + } diff --git a/media/android/NewsBlur/src/com/newsblur/domain/Feed.java b/media/android/NewsBlur/src/com/newsblur/domain/Feed.java index 680bbe747..7a782b429 100644 --- a/media/android/NewsBlur/src/com/newsblur/domain/Feed.java +++ b/media/android/NewsBlur/src/com/newsblur/domain/Feed.java @@ -19,6 +19,9 @@ public class Feed { @SerializedName("favicon_color") public String faviconColour; + @SerializedName("favicon") + public String favicon; + @SerializedName("favicon_fade") public String faviconFade; @@ -41,6 +44,7 @@ public class Feed { values.put(DatabaseConstants.FEED_ADDRESS, address); values.put(DatabaseConstants.FEED_FAVICON_COLOUR, faviconColour); values.put(DatabaseConstants.FEED_FAVICON_FADE, faviconFade); + values.put(DatabaseConstants.FEED_FAVICON, favicon); values.put(DatabaseConstants.FEED_LINK, feedLink); values.put(DatabaseConstants.FEED_SUBSCRIBERS, subscribers); values.put(DatabaseConstants.FEED_TITLE, title); diff --git a/media/android/NewsBlur/src/com/newsblur/fragment/FolderFeedListFragment.java b/media/android/NewsBlur/src/com/newsblur/fragment/FolderFeedListFragment.java index f1de3df9a..403da76fa 100644 --- a/media/android/NewsBlur/src/com/newsblur/fragment/FolderFeedListFragment.java +++ b/media/android/NewsBlur/src/com/newsblur/fragment/FolderFeedListFragment.java @@ -13,6 +13,7 @@ import com.newsblur.R; import com.newsblur.database.DatabaseConstants; import com.newsblur.database.FeedProvider; import com.newsblur.database.FolderTreeAdapter; +import com.newsblur.view.FolderTreeViewBinder; public class FolderFeedListFragment extends Fragment { @@ -29,12 +30,11 @@ public class FolderFeedListFragment extends Fragment { final String[] groupFrom = new String[] { DatabaseConstants.FOLDER_NAME }; final int[] groupTo = new int[] { R.id.row_foldername }; - final String[] childFrom = new String[] { DatabaseConstants.FEED_TITLE }; - final int[] childTo = new int[] { R.id.row_feedname }; + final String[] childFrom = new String[] { DatabaseConstants.FEED_TITLE, DatabaseConstants.FEED_FAVICON }; + final int[] childTo = new int[] { R.id.row_feedname, R.id.row_feedfavicon }; folderAdapter = new FolderTreeAdapter(getActivity(), cursor, R.layout.row_folder_collapsed, R.layout.row_folder_expanded, groupFrom, groupTo, R.layout.row_feed, childFrom, childTo); - - + folderAdapter.setViewBinder(new FolderTreeViewBinder()); } @Override @@ -42,7 +42,7 @@ public class FolderFeedListFragment extends Fragment { View v = inflater.inflate(R.layout.fragment_folderfeedlist, container); list = (ExpandableListView) v.findViewById(R.id.folderfeed_list); list.setAdapter(folderAdapter); - + return v; } diff --git a/media/android/NewsBlur/src/com/newsblur/network/APIConstants.java b/media/android/NewsBlur/src/com/newsblur/network/APIConstants.java index 1908ff325..2235e52b5 100644 --- a/media/android/NewsBlur/src/com/newsblur/network/APIConstants.java +++ b/media/android/NewsBlur/src/com/newsblur/network/APIConstants.java @@ -4,7 +4,7 @@ package com.newsblur.network; public class APIConstants { public static final String URL_LOGIN = "http://newsblur.com/api/login"; - public static final String URL_FEEDS = "http://newsblur.com/reader/feeds/"; + public static final String URL_FEEDS = "http://newsblur.com/reader/feeds/?include_favicons=true"; public static final String USERNAME = "username"; public static final String PASSWORD = "password"; diff --git a/media/android/NewsBlur/src/com/newsblur/view/FolderTreeViewBinder.java b/media/android/NewsBlur/src/com/newsblur/view/FolderTreeViewBinder.java new file mode 100644 index 000000000..7d89e21d7 --- /dev/null +++ b/media/android/NewsBlur/src/com/newsblur/view/FolderTreeViewBinder.java @@ -0,0 +1,27 @@ +package com.newsblur.view; + +import android.database.Cursor; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.text.TextUtils; +import android.util.Base64; +import android.view.View; +import android.widget.ImageView; +import android.widget.SimpleCursorTreeAdapter.ViewBinder; + +import com.newsblur.database.DatabaseConstants; + +public class FolderTreeViewBinder implements ViewBinder { + + @Override + public boolean setViewValue(View view, Cursor cursor, int columnIndex) { + if (TextUtils.equals(cursor.getColumnName(columnIndex), DatabaseConstants.FEED_FAVICON) && cursor.getBlob(columnIndex) != null) { + final byte[] data = Base64.decode(cursor.getBlob(columnIndex), Base64.DEFAULT); + Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); + ((ImageView) view).setImageBitmap(bitmap); + return true; + } + return false; + } + +}