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;
+ }
+
+}