From 97cc96839d31b6cce59ec29a6681c6fe802552ee Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Fri, 17 Oct 2014 00:06:56 +0400 Subject: initial --- .classpath | 13 - .gitignore | 13 +- .idea/.name | 1 + .idea/compiler.xml | 23 + .idea/copyright/profiles_settings.xml | 3 + .idea/encodings.xml | 5 + .idea/gradle.xml | 19 + .idea/misc.xml | 26 + .idea/modules.xml | 11 + .idea/scopes/scope_settings.xml | 5 + .idea/vcs.xml | 7 + .project | 33 - .settings/org.eclipse.core.resources.prefs | 2 - .settings/org.eclipse.jdt.core.prefs | 11 - AndroidManifest.xml | 256 --- README.md | 24 - Tiny-Tiny-RSS-for-Honeycomb.iml | 19 + build.gradle | 17 + default.properties | 2 - feature_graphic.png | Bin 80284 -> 0 bytes gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 49896 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 164 ++ gradlew.bat | 90 + ic_launcher-web.png | Bin 60810 -> 0 bytes libs/android-support-v4.jar | Bin 758727 -> 0 bytes libs/dashclock-api-r1.1.jar | Bin 16279 -> 0 bytes libs/gson-1.7.1.jar | Bin 173590 -> 0 bytes libs/jsoup-1.6.1.jar | Bin 281579 -> 0 bytes libs/universal-image-loader-1.9.3.jar | Bin 160443 -> 0 bytes lint.xml | 3 - orgfoxttrss/build.gradle | 32 + orgfoxttrss/libs/dashclock-api-r1.1.jar | Bin 0 -> 16279 bytes orgfoxttrss/libs/jsoup-1.6.1.jar | Bin 0 -> 281579 bytes orgfoxttrss/libs/universal-image-loader-1.9.3.jar | Bin 0 -> 160443 bytes orgfoxttrss/lint.xml | 3 + orgfoxttrss/orgfoxttrss.iml | 94 ++ orgfoxttrss/src/main/AndroidManifest.xml | 256 +++ ...sloaderWorkaroundFragmentStatePagerAdapter.java | 39 + .../src/main/java/org/fox/ttrss/ApiRequest.java | 351 ++++ .../main/java/org/fox/ttrss/ArticleFragment.java | 449 +++++ .../src/main/java/org/fox/ttrss/ArticlePager.java | 347 ++++ .../main/java/org/fox/ttrss/CommonActivity.java | 250 +++ .../src/main/java/org/fox/ttrss/DashClock.java | 107 ++ .../src/main/java/org/fox/ttrss/DummyFragment.java | 17 + .../java/org/fox/ttrss/FeedCategoriesFragment.java | 547 ++++++ .../src/main/java/org/fox/ttrss/FeedsActivity.java | 509 ++++++ .../src/main/java/org/fox/ttrss/FeedsFragment.java | 808 +++++++++ .../src/main/java/org/fox/ttrss/GlobalState.java | 63 + .../main/java/org/fox/ttrss/HeadlinesActivity.java | 281 ++++ .../java/org/fox/ttrss/HeadlinesEventListener.java | 11 + .../main/java/org/fox/ttrss/HeadlinesFragment.java | 1179 +++++++++++++ .../main/java/org/fox/ttrss/LoadingFragment.java | 18 + .../main/java/org/fox/ttrss/OnlineActivity.java | 1765 ++++++++++++++++++++ .../java/org/fox/ttrss/PreferencesActivity.java | 25 + .../org/fox/ttrss/offline/OfflineActivity.java | 881 ++++++++++ .../fox/ttrss/offline/OfflineArticleFragment.java | 439 +++++ .../org/fox/ttrss/offline/OfflineArticlePager.java | 298 ++++ .../fox/ttrss/offline/OfflineDownloadService.java | 500 ++++++ .../offline/OfflineFeedCategoriesFragment.java | 337 ++++ .../fox/ttrss/offline/OfflineFeedsActivity.java | 349 ++++ .../fox/ttrss/offline/OfflineFeedsFragment.java | 372 +++++ .../ttrss/offline/OfflineHeadlinesActivity.java | 167 ++ .../offline/OfflineHeadlinesEventListener.java | 7 + .../ttrss/offline/OfflineHeadlinesFragment.java | 774 +++++++++ .../fox/ttrss/offline/OfflineUploadService.java | 286 ++++ .../java/org/fox/ttrss/share/CommonActivity.java | 57 + .../org/fox/ttrss/share/CommonShareActivity.java | 136 ++ .../java/org/fox/ttrss/share/ShareActivity.java | 146 ++ .../org/fox/ttrss/share/SubscribeActivity.java | 321 ++++ .../java/org/fox/ttrss/tasker/TaskerReceiver.java | 93 ++ .../fox/ttrss/tasker/TaskerSettingsActivity.java | 96 ++ .../src/main/java/org/fox/ttrss/types/Article.java | 115 ++ .../main/java/org/fox/ttrss/types/ArticleList.java | 59 + .../main/java/org/fox/ttrss/types/Attachment.java | 75 + .../src/main/java/org/fox/ttrss/types/Feed.java | 90 + .../java/org/fox/ttrss/types/FeedCategory.java | 58 + .../java/org/fox/ttrss/types/FeedCategoryList.java | 43 + .../main/java/org/fox/ttrss/types/FeedList.java | 43 + .../src/main/java/org/fox/ttrss/types/Label.java | 13 + .../src/main/java/org/fox/ttrss/util/AppRater.java | 105 ++ .../java/org/fox/ttrss/util/DatabaseHelper.java | 89 + .../org/fox/ttrss/util/EnlargingImageView.java | 252 +++ .../fox/ttrss/util/FontSizeDialogPreference.java | 224 +++ .../java/org/fox/ttrss/util/HeadlinesRequest.java | 101 ++ .../java/org/fox/ttrss/util/ImageCacheService.java | 212 +++ .../java/org/fox/ttrss/util/LessBrokenWebView.java | 37 + .../org/fox/ttrss/util/NoChildFocusScrollView.java | 34 + .../java/org/fox/ttrss/util/PrefsBackupAgent.java | 19 + .../org/fox/ttrss/util/SimpleLoginManager.java | 105 ++ .../main/java/org/fox/ttrss/util/TitleWebView.java | 91 + .../java/org/fox/ttrss/util/TypefaceCache.java | 29 + .../org/fox/ttrss/widget/SmallWidgetProvider.java | 65 + .../org/fox/ttrss/widget/WidgetUpdateService.java | 141 ++ orgfoxttrss/src/main/res/anim/feed_item.xml | 9 + orgfoxttrss/src/main/res/anim/headline_item.xml | 14 + orgfoxttrss/src/main/res/anim/layout_feeds.xml | 5 + orgfoxttrss/src/main/res/anim/layout_headline.xml | 5 + orgfoxttrss/src/main/res/anim/right_slide_in.xml | 9 + orgfoxttrss/src/main/res/anim/right_slide_out.xml | 9 + .../src/main/res/drawable-hdpi/dashclock.png | Bin 0 -> 3054 bytes .../src/main/res/drawable-hdpi/ic_accept_light.png | Bin 0 -> 1335 bytes .../main/res/drawable-hdpi/ic_action_overflow.png | Bin 0 -> 2863 bytes .../src/main/res/drawable-hdpi/ic_cloud_light.png | Bin 0 -> 1405 bytes .../main/res/drawable-hdpi/ic_important_light.png | Bin 0 -> 1725 bytes .../src/main/res/drawable-hdpi/ic_labels_light.png | Bin 0 -> 1734 bytes .../src/main/res/drawable-hdpi/ic_list_light.png | Bin 0 -> 1386 bytes .../res/drawable-hdpi/ic_menu_attaches_light.png | Bin 0 -> 1461 bytes .../res/drawable-hdpi/ic_menu_published_light.png | Bin 0 -> 977 bytes .../drawable-hdpi/ic_menu_unpublished_light.png | Bin 0 -> 1169 bytes .../src/main/res/drawable-hdpi/ic_new_light.png | Bin 0 -> 1142 bytes .../src/main/res/drawable-hdpi/ic_published.png | Bin 0 -> 1248 bytes .../src/main/res/drawable-hdpi/ic_read_light.png | Bin 0 -> 1636 bytes .../main/res/drawable-hdpi/ic_refresh_light.png | Bin 0 -> 3138 bytes .../res/drawable-hdpi/ic_rotate_left_light.png | Bin 0 -> 1968 bytes .../src/main/res/drawable-hdpi/ic_search_light.png | Bin 0 -> 1764 bytes .../main/res/drawable-hdpi/ic_select_all_light.png | Bin 0 -> 1455 bytes .../src/main/res/drawable-hdpi/ic_share_light.png | Bin 0 -> 1606 bytes .../src/main/res/drawable-hdpi/ic_star_empty.png | Bin 0 -> 1103 bytes .../src/main/res/drawable-hdpi/ic_star_full.png | Bin 0 -> 744 bytes .../src/main/res/drawable-hdpi/ic_undo_light.png | Bin 0 -> 1642 bytes .../res/drawable-hdpi/ic_unimportant_light.png | Bin 0 -> 1768 bytes .../src/main/res/drawable-hdpi/ic_unpublished.png | Bin 0 -> 1069 bytes .../src/main/res/drawable-hdpi/ic_unread_light.png | Bin 0 -> 1599 bytes orgfoxttrss/src/main/res/drawable-hdpi/icon.png | Bin 0 -> 5468 bytes .../drawable-hdpi/ics_divider_vertical_bitmap.png | Bin 0 -> 936 bytes .../main/res/drawable-hdpi/paper_sepia_bitmap.png | Bin 0 -> 35569 bytes .../src/main/res/drawable-hdpi/shadow_bitmap.png | Bin 0 -> 299 bytes .../src/main/res/drawable-xhdpi/dashclock.png | Bin 0 -> 3482 bytes .../main/res/drawable-xhdpi/ic_accept_light.png | Bin 0 -> 1599 bytes .../src/main/res/drawable-xhdpi/ic_cloud_light.png | Bin 0 -> 1593 bytes .../main/res/drawable-xhdpi/ic_important_light.png | Bin 0 -> 2045 bytes .../main/res/drawable-xhdpi/ic_labels_light.png | Bin 0 -> 2169 bytes .../src/main/res/drawable-xhdpi/ic_list_light.png | Bin 0 -> 1446 bytes .../res/drawable-xhdpi/ic_menu_attaches_light.png | Bin 0 -> 1873 bytes .../res/drawable-xhdpi/ic_menu_published_light.png | Bin 0 -> 1266 bytes .../drawable-xhdpi/ic_menu_unpublished_light.png | Bin 0 -> 1546 bytes .../src/main/res/drawable-xhdpi/ic_new_light.png | Bin 0 -> 1221 bytes .../src/main/res/drawable-xhdpi/ic_read_light.png | Bin 0 -> 1923 bytes .../main/res/drawable-xhdpi/ic_refresh_light.png | Bin 0 -> 3219 bytes .../res/drawable-xhdpi/ic_rotate_left_light.png | Bin 0 -> 2406 bytes .../main/res/drawable-xhdpi/ic_search_light.png | Bin 0 -> 2127 bytes .../res/drawable-xhdpi/ic_select_all_light.png | Bin 0 -> 1583 bytes .../src/main/res/drawable-xhdpi/ic_share_light.png | Bin 0 -> 1780 bytes .../src/main/res/drawable-xhdpi/ic_undo_light.png | Bin 0 -> 1914 bytes .../res/drawable-xhdpi/ic_unimportant_light.png | Bin 0 -> 2279 bytes .../main/res/drawable-xhdpi/ic_unread_light.png | Bin 0 -> 1809 bytes orgfoxttrss/src/main/res/drawable-xhdpi/icon.png | Bin 0 -> 7729 bytes orgfoxttrss/src/main/res/drawable-xxhdpi/icon.png | Bin 0 -> 12760 bytes .../src/main/res/drawable/counter_background.xml | 12 + .../main/res/drawable/counter_background_dark.xml | 12 + .../drawable/counter_background_selected_light.xml | 12 + .../main/res/drawable/counter_background_sepia.xml | 12 + .../src/main/res/drawable/flavor_image_border.xml | 11 + orgfoxttrss/src/main/res/drawable/headline_row.xml | 19 + .../main/res/drawable/headline_row_selected.xml | 19 + .../res/drawable/headline_row_selected_sepia.xml | 19 + .../src/main/res/drawable/headline_row_sepia.xml | 19 + .../src/main/res/drawable/headline_row_unread.xml | 19 + .../res/drawable/headline_row_unread_sepia.xml | 19 + .../src/main/res/drawable/ics_divider_vertical.xml | 5 + .../res/drawable/ics_divider_vertical_gray.xml | 5 + orgfoxttrss/src/main/res/drawable/paper_sepia.xml | 4 + orgfoxttrss/src/main/res/drawable/s_dashclock.svg | 1071 ++++++++++++ .../src/main/res/drawable/s_headline_published.svg | 905 ++++++++++ .../main/res/drawable/s_headline_unpublished.svg | 193 +++ orgfoxttrss/src/main/res/drawable/s_icon.svg | 789 +++++++++ orgfoxttrss/src/main/res/drawable/s_marked.svg | 77 + orgfoxttrss/src/main/res/drawable/s_marked_bw.svg | 93 ++ .../src/main/res/drawable/s_marked_bw_full.svg | 93 ++ .../main/res/drawable/s_menu_attaches_light.svg | 143 ++ .../src/main/res/drawable/s_menu_marked.svg | 93 ++ .../main/res/drawable/s_menu_published_light.svg | 189 +++ .../main/res/drawable/s_menu_unpublished_light.svg | 113 ++ .../src/main/res/drawable/s_prev_article.svg | 70 + orgfoxttrss/src/main/res/drawable/shadow.xml | 5 + orgfoxttrss/src/main/res/drawable/shadow_feeds.xml | 7 + .../src/main/res/drawable/shadow_feeds_gray.xml | 7 + .../src/main/res/drawable/shadow_feeds_sepia.xml | 7 + .../src/main/res/drawable/shadow_headlines.xml | 7 + .../main/res/drawable/shadow_headlines_gray.xml | 7 + .../main/res/drawable/shadow_headlines_sepia.xml | 7 + .../src/main/res/layout-sw600dp-land/headlines.xml | 55 + .../res/layout-sw600dp-land/headlines_articles.xml | 57 + .../src/main/res/layout-sw600dp-port/headlines.xml | 35 + .../res/layout-sw600dp-port/headlines_articles.xml | 56 + .../src/main/res/layout-sw700dp/headlines.xml | 55 + .../main/res/layout-sw700dp/headlines_articles.xml | 57 + .../src/main/res/layout/article_fragment.xml | 103 ++ .../main/res/layout/article_fragment_compat.xml | 79 + orgfoxttrss/src/main/res/layout/article_pager.xml | 22 + orgfoxttrss/src/main/res/layout/cats_fragment.xml | 44 + orgfoxttrss/src/main/res/layout/dummy_fragment.xml | 7 + orgfoxttrss/src/main/res/layout/feeds.xml | 29 + orgfoxttrss/src/main/res/layout/feeds_fragment.xml | 44 + orgfoxttrss/src/main/res/layout/feeds_row.xml | 64 + .../src/main/res/layout/feeds_row_selected.xml | 65 + orgfoxttrss/src/main/res/layout/headlines.xml | 29 + .../src/main/res/layout/headlines_articles.xml | 50 + .../src/main/res/layout/headlines_fragment.xml | 47 + orgfoxttrss/src/main/res/layout/headlines_row.xml | 162 ++ .../src/main/res/layout/headlines_row_loadmore.xml | 26 + .../src/main/res/layout/headlines_row_selected.xml | 160 ++ .../res/layout/headlines_row_selected_unread.xml | 161 ++ .../src/main/res/layout/headlines_row_unread.xml | 160 ++ .../src/main/res/layout/loading_fragment.xml | 14 + orgfoxttrss/src/main/res/layout/login.xml | 15 + .../main/res/layout/select_font_size_dialog.xml | 22 + orgfoxttrss/src/main/res/layout/share.xml | 55 + orgfoxttrss/src/main/res/layout/subscribe.xml | 51 + .../src/main/res/layout/tasker_settings.xml | 36 + orgfoxttrss/src/main/res/layout/widget_small.xml | 42 + .../res/menu/article_content_img_context_menu.xml | 27 + .../main/res/menu/article_link_context_menu.xml | 13 + orgfoxttrss/src/main/res/menu/category_menu.xml | 22 + orgfoxttrss/src/main/res/menu/feed_menu.xml | 27 + .../src/main/res/menu/headlines_action_menu.xml | 21 + .../src/main/res/menu/headlines_context_menu.xml | 42 + orgfoxttrss/src/main/res/menu/main_menu.xml | 166 ++ orgfoxttrss/src/main/res/menu/offline_menu.xml | 96 ++ orgfoxttrss/src/main/res/menu/share_menu.xml | 9 + orgfoxttrss/src/main/res/values-cs/strings.xml | 201 +++ orgfoxttrss/src/main/res/values-de/strings.xml | 220 +++ orgfoxttrss/src/main/res/values-es/strings.xml | 204 +++ orgfoxttrss/src/main/res/values-fr/strings.xml | 221 +++ orgfoxttrss/src/main/res/values-it/strings.xml | 201 +++ orgfoxttrss/src/main/res/values-ja/strings.xml | 220 +++ orgfoxttrss/src/main/res/values-pl/strings.xml | 219 +++ orgfoxttrss/src/main/res/values-pt-rBR/strings.xml | 203 +++ orgfoxttrss/src/main/res/values-v11/style.xml | 6 + orgfoxttrss/src/main/res/values-v19/style.xml | 23 + orgfoxttrss/src/main/res/values/arrays.xml | 30 + orgfoxttrss/src/main/res/values/attrs.xml | 31 + orgfoxttrss/src/main/res/values/resources.xml | 14 + orgfoxttrss/src/main/res/values/strings.xml | 226 +++ orgfoxttrss/src/main/res/values/style.xml | 137 ++ orgfoxttrss/src/main/res/xml/preferences.xml | 196 +++ orgfoxttrss/src/main/res/xml/widget_small.xml | 8 + proguard.cfg | 40 - project.properties | 16 - res/anim/feed_item.xml | 9 - res/anim/headline_item.xml | 14 - res/anim/layout_feeds.xml | 5 - res/anim/layout_headline.xml | 5 - res/anim/right_slide_in.xml | 9 - res/anim/right_slide_out.xml | 9 - res/drawable-hdpi/dashclock.png | Bin 3054 -> 0 bytes res/drawable-hdpi/ic_accept_light.png | Bin 1335 -> 0 bytes res/drawable-hdpi/ic_action_overflow.png | Bin 2863 -> 0 bytes res/drawable-hdpi/ic_cloud_light.png | Bin 1405 -> 0 bytes res/drawable-hdpi/ic_important_light.png | Bin 1725 -> 0 bytes res/drawable-hdpi/ic_labels_light.png | Bin 1734 -> 0 bytes res/drawable-hdpi/ic_list_light.png | Bin 1386 -> 0 bytes res/drawable-hdpi/ic_menu_attaches_light.png | Bin 1461 -> 0 bytes res/drawable-hdpi/ic_menu_published_light.png | Bin 977 -> 0 bytes res/drawable-hdpi/ic_menu_unpublished_light.png | Bin 1169 -> 0 bytes res/drawable-hdpi/ic_new_light.png | Bin 1142 -> 0 bytes res/drawable-hdpi/ic_published.png | Bin 1248 -> 0 bytes res/drawable-hdpi/ic_read_light.png | Bin 1636 -> 0 bytes res/drawable-hdpi/ic_refresh_light.png | Bin 3138 -> 0 bytes res/drawable-hdpi/ic_rotate_left_light.png | Bin 1968 -> 0 bytes res/drawable-hdpi/ic_search_light.png | Bin 1764 -> 0 bytes res/drawable-hdpi/ic_select_all_light.png | Bin 1455 -> 0 bytes res/drawable-hdpi/ic_share_light.png | Bin 1606 -> 0 bytes res/drawable-hdpi/ic_star_empty.png | Bin 1103 -> 0 bytes res/drawable-hdpi/ic_star_full.png | Bin 744 -> 0 bytes res/drawable-hdpi/ic_undo_light.png | Bin 1642 -> 0 bytes res/drawable-hdpi/ic_unimportant_light.png | Bin 1768 -> 0 bytes res/drawable-hdpi/ic_unpublished.png | Bin 1069 -> 0 bytes res/drawable-hdpi/ic_unread_light.png | Bin 1599 -> 0 bytes res/drawable-hdpi/icon.png | Bin 5468 -> 0 bytes res/drawable-hdpi/ics_divider_vertical_bitmap.png | Bin 936 -> 0 bytes res/drawable-hdpi/paper_sepia_bitmap.png | Bin 35569 -> 0 bytes res/drawable-hdpi/shadow_bitmap.png | Bin 299 -> 0 bytes res/drawable-xhdpi/dashclock.png | Bin 3482 -> 0 bytes res/drawable-xhdpi/ic_accept_light.png | Bin 1599 -> 0 bytes res/drawable-xhdpi/ic_cloud_light.png | Bin 1593 -> 0 bytes res/drawable-xhdpi/ic_important_light.png | Bin 2045 -> 0 bytes res/drawable-xhdpi/ic_labels_light.png | Bin 2169 -> 0 bytes res/drawable-xhdpi/ic_list_light.png | Bin 1446 -> 0 bytes res/drawable-xhdpi/ic_menu_attaches_light.png | Bin 1873 -> 0 bytes res/drawable-xhdpi/ic_menu_published_light.png | Bin 1266 -> 0 bytes res/drawable-xhdpi/ic_menu_unpublished_light.png | Bin 1546 -> 0 bytes res/drawable-xhdpi/ic_new_light.png | Bin 1221 -> 0 bytes res/drawable-xhdpi/ic_read_light.png | Bin 1923 -> 0 bytes res/drawable-xhdpi/ic_refresh_light.png | Bin 3219 -> 0 bytes res/drawable-xhdpi/ic_rotate_left_light.png | Bin 2406 -> 0 bytes res/drawable-xhdpi/ic_search_light.png | Bin 2127 -> 0 bytes res/drawable-xhdpi/ic_select_all_light.png | Bin 1583 -> 0 bytes res/drawable-xhdpi/ic_share_light.png | Bin 1780 -> 0 bytes res/drawable-xhdpi/ic_undo_light.png | Bin 1914 -> 0 bytes res/drawable-xhdpi/ic_unimportant_light.png | Bin 2279 -> 0 bytes res/drawable-xhdpi/ic_unread_light.png | Bin 1809 -> 0 bytes res/drawable-xhdpi/icon.png | Bin 7729 -> 0 bytes res/drawable-xxhdpi/icon.png | Bin 12760 -> 0 bytes res/drawable/counter_background.xml | 12 - res/drawable/counter_background_dark.xml | 12 - res/drawable/counter_background_selected_light.xml | 12 - res/drawable/counter_background_sepia.xml | 12 - res/drawable/flavor_image_border.xml | 11 - res/drawable/headline_row.xml | 19 - res/drawable/headline_row_selected.xml | 19 - res/drawable/headline_row_selected_sepia.xml | 19 - res/drawable/headline_row_sepia.xml | 19 - res/drawable/headline_row_unread.xml | 19 - res/drawable/headline_row_unread_sepia.xml | 19 - res/drawable/ics_divider_vertical.xml | 5 - res/drawable/ics_divider_vertical_gray.xml | 5 - res/drawable/paper_sepia.xml | 4 - res/drawable/s_dashclock.svg | 1071 ------------ res/drawable/s_headline_published.svg | 905 ---------- res/drawable/s_headline_unpublished.svg | 193 --- res/drawable/s_icon.svg | 789 --------- res/drawable/s_marked.svg | 77 - res/drawable/s_marked_bw.svg | 93 -- res/drawable/s_marked_bw_full.svg | 93 -- res/drawable/s_menu_attaches_light.svg | 143 -- res/drawable/s_menu_marked.svg | 93 -- res/drawable/s_menu_published_light.svg | 189 --- res/drawable/s_menu_unpublished_light.svg | 113 -- res/drawable/s_prev_article.svg | 70 - res/drawable/shadow.xml | 5 - res/drawable/shadow_feeds.xml | 7 - res/drawable/shadow_feeds_gray.xml | 7 - res/drawable/shadow_feeds_sepia.xml | 7 - res/drawable/shadow_headlines.xml | 7 - res/drawable/shadow_headlines_gray.xml | 7 - res/drawable/shadow_headlines_sepia.xml | 7 - res/layout-sw600dp-land/headlines.xml | 55 - res/layout-sw600dp-land/headlines_articles.xml | 57 - res/layout-sw600dp-port/headlines.xml | 35 - res/layout-sw600dp-port/headlines_articles.xml | 56 - res/layout-sw700dp/headlines.xml | 55 - res/layout-sw700dp/headlines_articles.xml | 57 - res/layout/article_fragment.xml | 103 -- res/layout/article_fragment_compat.xml | 79 - res/layout/article_pager.xml | 22 - res/layout/cats_fragment.xml | 44 - res/layout/dummy_fragment.xml | 7 - res/layout/feeds.xml | 29 - res/layout/feeds_fragment.xml | 44 - res/layout/feeds_row.xml | 64 - res/layout/feeds_row_selected.xml | 65 - res/layout/headlines.xml | 29 - res/layout/headlines_articles.xml | 50 - res/layout/headlines_fragment.xml | 47 - res/layout/headlines_row.xml | 162 -- res/layout/headlines_row_loadmore.xml | 26 - res/layout/headlines_row_selected.xml | 160 -- res/layout/headlines_row_selected_unread.xml | 161 -- res/layout/headlines_row_unread.xml | 160 -- res/layout/loading_fragment.xml | 14 - res/layout/login.xml | 15 - res/layout/select_font_size_dialog.xml | 22 - res/layout/share.xml | 55 - res/layout/subscribe.xml | 51 - res/layout/tasker_settings.xml | 36 - res/layout/widget_small.xml | 42 - res/menu/article_content_img_context_menu.xml | 27 - res/menu/article_link_context_menu.xml | 13 - res/menu/category_menu.xml | 22 - res/menu/feed_menu.xml | 27 - res/menu/headlines_action_menu.xml | 21 - res/menu/headlines_context_menu.xml | 42 - res/menu/main_menu.xml | 166 -- res/menu/offline_menu.xml | 96 -- res/menu/share_menu.xml | 9 - res/values-cs/strings.xml | 201 --- res/values-de/strings.xml | 220 --- res/values-es/strings.xml | 204 --- res/values-fr/strings.xml | 221 --- res/values-it/strings.xml | 201 --- res/values-ja/strings.xml | 220 --- res/values-pl/strings.xml | 219 --- res/values-pt-rBR/strings.xml | 203 --- res/values-v11/style.xml | 6 - res/values-v19/style.xml | 23 - res/values/arrays.xml | 30 - res/values/attrs.xml | 31 - res/values/resources.xml | 14 - res/values/strings.xml | 226 --- res/values/style.xml | 137 -- res/xml/preferences.xml | 196 --- res/xml/widget_small.xml | 8 - settings.gradle | 2 + ...sloaderWorkaroundFragmentStatePagerAdapter.java | 39 - src/org/fox/ttrss/ApiRequest.java | 351 ---- src/org/fox/ttrss/ArticleFragment.java | 449 ----- src/org/fox/ttrss/ArticlePager.java | 347 ---- src/org/fox/ttrss/CommonActivity.java | 250 --- src/org/fox/ttrss/DashClock.java | 107 -- src/org/fox/ttrss/DummyFragment.java | 17 - src/org/fox/ttrss/FeedCategoriesFragment.java | 547 ------ src/org/fox/ttrss/FeedsActivity.java | 509 ------ src/org/fox/ttrss/FeedsFragment.java | 808 --------- src/org/fox/ttrss/GlobalState.java | 63 - src/org/fox/ttrss/HeadlinesActivity.java | 281 ---- src/org/fox/ttrss/HeadlinesEventListener.java | 11 - src/org/fox/ttrss/HeadlinesFragment.java | 1179 ------------- src/org/fox/ttrss/LoadingFragment.java | 18 - src/org/fox/ttrss/OnlineActivity.java | 1765 -------------------- src/org/fox/ttrss/PreferencesActivity.java | 25 - src/org/fox/ttrss/offline/OfflineActivity.java | 881 ---------- .../fox/ttrss/offline/OfflineArticleFragment.java | 439 ----- src/org/fox/ttrss/offline/OfflineArticlePager.java | 298 ---- .../fox/ttrss/offline/OfflineDownloadService.java | 500 ------ .../offline/OfflineFeedCategoriesFragment.java | 337 ---- .../fox/ttrss/offline/OfflineFeedsActivity.java | 349 ---- .../fox/ttrss/offline/OfflineFeedsFragment.java | 372 ----- .../ttrss/offline/OfflineHeadlinesActivity.java | 167 -- .../offline/OfflineHeadlinesEventListener.java | 7 - .../ttrss/offline/OfflineHeadlinesFragment.java | 774 --------- .../fox/ttrss/offline/OfflineUploadService.java | 286 ---- src/org/fox/ttrss/share/CommonActivity.java | 57 - src/org/fox/ttrss/share/CommonShareActivity.java | 136 -- src/org/fox/ttrss/share/ShareActivity.java | 146 -- src/org/fox/ttrss/share/SubscribeActivity.java | 321 ---- src/org/fox/ttrss/tasker/TaskerReceiver.java | 93 -- .../fox/ttrss/tasker/TaskerSettingsActivity.java | 96 -- src/org/fox/ttrss/types/Article.java | 115 -- src/org/fox/ttrss/types/ArticleList.java | 59 - src/org/fox/ttrss/types/Attachment.java | 75 - src/org/fox/ttrss/types/Feed.java | 90 - src/org/fox/ttrss/types/FeedCategory.java | 58 - src/org/fox/ttrss/types/FeedCategoryList.java | 43 - src/org/fox/ttrss/types/FeedList.java | 43 - src/org/fox/ttrss/types/Label.java | 13 - src/org/fox/ttrss/util/AppRater.java | 105 -- src/org/fox/ttrss/util/DatabaseHelper.java | 89 - src/org/fox/ttrss/util/EnlargingImageView.java | 252 --- .../fox/ttrss/util/FontSizeDialogPreference.java | 224 --- src/org/fox/ttrss/util/HeadlinesRequest.java | 101 -- src/org/fox/ttrss/util/ImageCacheService.java | 212 --- src/org/fox/ttrss/util/LessBrokenWebView.java | 37 - src/org/fox/ttrss/util/NoChildFocusScrollView.java | 34 - src/org/fox/ttrss/util/PrefsBackupAgent.java | 19 - src/org/fox/ttrss/util/SimpleLoginManager.java | 105 -- src/org/fox/ttrss/util/TitleWebView.java | 91 - src/org/fox/ttrss/util/TypefaceCache.java | 29 - src/org/fox/ttrss/widget/SmallWidgetProvider.java | 65 - src/org/fox/ttrss/widget/WidgetUpdateService.java | 141 -- taskerlocaleapi/build.gradle | 19 + taskerlocaleapi/lint.xml | 3 + taskerlocaleapi/src/main/AndroidManifest.xml | 13 + .../com/twofortyfouram/locale/BreadCrumber.java | 90 + .../java/com/twofortyfouram/locale/Constants.java | 48 + .../java/com/twofortyfouram/locale/Intent.java | 195 +++ .../twofortyfouram/locale/PackageUtilities.java | 123 ++ .../twofortyfouram_locale_ic_menu_dontsave.png | Bin 0 -> 243 bytes .../twofortyfouram_locale_ic_menu_help.png | Bin 0 -> 314 bytes .../twofortyfouram_locale_ic_menu_save.png | Bin 0 -> 953 bytes .../twofortyfouram_locale_ic_menu_dontsave.png | Bin 0 -> 162 bytes .../twofortyfouram_locale_ic_menu_help.png | Bin 0 -> 208 bytes .../twofortyfouram_locale_ic_menu_save.png | Bin 0 -> 512 bytes .../twofortyfouram_locale_ic_menu_dontsave.png | Bin 0 -> 195 bytes .../twofortyfouram_locale_ic_menu_help.png | Bin 0 -> 248 bytes .../twofortyfouram_locale_ic_menu_save.png | Bin 0 -> 707 bytes .../twofortyfouram_locale_ic_menu_dontsave.png | Bin 0 -> 282 bytes .../twofortyfouram_locale_ic_menu_help.png | Bin 0 -> 373 bytes .../twofortyfouram_locale_ic_menu_save.png | Bin 0 -> 1242 bytes .../twofortyfouram_locale_ic_menu_dontsave.xml | 17 + .../twofortyfouram_locale_ic_menu_help.xml | 17 + .../twofortyfouram_locale_ic_menu_save.xml | 17 + .../twofortyfouram_locale_help_save_dontsave.xml | 48 + .../src/main/res/values-cs/strings-cs.xml | 23 + .../src/main/res/values-de/strings-de.xml | 23 + .../src/main/res/values-es/strings-es.xml | 23 + .../src/main/res/values-fr/strings-fr.xml | 23 + .../src/main/res/values-hdpi/integers.xml | 19 + .../src/main/res/values-it/strings-it.xml | 23 + .../src/main/res/values-ja/strings-ja.xml | 23 + .../src/main/res/values-ko/strings-ko.xml | 23 + .../src/main/res/values-ldpi/integers.xml | 19 + .../src/main/res/values-mdpi/integers.xml | 20 + .../src/main/res/values-nb/strings-nb.xml | 23 + .../src/main/res/values-nl/strings-nl.xml | 23 + .../src/main/res/values-pt-rBR/strings-pt-rBR.xml | 23 + .../src/main/res/values-ru/strings-ru.xml | 23 + .../src/main/res/values-sv/strings-sv.xml | 23 + taskerlocaleapi/src/main/res/values-v11/styles.xml | 23 + taskerlocaleapi/src/main/res/values-v14/styles.xml | 23 + taskerlocaleapi/src/main/res/values-v9/styles.xml | 26 + .../src/main/res/values-vi/strings-vi.xml | 23 + taskerlocaleapi/src/main/res/values/id.xml | 27 + taskerlocaleapi/src/main/res/values/strings-en.xml | 32 + taskerlocaleapi/src/main/res/values/styles.xml | 26 + taskerlocaleapi/taskerlocaleapi.iml | 87 + 487 files changed, 24709 insertions(+), 23126 deletions(-) delete mode 100644 .classpath create mode 100644 .idea/.name create mode 100644 .idea/compiler.xml create mode 100644 .idea/copyright/profiles_settings.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/scopes/scope_settings.xml create mode 100644 .idea/vcs.xml delete mode 100644 .project delete mode 100644 .settings/org.eclipse.core.resources.prefs delete mode 100644 .settings/org.eclipse.jdt.core.prefs delete mode 100644 AndroidManifest.xml delete mode 100644 README.md create mode 100644 Tiny-Tiny-RSS-for-Honeycomb.iml create mode 100644 build.gradle delete mode 100644 default.properties delete mode 100644 feature_graphic.png create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat delete mode 100644 ic_launcher-web.png delete mode 100644 libs/android-support-v4.jar delete mode 100644 libs/dashclock-api-r1.1.jar delete mode 100644 libs/gson-1.7.1.jar delete mode 100644 libs/jsoup-1.6.1.jar delete mode 100644 libs/universal-image-loader-1.9.3.jar delete mode 100644 lint.xml create mode 100644 orgfoxttrss/build.gradle create mode 100644 orgfoxttrss/libs/dashclock-api-r1.1.jar create mode 100644 orgfoxttrss/libs/jsoup-1.6.1.jar create mode 100644 orgfoxttrss/libs/universal-image-loader-1.9.3.jar create mode 100644 orgfoxttrss/lint.xml create mode 100644 orgfoxttrss/orgfoxttrss.iml create mode 100644 orgfoxttrss/src/main/AndroidManifest.xml create mode 100644 orgfoxttrss/src/main/java/android/support/v4/app/ClassloaderWorkaroundFragmentStatePagerAdapter.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/ApiRequest.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/ArticleFragment.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/ArticlePager.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/CommonActivity.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/DashClock.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/DummyFragment.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/FeedCategoriesFragment.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/FeedsActivity.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/FeedsFragment.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/GlobalState.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/HeadlinesActivity.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/HeadlinesEventListener.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/LoadingFragment.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/OnlineActivity.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/PreferencesActivity.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/offline/OfflineActivity.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/offline/OfflineArticleFragment.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/offline/OfflineArticlePager.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/offline/OfflineDownloadService.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedCategoriesFragment.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedsActivity.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedsFragment.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesActivity.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesEventListener.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/offline/OfflineUploadService.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/share/CommonActivity.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/share/CommonShareActivity.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/share/ShareActivity.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/share/SubscribeActivity.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/tasker/TaskerReceiver.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/tasker/TaskerSettingsActivity.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/types/Article.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/types/ArticleList.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/types/Attachment.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/types/Feed.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/types/FeedCategory.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/types/FeedCategoryList.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/types/FeedList.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/types/Label.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/util/AppRater.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/util/DatabaseHelper.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/util/EnlargingImageView.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/util/FontSizeDialogPreference.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/util/HeadlinesRequest.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/util/ImageCacheService.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/util/LessBrokenWebView.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/util/NoChildFocusScrollView.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/util/PrefsBackupAgent.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/util/SimpleLoginManager.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/util/TitleWebView.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/util/TypefaceCache.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/widget/SmallWidgetProvider.java create mode 100644 orgfoxttrss/src/main/java/org/fox/ttrss/widget/WidgetUpdateService.java create mode 100644 orgfoxttrss/src/main/res/anim/feed_item.xml create mode 100644 orgfoxttrss/src/main/res/anim/headline_item.xml create mode 100644 orgfoxttrss/src/main/res/anim/layout_feeds.xml create mode 100644 orgfoxttrss/src/main/res/anim/layout_headline.xml create mode 100644 orgfoxttrss/src/main/res/anim/right_slide_in.xml create mode 100644 orgfoxttrss/src/main/res/anim/right_slide_out.xml create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/dashclock.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/ic_accept_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/ic_action_overflow.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/ic_cloud_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/ic_important_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/ic_labels_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/ic_list_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/ic_menu_attaches_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/ic_menu_published_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/ic_menu_unpublished_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/ic_new_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/ic_published.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/ic_read_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/ic_refresh_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/ic_rotate_left_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/ic_search_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/ic_select_all_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/ic_share_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/ic_star_empty.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/ic_star_full.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/ic_undo_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/ic_unimportant_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/ic_unpublished.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/ic_unread_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/icon.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/ics_divider_vertical_bitmap.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/paper_sepia_bitmap.png create mode 100644 orgfoxttrss/src/main/res/drawable-hdpi/shadow_bitmap.png create mode 100644 orgfoxttrss/src/main/res/drawable-xhdpi/dashclock.png create mode 100644 orgfoxttrss/src/main/res/drawable-xhdpi/ic_accept_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-xhdpi/ic_cloud_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-xhdpi/ic_important_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-xhdpi/ic_labels_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-xhdpi/ic_list_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-xhdpi/ic_menu_attaches_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-xhdpi/ic_menu_published_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-xhdpi/ic_menu_unpublished_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-xhdpi/ic_new_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-xhdpi/ic_read_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-xhdpi/ic_refresh_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-xhdpi/ic_rotate_left_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-xhdpi/ic_search_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-xhdpi/ic_select_all_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-xhdpi/ic_share_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-xhdpi/ic_undo_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-xhdpi/ic_unimportant_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-xhdpi/ic_unread_light.png create mode 100644 orgfoxttrss/src/main/res/drawable-xhdpi/icon.png create mode 100644 orgfoxttrss/src/main/res/drawable-xxhdpi/icon.png create mode 100644 orgfoxttrss/src/main/res/drawable/counter_background.xml create mode 100644 orgfoxttrss/src/main/res/drawable/counter_background_dark.xml create mode 100644 orgfoxttrss/src/main/res/drawable/counter_background_selected_light.xml create mode 100644 orgfoxttrss/src/main/res/drawable/counter_background_sepia.xml create mode 100644 orgfoxttrss/src/main/res/drawable/flavor_image_border.xml create mode 100644 orgfoxttrss/src/main/res/drawable/headline_row.xml create mode 100644 orgfoxttrss/src/main/res/drawable/headline_row_selected.xml create mode 100644 orgfoxttrss/src/main/res/drawable/headline_row_selected_sepia.xml create mode 100644 orgfoxttrss/src/main/res/drawable/headline_row_sepia.xml create mode 100644 orgfoxttrss/src/main/res/drawable/headline_row_unread.xml create mode 100644 orgfoxttrss/src/main/res/drawable/headline_row_unread_sepia.xml create mode 100644 orgfoxttrss/src/main/res/drawable/ics_divider_vertical.xml create mode 100644 orgfoxttrss/src/main/res/drawable/ics_divider_vertical_gray.xml create mode 100644 orgfoxttrss/src/main/res/drawable/paper_sepia.xml create mode 100644 orgfoxttrss/src/main/res/drawable/s_dashclock.svg create mode 100644 orgfoxttrss/src/main/res/drawable/s_headline_published.svg create mode 100644 orgfoxttrss/src/main/res/drawable/s_headline_unpublished.svg create mode 100644 orgfoxttrss/src/main/res/drawable/s_icon.svg create mode 100644 orgfoxttrss/src/main/res/drawable/s_marked.svg create mode 100644 orgfoxttrss/src/main/res/drawable/s_marked_bw.svg create mode 100644 orgfoxttrss/src/main/res/drawable/s_marked_bw_full.svg create mode 100644 orgfoxttrss/src/main/res/drawable/s_menu_attaches_light.svg create mode 100644 orgfoxttrss/src/main/res/drawable/s_menu_marked.svg create mode 100644 orgfoxttrss/src/main/res/drawable/s_menu_published_light.svg create mode 100644 orgfoxttrss/src/main/res/drawable/s_menu_unpublished_light.svg create mode 100644 orgfoxttrss/src/main/res/drawable/s_prev_article.svg create mode 100644 orgfoxttrss/src/main/res/drawable/shadow.xml create mode 100644 orgfoxttrss/src/main/res/drawable/shadow_feeds.xml create mode 100644 orgfoxttrss/src/main/res/drawable/shadow_feeds_gray.xml create mode 100644 orgfoxttrss/src/main/res/drawable/shadow_feeds_sepia.xml create mode 100644 orgfoxttrss/src/main/res/drawable/shadow_headlines.xml create mode 100644 orgfoxttrss/src/main/res/drawable/shadow_headlines_gray.xml create mode 100644 orgfoxttrss/src/main/res/drawable/shadow_headlines_sepia.xml create mode 100644 orgfoxttrss/src/main/res/layout-sw600dp-land/headlines.xml create mode 100644 orgfoxttrss/src/main/res/layout-sw600dp-land/headlines_articles.xml create mode 100644 orgfoxttrss/src/main/res/layout-sw600dp-port/headlines.xml create mode 100644 orgfoxttrss/src/main/res/layout-sw600dp-port/headlines_articles.xml create mode 100644 orgfoxttrss/src/main/res/layout-sw700dp/headlines.xml create mode 100644 orgfoxttrss/src/main/res/layout-sw700dp/headlines_articles.xml create mode 100644 orgfoxttrss/src/main/res/layout/article_fragment.xml create mode 100644 orgfoxttrss/src/main/res/layout/article_fragment_compat.xml create mode 100644 orgfoxttrss/src/main/res/layout/article_pager.xml create mode 100644 orgfoxttrss/src/main/res/layout/cats_fragment.xml create mode 100644 orgfoxttrss/src/main/res/layout/dummy_fragment.xml create mode 100644 orgfoxttrss/src/main/res/layout/feeds.xml create mode 100644 orgfoxttrss/src/main/res/layout/feeds_fragment.xml create mode 100644 orgfoxttrss/src/main/res/layout/feeds_row.xml create mode 100644 orgfoxttrss/src/main/res/layout/feeds_row_selected.xml create mode 100644 orgfoxttrss/src/main/res/layout/headlines.xml create mode 100644 orgfoxttrss/src/main/res/layout/headlines_articles.xml create mode 100644 orgfoxttrss/src/main/res/layout/headlines_fragment.xml create mode 100644 orgfoxttrss/src/main/res/layout/headlines_row.xml create mode 100644 orgfoxttrss/src/main/res/layout/headlines_row_loadmore.xml create mode 100644 orgfoxttrss/src/main/res/layout/headlines_row_selected.xml create mode 100644 orgfoxttrss/src/main/res/layout/headlines_row_selected_unread.xml create mode 100644 orgfoxttrss/src/main/res/layout/headlines_row_unread.xml create mode 100644 orgfoxttrss/src/main/res/layout/loading_fragment.xml create mode 100644 orgfoxttrss/src/main/res/layout/login.xml create mode 100644 orgfoxttrss/src/main/res/layout/select_font_size_dialog.xml create mode 100644 orgfoxttrss/src/main/res/layout/share.xml create mode 100644 orgfoxttrss/src/main/res/layout/subscribe.xml create mode 100644 orgfoxttrss/src/main/res/layout/tasker_settings.xml create mode 100644 orgfoxttrss/src/main/res/layout/widget_small.xml create mode 100644 orgfoxttrss/src/main/res/menu/article_content_img_context_menu.xml create mode 100644 orgfoxttrss/src/main/res/menu/article_link_context_menu.xml create mode 100644 orgfoxttrss/src/main/res/menu/category_menu.xml create mode 100644 orgfoxttrss/src/main/res/menu/feed_menu.xml create mode 100644 orgfoxttrss/src/main/res/menu/headlines_action_menu.xml create mode 100644 orgfoxttrss/src/main/res/menu/headlines_context_menu.xml create mode 100644 orgfoxttrss/src/main/res/menu/main_menu.xml create mode 100644 orgfoxttrss/src/main/res/menu/offline_menu.xml create mode 100644 orgfoxttrss/src/main/res/menu/share_menu.xml create mode 100644 orgfoxttrss/src/main/res/values-cs/strings.xml create mode 100644 orgfoxttrss/src/main/res/values-de/strings.xml create mode 100644 orgfoxttrss/src/main/res/values-es/strings.xml create mode 100644 orgfoxttrss/src/main/res/values-fr/strings.xml create mode 100644 orgfoxttrss/src/main/res/values-it/strings.xml create mode 100644 orgfoxttrss/src/main/res/values-ja/strings.xml create mode 100644 orgfoxttrss/src/main/res/values-pl/strings.xml create mode 100644 orgfoxttrss/src/main/res/values-pt-rBR/strings.xml create mode 100644 orgfoxttrss/src/main/res/values-v11/style.xml create mode 100644 orgfoxttrss/src/main/res/values-v19/style.xml create mode 100644 orgfoxttrss/src/main/res/values/arrays.xml create mode 100644 orgfoxttrss/src/main/res/values/attrs.xml create mode 100644 orgfoxttrss/src/main/res/values/resources.xml create mode 100644 orgfoxttrss/src/main/res/values/strings.xml create mode 100644 orgfoxttrss/src/main/res/values/style.xml create mode 100644 orgfoxttrss/src/main/res/xml/preferences.xml create mode 100644 orgfoxttrss/src/main/res/xml/widget_small.xml delete mode 100644 proguard.cfg delete mode 100644 project.properties delete mode 100644 res/anim/feed_item.xml delete mode 100644 res/anim/headline_item.xml delete mode 100644 res/anim/layout_feeds.xml delete mode 100644 res/anim/layout_headline.xml delete mode 100644 res/anim/right_slide_in.xml delete mode 100644 res/anim/right_slide_out.xml delete mode 100644 res/drawable-hdpi/dashclock.png delete mode 100644 res/drawable-hdpi/ic_accept_light.png delete mode 100644 res/drawable-hdpi/ic_action_overflow.png delete mode 100644 res/drawable-hdpi/ic_cloud_light.png delete mode 100644 res/drawable-hdpi/ic_important_light.png delete mode 100644 res/drawable-hdpi/ic_labels_light.png delete mode 100644 res/drawable-hdpi/ic_list_light.png delete mode 100644 res/drawable-hdpi/ic_menu_attaches_light.png delete mode 100644 res/drawable-hdpi/ic_menu_published_light.png delete mode 100644 res/drawable-hdpi/ic_menu_unpublished_light.png delete mode 100644 res/drawable-hdpi/ic_new_light.png delete mode 100644 res/drawable-hdpi/ic_published.png delete mode 100644 res/drawable-hdpi/ic_read_light.png delete mode 100644 res/drawable-hdpi/ic_refresh_light.png delete mode 100644 res/drawable-hdpi/ic_rotate_left_light.png delete mode 100644 res/drawable-hdpi/ic_search_light.png delete mode 100644 res/drawable-hdpi/ic_select_all_light.png delete mode 100644 res/drawable-hdpi/ic_share_light.png delete mode 100644 res/drawable-hdpi/ic_star_empty.png delete mode 100644 res/drawable-hdpi/ic_star_full.png delete mode 100644 res/drawable-hdpi/ic_undo_light.png delete mode 100644 res/drawable-hdpi/ic_unimportant_light.png delete mode 100644 res/drawable-hdpi/ic_unpublished.png delete mode 100644 res/drawable-hdpi/ic_unread_light.png delete mode 100644 res/drawable-hdpi/icon.png delete mode 100644 res/drawable-hdpi/ics_divider_vertical_bitmap.png delete mode 100644 res/drawable-hdpi/paper_sepia_bitmap.png delete mode 100644 res/drawable-hdpi/shadow_bitmap.png delete mode 100644 res/drawable-xhdpi/dashclock.png delete mode 100644 res/drawable-xhdpi/ic_accept_light.png delete mode 100644 res/drawable-xhdpi/ic_cloud_light.png delete mode 100644 res/drawable-xhdpi/ic_important_light.png delete mode 100644 res/drawable-xhdpi/ic_labels_light.png delete mode 100644 res/drawable-xhdpi/ic_list_light.png delete mode 100644 res/drawable-xhdpi/ic_menu_attaches_light.png delete mode 100644 res/drawable-xhdpi/ic_menu_published_light.png delete mode 100644 res/drawable-xhdpi/ic_menu_unpublished_light.png delete mode 100644 res/drawable-xhdpi/ic_new_light.png delete mode 100644 res/drawable-xhdpi/ic_read_light.png delete mode 100644 res/drawable-xhdpi/ic_refresh_light.png delete mode 100644 res/drawable-xhdpi/ic_rotate_left_light.png delete mode 100644 res/drawable-xhdpi/ic_search_light.png delete mode 100644 res/drawable-xhdpi/ic_select_all_light.png delete mode 100644 res/drawable-xhdpi/ic_share_light.png delete mode 100644 res/drawable-xhdpi/ic_undo_light.png delete mode 100644 res/drawable-xhdpi/ic_unimportant_light.png delete mode 100644 res/drawable-xhdpi/ic_unread_light.png delete mode 100644 res/drawable-xhdpi/icon.png delete mode 100644 res/drawable-xxhdpi/icon.png delete mode 100644 res/drawable/counter_background.xml delete mode 100644 res/drawable/counter_background_dark.xml delete mode 100644 res/drawable/counter_background_selected_light.xml delete mode 100644 res/drawable/counter_background_sepia.xml delete mode 100644 res/drawable/flavor_image_border.xml delete mode 100644 res/drawable/headline_row.xml delete mode 100644 res/drawable/headline_row_selected.xml delete mode 100644 res/drawable/headline_row_selected_sepia.xml delete mode 100644 res/drawable/headline_row_sepia.xml delete mode 100644 res/drawable/headline_row_unread.xml delete mode 100644 res/drawable/headline_row_unread_sepia.xml delete mode 100644 res/drawable/ics_divider_vertical.xml delete mode 100644 res/drawable/ics_divider_vertical_gray.xml delete mode 100644 res/drawable/paper_sepia.xml delete mode 100644 res/drawable/s_dashclock.svg delete mode 100644 res/drawable/s_headline_published.svg delete mode 100644 res/drawable/s_headline_unpublished.svg delete mode 100644 res/drawable/s_icon.svg delete mode 100644 res/drawable/s_marked.svg delete mode 100644 res/drawable/s_marked_bw.svg delete mode 100644 res/drawable/s_marked_bw_full.svg delete mode 100644 res/drawable/s_menu_attaches_light.svg delete mode 100644 res/drawable/s_menu_marked.svg delete mode 100644 res/drawable/s_menu_published_light.svg delete mode 100644 res/drawable/s_menu_unpublished_light.svg delete mode 100644 res/drawable/s_prev_article.svg delete mode 100644 res/drawable/shadow.xml delete mode 100644 res/drawable/shadow_feeds.xml delete mode 100644 res/drawable/shadow_feeds_gray.xml delete mode 100644 res/drawable/shadow_feeds_sepia.xml delete mode 100644 res/drawable/shadow_headlines.xml delete mode 100644 res/drawable/shadow_headlines_gray.xml delete mode 100644 res/drawable/shadow_headlines_sepia.xml delete mode 100644 res/layout-sw600dp-land/headlines.xml delete mode 100644 res/layout-sw600dp-land/headlines_articles.xml delete mode 100644 res/layout-sw600dp-port/headlines.xml delete mode 100644 res/layout-sw600dp-port/headlines_articles.xml delete mode 100644 res/layout-sw700dp/headlines.xml delete mode 100644 res/layout-sw700dp/headlines_articles.xml delete mode 100644 res/layout/article_fragment.xml delete mode 100644 res/layout/article_fragment_compat.xml delete mode 100644 res/layout/article_pager.xml delete mode 100644 res/layout/cats_fragment.xml delete mode 100644 res/layout/dummy_fragment.xml delete mode 100644 res/layout/feeds.xml delete mode 100644 res/layout/feeds_fragment.xml delete mode 100644 res/layout/feeds_row.xml delete mode 100644 res/layout/feeds_row_selected.xml delete mode 100644 res/layout/headlines.xml delete mode 100644 res/layout/headlines_articles.xml delete mode 100644 res/layout/headlines_fragment.xml delete mode 100644 res/layout/headlines_row.xml delete mode 100644 res/layout/headlines_row_loadmore.xml delete mode 100644 res/layout/headlines_row_selected.xml delete mode 100644 res/layout/headlines_row_selected_unread.xml delete mode 100644 res/layout/headlines_row_unread.xml delete mode 100644 res/layout/loading_fragment.xml delete mode 100644 res/layout/login.xml delete mode 100644 res/layout/select_font_size_dialog.xml delete mode 100644 res/layout/share.xml delete mode 100644 res/layout/subscribe.xml delete mode 100644 res/layout/tasker_settings.xml delete mode 100644 res/layout/widget_small.xml delete mode 100644 res/menu/article_content_img_context_menu.xml delete mode 100644 res/menu/article_link_context_menu.xml delete mode 100644 res/menu/category_menu.xml delete mode 100644 res/menu/feed_menu.xml delete mode 100644 res/menu/headlines_action_menu.xml delete mode 100644 res/menu/headlines_context_menu.xml delete mode 100644 res/menu/main_menu.xml delete mode 100644 res/menu/offline_menu.xml delete mode 100644 res/menu/share_menu.xml delete mode 100644 res/values-cs/strings.xml delete mode 100644 res/values-de/strings.xml delete mode 100644 res/values-es/strings.xml delete mode 100644 res/values-fr/strings.xml delete mode 100644 res/values-it/strings.xml delete mode 100644 res/values-ja/strings.xml delete mode 100644 res/values-pl/strings.xml delete mode 100644 res/values-pt-rBR/strings.xml delete mode 100644 res/values-v11/style.xml delete mode 100644 res/values-v19/style.xml delete mode 100644 res/values/arrays.xml delete mode 100644 res/values/attrs.xml delete mode 100644 res/values/resources.xml delete mode 100644 res/values/strings.xml delete mode 100644 res/values/style.xml delete mode 100644 res/xml/preferences.xml delete mode 100644 res/xml/widget_small.xml create mode 100644 settings.gradle delete mode 100644 src/android/support/v4/app/ClassloaderWorkaroundFragmentStatePagerAdapter.java delete mode 100644 src/org/fox/ttrss/ApiRequest.java delete mode 100644 src/org/fox/ttrss/ArticleFragment.java delete mode 100644 src/org/fox/ttrss/ArticlePager.java delete mode 100644 src/org/fox/ttrss/CommonActivity.java delete mode 100644 src/org/fox/ttrss/DashClock.java delete mode 100644 src/org/fox/ttrss/DummyFragment.java delete mode 100644 src/org/fox/ttrss/FeedCategoriesFragment.java delete mode 100644 src/org/fox/ttrss/FeedsActivity.java delete mode 100644 src/org/fox/ttrss/FeedsFragment.java delete mode 100644 src/org/fox/ttrss/GlobalState.java delete mode 100644 src/org/fox/ttrss/HeadlinesActivity.java delete mode 100644 src/org/fox/ttrss/HeadlinesEventListener.java delete mode 100644 src/org/fox/ttrss/HeadlinesFragment.java delete mode 100644 src/org/fox/ttrss/LoadingFragment.java delete mode 100644 src/org/fox/ttrss/OnlineActivity.java delete mode 100644 src/org/fox/ttrss/PreferencesActivity.java delete mode 100644 src/org/fox/ttrss/offline/OfflineActivity.java delete mode 100644 src/org/fox/ttrss/offline/OfflineArticleFragment.java delete mode 100644 src/org/fox/ttrss/offline/OfflineArticlePager.java delete mode 100644 src/org/fox/ttrss/offline/OfflineDownloadService.java delete mode 100644 src/org/fox/ttrss/offline/OfflineFeedCategoriesFragment.java delete mode 100644 src/org/fox/ttrss/offline/OfflineFeedsActivity.java delete mode 100644 src/org/fox/ttrss/offline/OfflineFeedsFragment.java delete mode 100644 src/org/fox/ttrss/offline/OfflineHeadlinesActivity.java delete mode 100644 src/org/fox/ttrss/offline/OfflineHeadlinesEventListener.java delete mode 100644 src/org/fox/ttrss/offline/OfflineHeadlinesFragment.java delete mode 100644 src/org/fox/ttrss/offline/OfflineUploadService.java delete mode 100644 src/org/fox/ttrss/share/CommonActivity.java delete mode 100644 src/org/fox/ttrss/share/CommonShareActivity.java delete mode 100644 src/org/fox/ttrss/share/ShareActivity.java delete mode 100644 src/org/fox/ttrss/share/SubscribeActivity.java delete mode 100644 src/org/fox/ttrss/tasker/TaskerReceiver.java delete mode 100644 src/org/fox/ttrss/tasker/TaskerSettingsActivity.java delete mode 100644 src/org/fox/ttrss/types/Article.java delete mode 100644 src/org/fox/ttrss/types/ArticleList.java delete mode 100644 src/org/fox/ttrss/types/Attachment.java delete mode 100644 src/org/fox/ttrss/types/Feed.java delete mode 100644 src/org/fox/ttrss/types/FeedCategory.java delete mode 100644 src/org/fox/ttrss/types/FeedCategoryList.java delete mode 100644 src/org/fox/ttrss/types/FeedList.java delete mode 100644 src/org/fox/ttrss/types/Label.java delete mode 100644 src/org/fox/ttrss/util/AppRater.java delete mode 100644 src/org/fox/ttrss/util/DatabaseHelper.java delete mode 100644 src/org/fox/ttrss/util/EnlargingImageView.java delete mode 100644 src/org/fox/ttrss/util/FontSizeDialogPreference.java delete mode 100644 src/org/fox/ttrss/util/HeadlinesRequest.java delete mode 100644 src/org/fox/ttrss/util/ImageCacheService.java delete mode 100644 src/org/fox/ttrss/util/LessBrokenWebView.java delete mode 100644 src/org/fox/ttrss/util/NoChildFocusScrollView.java delete mode 100644 src/org/fox/ttrss/util/PrefsBackupAgent.java delete mode 100644 src/org/fox/ttrss/util/SimpleLoginManager.java delete mode 100644 src/org/fox/ttrss/util/TitleWebView.java delete mode 100644 src/org/fox/ttrss/util/TypefaceCache.java delete mode 100644 src/org/fox/ttrss/widget/SmallWidgetProvider.java delete mode 100644 src/org/fox/ttrss/widget/WidgetUpdateService.java create mode 100644 taskerlocaleapi/build.gradle create mode 100644 taskerlocaleapi/lint.xml create mode 100644 taskerlocaleapi/src/main/AndroidManifest.xml create mode 100644 taskerlocaleapi/src/main/java/com/twofortyfouram/locale/BreadCrumber.java create mode 100644 taskerlocaleapi/src/main/java/com/twofortyfouram/locale/Constants.java create mode 100644 taskerlocaleapi/src/main/java/com/twofortyfouram/locale/Intent.java create mode 100644 taskerlocaleapi/src/main/java/com/twofortyfouram/locale/PackageUtilities.java create mode 100644 taskerlocaleapi/src/main/res/drawable-hdpi-v14/twofortyfouram_locale_ic_menu_dontsave.png create mode 100644 taskerlocaleapi/src/main/res/drawable-hdpi-v14/twofortyfouram_locale_ic_menu_help.png create mode 100644 taskerlocaleapi/src/main/res/drawable-hdpi-v14/twofortyfouram_locale_ic_menu_save.png create mode 100644 taskerlocaleapi/src/main/res/drawable-ldpi-v14/twofortyfouram_locale_ic_menu_dontsave.png create mode 100644 taskerlocaleapi/src/main/res/drawable-ldpi-v14/twofortyfouram_locale_ic_menu_help.png create mode 100644 taskerlocaleapi/src/main/res/drawable-ldpi-v14/twofortyfouram_locale_ic_menu_save.png create mode 100644 taskerlocaleapi/src/main/res/drawable-mdpi-v14/twofortyfouram_locale_ic_menu_dontsave.png create mode 100644 taskerlocaleapi/src/main/res/drawable-mdpi-v14/twofortyfouram_locale_ic_menu_help.png create mode 100644 taskerlocaleapi/src/main/res/drawable-mdpi-v14/twofortyfouram_locale_ic_menu_save.png create mode 100644 taskerlocaleapi/src/main/res/drawable-xhdpi-v14/twofortyfouram_locale_ic_menu_dontsave.png create mode 100644 taskerlocaleapi/src/main/res/drawable-xhdpi-v14/twofortyfouram_locale_ic_menu_help.png create mode 100644 taskerlocaleapi/src/main/res/drawable-xhdpi-v14/twofortyfouram_locale_ic_menu_save.png create mode 100644 taskerlocaleapi/src/main/res/drawable/twofortyfouram_locale_ic_menu_dontsave.xml create mode 100644 taskerlocaleapi/src/main/res/drawable/twofortyfouram_locale_ic_menu_help.xml create mode 100644 taskerlocaleapi/src/main/res/drawable/twofortyfouram_locale_ic_menu_save.xml create mode 100644 taskerlocaleapi/src/main/res/menu/twofortyfouram_locale_help_save_dontsave.xml create mode 100644 taskerlocaleapi/src/main/res/values-cs/strings-cs.xml create mode 100644 taskerlocaleapi/src/main/res/values-de/strings-de.xml create mode 100644 taskerlocaleapi/src/main/res/values-es/strings-es.xml create mode 100644 taskerlocaleapi/src/main/res/values-fr/strings-fr.xml create mode 100644 taskerlocaleapi/src/main/res/values-hdpi/integers.xml create mode 100644 taskerlocaleapi/src/main/res/values-it/strings-it.xml create mode 100644 taskerlocaleapi/src/main/res/values-ja/strings-ja.xml create mode 100644 taskerlocaleapi/src/main/res/values-ko/strings-ko.xml create mode 100644 taskerlocaleapi/src/main/res/values-ldpi/integers.xml create mode 100644 taskerlocaleapi/src/main/res/values-mdpi/integers.xml create mode 100644 taskerlocaleapi/src/main/res/values-nb/strings-nb.xml create mode 100644 taskerlocaleapi/src/main/res/values-nl/strings-nl.xml create mode 100644 taskerlocaleapi/src/main/res/values-pt-rBR/strings-pt-rBR.xml create mode 100644 taskerlocaleapi/src/main/res/values-ru/strings-ru.xml create mode 100644 taskerlocaleapi/src/main/res/values-sv/strings-sv.xml create mode 100644 taskerlocaleapi/src/main/res/values-v11/styles.xml create mode 100644 taskerlocaleapi/src/main/res/values-v14/styles.xml create mode 100644 taskerlocaleapi/src/main/res/values-v9/styles.xml create mode 100644 taskerlocaleapi/src/main/res/values-vi/strings-vi.xml create mode 100644 taskerlocaleapi/src/main/res/values/id.xml create mode 100644 taskerlocaleapi/src/main/res/values/strings-en.xml create mode 100644 taskerlocaleapi/src/main/res/values/styles.xml create mode 100644 taskerlocaleapi/taskerlocaleapi.iml diff --git a/.classpath b/.classpath deleted file mode 100644 index aa361afe..00000000 --- a/.classpath +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/.gitignore b/.gitignore index ac468d1a..eca7ace6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,12 @@ -/gen -/bin +bin/ +gen/ +.gradle/ +build/ +local.properties +import-summary.txt Thumbs.db +.idea/workspace.xml +.idea/tasks.xml +.idea/datasources.xml +.idea/dataSources.ids +.idea/libraries diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 00000000..4dbe2d86 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +Tiny-Tiny-RSS-for-Honeycomb \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 00000000..217af471 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,23 @@ + + + + + + diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml new file mode 100644 index 00000000..e7bedf33 --- /dev/null +++ b/.idea/copyright/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 00000000..e206d70d --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 00000000..99d0e7b4 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,19 @@ + + + + + + + diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 00000000..671eadea --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + Android API 19 Platform + + + + + + + + + diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 00000000..d3fd72d4 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/.idea/scopes/scope_settings.xml b/.idea/scopes/scope_settings.xml new file mode 100644 index 00000000..922003b8 --- /dev/null +++ b/.idea/scopes/scope_settings.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..def6a6a1 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.project b/.project deleted file mode 100644 index 4a90fe22..00000000 --- a/.project +++ /dev/null @@ -1,33 +0,0 @@ - - - org.fox.ttrss - - - - - - com.android.ide.eclipse.adt.ResourceManagerBuilder - - - - - com.android.ide.eclipse.adt.PreCompilerBuilder - - - - - org.eclipse.jdt.core.javabuilder - - - - - com.android.ide.eclipse.adt.ApkBuilder - - - - - - com.android.ide.eclipse.adt.AndroidNature - org.eclipse.jdt.core.javanature - - diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index ef1b5552..00000000 --- a/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding//src/org/fox/ttrss/util/EnlargingImageView.java=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 54e493c0..00000000 --- a/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,11 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.6 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.6 diff --git a/AndroidManifest.xml b/AndroidManifest.xml deleted file mode 100644 index 684cc438..00000000 --- a/AndroidManifest.xml +++ /dev/null @@ -1,256 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index 29693349..00000000 --- a/README.md +++ /dev/null @@ -1,24 +0,0 @@ -Tiny Tiny RSS client for Android -================================ - -http://tt-rss.org/tt-rss-android - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - -Copyright (c) 2011 Andrew Dolgov (unless explicitly stated otherwise). - -## See also - -* FAQ: http://tt-rss.org/redmine/projects/tt-rss-android/wiki/#FAQ -* Forum: http://tt-rss.org/forum diff --git a/Tiny-Tiny-RSS-for-Honeycomb.iml b/Tiny-Tiny-RSS-for-Honeycomb.iml new file mode 100644 index 00000000..0bb6048a --- /dev/null +++ b/Tiny-Tiny-RSS-for-Honeycomb.iml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + diff --git a/build.gradle b/build.gradle new file mode 100644 index 00000000..aa6500ab --- /dev/null +++ b/build.gradle @@ -0,0 +1,17 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +buildscript { + repositories { + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:0.12.2' + } +} + +allprojects { + repositories { + maven { url "http://dl.bintray.com/populov/maven" } + maven { url "http://jzaccone.github.io/SlidingMenu-aar" } + jcenter() + } +} diff --git a/default.properties b/default.properties deleted file mode 100644 index ede6e6b8..00000000 --- a/default.properties +++ /dev/null @@ -1,2 +0,0 @@ -# Project target. -target=android-14 diff --git a/feature_graphic.png b/feature_graphic.png deleted file mode 100644 index ba9f4ae1..00000000 Binary files a/feature_graphic.png and /dev/null differ diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000..8c0fb64a Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..1e61d1fd --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Wed Apr 10 15:27:10 PDT 2013 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip diff --git a/gradlew b/gradlew new file mode 100644 index 00000000..91a7e269 --- /dev/null +++ b/gradlew @@ -0,0 +1,164 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# For Cygwin, ensure paths are in UNIX format before anything is touched. +if $cygwin ; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 00000000..8a0b282a --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/ic_launcher-web.png b/ic_launcher-web.png deleted file mode 100644 index 9da5905c..00000000 Binary files a/ic_launcher-web.png and /dev/null differ diff --git a/libs/android-support-v4.jar b/libs/android-support-v4.jar deleted file mode 100644 index c31cede4..00000000 Binary files a/libs/android-support-v4.jar and /dev/null differ diff --git a/libs/dashclock-api-r1.1.jar b/libs/dashclock-api-r1.1.jar deleted file mode 100644 index 3a4e00d0..00000000 Binary files a/libs/dashclock-api-r1.1.jar and /dev/null differ diff --git a/libs/gson-1.7.1.jar b/libs/gson-1.7.1.jar deleted file mode 100644 index acd16c06..00000000 Binary files a/libs/gson-1.7.1.jar and /dev/null differ diff --git a/libs/jsoup-1.6.1.jar b/libs/jsoup-1.6.1.jar deleted file mode 100644 index 87126a49..00000000 Binary files a/libs/jsoup-1.6.1.jar and /dev/null differ diff --git a/libs/universal-image-loader-1.9.3.jar b/libs/universal-image-loader-1.9.3.jar deleted file mode 100644 index e8ca33b7..00000000 Binary files a/libs/universal-image-loader-1.9.3.jar and /dev/null differ diff --git a/lint.xml b/lint.xml deleted file mode 100644 index ee0eead5..00000000 --- a/lint.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/orgfoxttrss/build.gradle b/orgfoxttrss/build.gradle new file mode 100644 index 00000000..82b24493 --- /dev/null +++ b/orgfoxttrss/build.gradle @@ -0,0 +1,32 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 19 + buildToolsVersion "20.0.0" + + defaultConfig { + applicationId "org.fox.ttrss" + minSdkVersion 8 + targetSdkVersion 19 + } + + buildTypes { + release { + runProguard false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' + } + } +} + +dependencies { + //compile project(':slidingMenulibrary') + compile 'com.jeremyfeinstein.slidingmenu:library:1.3@aar' + compile 'com.readystatesoftware.systembartint:systembartint:1.0.3' + compile 'com.viewpagerindicator:library:2.4.1' + compile 'com.android.support:support-v4:19.1.0' + compile 'com.google.code.gson:gson:1.7.1' + compile 'com.android.support:appcompat-v7:18.0.0' + compile files('libs/dashclock-api-r1.1.jar') + compile files('libs/jsoup-1.6.1.jar') + compile files('libs/universal-image-loader-1.9.3.jar') +} diff --git a/orgfoxttrss/libs/dashclock-api-r1.1.jar b/orgfoxttrss/libs/dashclock-api-r1.1.jar new file mode 100644 index 00000000..3a4e00d0 Binary files /dev/null and b/orgfoxttrss/libs/dashclock-api-r1.1.jar differ diff --git a/orgfoxttrss/libs/jsoup-1.6.1.jar b/orgfoxttrss/libs/jsoup-1.6.1.jar new file mode 100644 index 00000000..87126a49 Binary files /dev/null and b/orgfoxttrss/libs/jsoup-1.6.1.jar differ diff --git a/orgfoxttrss/libs/universal-image-loader-1.9.3.jar b/orgfoxttrss/libs/universal-image-loader-1.9.3.jar new file mode 100644 index 00000000..e8ca33b7 Binary files /dev/null and b/orgfoxttrss/libs/universal-image-loader-1.9.3.jar differ diff --git a/orgfoxttrss/lint.xml b/orgfoxttrss/lint.xml new file mode 100644 index 00000000..8423c0ef --- /dev/null +++ b/orgfoxttrss/lint.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/orgfoxttrss/orgfoxttrss.iml b/orgfoxttrss/orgfoxttrss.iml new file mode 100644 index 00000000..0a72db93 --- /dev/null +++ b/orgfoxttrss/orgfoxttrss.iml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/orgfoxttrss/src/main/AndroidManifest.xml b/orgfoxttrss/src/main/AndroidManifest.xml new file mode 100644 index 00000000..684cc438 --- /dev/null +++ b/orgfoxttrss/src/main/AndroidManifest.xml @@ -0,0 +1,256 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/orgfoxttrss/src/main/java/android/support/v4/app/ClassloaderWorkaroundFragmentStatePagerAdapter.java b/orgfoxttrss/src/main/java/android/support/v4/app/ClassloaderWorkaroundFragmentStatePagerAdapter.java new file mode 100644 index 00000000..dd67d599 --- /dev/null +++ b/orgfoxttrss/src/main/java/android/support/v4/app/ClassloaderWorkaroundFragmentStatePagerAdapter.java @@ -0,0 +1,39 @@ +package android.support.v4.app; + +// http://code.google.com/p/android/issues/detail?id=37484 +// Thanks for your amazing code quality, Google. + +import android.os.Bundle; +import android.view.ViewGroup; + +public class ClassloaderWorkaroundFragmentStatePagerAdapter extends + FragmentStatePagerAdapter { + + public ClassloaderWorkaroundFragmentStatePagerAdapter(FragmentManager fm) { + super(fm); + // TODO Auto-generated constructor stub + } + + @Override + public Fragment getItem(int arg0) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Object instantiateItem(ViewGroup container, int position) { + Fragment f = (Fragment) super.instantiateItem(container, position); + Bundle savedFragmentState = f.mSavedFragmentState; + if (savedFragmentState != null) { + savedFragmentState.setClassLoader(f.getClass().getClassLoader()); + } + return f; + } + + @Override + public int getCount() { + // TODO Auto-generated method stub + return 0; + } + +} diff --git a/orgfoxttrss/src/main/java/org/fox/ttrss/ApiRequest.java b/orgfoxttrss/src/main/java/org/fox/ttrss/ApiRequest.java new file mode 100644 index 00000000..65e97e8e --- /dev/null +++ b/orgfoxttrss/src/main/java/org/fox/ttrss/ApiRequest.java @@ -0,0 +1,351 @@ +package org.fox.ttrss; + +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.net.HttpURLConnection; +import java.net.URL; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; +import java.util.HashMap; + +import javax.net.ssl.HostnameVerifier; +import javax.net.ssl.HttpsURLConnection; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSession; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.SharedPreferences; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.os.AsyncTask; +import android.os.Build; +import android.preference.PreferenceManager; +import android.util.Base64; +import android.util.Log; + +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +public class ApiRequest extends AsyncTask, Integer, JsonElement> { + private final String TAG = this.getClass().getSimpleName(); + + public enum ApiError { NO_ERROR, HTTP_UNAUTHORIZED, HTTP_FORBIDDEN, HTTP_NOT_FOUND, + HTTP_SERVER_ERROR, HTTP_OTHER_ERROR, SSL_REJECTED, SSL_HOSTNAME_REJECTED, PARSE_ERROR, IO_ERROR, OTHER_ERROR, API_DISABLED, + API_UNKNOWN, LOGIN_FAILED, INVALID_URL, API_INCORRECT_USAGE, NETWORK_UNAVAILABLE, API_UNKNOWN_METHOD }; + + public static final int API_STATUS_OK = 0; + public static final int API_STATUS_ERR = 1; + + private String m_api; + private boolean m_transportDebugging = false; + protected int m_responseCode = 0; + protected String m_responseMessage; + protected int m_apiStatusCode = 0; + protected boolean m_canUseProgress = false; + protected Context m_context; + private SharedPreferences m_prefs; + + protected ApiError m_lastError; + + public ApiRequest(Context context) { + m_context = context; + + m_prefs = PreferenceManager.getDefaultSharedPreferences(m_context); + + m_api = m_prefs.getString("ttrss_url", "").trim(); + m_transportDebugging = m_prefs.getBoolean("transport_debugging", false); + m_lastError = ApiError.NO_ERROR; + + } + + @SuppressLint("NewApi") + @SuppressWarnings("unchecked") + public void execute(HashMap map) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) + super.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, map); + else + super.execute(map); + } + + public int getErrorMessage() { + switch (m_lastError) { + case NO_ERROR: + return R.string.error_unknown; + case HTTP_UNAUTHORIZED: + return R.string.error_http_unauthorized; + case HTTP_FORBIDDEN: + return R.string.error_http_forbidden; + case HTTP_NOT_FOUND: + return R.string.error_http_not_found; + case HTTP_SERVER_ERROR: + return R.string.error_http_server_error; + case HTTP_OTHER_ERROR: + return R.string.error_http_other_error; + case SSL_REJECTED: + return R.string.error_ssl_rejected; + case SSL_HOSTNAME_REJECTED: + return R.string.error_ssl_hostname_rejected; + case PARSE_ERROR: + return R.string.error_parse_error; + case IO_ERROR: + return R.string.error_io_error; + case OTHER_ERROR: + return R.string.error_other_error; + case API_DISABLED: + return R.string.error_api_disabled; + case API_UNKNOWN: + return R.string.error_api_unknown; + case API_UNKNOWN_METHOD: + return R.string.error_api_unknown_method; + case LOGIN_FAILED: + return R.string.error_login_failed; + case INVALID_URL: + return R.string.error_invalid_api_url; + case API_INCORRECT_USAGE: + return R.string.error_api_incorrect_usage; + case NETWORK_UNAVAILABLE: + return R.string.error_network_unavailable; + default: + Log.d(TAG, "getErrorMessage: unknown error code=" + m_lastError); + return R.string.error_unknown; + } + } + + @Override + protected JsonElement doInBackground(HashMap... params) { + + if (!isNetworkAvailable()) { + m_lastError = ApiError.NETWORK_UNAVAILABLE; + return null; + } + + Gson gson = new Gson(); + + String requestStr = gson.toJson(new HashMap(params[0])); + byte[] postData = null; + + try { + postData = requestStr.getBytes("UTF-8"); + } catch (UnsupportedEncodingException e) { + m_lastError = ApiError.OTHER_ERROR; + e.printStackTrace(); + return null; + } + + /* disableConnectionReuseIfNecessary(); */ + + if (m_transportDebugging) Log.d(TAG, ">>> (" + requestStr + ") " + m_api); + + /* ApiRequest.trustAllHosts(m_prefs.getBoolean("ssl_trust_any", false), + m_prefs.getBoolean("ssl_trust_any_host", false)); */ + + URL url; + + try { + url = new URL(m_api + "/api/"); + } catch (Exception e) { + m_lastError = ApiError.INVALID_URL; + e.printStackTrace(); + return null; + } + + try { + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + + String httpLogin = m_prefs.getString("http_login", "").trim(); + String httpPassword = m_prefs.getString("http_password", "").trim(); + + if (httpLogin.length() > 0) { + if (m_transportDebugging) Log.d(TAG, "Using HTTP Basic authentication."); + + conn.setRequestProperty("Authorization", "Basic " + + Base64.encodeToString((httpLogin + ":" + httpPassword).getBytes("UTF-8"), Base64.NO_WRAP)); + } + + conn.setDoInput(true); + conn.setDoOutput(true); + conn.setUseCaches(false); + conn.setRequestMethod("POST"); + conn.setRequestProperty("Content-Length", Integer.toString(postData.length)); + + OutputStream out = conn.getOutputStream(); + out.write(postData); + out.close(); + + m_responseCode = conn.getResponseCode(); + m_responseMessage = conn.getResponseMessage(); + + switch (m_responseCode) { + case HttpURLConnection.HTTP_OK: + StringBuffer response = new StringBuffer(); + InputStreamReader in = new InputStreamReader(conn.getInputStream(), "UTF-8"); + char[] buf = new char[256]; + int read = 0; + int total = 0; + + int contentLength = conn.getHeaderFieldInt("Api-Content-Length", -1); + + m_canUseProgress = (contentLength != -1); + + while ((read = in.read(buf)) >= 0) { + response.append(buf, 0, read); + total += read; + publishProgress(Integer.valueOf(total), Integer.valueOf(contentLength)); + } + + if (m_transportDebugging) Log.d(TAG, "<<< " + response); + + JsonParser parser = new JsonParser(); + + JsonElement result = parser.parse(response.toString()); + JsonObject resultObj = result.getAsJsonObject(); + + m_apiStatusCode = resultObj.get("status").getAsInt(); + + conn.disconnect(); + + switch (m_apiStatusCode) { + case API_STATUS_OK: + return result.getAsJsonObject().get("content"); + case API_STATUS_ERR: + JsonObject contentObj = resultObj.get("content").getAsJsonObject(); + String error = contentObj.get("error").getAsString(); + + if (error.equals("LOGIN_ERROR")) { + m_lastError = ApiError.LOGIN_FAILED; + } else if (error.equals("API_DISABLED")) { + m_lastError = ApiError.API_DISABLED; + } else if (error.equals("NOT_LOGGED_IN")) { + m_lastError = ApiError.LOGIN_FAILED; + } else if (error.equals("INCORRECT_USAGE")) { + m_lastError = ApiError.API_INCORRECT_USAGE; + } else if (error.equals("UNKNOWN_METHOD")) { + m_lastError = ApiError.API_UNKNOWN_METHOD; + } else { + Log.d(TAG, "Unknown API error: " + error); + m_lastError = ApiError.API_UNKNOWN; + } + } + + return null; + case HttpURLConnection.HTTP_UNAUTHORIZED: + m_lastError = ApiError.HTTP_UNAUTHORIZED; + break; + case HttpURLConnection.HTTP_FORBIDDEN: + m_lastError = ApiError.HTTP_FORBIDDEN; + break; + case HttpURLConnection.HTTP_NOT_FOUND: + m_lastError = ApiError.HTTP_NOT_FOUND; + break; + case HttpURLConnection.HTTP_INTERNAL_ERROR: + m_lastError = ApiError.HTTP_SERVER_ERROR; + break; + default: + Log.d(TAG, "HTTP response code: " + m_responseCode + "(" + m_responseMessage + ")"); + m_lastError = ApiError.HTTP_OTHER_ERROR; + break; + } + + conn.disconnect(); + return null; + } catch (javax.net.ssl.SSLPeerUnverifiedException e) { + m_lastError = ApiError.SSL_REJECTED; + e.printStackTrace(); + } catch (IOException e) { + m_lastError = ApiError.IO_ERROR; + + if (e.getMessage() != null) { + if (e.getMessage().matches("Hostname [^ ]+ was not verified")) { + m_lastError = ApiError.SSL_HOSTNAME_REJECTED; + } + } + + e.printStackTrace(); + } catch (com.google.gson.JsonSyntaxException e) { + m_lastError = ApiError.PARSE_ERROR; + e.printStackTrace(); + } catch (Exception e) { + m_lastError = ApiError.OTHER_ERROR; + e.printStackTrace(); + } + + return null; + } + + protected static void trustAllHosts(boolean trustAnyCert, boolean trustAnyHost) { + try { + if (trustAnyCert) { + X509TrustManager easyTrustManager = new X509TrustManager() { + + public void checkClientTrusted( + X509Certificate[] chain, + String authType) throws CertificateException { + // Oh, I am easy! + } + + public void checkServerTrusted( + X509Certificate[] chain, + String authType) throws CertificateException { + // Oh, I am easy! + } + + public X509Certificate[] getAcceptedIssuers() { + return null; + } + + }; + + // Create a trust manager that does not validate certificate chains + TrustManager[] trustAllCerts = new TrustManager[] {easyTrustManager}; + + // Install the all-trusting trust manager + + SSLContext sc = SSLContext.getInstance("TLS"); + + sc.init(null, trustAllCerts, new java.security.SecureRandom()); + + HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); + } + + if (trustAnyHost) { + HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() { + @Override + public boolean verify(String hostname, SSLSession session) { + return true; + } + }); + } + + } catch (Exception e) { + e.printStackTrace(); + } + } + + @SuppressWarnings("deprecation") + protected static void disableConnectionReuseIfNecessary() { + // HTTP connection reuse which was buggy pre-froyo + if (Integer.parseInt(Build.VERSION.SDK) < Build.VERSION_CODES.FROYO) { + System.setProperty("http.keepAlive", "false"); + } + } + + protected boolean isNetworkAvailable() { + ConnectivityManager cm = (ConnectivityManager) + m_context.getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo networkInfo = cm.getActiveNetworkInfo(); + + // if no network is available networkInfo will be null + // otherwise check if we are connected + if (networkInfo != null && networkInfo.isConnected()) { + return true; + } + return false; + } +} diff --git a/orgfoxttrss/src/main/java/org/fox/ttrss/ArticleFragment.java b/orgfoxttrss/src/main/java/org/fox/ttrss/ArticleFragment.java new file mode 100644 index 00000000..4a568d3c --- /dev/null +++ b/orgfoxttrss/src/main/java/org/fox/ttrss/ArticleFragment.java @@ -0,0 +1,449 @@ +package org.fox.ttrss; + +import java.net.MalformedURLException; +import java.net.URI; +import java.net.URL; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; + +import org.fox.ttrss.types.Article; +import org.fox.ttrss.types.Attachment; +import org.fox.ttrss.util.TypefaceCache; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; + +import android.annotation.SuppressLint; +import android.app.Activity; +import android.content.Intent; +import android.content.SharedPreferences; +import android.graphics.Color; +import android.graphics.Typeface; +import android.net.Uri; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.support.v4.app.Fragment; +import android.text.Html; +import android.util.TypedValue; +import android.view.ContextMenu; +import android.view.ContextMenu.ContextMenuInfo; +import android.view.KeyEvent; +import android.view.LayoutInflater; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.ViewGroup; +import android.webkit.WebChromeClient; +import android.webkit.WebSettings; +import android.webkit.WebView; +import android.webkit.WebView.HitTestResult; +import android.widget.TextView; + +public class ArticleFragment extends Fragment { + private final String TAG = this.getClass().getSimpleName(); + + private SharedPreferences m_prefs; + private Article m_article; + private OnlineActivity m_activity; + + public void initialize(Article article) { + m_article = article; + } + + private View.OnTouchListener m_gestureListener; + + @Override + public void onCreateContextMenu(ContextMenu menu, View v, + ContextMenuInfo menuInfo) { + + if (v.getId() == R.id.content) { + HitTestResult result = ((WebView)v).getHitTestResult(); + + if (result != null && (result.getType() == HitTestResult.IMAGE_TYPE || result.getType() == HitTestResult.SRC_IMAGE_ANCHOR_TYPE)) { + menu.setHeaderTitle(result.getExtra()); + getActivity().getMenuInflater().inflate(R.menu.article_content_img_context_menu, menu); + + /* FIXME I have no idea how to do this correctly ;( */ + + m_activity.setLastContentImageHitTestUrl(result.getExtra()); + + } else { + menu.setHeaderTitle(m_article.title); + getActivity().getMenuInflater().inflate(R.menu.article_link_context_menu, menu); + } + } else { + menu.setHeaderTitle(m_article.title); + getActivity().getMenuInflater().inflate(R.menu.article_link_context_menu, menu); + } + + super.onCreateContextMenu(menu, v, menuInfo); + + } + + @SuppressLint("NewApi") + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + m_activity.setProgressBarVisibility(true); + + if (savedInstanceState != null) { + m_article = savedInstanceState.getParcelable("article"); + } + + boolean useTitleWebView = m_prefs.getBoolean("article_compat_view", false); + + View view = inflater.inflate(useTitleWebView ? R.layout.article_fragment_compat : R.layout.article_fragment, container, false); + + if (m_article != null) { + + if (!useTitleWebView) { + View scroll = view.findViewById(R.id.article_scrollview); + + if (scroll != null) { + final float scale = getResources().getDisplayMetrics().density; + + if (m_activity.isSmallScreen()) { + scroll.setPadding((int)(8 * scale + 0.5f), + (int)(5 * scale + 0.5f), + (int)(8 * scale + 0.5f), + 0); + } else { + scroll.setPadding((int)(25 * scale + 0.5f), + (int)(10 * scale + 0.5f), + (int)(25 * scale + 0.5f), + 0); + + } + + } + } + + int articleFontSize = Integer.parseInt(m_prefs.getString("article_font_size_sp", "16")); + int articleSmallFontSize = Math.max(10, Math.min(18, articleFontSize - 2)); + + TextView title = (TextView)view.findViewById(R.id.title); + + if (title != null) { + + if (m_prefs.getBoolean("enable_condensed_fonts", false)) { + Typeface tf = TypefaceCache.get(m_activity, "sans-serif-condensed", Typeface.NORMAL); + + if (tf != null && !tf.equals(title.getTypeface())) { + title.setTypeface(tf); + } + + title.setTextSize(TypedValue.COMPLEX_UNIT_SP, Math.min(21, articleFontSize + 5)); + } else { + title.setTextSize(TypedValue.COMPLEX_UNIT_SP, Math.min(21, articleFontSize + 3)); + } + + String titleStr; + + if (m_article.title.length() > 200) + titleStr = m_article.title.substring(0, 200) + "..."; + else + titleStr = m_article.title; + + title.setText(Html.fromHtml(titleStr)); + //title.setPaintFlags(title.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); + title.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + try { + URL url = new URL(m_article.link.trim()); + String uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), + url.getPort(), url.getPath(), url.getQuery(), url.getRef()).toString(); + Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri)); + startActivity(intent); + } catch (Exception e) { + e.printStackTrace(); + m_activity.toast(R.string.error_other_error); + } + } + }); + + registerForContextMenu(title); + } + + TextView comments = (TextView)view.findViewById(R.id.comments); + + if (comments != null) { + if (m_activity.getApiLevel() >= 4 && m_article.comments_count > 0) { + comments.setTextSize(TypedValue.COMPLEX_UNIT_SP, articleSmallFontSize); + + String commentsTitle = getString(R.string.article_comments, m_article.comments_count); + comments.setText(commentsTitle); + //comments.setPaintFlags(title.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); + comments.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + try { + URL url = new URL((m_article.comments_link != null && m_article.comments_link.length() > 0) ? + m_article.comments_link : m_article.link); + String uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), + url.getPort(), url.getPath(), url.getQuery(), url.getRef()).toString(); + Intent intent = new Intent(Intent.ACTION_VIEW, + Uri.parse(uri)); + startActivity(intent); + } catch (Exception e) { + e.printStackTrace(); + m_activity.toast(R.string.error_other_error); + } + } + }); + + } else { + comments.setVisibility(View.GONE); + } + } + + TextView note = (TextView)view.findViewById(R.id.note); + + if (note != null) { + if (m_article.note != null && !"".equals(m_article.note)) { + note.setTextSize(TypedValue.COMPLEX_UNIT_SP, articleSmallFontSize); + note.setText(m_article.note); + } else { + note.setVisibility(View.GONE); + } + + } + + final WebView web = (WebView)view.findViewById(R.id.content); + + if (web != null) { + + web.setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View v) { + HitTestResult result = ((WebView)v).getHitTestResult(); + + if (result != null && (result.getType() == HitTestResult.IMAGE_TYPE || result.getType() == HitTestResult.SRC_IMAGE_ANCHOR_TYPE)) { + registerForContextMenu(web); + m_activity.openContextMenu(web); + unregisterForContextMenu(web); + return true; + } else { + if (m_activity.isCompatMode()) { + KeyEvent shiftPressEvent = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_SHIFT_LEFT, 0, 0); + shiftPressEvent.dispatch(web); + } + + return false; + } + } + }); + + // prevent flicker in ics + if (!m_prefs.getBoolean("webview_hardware_accel", true) || useTitleWebView) { + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) { + web.setLayerType(View.LAYER_TYPE_SOFTWARE, null); + } + } + + web.setWebChromeClient(new WebChromeClient() { + @Override + public void onProgressChanged(WebView view, int progress) { + m_activity.setProgress(Math.round(((float)progress / 100f) * 10000)); + if (progress == 100) { + m_activity.setProgressBarVisibility(false); + } + } + }); + + String content; + String cssOverride = ""; + + WebSettings ws = web.getSettings(); + ws.setSupportZoom(false); + + TypedValue tv = new TypedValue(); + getActivity().getTheme().resolveAttribute(R.attr.linkColor, tv, true); + + String theme = m_prefs.getString("theme", CommonActivity.THEME_DEFAULT); + + if (CommonActivity.THEME_HOLO.equals(theme)) { + cssOverride = "body { background : transparent; color : #e0e0e0}"; + } else if (CommonActivity.THEME_DARK.equals(theme)) { + cssOverride = "body { background : transparent; color : #e0e0e0}"; + } else { + cssOverride = "body { background : transparent; }"; + } + + if (useTitleWebView || android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) { + web.setBackgroundColor(Color.TRANSPARENT); + } else { + // seriously? + web.setBackgroundColor(Color.argb(1, 0, 0, 0)); + } + + String hexColor = String.format("#%06X", (0xFFFFFF & tv.data)); + cssOverride += " a:link {color: "+hexColor+";} a:visited { color: "+hexColor+";}"; + + cssOverride += " table { width : 100%; }"; + + String articleContent = m_article.content != null ? m_article.content : ""; + + Document doc = Jsoup.parse(articleContent); + + if (doc != null) { + // thanks webview for crashing on