aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.classpath22
-rw-r--r--AndroidManifest.xml6
-rw-r--r--project.properties1
-rw-r--r--res/drawable-hdpi/ic_accept_light.pngbin0 -> 1335 bytes
-rw-r--r--res/drawable-hdpi/ic_cloud_light.pngbin0 -> 1405 bytes
-rw-r--r--res/drawable-hdpi/ic_important_light.pngbin0 -> 1725 bytes
-rw-r--r--res/drawable-hdpi/ic_labels_light.pngbin0 -> 1734 bytes
-rw-r--r--res/drawable-hdpi/ic_list_light.pngbin0 -> 1386 bytes
-rw-r--r--res/drawable-hdpi/ic_mailbox_collapsed_holo_light.pngbin350 -> 0 bytes
-rw-r--r--res/drawable-hdpi/ic_marked.pngbin811 -> 0 bytes
-rw-r--r--res/drawable-hdpi/ic_menu_attaches.pngbin2098 -> 0 bytes
-rw-r--r--res/drawable-hdpi/ic_menu_attaches_light.pngbin0 -> 1461 bytes
-rw-r--r--res/drawable-hdpi/ic_menu_clock.pngbin3106 -> 0 bytes
-rw-r--r--res/drawable-hdpi/ic_menu_cloud.pngbin1911 -> 0 bytes
-rw-r--r--res/drawable-hdpi/ic_menu_database.pngbin1977 -> 0 bytes
-rw-r--r--res/drawable-hdpi/ic_menu_exit.pngbin1704 -> 0 bytes
-rw-r--r--res/drawable-hdpi/ic_menu_marked.pngbin1726 -> 0 bytes
-rw-r--r--res/drawable-hdpi/ic_menu_publish.pngbin1438 -> 0 bytes
-rw-r--r--res/drawable-hdpi/ic_menu_published_light.pngbin0 -> 977 bytes
-rw-r--r--res/drawable-hdpi/ic_menu_tick.pngbin3283 -> 0 bytes
-rw-r--r--res/drawable-hdpi/ic_menu_unpublished_light.pngbin0 -> 1169 bytes
-rw-r--r--res/drawable-hdpi/ic_new_light.pngbin0 -> 1142 bytes
-rw-r--r--res/drawable-hdpi/ic_read_light.pngbin0 -> 1636 bytes
-rw-r--r--res/drawable-hdpi/ic_refresh_light.pngbin0 -> 3138 bytes
-rw-r--r--res/drawable-hdpi/ic_rotate_left_light.pngbin0 -> 1968 bytes
-rw-r--r--res/drawable-hdpi/ic_search_light.pngbin0 -> 1764 bytes
-rw-r--r--res/drawable-hdpi/ic_select_all_light.pngbin0 -> 1455 bytes
-rw-r--r--res/drawable-hdpi/ic_share_light.pngbin0 -> 1606 bytes
-rw-r--r--res/drawable-hdpi/ic_undo_light.pngbin0 -> 1642 bytes
-rw-r--r--res/drawable-hdpi/ic_unimportant_light.pngbin0 -> 1768 bytes
-rw-r--r--res/drawable-hdpi/ic_unread_light.pngbin0 -> 1599 bytes
-rw-r--r--res/drawable-xhdpi/ic_accept_light.pngbin0 -> 1599 bytes
-rw-r--r--res/drawable-xhdpi/ic_cloud_light.pngbin0 -> 1593 bytes
-rw-r--r--res/drawable-xhdpi/ic_important_light.pngbin0 -> 2045 bytes
-rw-r--r--res/drawable-xhdpi/ic_labels_light.pngbin0 -> 2169 bytes
-rw-r--r--res/drawable-xhdpi/ic_list_light.pngbin0 -> 1446 bytes
-rw-r--r--res/drawable-xhdpi/ic_menu_attaches_light.pngbin0 -> 1873 bytes
-rw-r--r--res/drawable-xhdpi/ic_menu_published_light.pngbin0 -> 1266 bytes
-rw-r--r--res/drawable-xhdpi/ic_menu_unpublished_light.pngbin0 -> 1546 bytes
-rw-r--r--res/drawable-xhdpi/ic_new_light.pngbin0 -> 1221 bytes
-rw-r--r--res/drawable-xhdpi/ic_read_light.pngbin0 -> 1923 bytes
-rw-r--r--res/drawable-xhdpi/ic_refresh_light.pngbin0 -> 3219 bytes
-rw-r--r--res/drawable-xhdpi/ic_rotate_left_light.pngbin0 -> 2406 bytes
-rw-r--r--res/drawable-xhdpi/ic_search_light.pngbin0 -> 2127 bytes
-rw-r--r--res/drawable-xhdpi/ic_select_all_light.pngbin0 -> 1583 bytes
-rw-r--r--res/drawable-xhdpi/ic_share_light.pngbin0 -> 1780 bytes
-rw-r--r--res/drawable-xhdpi/ic_undo_light.pngbin0 -> 1914 bytes
-rw-r--r--res/drawable-xhdpi/ic_unimportant_light.pngbin0 -> 2279 bytes
-rw-r--r--res/drawable-xhdpi/ic_unread_light.pngbin0 -> 1809 bytes
-rw-r--r--res/drawable/s_menu_attaches_light.svg (renamed from res/drawable/s_menu_attaches.svg)26
-rw-r--r--res/drawable/s_menu_published_light.svg189
-rw-r--r--res/drawable/s_menu_unpublished_light.svg (renamed from res/drawable/s_menu_publish.svg)29
-rw-r--r--res/layout-sw600dp/article_fragment.xml17
-rw-r--r--res/layout/article_pager.xml25
-rw-r--r--res/layout/feeds.xml1
-rw-r--r--res/layout/headlines.xml1
-rw-r--r--res/layout/headlines_row_unread.xml1
-rw-r--r--res/menu/article_content_img_context_menu.xml23
-rw-r--r--res/menu/headlines_action_menu.xml6
-rw-r--r--res/menu/headlines_context_menu.xml5
-rw-r--r--res/menu/main_menu.xml91
-rw-r--r--res/menu/offline_menu.xml59
-rw-r--r--res/values-cs/strings.xml189
-rw-r--r--res/values-de/strings.xml53
-rw-r--r--res/values-fr/strings.xml9
-rw-r--r--res/values-it/strings.xml193
-rw-r--r--res/values/arrays.xml11
-rw-r--r--res/values/strings.xml9
-rw-r--r--res/xml/preferences.xml6
-rw-r--r--src/org/fox/ttrss/ArticleFragment.java38
-rw-r--r--src/org/fox/ttrss/ArticlePager.java17
-rw-r--r--src/org/fox/ttrss/CommonActivity.java41
-rw-r--r--src/org/fox/ttrss/FeedsActivity.java6
-rw-r--r--src/org/fox/ttrss/GlobalState.java2
-rw-r--r--src/org/fox/ttrss/HeadlinesActivity.java6
-rw-r--r--src/org/fox/ttrss/HeadlinesFragment.java14
-rw-r--r--src/org/fox/ttrss/OnlineActivity.java146
-rw-r--r--src/org/fox/ttrss/offline/OfflineActivity.java58
-rw-r--r--src/org/fox/ttrss/offline/OfflineArticlePager.java12
-rw-r--r--src/org/fox/ttrss/offline/OfflineFeedsActivity.java8
-rw-r--r--src/org/fox/ttrss/offline/OfflineHeadlinesActivity.java6
81 files changed, 1048 insertions, 278 deletions
diff --git a/.classpath b/.classpath
index 05a903b5..ecdd04f3 100644
--- a/.classpath
+++ b/.classpath
@@ -1,11 +1,11 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="src" path="gen"/>
- <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
- <classpathentry kind="lib" path="C:/Users/fox/workspace/org.fox.ttrss/libs/gson-1.7.1.jar"/>
- <classpathentry kind="lib" path="C:/Users/fox/workspace/org.fox.ttrss/libs/jsoup-1.6.1.jar"/>
- <classpathentry kind="lib" path="libs/android-support-v4.jar"/>
- <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
- <classpathentry kind="output" path="bin/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="gen"/>
+ <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
+ <classpathentry kind="lib" path="libs/gson-1.7.1.jar"/>
+ <classpathentry kind="lib" path="libs/jsoup-1.6.1.jar"/>
+ <classpathentry kind="lib" path="libs/android-support-v4.jar"/>
+ <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
+ <classpathentry kind="output" path="bin/classes"/>
+</classpath>
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index ccc44067..4bd5fba2 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.fox.ttrss"
- android:versionCode="151"
- android:versionName="1.4.3" >
+ android:versionCode="161"
+ android:versionName="1.6.2" >
<uses-sdk
android:minSdkVersion="8"
@@ -34,6 +34,7 @@
</activity>
<activity
android:name=".FeedsActivity"
+ android:uiOptions="splitActionBarWhenNarrow"
android:label="@string/app_name" >
</activity>
<activity
@@ -50,6 +51,7 @@
</activity>
<activity
android:name=".offline.OfflineFeedsActivity"
+ android:uiOptions="splitActionBarWhenNarrow"
android:label="@string/app_name" >
</activity>
<activity
diff --git a/project.properties b/project.properties
index c4f09d2b..54306f95 100644
--- a/project.properties
+++ b/project.properties
@@ -9,3 +9,4 @@
# Project target.
target=android-17
+android.library.reference.1=../Android-ViewPagerIndicator/library
diff --git a/res/drawable-hdpi/ic_accept_light.png b/res/drawable-hdpi/ic_accept_light.png
new file mode 100644
index 00000000..53cf6877
--- /dev/null
+++ b/res/drawable-hdpi/ic_accept_light.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_cloud_light.png b/res/drawable-hdpi/ic_cloud_light.png
new file mode 100644
index 00000000..a1d27cec
--- /dev/null
+++ b/res/drawable-hdpi/ic_cloud_light.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_important_light.png b/res/drawable-hdpi/ic_important_light.png
new file mode 100644
index 00000000..11f86414
--- /dev/null
+++ b/res/drawable-hdpi/ic_important_light.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_labels_light.png b/res/drawable-hdpi/ic_labels_light.png
new file mode 100644
index 00000000..432e7c00
--- /dev/null
+++ b/res/drawable-hdpi/ic_labels_light.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_list_light.png b/res/drawable-hdpi/ic_list_light.png
new file mode 100644
index 00000000..e45ea1fd
--- /dev/null
+++ b/res/drawable-hdpi/ic_list_light.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_mailbox_collapsed_holo_light.png b/res/drawable-hdpi/ic_mailbox_collapsed_holo_light.png
deleted file mode 100644
index 2c395b80..00000000
--- a/res/drawable-hdpi/ic_mailbox_collapsed_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_marked.png b/res/drawable-hdpi/ic_marked.png
deleted file mode 100644
index 6dee7b7f..00000000
--- a/res/drawable-hdpi/ic_marked.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_attaches.png b/res/drawable-hdpi/ic_menu_attaches.png
deleted file mode 100644
index eccb0cbc..00000000
--- a/res/drawable-hdpi/ic_menu_attaches.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_attaches_light.png b/res/drawable-hdpi/ic_menu_attaches_light.png
new file mode 100644
index 00000000..8bf8cb78
--- /dev/null
+++ b/res/drawable-hdpi/ic_menu_attaches_light.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_clock.png b/res/drawable-hdpi/ic_menu_clock.png
deleted file mode 100644
index 824f688e..00000000
--- a/res/drawable-hdpi/ic_menu_clock.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_cloud.png b/res/drawable-hdpi/ic_menu_cloud.png
deleted file mode 100644
index 9f866719..00000000
--- a/res/drawable-hdpi/ic_menu_cloud.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_database.png b/res/drawable-hdpi/ic_menu_database.png
deleted file mode 100644
index 8f89ade5..00000000
--- a/res/drawable-hdpi/ic_menu_database.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_exit.png b/res/drawable-hdpi/ic_menu_exit.png
deleted file mode 100644
index 8e5fab5f..00000000
--- a/res/drawable-hdpi/ic_menu_exit.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_marked.png b/res/drawable-hdpi/ic_menu_marked.png
deleted file mode 100644
index 4f0c07c8..00000000
--- a/res/drawable-hdpi/ic_menu_marked.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_publish.png b/res/drawable-hdpi/ic_menu_publish.png
deleted file mode 100644
index de42e535..00000000
--- a/res/drawable-hdpi/ic_menu_publish.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_published_light.png b/res/drawable-hdpi/ic_menu_published_light.png
new file mode 100644
index 00000000..599ca764
--- /dev/null
+++ b/res/drawable-hdpi/ic_menu_published_light.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_tick.png b/res/drawable-hdpi/ic_menu_tick.png
deleted file mode 100644
index 9691a11d..00000000
--- a/res/drawable-hdpi/ic_menu_tick.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_unpublished_light.png b/res/drawable-hdpi/ic_menu_unpublished_light.png
new file mode 100644
index 00000000..6d10cb92
--- /dev/null
+++ b/res/drawable-hdpi/ic_menu_unpublished_light.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_new_light.png b/res/drawable-hdpi/ic_new_light.png
new file mode 100644
index 00000000..ad8ada6b
--- /dev/null
+++ b/res/drawable-hdpi/ic_new_light.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_read_light.png b/res/drawable-hdpi/ic_read_light.png
new file mode 100644
index 00000000..9ef52959
--- /dev/null
+++ b/res/drawable-hdpi/ic_read_light.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_refresh_light.png b/res/drawable-hdpi/ic_refresh_light.png
new file mode 100644
index 00000000..bb9d855f
--- /dev/null
+++ b/res/drawable-hdpi/ic_refresh_light.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_rotate_left_light.png b/res/drawable-hdpi/ic_rotate_left_light.png
new file mode 100644
index 00000000..97ab27f0
--- /dev/null
+++ b/res/drawable-hdpi/ic_rotate_left_light.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_search_light.png b/res/drawable-hdpi/ic_search_light.png
new file mode 100644
index 00000000..f12e005e
--- /dev/null
+++ b/res/drawable-hdpi/ic_search_light.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_select_all_light.png b/res/drawable-hdpi/ic_select_all_light.png
new file mode 100644
index 00000000..26a270b3
--- /dev/null
+++ b/res/drawable-hdpi/ic_select_all_light.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_share_light.png b/res/drawable-hdpi/ic_share_light.png
new file mode 100644
index 00000000..c329f58d
--- /dev/null
+++ b/res/drawable-hdpi/ic_share_light.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_undo_light.png b/res/drawable-hdpi/ic_undo_light.png
new file mode 100644
index 00000000..9e719c9c
--- /dev/null
+++ b/res/drawable-hdpi/ic_undo_light.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_unimportant_light.png b/res/drawable-hdpi/ic_unimportant_light.png
new file mode 100644
index 00000000..7259b06b
--- /dev/null
+++ b/res/drawable-hdpi/ic_unimportant_light.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_unread_light.png b/res/drawable-hdpi/ic_unread_light.png
new file mode 100644
index 00000000..d516f770
--- /dev/null
+++ b/res/drawable-hdpi/ic_unread_light.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_accept_light.png b/res/drawable-xhdpi/ic_accept_light.png
new file mode 100644
index 00000000..b52dc370
--- /dev/null
+++ b/res/drawable-xhdpi/ic_accept_light.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_cloud_light.png b/res/drawable-xhdpi/ic_cloud_light.png
new file mode 100644
index 00000000..37d98e5d
--- /dev/null
+++ b/res/drawable-xhdpi/ic_cloud_light.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_important_light.png b/res/drawable-xhdpi/ic_important_light.png
new file mode 100644
index 00000000..7576cc1e
--- /dev/null
+++ b/res/drawable-xhdpi/ic_important_light.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_labels_light.png b/res/drawable-xhdpi/ic_labels_light.png
new file mode 100644
index 00000000..8fdcd1a2
--- /dev/null
+++ b/res/drawable-xhdpi/ic_labels_light.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_list_light.png b/res/drawable-xhdpi/ic_list_light.png
new file mode 100644
index 00000000..95708234
--- /dev/null
+++ b/res/drawable-xhdpi/ic_list_light.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_attaches_light.png b/res/drawable-xhdpi/ic_menu_attaches_light.png
new file mode 100644
index 00000000..a3e253fa
--- /dev/null
+++ b/res/drawable-xhdpi/ic_menu_attaches_light.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_published_light.png b/res/drawable-xhdpi/ic_menu_published_light.png
new file mode 100644
index 00000000..938ec3e3
--- /dev/null
+++ b/res/drawable-xhdpi/ic_menu_published_light.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_unpublished_light.png b/res/drawable-xhdpi/ic_menu_unpublished_light.png
new file mode 100644
index 00000000..7b32106b
--- /dev/null
+++ b/res/drawable-xhdpi/ic_menu_unpublished_light.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_new_light.png b/res/drawable-xhdpi/ic_new_light.png
new file mode 100644
index 00000000..23b9a1c1
--- /dev/null
+++ b/res/drawable-xhdpi/ic_new_light.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_read_light.png b/res/drawable-xhdpi/ic_read_light.png
new file mode 100644
index 00000000..62e3d1ad
--- /dev/null
+++ b/res/drawable-xhdpi/ic_read_light.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_refresh_light.png b/res/drawable-xhdpi/ic_refresh_light.png
new file mode 100644
index 00000000..a7fdc0df
--- /dev/null
+++ b/res/drawable-xhdpi/ic_refresh_light.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_rotate_left_light.png b/res/drawable-xhdpi/ic_rotate_left_light.png
new file mode 100644
index 00000000..46d04a53
--- /dev/null
+++ b/res/drawable-xhdpi/ic_rotate_left_light.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_search_light.png b/res/drawable-xhdpi/ic_search_light.png
new file mode 100644
index 00000000..3549f84d
--- /dev/null
+++ b/res/drawable-xhdpi/ic_search_light.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_select_all_light.png b/res/drawable-xhdpi/ic_select_all_light.png
new file mode 100644
index 00000000..52d1155d
--- /dev/null
+++ b/res/drawable-xhdpi/ic_select_all_light.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_share_light.png b/res/drawable-xhdpi/ic_share_light.png
new file mode 100644
index 00000000..15549b04
--- /dev/null
+++ b/res/drawable-xhdpi/ic_share_light.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_undo_light.png b/res/drawable-xhdpi/ic_undo_light.png
new file mode 100644
index 00000000..99967f2f
--- /dev/null
+++ b/res/drawable-xhdpi/ic_undo_light.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_unimportant_light.png b/res/drawable-xhdpi/ic_unimportant_light.png
new file mode 100644
index 00000000..3c618a12
--- /dev/null
+++ b/res/drawable-xhdpi/ic_unimportant_light.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_unread_light.png b/res/drawable-xhdpi/ic_unread_light.png
new file mode 100644
index 00000000..606c902c
--- /dev/null
+++ b/res/drawable-xhdpi/ic_unread_light.png
Binary files differ
diff --git a/res/drawable/s_menu_attaches.svg b/res/drawable/s_menu_attaches_light.svg
index d158f478..0396f73f 100644
--- a/res/drawable/s_menu_attaches.svg
+++ b/res/drawable/s_menu_attaches_light.svg
@@ -14,11 +14,11 @@
height="16.000000px"
id="svg2"
sodipodi:version="0.32"
- inkscape:version="0.48.2 r9819"
- sodipodi:docname="s_menu_attaches.svg"
- inkscape:export-filename="C:\Users\fox\workspace\org.fox.ttrss\res\drawable-hdpi\ic_menu_attaches.png"
- inkscape:export-xdpi="225"
- inkscape:export-ydpi="225"
+ inkscape:version="0.48.4 r9939"
+ sodipodi:docname="s_menu_attaches_light.svg"
+ inkscape:export-filename="C:\Users\fox\workspace\org.fox.ttrss\res\drawable-hdpi\ic_menu_attaches_light.png"
+ inkscape:export-xdpi="270"
+ inkscape:export-ydpi="270"
version="1.1">
<defs
id="defs4">
@@ -99,18 +99,18 @@
</defs>
<sodipodi:namedview
id="base"
- pagecolor="#ffffff"
+ pagecolor="#454545"
bordercolor="#666666"
borderopacity="1.0"
- inkscape:pageopacity="0.0000000"
+ inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="22.4"
- inkscape:cx="1.501129"
- inkscape:cy="8.3641285"
+ inkscape:cx="6.7689862"
+ inkscape:cy="8.4534142"
inkscape:document-units="px"
inkscape:current-layer="layer1"
- inkscape:window-width="1920"
- inkscape:window-height="1138"
+ inkscape:window-width="1600"
+ inkscape:window-height="1137"
inkscape:window-x="-8"
inkscape:window-y="-8"
showguides="true"
@@ -134,8 +134,8 @@
inkscape:groupmode="layer"
id="layer1">
<path
- style="fill:none;stroke:#888a85;stroke-width:1.26131642;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- d="M 6.9892642,2.3757495 C 6.0497128,3.8758958 5.110161,5.376042 4.1706096,6.8761883 3.231058,8.3763347 2.1868547,9.8241539 1.2473032,11.3243 1.0695751,11.880314 2.4591402,13.489424 3.2673124,14.067232 4.108665,14.63398 6.5590494,15.293346 7.015292,15.13582 8.2872017,13.178185 9.6637633,11.272876 10.935674,9.3152417 12.207582,7.3576065 13.479493,5.399971 14.751402,3.4423357 14.794991,2.8776202 13.72786,1.8760087 12.997895,1.4004248 12.201569,0.90272101 11.053313,0.73681972 10.708457,0.90272101 9.6928273,2.5193913 8.6771969,4.1360615 7.6615667,5.7527318 6.6459365,7.3694021 5.6303063,8.9860723 4.6146759,10.602743 c -0.071518,0.275829 0.3965912,0.633779 0.5948867,0.7923 0.2227539,0.132721 0.8326308,0.441406 1.1257707,0.327777 C 6.9455358,10.82126 7.555738,9.9197012 8.1659403,9.0181406 8.7761427,8.1165809 9.3863449,7.215021 9.9965471,6.3134614"
+ style="opacity:0.8;fill:none;stroke:#ffffff;stroke-width:0.91846919;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="M 7.2696546,3.9045172 C 6.5854893,4.9968981 5.9013237,6.089279 5.2171584,7.1816599 4.5329929,8.274041 3.7726219,9.3283183 3.0884565,10.420698 c -0.1294185,0.40488 0.8824391,1.576607 1.4709363,1.997356 0.6126586,0.412697 2.3969867,0.892836 2.7292147,0.778128 0.926183,-1.425517 1.9285718,-2.81293 2.8547545,-4.238445 C 11.069544,7.5322205 11.995728,6.1067037 12.921911,4.6811871 12.953651,4.2699709 12.176585,3.5406145 11.645037,3.1943024 11.065166,2.8318829 10.229025,2.7110765 9.9779075,2.8318829 9.2383431,4.0091148 8.4987784,5.1863463 7.7592138,6.363578 7.0196493,7.5408098 6.2800847,8.7180415 5.5405199,9.8952727 c -0.052078,0.2008543 0.288791,0.4615083 0.4331863,0.5769393 0.1622057,0.09665 0.6063076,0.321425 0.8197671,0.238681 C 7.2378124,10.054393 7.6821511,9.3978941 8.12649,8.7413931 8.5708291,8.0848927 9.0151679,7.4283922 9.4595067,6.7718918"
id="path3814"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccccc" />
diff --git a/res/drawable/s_menu_published_light.svg b/res/drawable/s_menu_published_light.svg
new file mode 100644
index 00000000..752fe0f6
--- /dev/null
+++ b/res/drawable/s_menu_published_light.svg
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ width="16"
+ height="16"
+ id="RSSicon"
+ viewBox="0 0 32 32"
+ inkscape:version="0.48.4 r9939"
+ sodipodi:docname="s_menu_published_light.svg"
+ inkscape:export-filename="C:\Users\fox\workspace\org.fox.ttrss\res\drawable-hdpi\ic_menu_published_light.png"
+ inkscape:export-xdpi="270"
+ inkscape:export-ydpi="270">
+ <metadata
+ id="metadata34">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview
+ pagecolor="#171717"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1600"
+ inkscape:window-height="1137"
+ id="namedview32"
+ showgrid="false"
+ inkscape:zoom="23.953242"
+ inkscape:cx="0.75615658"
+ inkscape:cy="8.340867"
+ inkscape:window-x="-8"
+ inkscape:window-y="-8"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="RSSicon" />
+ <defs
+ id="defs3">
+ <linearGradient
+ x1="30.059999"
+ y1="30.059999"
+ x2="225.94"
+ y2="225.94"
+ id="RSSg"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0,-224)">
+ <stop
+ offset="0.0"
+ stop-color="#E3702D"
+ id="stop6" />
+ <stop
+ offset="0.1071"
+ stop-color="#EA7D31"
+ id="stop8" />
+ <stop
+ offset="0.3503"
+ stop-color="#F69537"
+ id="stop10" />
+ <stop
+ offset="0.5"
+ stop-color="#FB9E3A"
+ id="stop12" />
+ <stop
+ offset="0.7016"
+ stop-color="#EA7C31"
+ id="stop14" />
+ <stop
+ offset="0.8866"
+ stop-color="#DE642B"
+ id="stop16" />
+ <stop
+ offset="1.0"
+ stop-color="#D95B29"
+ id="stop18" />
+ </linearGradient>
+ <filter
+ id="filter3031"
+ inkscape:label="Desaturate"
+ x="0"
+ y="0"
+ width="1"
+ height="1"
+ inkscape:menu="Color"
+ inkscape:menu-tooltip="Render in shades of gray by reducing saturation to zero"
+ color-interpolation-filters="sRGB">
+ <feColorMatrix
+ id="feColorMatrix3033"
+ type="saturate"
+ values="0" />
+ </filter>
+ <filter
+ id="filter3031-1"
+ inkscape:label="Desaturate"
+ x="0"
+ y="0"
+ width="1"
+ height="1"
+ inkscape:menu="Color"
+ inkscape:menu-tooltip="Render in shades of gray by reducing saturation to zero"
+ color-interpolation-filters="sRGB">
+ <feColorMatrix
+ id="feColorMatrix3033-7"
+ type="saturate"
+ values="0" />
+ </filter>
+ <linearGradient
+ id="RSSg-9"
+ y2="225.94001"
+ x2="225.94001"
+ y1="30.06"
+ x1="30.06"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ id="stop3126"
+ stop-color="#E3702D"
+ offset="0.0" />
+ <stop
+ id="stop3128"
+ stop-color="#EA7D31"
+ offset="0.1071" />
+ <stop
+ id="stop3130"
+ stop-color="#F69537"
+ offset="0.3503" />
+ <stop
+ id="stop3132"
+ stop-color="#FB9E3A"
+ offset="0.5" />
+ <stop
+ id="stop3134"
+ stop-color="#EA7C31"
+ offset="0.7016" />
+ <stop
+ id="stop3136"
+ stop-color="#DE642B"
+ offset="0.8866" />
+ <stop
+ id="stop3138"
+ stop-color="#D95B29"
+ offset="1.0" />
+ </linearGradient>
+ <filter
+ id="filter3031-4"
+ inkscape:label="Desaturate"
+ x="0"
+ y="0"
+ width="1"
+ height="1"
+ inkscape:menu="Color"
+ inkscape:menu-tooltip="Render in shades of gray by reducing saturation to zero"
+ color-interpolation-filters="sRGB">
+ <feColorMatrix
+ id="feColorMatrix3033-8"
+ type="saturate"
+ values="0" />
+ </filter>
+ </defs>
+ <path
+ style="opacity:0.8;fill:#ffffff;fill-opacity:1;filter:url(#filter3031)"
+ d="m 9.0929935,3.8989242 c -2.8816759,0 -5.1940693,2.3123934 -5.1940693,5.1940693 l 0,13.8140145 c 0,2.881674 2.3123934,5.194069 5.1940693,5.194069 l 13.8140145,0 c 2.881674,0 5.194069,-2.312395 5.194069,-5.194069 l 0,-13.8140145 c 0,-2.8816759 -2.312395,-5.1940693 -5.194069,-5.1940693 l -13.8140145,0 z"
+ id="path3999" />
+ <path
+ style="opacity:0.8;fill:#ffffff;fill-opacity:1;filter:url(#filter3031)"
+ d="M 8.0431284,7.4905678 A 16.550485,16.550485 0 0 1 24.619945,24.012129 l -3.315363,0 A 13.240388,13.240388 0 0 0 8.0431284,10.805931 l 0,-3.3153632 z"
+ id="path3997" />
+ <path
+ style="opacity:0.8;fill:#ffffff;fill-opacity:1;filter:url(#filter3031)"
+ d="M 8.0431284,13.07143 A 10.970607,10.970607 0 0 1 19.039084,24.012129 l -3.204852,0 A 7.7550842,7.7550842 0 0 0 8.0431284,16.276281 l 0,-3.204851 z"
+ id="path3995" />
+ <path
+ style="opacity:0.8;fill:#ffffff;fill-opacity:1;filter:url(#filter3031)"
+ d="m 10.308627,19.481132 c 1.253565,0 2.265498,1.011934 2.265498,2.265498 0,1.253565 -1.011933,2.265499 -2.265498,2.265499 -1.2535655,0 -2.2654986,-1.011934 -2.2654986,-2.265499 0,-1.253564 1.0119331,-2.265498 2.2654986,-2.265498 z"
+ id="rect20" />
+</svg>
diff --git a/res/drawable/s_menu_publish.svg b/res/drawable/s_menu_unpublished_light.svg
index babb507a..6981beaf 100644
--- a/res/drawable/s_menu_publish.svg
+++ b/res/drawable/s_menu_unpublished_light.svg
@@ -12,11 +12,11 @@
height="16"
id="RSSicon"
viewBox="0 0 32 32"
- inkscape:version="0.48.2 r9819"
- sodipodi:docname="s_menu_publish.svg"
- inkscape:export-filename="C:\Users\fox\workspace\org.fox.ttrss\res\drawable-hdpi\ic_menu_publish.png"
- inkscape:export-xdpi="225"
- inkscape:export-ydpi="225">
+ inkscape:version="0.48.4 r9939"
+ sodipodi:docname="s_menu_unpublished_light.svg"
+ inkscape:export-filename="C:\Users\fox\workspace\org.fox.ttrss\res\drawable-hdpi\ic_menu_unpublished_light.png"
+ inkscape:export-xdpi="270"
+ inkscape:export-ydpi="270">
<metadata
id="metadata34">
<rdf:RDF>
@@ -30,7 +30,7 @@
</rdf:RDF>
</metadata>
<sodipodi:namedview
- pagecolor="#ffffff"
+ pagecolor="#171717"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
@@ -38,13 +38,13 @@
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
- inkscape:window-width="1920"
- inkscape:window-height="1138"
+ inkscape:window-width="1600"
+ inkscape:window-height="1137"
id="namedview32"
showgrid="false"
inkscape:zoom="23.953242"
- inkscape:cx="-4.9762823"
- inkscape:cy="10.694533"
+ inkscape:cx="6.9218983"
+ inkscape:cy="7.6051808"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
@@ -105,8 +105,9 @@
</filter>
</defs>
<path
- style="fill:#4f9dfd;fill-opacity:1;filter:url(#filter3031)"
- d="M 4.09375 1.15625 C 2.4640215 1.15625 1.15625 2.4640215 1.15625 4.09375 L 1.15625 11.90625 C 1.15625 13.535978 2.4640215 14.84375 4.09375 14.84375 L 11.90625 14.84375 C 13.535978 14.84375 14.84375 13.535978 14.84375 11.90625 L 14.84375 4.09375 C 14.84375 2.4640215 13.535978 1.15625 11.90625 1.15625 L 4.09375 1.15625 z M 3.5 3.1875 A 9.3601078 9.3601078 0 0 1 12.875 12.53125 L 11 12.53125 A 7.4880862 7.4880862 0 0 0 3.5 5.0625 L 3.5 3.1875 z M 3.5 6.34375 A 6.2044143 6.2044143 0 0 1 9.71875 12.53125 L 7.90625 12.53125 A 4.3858791 4.3858791 0 0 0 3.5 8.15625 L 3.5 6.34375 z M 4.78125 9.96875 C 5.4902024 9.96875 6.0625 10.541048 6.0625 11.25 C 6.0625 11.958952 5.4902024 12.53125 4.78125 12.53125 C 4.0722976 12.53125 3.5 11.958952 3.5 11.25 C 3.5 10.541048 4.0722976 9.96875 4.78125 9.96875 z "
- transform="scale(2,2)"
- id="rect20" />
+ style="opacity:0.8;fill:#ffffff;fill-opacity:1;filter:url(#filter3031)"
+ d="m 4.09375,1.15625 c -1.6297285,0 -2.9375,1.3077715 -2.9375,2.9375 l 0,7.8125 c 0,1.629728 1.3077715,2.9375 2.9375,2.9375 l 7.8125,0 c 1.629728,0 2.9375,-1.307772 2.9375,-2.9375 l 0,-7.8125 c 0,-1.6297285 -1.307772,-2.9375 -2.9375,-2.9375 l -7.8125,0 z M 3.5,3.1875 a 9.3601078,9.3601078 0 0 1 9.375,9.34375 l -1.875,0 A 7.4880862,7.4880862 0 0 0 3.5,5.0625 l 0,-1.875 z m 0,3.15625 a 6.2044143,6.2044143 0 0 1 6.21875,6.1875 l -1.8125,0 A 4.3858791,4.3858791 0 0 0 3.5,8.15625 l 0,-1.8125 z m 1.28125,3.625 c 0.7089524,0 1.28125,0.572298 1.28125,1.28125 0,0.708952 -0.5722976,1.28125 -1.28125,1.28125 C 4.0722976,12.53125 3.5,11.958952 3.5,11.25 3.5,10.541048 4.0722976,9.96875 4.78125,9.96875 z"
+ transform="matrix(1.7681938,0,0,1.7681938,1.8544501,1.8544501)"
+ id="rect20"
+ inkscape:connector-curvature="0" />
</svg>
diff --git a/res/layout-sw600dp/article_fragment.xml b/res/layout-sw600dp/article_fragment.xml
index dd97dad2..d4ffd99d 100644
--- a/res/layout-sw600dp/article_fragment.xml
+++ b/res/layout-sw600dp/article_fragment.xml
@@ -18,7 +18,7 @@
android:layout_weight="0"
android:orientation="vertical"
android:paddingBottom="4sp" >
-
+
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
@@ -27,7 +27,20 @@
android:text="There are many variations of passages of Lorem Ipsum available"
android:textColor="?linkColor"
android:textSize="21sp" />
-
+
+ <TextView
+ android:id="@+id/author"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:ellipsize="end"
+ android:singleLine="true"
+ android:gravity="right"
+ android:textStyle="italic"
+ android:text="{Author}"
+ android:textColor="?headlineExcerptTextColor"
+ android:textSize="13sp" />
+
<TextView
android:id="@+id/comments"
android:layout_width="match_parent"
diff --git a/res/layout/article_pager.xml b/res/layout/article_pager.xml
index 7647cce7..495eac4b 100644
--- a/res/layout/article_pager.xml
+++ b/res/layout/article_pager.xml
@@ -1,9 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/article_pager_container"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent" >
-<android.support.v4.view.ViewPager
-xmlns:android="http://schemas.android.com/apk/res/android"
-android:layout_width="fill_parent"
-android:layout_height="fill_parent"
-android:id="@+id/article_pager">
+ <android.support.v4.view.ViewPager
+ android:id="@+id/article_pager"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:layout_alignParentTop="true" >
-</android.support.v4.view.ViewPager> \ No newline at end of file
+ </android.support.v4.view.ViewPager>
+
+ <com.viewpagerindicator.UnderlinePageIndicator
+ android:id="@+id/article_titles"
+ android:layout_width="fill_parent"
+ android:layout_height="2dp"
+ android:layout_alignParentBottom="true"
+ android:layout_alignParentLeft="true" />
+
+</RelativeLayout> \ No newline at end of file
diff --git a/res/layout/feeds.xml b/res/layout/feeds.xml
index 102dd07e..72067ce0 100644
--- a/res/layout/feeds.xml
+++ b/res/layout/feeds.xml
@@ -1,5 +1,6 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main"
+ android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
diff --git a/res/layout/headlines.xml b/res/layout/headlines.xml
index f00b8d38..9de7f87d 100644
--- a/res/layout/headlines.xml
+++ b/res/layout/headlines.xml
@@ -1,5 +1,6 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/headlines"
+ android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
diff --git a/res/layout/headlines_row_unread.xml b/res/layout/headlines_row_unread.xml
index 1e789f71..d7cb0e08 100644
--- a/res/layout/headlines_row_unread.xml
+++ b/res/layout/headlines_row_unread.xml
@@ -49,6 +49,7 @@
<LinearLayout
android:id="@+id/feed_and_author"
+ android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent" >
diff --git a/res/menu/article_content_img_context_menu.xml b/res/menu/article_content_img_context_menu.xml
new file mode 100644
index 00000000..0f14dd92
--- /dev/null
+++ b/res/menu/article_content_img_context_menu.xml
@@ -0,0 +1,23 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <item
+ android:id="@+id/article_img_open"
+ android:showAsAction=""
+ android:title="@string/article_img_open"/>
+
+ <item
+ android:id="@+id/article_img_share"
+ android:showAsAction=""
+ android:title="@string/article_img_share"/>
+
+ <item
+ android:id="@+id/article_img_view_caption"
+ android:showAsAction=""
+ android:title="@string/article_img_view_caption"/>
+
+ <!-- <item
+ android:id="@+id/article_img_save"
+ android:showAsAction=""
+ android:title="Save image to file"/> -->
+
+</menu>
diff --git a/res/menu/headlines_action_menu.xml b/res/menu/headlines_action_menu.xml
index 77a9e745..f6e97d93 100644
--- a/res/menu/headlines_action_menu.xml
+++ b/res/menu/headlines_action_menu.xml
@@ -2,19 +2,19 @@
<item
android:id="@+id/selection_toggle_unread"
- android:icon="@drawable/ic_menu_tick"
android:showAsAction="ifRoom"
+ android:icon="@drawable/ic_unread_light"
android:title="@string/selection_toggle_unread"/>
<item
android:id="@+id/selection_toggle_marked"
- android:icon="@drawable/ic_menu_marked"
+ android:icon="@drawable/ic_unimportant_light"
android:showAsAction="ifRoom"
android:title="@string/selection_toggle_marked"/>
<item
android:id="@+id/selection_toggle_published"
- android:icon="@drawable/ic_menu_publish"
+ android:icon="@drawable/ic_menu_unpublished_light"
android:showAsAction="ifRoom"
android:title="@string/selection_toggle_published"/>
diff --git a/res/menu/headlines_context_menu.xml b/res/menu/headlines_context_menu.xml
index 09cea090..2a445216 100644
--- a/res/menu/headlines_context_menu.xml
+++ b/res/menu/headlines_context_menu.xml
@@ -27,9 +27,8 @@
android:showAsAction=""
android:title="@string/article_mark_read_above"/>
<item
- android:id="@+id/set_labels"
- android:icon="@drawable/ic_menu_marked"
- android:title="@string/article_set_labels"/>
+ android:id="@+id/set_labels"
+ android:title="@string/article_set_labels"/>
<item
android:id="@+id/article_set_note"
android:showAsAction=""
diff --git a/res/menu/main_menu.xml b/res/menu/main_menu.xml
index 3591ba92..d7d5389e 100644
--- a/res/menu/main_menu.xml
+++ b/res/menu/main_menu.xml
@@ -13,52 +13,51 @@
<item
android:id="@+id/subscribe_to_feed"
- android:icon="@android:drawable/ic_menu_add"
- android:showAsAction=""
- android:title="Subscribe to feed"/>
+ android:icon="@drawable/ic_new_light"
+ android:showAsAction="ifRoom"
+ android:title="@string/subscribe_to_feed"/>
<item
android:id="@+id/show_feeds"
- android:icon="@android:drawable/ic_menu_agenda"
- android:showAsAction=""
+ android:icon="@drawable/ic_list_light"
+ android:showAsAction="ifRoom"
android:title="@string/menu_all_feeds"/>
<item
+ android:id="@+id/go_offline"
+ android:icon="@drawable/ic_cloud_light"
+ android:showAsAction="ifRoom"
+ android:title="@string/go_offline"/>
+ <item
android:id="@+id/update_feeds"
- android:icon="@android:drawable/ic_menu_rotate"
+ android:icon="@drawable/ic_refresh_light"
android:showAsAction="ifRoom"
android:title="@string/update_feeds"/>
<item
- android:id="@+id/go_offline"
- android:icon="@drawable/ic_menu_cloud"
- android:showAsAction=""
- android:title="@string/go_offline"/>
- <item
android:id="@+id/logout"
- android:icon="@drawable/ic_menu_exit"
android:showAsAction=""
android:title="@string/logout"/>
</group>
<group android:id="@+id/menu_group_headlines" >
<item
android:id="@+id/update_headlines"
- android:icon="@android:drawable/ic_menu_rotate"
+ android:icon="@drawable/ic_refresh_light"
android:showAsAction="ifRoom"
android:title="@string/update_headlines"/>
<item
android:id="@+id/search"
android:actionViewClass="android.widget.SearchView"
- android:icon="@android:drawable/ic_menu_search"
+ android:icon="@drawable/ic_search_light"
android:showAsAction="ifRoom|collapseActionView"
android:title="@string/search"/>
<item
android:id="@+id/headlines_mark_as_read"
- android:icon="@drawable/ic_menu_tick"
- android:showAsAction=""
+ android:icon="@drawable/ic_accept_light"
+ android:showAsAction="ifRoom"
android:title="@string/headlines_mark_as_read"/>
<item
android:id="@+id/headlines_select"
- android:icon="@drawable/ic_menu_database"
- android:showAsAction=""
+ android:showAsAction="ifRoom"
+ android:icon="@drawable/ic_select_all_light"
android:title="@string/headlines_select"/>
<item
@@ -79,72 +78,64 @@
<group android:id="@+id/menu_group_headlines_selection" >
<item
android:id="@+id/selection_toggle_unread"
- android:icon="@drawable/ic_menu_tick"
android:showAsAction="ifRoom"
android:title="@string/selection_toggle_unread"/>
<item
android:id="@+id/selection_toggle_marked"
- android:icon="@drawable/ic_menu_marked"
+ android:icon="@drawable/ic_unimportant_light"
android:showAsAction="ifRoom"
android:title="@string/selection_toggle_marked"/>
<item
android:id="@+id/selection_toggle_published"
- android:icon="@drawable/ic_menu_publish"
+ android:icon="@drawable/ic_menu_unpublished_light"
android:showAsAction="ifRoom"
android:title="@string/selection_toggle_published"/>
<item
android:id="@+id/selection_select_none"
- android:icon="@android:drawable/ic_menu_close_clear_cancel"
android:showAsAction=""
android:title="@string/selection_select_none"/>
</group>
<group android:id="@+id/menu_group_article" >
<item
- android:id="@+id/toggle_attachments"
- android:icon="@drawable/ic_menu_attaches"
- android:showAsAction="ifRoom"
- android:title="@string/attachments_prompt"/>
- <item
android:id="@+id/toggle_marked"
- android:icon="@drawable/ic_menu_marked"
+ android:icon="@drawable/ic_unimportant_light"
android:showAsAction="ifRoom"
android:title="@string/article_toggle_marked"/>
<item
android:id="@+id/toggle_published"
- android:icon="@drawable/ic_menu_publish"
+ android:icon="@drawable/ic_menu_unpublished_light"
android:showAsAction="ifRoom"
android:title="@string/article_toggle_published"/>
<item
+ android:id="@+id/toggle_attachments"
+ android:icon="@drawable/ic_menu_attaches_light"
+ android:showAsAction="ifRoom"
+ android:title="@string/attachments_prompt"/>
+ <item
android:id="@+id/share_article"
- android:actionProviderClass="android.widget.ShareActionProvider"
- android:icon="@android:drawable/ic_menu_share"
- android:showAsAction=""
+ android:icon="@drawable/ic_share_light"
+ android:showAsAction="ifRoom"
android:title="@string/share_article"/>
- <item
- android:id="@+id/set_unread"
- android:icon="@android:drawable/ic_menu_recent_history"
- android:showAsAction=""
- android:title="@string/article_set_unread"/>
- <item
- android:id="@+id/catchup_above"
- android:icon="@drawable/ic_menu_tick"
- android:title="@string/article_mark_read_above"/>
+ <!-- android:actionProviderClass="android.widget.ShareActionProvider" -->
<item
android:id="@+id/set_labels"
- android:icon="@drawable/ic_menu_marked"
+ android:showAsAction=""
+ android:icon="@drawable/ic_labels_light"
android:title="@string/article_set_labels"/>
<item
android:id="@+id/article_set_note"
android:showAsAction=""
android:title="@string/article_set_note"/>
- <!--
- <item
- android:id="@+id/close_article"
- android:icon="@android:drawable/ic_menu_close_clear_cancel"
- android:showAsAction=""
- android:title="@string/close_article"/>
- -->
+ <item
+ android:id="@+id/catchup_above"
+ android:title="@string/article_mark_read_above"/>
+
+ <item
+ android:id="@+id/set_unread"
+ android:icon="@drawable/ic_read_light"
+ android:showAsAction="ifRoom"
+ android:title="@string/article_set_unread"/>
</group>
@@ -168,4 +159,4 @@
android:title="@string/login_login"/>
</group>
-</menu> \ No newline at end of file
+</menu>
diff --git a/res/menu/offline_menu.xml b/res/menu/offline_menu.xml
index 8a30a8e4..8fc02fa1 100644
--- a/res/menu/offline_menu.xml
+++ b/res/menu/offline_menu.xml
@@ -3,110 +3,83 @@
<group android:id="@+id/menu_group_feeds" >
<item
android:id="@+id/go_online"
- android:icon="@drawable/ic_menu_cloud"
android:showAsAction="ifRoom|withText"
+ android:icon="@drawable/ic_cloud_light"
android:title="@string/go_online"
android:visible="false"/>
- <!--
- <item
- android:id="@+id/back_to_categories"
- android:icon="@android:drawable/ic_menu_close_clear_cancel"
- android:showAsAction="ifRoom|withText"
- android:title="@string/back_to_categories"/>
- -->
-
<item
android:id="@+id/show_feeds"
- android:icon="@android:drawable/ic_menu_agenda"
- android:showAsAction=""
+ android:icon="@drawable/ic_list_light"
+ android:showAsAction="ifRoom"
android:title="@string/menu_all_feeds"/>
</group>
<group android:id="@+id/menu_group_headlines" >
- <!-- <item
- android:id="@+id/go_online"
- android:icon="@drawable/ic_menu_cloud"
- android:title="@string/go_online"
- android:visible="false"/> -->
<item
android:id="@+id/search"
android:actionViewClass="android.widget.SearchView"
- android:icon="@android:drawable/ic_menu_search"
+ android:icon="@drawable/ic_search_light"
android:showAsAction="ifRoom|collapseActionView"
android:title="@string/search"/>
<item
android:id="@+id/headlines_mark_as_read"
- android:icon="@drawable/ic_menu_tick"
+ android:icon="@drawable/ic_accept_light"
+ android:showAsAction="ifRoom"
android:title="@string/headlines_mark_as_read"/>
<item
android:id="@+id/headlines_select"
- android:icon="@drawable/ic_menu_database"
- android:showAsAction=""
+ android:icon="@drawable/ic_select_all_light"
+ android:showAsAction="ifRoom"
android:title="@string/headlines_select"/>
- <!-- <item
- android:id="@+id/close_feed"
- android:icon="@android:drawable/ic_menu_close_clear_cancel"
- android:showAsAction=""
- android:title="@string/close_feed"/> -->
</group>
<group android:id="@+id/menu_group_headlines_selection" >
<item
android:id="@+id/selection_toggle_unread"
- android:icon="@drawable/ic_menu_tick"
android:showAsAction="ifRoom"
android:title="@string/selection_toggle_unread"/>
<item
android:id="@+id/selection_toggle_marked"
- android:icon="@drawable/ic_menu_marked"
+ android:icon="@drawable/ic_unimportant_light"
android:showAsAction="ifRoom"
android:title="@string/selection_toggle_marked"/>
<item
android:id="@+id/selection_toggle_published"
- android:icon="@drawable/ic_menu_publish"
+ android:icon="@drawable/ic_menu_unpublished_light"
android:showAsAction="ifRoom"
android:title="@string/selection_toggle_published"/>
<item
android:id="@+id/selection_select_none"
- android:icon="@android:drawable/ic_menu_close_clear_cancel"
android:showAsAction=""
android:title="@string/selection_select_none"/>
</group>
<group android:id="@+id/menu_group_article" >
<item
android:id="@+id/toggle_marked"
- android:icon="@drawable/ic_menu_marked"
+ android:icon="@drawable/ic_unimportant_light"
android:showAsAction="ifRoom"
android:title="@string/article_toggle_marked"/>
<item
android:id="@+id/toggle_published"
- android:icon="@drawable/ic_menu_publish"
+ android:icon="@drawable/ic_menu_unpublished_light"
android:showAsAction="ifRoom"
android:title="@string/article_toggle_published"/>
<item
android:id="@+id/share_article"
- android:actionProviderClass="android.widget.ShareActionProvider"
- android:icon="@android:drawable/ic_menu_share"
- android:showAsAction=""
+ android:icon="@drawable/ic_share_light"
+ android:showAsAction="ifRoom"
android:title="@string/share_article"/>
<item
android:id="@+id/set_unread"
- android:icon="@android:drawable/ic_menu_recent_history"
- android:showAsAction=""
+ android:icon="@drawable/ic_read_light"
+ android:showAsAction="ifRoom"
android:title="@string/article_set_unread"/>
<item
android:id="@+id/catchup_above"
- android:icon="@drawable/ic_menu_tick"
android:title="@string/article_mark_read_above"/>
- <!-- <item
- android:id="@+id/close_article"
- android:icon="@android:drawable/ic_menu_close_clear_cancel"
- android:showAsAction=""
- android:title="@string/close_article"/> -->
</group>
<item
android:id="@+id/preferences"
- android:icon="@android:drawable/ic_menu_preferences"
android:showAsAction=""
android:title="@string/preferences"/>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
new file mode 100644
index 00000000..cd3edabd
--- /dev/null
+++ b/res/values-cs/strings.xml
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="login_in_progress">Přihlašení k serveru</string>
+ <string name="app_name">Tiny Tiny RSS</string>
+ <string name="login_need_configure">Prosím, nejprve nastavte aplikaci.</string>
+ <string name="login_ready">Připraven na přihlášení.</string>
+ <string name="login_login">Přihlásit</string>
+ <string name="logout">Odhlásit </string>
+ <string name="login">Jméno</string>
+ <string name="login_summary">Přihlašovací jméno. (Není nutné pokud se jedná o jednouživatelskou instalaci serveru.)</string>
+ <string name="http_login_summary">Vyplňuje se pouze pokud je tt-rss server chráněn HTTP autentizací</string>
+ <string name="debugging">Debugging</string>
+ <string name="password">Heslo</string>
+ <string name="default_url">http://example.domain/tt-rss/</string>
+ <string name="look_and_feel">Rozhraní</string>
+ <string name="pref_theme">Vzhled</string>
+ <string name="pref_theme_long">Změna barvy aplikace</string>
+ <string name="ttrss_url">Tiny Tiny RSS URL (adresa serveru)</string>
+ <string name="theme_dark">Tmavý</string>
+ <string name="preferences">Nastavení</string>
+ <string name="theme_light">Světlý</string>
+ <string name="connection">Připojení</string>
+ <string name="headline_context_multiple">Vybrané články</string>
+ <string name="http_authentication">HTTP autentizace</string>
+ <string name="loading_message">Přihlašování, čekejte prosí…</string>
+ <string name="menu_unread_feeds">Zobrazit nepřečtené zdroje</string>
+ <string name="menu_all_feeds">Zobrazit všechny zdroje</string>
+ <string name="update_feeds">Obnovit</string>
+ <string name="share_article">Sdílet článek</string>
+ <string name="catchup">Označit jako přečtené</string>
+ <string name="sort_feeds_by_unread">Řadit zdroje podle počtu nepřečtených článků</string>
+ <string name="ssl_trust_any">Přijmout jakýkoliv certifikát</string>
+ <string name="category_browse_feeds">Procházet zdroje</string>
+ <string name="category_browse_articles">Procházet články</string>
+ <string name="blank"/>
+ <string name="transport_debugging">Logovat odeslaná a přijatá data</string>
+ <string name="article_toggle_marked">Hvězdička</string>
+ <string name="article_toggle_published">Publikován</string>
+ <string name="headlines_select">Vybrat články</string>
+ <string name="headlines_select_dialog">Vybrat články</string>
+ <string name="headlines_select_all">Vše</string>
+ <string name="headlines_select_unread">Nepřečtené</string>
+ <string name="headlines_select_none">Odoznačit vše</string>
+ <string name="selection_toggle_marked">Hvězdička</string>
+ <string name="selection_toggle_published">Publikovaný</string>
+ <string name="selection_toggle_unread">Nepřečtené</string>
+ <string name="selection_select_none">Odoznačit vše</string>
+ <string name="context_selection_toggle_marked">Hvězdička</string>
+ <string name="context_selection_toggle_published">Publikovaný</string>
+ <string name="context_selection_toggle_unread">Nepřečtené</string>
+ <string name="article_set_unread">Nastavit nepřečtené</string>
+ <string name="article_mark_read_above">Nastavit jako přečtené</string>
+ <string name="ttrss_url_summary">Adresa tt-rss serveru. Například: http://muj_server.cz/tt-rss/</string>
+ <string name="download_feed_icons">Povolit ikony zdrojů</string>
+ <string name="enable_cats">Povolit kategorie</string>
+ <string name="no_feeds_to_display">Žádné zdroje k zobrazení</string>
+ <string name="no_headlines_to_display">Žádné titulky k zobrazení</string>
+ <string name="browse_cats_like_feeds">Procházet kategorie jako zdroje</string>
+ <string name="browse_cats_like_feeds_summary">Použij kontextové menu pro procházení kategorie</string>
+ <string name="headlines_mark_as_read">Označit za přečtené</string>
+ <string name="error_unknown">Chyba: Neznámá chyba (více v logu)</string>
+ <string name="error_http_unauthorized">Chyba: 401 neoprávněný přístup k serveru</string>
+ <string name="error_http_forbidden">Chyba: 403 obecná chyba serveru</string>
+ <string name="error_http_not_found">Chyba: 404 stránka nenalezena</string>
+ <string name="error_http_server_error">Chyba: 500 chyba serveru</string>
+ <string name="error_http_other_error">Chyba: jiná HTTP chyba (více v logu)</string>
+ <string name="error_ssl_rejected">Chyba: SSL certifikát zamítnut</string>
+ <string name="error_parse_error">Chyba: Nepodařilo se dekódovat JSON</string>
+ <string name="error_io_error">Chyba: I/O (Je server zapnut?)</string>
+ <string name="error_other_error">Chyba: Neznámá chyba (více v logu)</string>
+ <string name="error_api_disabled">Chyba: Prosím, povolte na serveru externí API. Nastavení - Obecné - Enable external API</string>
+ <string name="error_api_unknown">Chyba: neznámá chyba API (více v logu)</string>
+ <string name="error_api_incorrect_usage">Chyba: nekorektní použití API</string>
+ <string name="error_login_failed">Chyba: chybné uživatelské jméno nebo heslo</string>
+ <string name="error_invalid_api_url">Chyba: chybna API URL</string>
+ <string name="combined_mode_summary">Zobrazí celý článek, v samostatném panelu</string>
+ <string name="combined_mode">Kombinovaný mód</string>
+ <string name="go_offline">Pracovat offline</string>
+ <string name="go_online">Pracovat online</string>
+ <string name="offline_switch_error">Nepodařilo se přepnout do offline režimu (více log)</string>
+ <string name="no_feeds">Žádné zdroje k zobrazení</string>
+ <string name="no_headlines">Žádné články k zobrazení</string>
+ <string name="dialog_offline_prompt">Přihlášení se nezdařilo! Mate však uložena offline data. Chcete přejít do offline režimu?</string>
+ <string name="dialog_offline_success">Offline režim je připraven</string>
+ <string name="dialog_offline_go">Přejít do offline režimu</string>
+ <string name="dialog_cancel">Konec</string>
+ <string name="dialog_offline_switch_prompt">Stáhnout nepřečtené články a přejít do offline módu?</string>
+ <string name="notify_downloading_articles">Stahování článku (%1$d)…</string>
+ <string name="notify_downloading_init">Startuje stahování…</string>
+ <string name="notify_downloading_feeds">Stahování zdrojů…</string>
+ <string name="notify_uploading_sending_data">Odesílání dat na server…</string>
+ <string name="notify_downloading_title">Příprava offline módu</string>
+ <string name="notify_uploading_title">Synchronizace offline dat</string>
+ <string name="offline_sync_success">Synchronizace offline dat je hotova</string>
+ <string name="offline_mode">Offline mód</string>
+ <string name="offline_image_cache_enabled">Cache obrázků</string>
+ <string name="offline_image_cache_enabled_summary">Stahovat obrázky na sd kartu. Může výrazně zvýšit čas potřebný pro přejití do offline módu.</string>
+ <string name="notify_downloading_images">Stahuji obrázek (%1$d)…</string>
+ <string name="article_set_labels">Nastavit štítek</string>
+ <string name="search">Hledat</string>
+ <string name="cancel">Konec</string>
+ <string name="font_size_small">Malý</string>
+ <string name="font_size_medium">Medium</string>
+ <string name="font_size_large">Velký</string>
+ <string name="pref_font_size">Velikost textu</string>
+ <string name="donate">Darovat</string>
+ <string name="dialog_close">Zavřít</string>
+ <string name="donate_select">Prosím vyberte dar</string>
+ <string name="donate_do">Darovat!</string>
+ <string name="tablet_article_swipe">Přepínat mezi články</string>
+ <string name="article_link_copy">Kopírovat odkaz do schránky</string>
+ <string name="text_copied_to_clipboard">Text byl zkopírován do schránky</string>
+ <string name="attachments_prompt">Vyberte přílohu</string>
+ <string name="attachment_view">Zobrazit</string>
+ <string name="attachment_copy">Kopírovat URL</string>
+ <string name="justify_article_text">Zarovnání textu článku</string>
+ <string name="dialog_offline_sync_in_progress">Probíhá Offline synchronizace</string>
+ <string name="dialog_offline_sync_stop">Zastavit synchronizaci</string>
+ <string name="dialog_offline_sync_continue">Pokračovat</string>
+ <string name="article_set_note">Publikovat s poznámkou</string>
+ <string name="close_feed">Zavřít zdroj</string>
+ <string name="close_article">Zavřít článek</string>
+ <string name="dialog_open_preferences">Nastavení</string>
+ <string name="dialog_need_configure_prompt">Prosím, vyplňte informace o tt-rss serveru, jako jsou adresy URL, přihlašovací jméno a heslo.</string>
+ <string name="notify_article_marked">Článku byla přidána hvězdička</string>
+ <string name="notify_article_unmarked">Článku byla odebrána hvězdička</string>
+ <string name="notify_article_published">Článek byl publikován</string>
+ <string name="notify_article_unpublished">Publikování článku bylo zrušeno</string>
+ <string name="notify_article_note_set">Poznámky ke článku jsou uloženy</string>
+ <string name="update_headlines">Obnovit</string>
+ <string name="attachment_share">Sdílet</string>
+ <string name="error_network_unavailable">Chyba: síť je nedostupná</string>
+ <string name="category_browse_headlines">Procházet titulky</string>
+ <string name="pref_default_view_mode">Zobrazení zdrojů</string>
+ <string name="pref_default_view_mode_long">Určuje jakým způsobem se ve výchozím stavu budou zdroje procházet.</string>
+ <string name="donate_thanks">Dar byl ověřen, děkujeme za podporu!</string>
+ <string name="use_volume_keys">Použít ovladač hlasitosti</string>
+ <string name="use_volume_keys_long">Přepínání mezi články pomocí hardwarových tlačítek pro ovládání hlasitosti.</string>
+ <string name="ssl_trust_any_host">Neověřovat jméno serveru</string>
+ <string name="ssl_trust_any_host_long">Nebude se ověřovat pravost jména serveru</string>
+ <string name="error_api_unknown_method">Chyba: neznáma API funkce</string>
+ <string name="ssl_trust_any_long">Akceptovat jakýkoliv SSL certifikát bez validace</string>
+ <string name="ssl">SSL</string>
+ <string name="error_ssl_hostname_rejected">Chyba: SSL hostname nelze ověřit</string>
+ <string name="offline_oldest_first">Zobrazit nejstarší články jako první</string>
+ <string name="prefs_dim_status_bar">Matný stavový proužek</string>
+ <string name="prefs_dim_status_bar_long">Schová stavový proužek při čtení</string>
+ <string name="article_comments">%1$d komentáře</string>
+ <string name="trial_mode_prompt">Trial verze, %1$d dní zbývá.</string>
+ <string name="trial_purchase">Odemknout plnou verzi</string>
+ <string name="trial_expired">Trial verze vypršela</string>
+ <string name="trial_expired_message">Chcete-li pokračovat v používání aplikace Tiny Tiny RSS prosím odemkněte ji zakoupeným klíčem.</string>
+ <string name="theme_sepia">Sépie</string>
+ <string name="trial_thanks">Plná verze, děkujeme za podporu!</string>
+ <string name="prefs_fullscreen_mode">Celá obrazovka</string>
+ <string name="reading">Čtení</string>
+ <string name="theme_dark_gray">Tmavošedý</string>
+ <string name="offline_articles_to_download">Počet článků ke stažení</string>
+ <string name="offline_articles_to_download_long">Počet článků ke stažení pro offline mód (nejnovější nejdříve).</string>
+ <string name="pref_headlines_show_content_long">Zobrazit obsahu náhledů v seznamu titulků</string>
+ <string name="pref_headlines_show_content">Náhled obsahu článku</string>
+ <string name="api_too_low">Tato akce vyžaduje novější verzi Tiny Tiny RSS serveru</string>
+ <string name="share_url_prompt">URL:</string>
+ <string name="share_url_hint">URL článku</string>
+ <string name="share_content_hint">Obsah článku</string>
+ <string name="share_title_prompt">Nadpis:</string>
+ <string name="share_title_hint">Nadpis článku</string>
+ <string name="share_share_button">Sdílet</string>
+ <string name="share_article_posted">Článek odeslán</string>
+ <string name="subscribe_name">Přihlásit se k Tiny Tiny RSS</string>
+ <string name="feed_url">URL zdroje</string>
+ <string name="error_while_subscribing">Chyba při přihlášení.</string>
+ <string name="category_list_updated">Seznam kategorii načten</string>
+ <string name="subscribed_to_feed">Zdroj přihlášen k odběru</string>
+ <string name="error_feed_already_exists_">Chyba: zdroj již existuje</string>
+ <string name="error_invalid_url">Chyba: Nesprávná URL.</string>
+ <string name="error_url_is_an_html_page_no_feeds_found">Chyba: Zdroj nenalezen.</string>
+ <string name="error_url_contains_multiple_feeds">Chyba: URL obsahuje několik zdrojů</string>
+ <string name="error_could_not_download_url">Chyba: Nelze stahovat</string>
+ <string name="headlines_view_mode">Nastavit mód</string>
+ <string name="headlines_set_view_mode">Nastavit mód</string>
+ <string name="headlines_adaptive">Adaptivní</string>
+ <string name="headlines_all_articles">Všechny články</string>
+ <string name="headlines_starred">S hvězdičkou</string>
+ <string name="headlines_published">Publikované</string>
+ <string name="headlines_unread">Nepřečtené</string>
+ <string name="subscribe_to_feed">Přidat zdroj</string>
+ <string name="labels">Štítky</string>
+</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 7bc2a3d7..4cdeb289 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -32,20 +32,20 @@
<string name="category_browse_articles">Artikel anzeigen</string>
<string name="blank"></string>
<string name="transport_debugging">Gesendete und empfangene Daten aufzeichnen</string>
- <string name="article_toggle_marked">(Un)Star</string>
- <string name="article_toggle_published">(Un)Publish</string>
+ <string name="article_toggle_marked">Markieren (rückgängig machen)</string>
+ <string name="article_toggle_published">Veröffentlichen (rückgängig machen)</string>
<string name="headlines_select">Artikel auswählen</string>
<string name="headlines_select_dialog">Artikel auswählen</string>
<string name="headlines_select_all">Alle</string>
<string name="headlines_select_unread">Ungelesen</string>
- <string name="headlines_select_none">Alle Abwählen</string>
- <string name="selection_toggle_marked">(Un)Star</string>
- <string name="selection_toggle_published">(Un)Publish</string>
- <string name="selection_toggle_unread">(Un)gelesen</string>
+ <string name="headlines_select_none">Alle abwählen</string>
+ <string name="selection_toggle_marked">Markieren (rückgängig machen)</string>
+ <string name="selection_toggle_published">Veröffentlichen (rückgängig machen)</string>
+ <string name="selection_toggle_unread">Als (Un)gelesen markieren</string>
<string name="selection_select_none">Alle abwählen</string>
- <string name="context_selection_toggle_marked">(Un)Star</string>
- <string name="context_selection_toggle_published">(Un)Publish</string>
- <string name="context_selection_toggle_unread">(Un)gelesen</string>
+ <string name="context_selection_toggle_marked">Markieren (rückgängig machen)</string>
+ <string name="context_selection_toggle_published">Veröffentlichen (rückgängig machen)</string>
+ <string name="context_selection_toggle_unread">Als (Un)gelesen markieren</string>
<string name="article_set_unread">Als ungelesen markieren</string>
<string name="article_mark_read_above">Obige als gelesen markieren.</string>
<string name="http_login_summary">Optional. Bitte ausfüllen wenn die TinyTiny RSS Installation durch HTTP Basic Authentication geschützt ist.</string>
@@ -53,22 +53,22 @@
<string name="ttrss_url_summary">URL deiner tt-rss Installation, Bsp.: http://site.com/tt-rss/</string>
<string name="download_feed_icons">Feedsymbole herunterladen</string>
<string name="enable_cats">Feedkategorien anzeigen</string>
- <string name="no_feeds_to_display">Keine Feeds zum anzeigen</string>
- <string name="no_headlines_to_display">Keine Überschriften zum anzeigen.</string>
+ <string name="no_feeds_to_display">Keine Feeds zum Anzeigen</string>
+ <string name="no_headlines_to_display">Keine Überschriften zum Anzeigen.</string>
<string name="browse_cats_like_feeds">Kategorien als Feeds anzeigen</string>
<string name="browse_cats_like_feeds_summary">Kann im Kontextmenü jeder Kategorie angepasst werden.</string>
<string name="headlines_mark_as_read">Als gelesen markieren</string>
<string name="error_unknown">Fehler: Unbekannter Fehler (siehe Log)</string>
- <string name="error_http_unauthorized">Fehler: 401 Nicht Authorisiert</string>
+ <string name="error_http_unauthorized">Fehler: 401 Nicht autorisiert</string>
<string name="error_http_forbidden">Fehler: 403 Zugriff verweigert</string>
<string name="error_http_not_found">Fehler: 404 Nicht gefunden</string>
- <string name="error_http_server_error">Fehler: 500 Server Fehler</string>
+ <string name="error_http_server_error">Fehler: 500 Serverfehler</string>
<string name="error_http_other_error">Fehler: anderer HTTP Fehler (siehe Log)</string>
<string name="error_ssl_rejected">Fehler: SSL Zertifikat zurückgewiesen</string>
<string name="error_parse_error">Fehler: JSON parsen fehlgeschlagen</string>
- <string name="error_io_error">Fehler: I/O Fehler (Server nicht erreichbar?)</string>
+ <string name="error_io_error">Fehler: E/A Fehler (Server nicht erreichbar?)</string>
<string name="error_other_error">Fehler: Unbekannter Fehler (siehe Log)</string>
- <string name="error_api_disabled">Fehler: Bitte API-Zugang in tt-rss unter Einstellungen - Advanced aktivieren</string>
+ <string name="error_api_disabled">Fehler: Bitte API-Zugang in tt-rss unter Einstellungen - Erweitert aktivieren</string>
<string name="error_api_unknown">Fehler: unbekannter API Fehler (siehe Log)</string>
<string name="error_api_incorrect_usage">Fehler: Fehlerhafte Benutzung der API</string>
<string name="error_login_failed">Fehler: Benutzername und Passwort falsch</string>
@@ -94,7 +94,7 @@
<string name="offline_sync_success">Synchronisierung der Offlinedaten abgeschlossen</string>
<string name="offline_mode">Offlinemodus</string>
<string name="offline_image_cache_enabled">Bilder herunterladen</string>
- <string name="offline_image_cache_enabled_summary">Bilder auf die SD-Karte herunterladen. Dies kann die Zeit in den Offlinemodus zu wechseln deutlich verlängern.</string>
+ <string name="offline_image_cache_enabled_summary">Bilder auf die SD-Karte herunterladen. Dies kann den Wechsel in den Offlinemodus deutlich verlängern.</string>
<string name="notify_downloading_images">Lade Bilder herunter (%1$d)…</string>
<string name="article_set_labels">Setze Label</string>
<string name="search">Suchen</string>
@@ -115,7 +115,7 @@
<string name="attachment_copy">Kopiere URL</string>
<string name="justify_article_text">Artikeltext als Blocksatz</string>
<string name="dialog_offline_sync_in_progress">Offlinesynchronisation läuft</string>
- <string name="dialog_offline_sync_stop">Synchronisieren abbrechen</string>
+ <string name="dialog_offline_sync_stop">Synchronisation abbrechen</string>
<string name="dialog_offline_sync_continue">Weiter</string>
<string name="article_set_note">Mit Notiz veröffentlichen</string>
<string name="close_feed">Feed schließen</string>
@@ -136,15 +136,15 @@
<string name="donate_thanks">Spende erhalten. Danke für deine Unterstützung!</string>
<string name="use_volume_keys">Benutze Lautstärkeknöpfe</string>
<string name="use_volume_keys_long">Mit den Hardware-Lautstärketasten zwischen einzelnen Artikeln wechseln.</string>
- <string name="ssl_trust_any_host">Keine Hostnameüberprüfung</string>
+ <string name="ssl_trust_any_host">Keine Überprüfung des Hostnamens</string>
<string name="error_api_unknown_method">Fehler: Unbekannte API-Methode</string>
<string name="ssl_trust_any_long">Akzeptiert jedes SSL Zertifikat ohne Überprüfung!</string>
- <string name="ssl_trust_any_host_long">Serverhostname nicht überprüfen</string>
+ <string name="ssl_trust_any_host_long">Server-Hostname nicht überprüfen</string>
<string name="ssl">SSL</string>
- <string name="error_ssl_hostname_rejected">Fehler: SSL Hostname nicht korrekt</string>
+ <string name="error_ssl_hostname_rejected">Fehler: SSL-Hostname nicht korrekt</string>
<string name="offline_oldest_first">Älteste Artikel zuerst anzeigen</string>
- <string name="prefs_dim_status_bar">Statusleiste abblenden</string>
- <string name="prefs_dim_status_bar_long">Statusleiste beim Lesen abblenden</string>
+ <string name="prefs_dim_status_bar">Statusleiste abdunkeln</string>
+ <string name="prefs_dim_status_bar_long">Statusleiste beim Lesen dunkler machen</string>
<string name="article_comments">%1$d Kommentare</string>
<string name="trial_mode_prompt">Testversion, %1$d Tag(e) übrig.</string>
<string name="trial_purchase">Vollversion freischalten</string>
@@ -154,21 +154,21 @@
<string name="trial_thanks">Vollversion, Vielen Dank für die Unterstützung!</string>
<string name="prefs_fullscreen_mode">Vollbild</string>
<string name="reading">Lesen</string>
- <string name="theme_dark_gray">Dunkel Grau</string>
+ <string name="theme_dark_gray">Dunkelgrau</string>
<string name="offline_articles_to_download">Anzahl der Artikel</string>
<string name="offline_articles_to_download_long">Anzahl der Artikel die für den Offlinemodus heruntergeladen werden. (Neueste zuerst)</string>
<string name="pref_headlines_show_content_long">Zeige Artikelvorschau in der Listenansicht</string>
<string name="pref_headlines_show_content">Zeige Artikelvorschau</string>
<string name="api_too_low">Dafür benötigen Sie eine neuere Version von Tiny Tiny RSS</string>
<string name="share_url_prompt">URL:</string>
- <string name="share_url_hint">Artikel URL</string>
+ <string name="share_url_hint">Artikel-URL</string>
<string name="share_content_hint">Artikelinhalt</string>
<string name="share_title_prompt">Titel:</string>
<string name="share_title_hint">Artikelüberschrift</string>
<string name="share_share_button">Teilen</string>
<string name="share_article_posted">Artikel abgeschickt.</string>
<string name="subscribe_name">Mit Tiny Tiny RSS abonnieren</string>
- <string name="feed_url">Feed URL</string>
+ <string name="feed_url">Feed-URL</string>
<string name="subscribe_to_feed">Feed abonnieren</string>
<string name="error_while_subscribing">Fehler beim Abonnieren.</string>
<string name="category_list_updated">Kategorienliste aktualisiert</string>
@@ -185,4 +185,7 @@
<string name="headlines_starred">Markiert</string>
<string name="headlines_published">Veröffentlicht</string>
<string name="headlines_unread">Ungelesen</string>
+ <string name="article_img_open">Bild öffnen</string>
+ <string name="article_img_share">Bild teilen</string>
+ <string name="requires_api5">Benötigt Version 1.7.6</string>
</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 4be1d933..7810743f 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -55,6 +55,7 @@
<string name="download_feed_icons">Activer les icônes des flux</string>
<string name="enable_cats">Activer les catégories des flux</string>
<string name="no_feeds_to_display">Aucun flux à afficher</string>
+ <string name="no_caption_to_display">Aucun sous-titre trouvé</string>
<string name="no_headlines_to_display">Aucun titre à afficher</string>
<string name="browse_cats_like_feeds">Parcourir les catégories comme les flux</string>
<string name="browse_cats_like_feeds_summary">Utilisez le menu contexte des catégories pour redéfinir ce paramètre.</string>
@@ -97,7 +98,7 @@
<string name="offline_image_cache_enabled">Pré-chargement des images</string>
<string name="offline_image_cache_enabled_summary">Télécharger les images sur la carte SD. Cela pourrait augmenter de manière significative le temps de passage hors connexion.</string>
<string name="notify_downloading_images">Téléchargement des images (%1$d)…</string>
- <string name="article_set_labels">Préparer les étiquettes</string>
+ <string name="article_set_labels">Modifier les tags</string>
<string name="search">Rechercher</string>
<string name="cancel">Annuler</string>
<string name="font_size_small">Petit</string>
@@ -186,4 +187,10 @@
<string name="headlines_starred">Articles marqués</string>
<string name="headlines_published">Articles publiés</string>
<string name="headlines_unread">Articles non lus</string>
+ <string name="article_img_open">Ouvrir l\'image</string>
+ <string name="article_img_share">Partager l\'image</string>
+ <string name="requires_api5">Nécessite la version 1.7.6</string>
+ <string name="article_img_view_caption">Montrer le sous-titre</string>
+ <string name="labels">Tags</string>
+ <string name="light_theme_is_not_supported_on_honeycomb">Le thème clair n\'est pas supporté sur Honeycomb</string>
</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
new file mode 100644
index 00000000..a9e62787
--- /dev/null
+++ b/res/values-it/strings.xml
@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+ <string name="login_in_progress">Accesso…</string>
+ <string name="app_name">Tiny Tiny RSS</string>
+ <string name="login_need_configure">Si prega di configurare la app prima.</string>
+ <string name="login_ready">Pronto per l\'accesso.</string>
+ <string name="login_login">Accedi</string>
+ <string name="logout">Esci</string>
+ <string name="login">Accedi</string>
+ <string name="debugging">Debugging</string>
+ <string name="password">Password</string>
+ <string name="default_url">http://esempio.dominio/tt-rss/</string>
+ <string name="look_and_feel">Interfaccia</string>
+ <string name="pref_theme">Tema</string>
+ <string name="pref_theme_long">Cambia il colore della applicazione</string>
+ <string name="ttrss_url">Tiny Tiny RSS URL</string>
+ <string name="theme_dark">Scuro</string>
+ <string name="preferences">Impostazioni</string>
+ <string name="theme_light">Chiaro</string>
+ <string name="connection">Connessione</string>
+ <string name="headline_context_multiple">Articoli selezionati</string>
+ <string name="http_authentication">Autenticazione HTTP</string>
+ <string name="loading_message">Caricamento, attendere prego…</string>
+ <string name="menu_unread_feeds">Mostra feed non letti</string>
+ <string name="menu_all_feeds">Mostra tutti i feed</string>
+ <string name="update_feeds">Aggiorna</string>
+ <string name="share_article">Condividi articolo</string>
+ <string name="catchup">Segna come letto</string>
+ <string name="sort_feeds_by_unread">Ordina feed per numero articolo non letti</string>
+ <string name="ssl_trust_any">Accetta qualsiasi certificato</string>
+ <string name="category_browse_feeds">Naviga feed</string>
+ <string name="category_browse_articles">Naviga articoli</string>
+ <string name="blank"></string>
+ <string name="transport_debugging">Logga dati inviati e ricevuti</string>
+ <string name="article_toggle_marked">(non)Speciale</string>
+ <string name="article_toggle_published">(de)Pubblica</string>
+ <string name="headlines_select">Seleziona articoli</string>
+ <string name="headlines_select_dialog">Seleziona articoli</string>
+ <string name="headlines_select_all">Tutto</string>
+ <string name="headlines_select_unread">Non letto</string>
+ <string name="headlines_select_none">Deseleziona tutto</string>
+ <string name="selection_toggle_marked">(Non)speciale</string>
+ <string name="selection_toggle_published">(De)Pubblica</string>
+ <string name="selection_toggle_unread">(Non)Letto</string>
+ <string name="selection_select_none">Deseleziona tutti</string>
+ <string name="context_selection_toggle_marked">(Non)Speciale</string>
+ <string name="context_selection_toggle_published">(De)Pubblica</string>
+ <string name="context_selection_toggle_unread">(Non)Letto</string>
+ <string name="article_set_unread">Imposta come Non letto</string>
+ <string name="article_mark_read_above">Segna sopra come letto</string>
+ <string name="http_login_summary">Opzionale. Compila questo solo se la tua installazione di tt-rss è protetta con autenticazione HTTP Basic</string>
+ <string name="login_summary">il tuo accesso tt-rss. Non necessario per la modalità utente singolo</string>
+ <string name="ttrss_url_summary">URL della tua installazione tt-rss, es. http://sito.it/tt-rss/</string>
+ <string name="download_feed_icons">Abilita icone feed</string>
+ <string name="enable_cats">Abilita categorie feed</string>
+ <string name="no_feeds_to_display">Nessun feed da mostrare</string>
+ <string name="no_headlines_to_display">Nessun titolo da mostrare</string>
+ <string name="browse_cats_like_feeds">Naviga categorie come feed</string>
+ <string name="browse_cats_like_feeds_summary">Usa menu contestuale delle categorie per sovrascrivere questa impostazione</string>
+ <string name="headlines_mark_as_read">Segna come letto</string>
+ <string name="error_unknown">Error: errore sconosciuto (Vedi log)</string>
+ <string name="error_http_unauthorized">Errore: 401 unauthorized</string>
+ <string name="error_http_forbidden">Errore: 403 forbidden</string>
+ <string name="error_http_not_found">Errore: 404 not found</string>
+ <string name="error_http_server_error">Errore: 500 server error</string>
+ <string name="error_http_other_error">Errore: altro errore HTTP (Vedi log)</string>
+ <string name="error_ssl_rejected">Errore: certificato SSL rifiutato</string>
+ <string name="error_parse_error">Errore: parsing del JSON fallito</string>
+ <string name="error_io_error">Errore: I/O failure (server giù?)</string>
+ <string name="error_other_error">Errore: errore sconosciuto (Vedi log)</string>
+ <string name="error_api_disabled">Errore: si prega di abilitare l\'accesso esterno ai API access nelle impostazioni avanzate di tt-rss</string>
+ <string name="error_api_unknown">Errore: errore API sconosciuto (Vedi log)</string>
+ <string name="error_api_incorrect_usage">Errore: uso API scorretto</string>
+ <string name="error_login_failed">Errore: nome utente o password errati</string>
+ <string name="error_invalid_api_url">Errore: URL API errato</string>
+ <string name="combined_mode_summary">Mostra testo completo dell\'articolo inlinea, invece in un pannello separato</string>
+ <string name="combined_mode">Modalità combinata</string>
+ <string name="go_offline">Vai offline</string>
+ <string name="go_online">Vai inlinea</string>
+ <string name="offline_switch_error">Preparazione modalità offline fallita (Vedi log)</string>
+ <string name="no_feeds">Nessun feeds da mostrare</string>
+ <string name="no_headlines">Nessun articolo da mostrare</string>
+ <string name="dialog_offline_prompt">Accesso non riuscito, ma hai dei contenuti salvati offline. Vuoi andare in modalità offline?</string>
+ <string name="dialog_offline_success">Modalità offline pronta</string>
+ <string name="dialog_offline_go">Vai offline</string>
+ <string name="dialog_cancel">Annulla</string>
+ <string name="dialog_offline_switch_prompt">Scarica articoli non letti e cambiare nella modalità offline?</string>
+ <string name="notify_downloading_articles">Scaricamento articoli (%1$d)…</string>
+ <string name="notify_downloading_init">Scaricamento in corso…</string>
+ <string name="notify_downloading_feeds">Scaricamento feed…</string>
+ <string name="notify_uploading_sending_data">Invio dati al server…</string>
+ <string name="notify_downloading_title">Preparazione modalità offline</string>
+ <string name="notify_uploading_title">Sincronizzazione dati offline</string>
+ <string name="offline_sync_success">Terminata la sincronizzazione i dati offline</string>
+ <string name="offline_mode">Modalità offline</string>
+ <string name="offline_image_cache_enabled">Salva immagini in cache</string>
+ <string name="offline_image_cache_enabled_summary">Scarica immagini sulla sdcard. Questo potrebbe aumentare il tempo per andare nella modalità offline.</string>
+ <string name="notify_downloading_images">Scaricamento immagini (%1$d)…</string>
+ <string name="article_set_labels">Imposta etichetta</string>
+ <string name="search">Cerca</string>
+ <string name="cancel">Annulla</string>
+ <string name="font_size_small">Piccolo</string>
+ <string name="font_size_medium">Medio</string>
+ <string name="font_size_large">Grande</string>
+ <string name="pref_font_size">Dimensione testo articolo</string>
+ <string name="donate">Dona</string>
+ <string name="dialog_close">Chiudi</string>
+ <string name="donate_select">Si prega di selezionare la donazione</string>
+ <string name="donate_do">Dona!</string>
+ <string name="tablet_article_swipe">Scorri tra gli articoli</string>
+ <string name="article_link_copy">Copia il link negli appunti</string>
+ <string name="text_copied_to_clipboard">Testo copiati negli appunti</string>
+ <string name="attachments_prompt">Seleziona allegato</string>
+ <string name="attachment_view">Mostra</string>
+ <string name="attachment_copy">Copia URL</string>
+ <string name="justify_article_text">Giustifica testo articoli</string>
+ <string name="dialog_offline_sync_in_progress">Sincronizzazione offline in progresso</string>
+ <string name="dialog_offline_sync_stop">Ferma sync</string>
+ <string name="dialog_offline_sync_continue">Continua</string>
+ <string name="article_set_note">Pubblica con nota</string>
+ <string name="close_feed">Chiudi feed</string>
+ <string name="close_article">Chiudi articolo</string>
+ <string name="dialog_open_preferences">Impostazioni</string>
+ <string name="dialog_need_configure_prompt">Si prega di compilare le informazione del server tt-trss come URL, login, e password.</string>
+ <string name="notify_article_marked">Articolo reso speciale</string>
+ <string name="notify_article_unmarked">Articolo reso non-speciale</string>
+ <string name="notify_article_published">Articolo publicato</string>
+ <string name="notify_article_unpublished">Articolo non pubblicato</string>
+ <string name="notify_article_note_set">Nota articolo salvata</string>
+ <string name="update_headlines">Aggiorna</string>
+ <string name="attachment_share">Condividi</string>
+ <string name="error_network_unavailable">Errore: rete non disponibile</string>
+ <string name="category_browse_headlines">Naviga titoli</string>
+ <string name="pref_default_view_mode">Modalità visualizzazione default</string>
+ <string name="pref_default_view_mode_long">Quale modalità di visualizzazione da aprire come default sui smartphones</string>
+ <string name="donate_thanks">Donazione trovata, Grazie per il supporto!</string>
+ <string name="use_volume_keys">Usa pulsanti volume</string>
+ <string name="use_volume_keys_long">Cambia tra articoli usando i tasti volume</string>
+ <string name="ssl_trust_any_host">Nessuna validazione sul hostname</string>
+ <string name="error_api_unknown_method">Errore: metodo API sconosciuto</string>
+ <string name="ssl_trust_any_long">Accetta qualsiasi certificato SSL senza validazione</string>
+ <string name="ssl_trust_any_host_long">Non verificare il hostname del server</string>
+ <string name="ssl">SSL</string>
+ <string name="error_ssl_hostname_rejected">Errore: SSL del hostname non verificato</string>
+ <string name="offline_oldest_first">Mostra prima gli articoli più vecchi</string>
+ <string name="prefs_dim_status_bar">Oscurare barra di stato</string>
+ <string name="prefs_dim_status_bar_long">Oscurare la barra di stato durante la lettura</string>
+ <string name="article_comments">%1$d commenti</string>
+ <string name="trial_mode_prompt">Modalità demo, %1$d giorno/i rimanenti.</string>
+ <string name="trial_purchase">Sblocca versione Full</string>
+ <string name="trial_expired">Demo scaduta</string>
+ <string name="trial_expired_message">Per continuare ad usare Tiny Tiny RSS si prega di sbloccare la versione Full acquistando la app chiave.</string>
+ <string name="theme_sepia">Sepia</string>
+ <string name="trial_thanks">Versione Full, Grazie per il supporto!</string>
+ <string name="prefs_fullscreen_mode">Modalità Fullscreen</string>
+ <string name="reading">Lettura</string>
+ <string name="theme_dark_gray">Griggio scuro</string>
+ <string name="offline_articles_to_download">Numero di articoli da scaricare</string>
+ <string name="offline_articles_to_download_long">Numero di articoli da scaricare per la modalità offine (i più recenti per primo).</string>
+ <string name="pref_headlines_show_content_long">Mostra anteprime contenuti nella lista titoli</string>
+ <string name="pref_headlines_show_content">Anteprima contenuti articoli</string>
+ <string name="api_too_low">questa operazione chiede una versione più recente di Tiny Tiny RSS</string>
+ <string name="share_url_prompt">URL:</string>
+ <string name="share_url_hint">URL articolo</string>
+ <string name="share_content_hint">Contenuto articolo</string>
+ <string name="share_title_prompt">Titolo:</string>
+ <string name="share_title_hint">Titolo articolo</string>
+ <string name="share_share_button">Condividi</string>
+ <string name="share_article_posted">Articolo pubblicato.</string>
+ <string name="subscribe_name">Iscriviti con Tiny Tiny RSS</string>
+ <string name="feed_url">Feed URL</string>
+ <string name="subscribe_to_feed">Iscriviti al feed</string>
+ <string name="error_while_subscribing">Errore durante l\'iscrizione.</string>
+ <string name="category_list_updated">Lista categorie aggiornata</string>
+ <string name="subscribed_to_feed">Iscriviti al feed</string>
+ <string name="error_feed_already_exists_">Errore: feed già presente.</string>
+ <string name="error_invalid_url">Errore: URL invalido.</string>
+ <string name="error_url_is_an_html_page_no_feeds_found">Errore: l\'URL è una pagnia HTML, nessun feed trovato.</string>
+ <string name="error_url_contains_multiple_feeds">Errore: l\'URL contiene feed multipli</string>
+ <string name="error_could_not_download_url">Errore: impossibile scaricare l\'URL</string>
+ <string name="headlines_view_mode">Imposta modalità visualizzazione</string>
+ <string name="headlines_set_view_mode">Imposta modalità visualizzazione</string>
+ <string name="headlines_adaptive">Adattivo</string>
+ <string name="headlines_all_articles">Tuttli gli articoli</string>
+ <string name="headlines_starred">Speciali</string>
+ <string name="headlines_published">Pubblicati</string>
+ <string name="headlines_unread">Non letti</string>
+ <string name="article_img_open">Apri immagine</string>
+ <string name="article_img_share">Condividi immagine</string>
+ <string name="requires_api5">Richiede versione 1.7.6</string>
+ <string name="labels">Etichette</string>
+</resources>
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index d4217384..63e90184 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -5,7 +5,7 @@
<item>@string/theme_light</item>
<item>@string/theme_sepia</item>
</string-array>
- <string-array name="pref_theme_values">
+ <string-array name="pref_theme_values" translatable="false">
<item>THEME_DARK</item>
<item>THEME_DARK_GRAY</item>
<item>THEME_LIGHT</item>
@@ -16,7 +16,7 @@
<item>@string/font_size_medium</item>
<item>@string/font_size_large</item>
</string-array>
- <string-array name="pref_font_size_values">
+ <string-array name="pref_font_size_values" translatable="false">
<item>0</item>
<item>1</item>
<item>2</item>
@@ -25,13 +25,16 @@
<item>@string/category_browse_headlines</item>
<item>@string/category_browse_articles</item>
</string-array>
- <string-array name="pref_view_mode_values">
+ <string-array name="pref_view_mode_values" translatable="false">
<item>HEADLINES</item>
<item>ARTICLES</item>
</string-array>
- <string-array name="pref_offline_amounts">
+ <string-array name="pref_offline_amounts" translatable="false">
<item>150</item>
<item>250</item>
<item>500</item>
+ <item>1000</item>
+ <item>1500</item>
+ <item>2000</item>
</string-array>
</resources> \ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 5d9c7c58..6dd47839 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -47,7 +47,7 @@
<string name="context_selection_toggle_marked">(Un)Star</string>
<string name="context_selection_toggle_published">(Un)Publish</string>
<string name="context_selection_toggle_unread">(Un)Read</string>
- <string name="article_set_unread">Set unread</string>
+ <string name="article_set_unread">Article set unread</string>
<string name="article_mark_read_above">Mark above read</string>
<string name="http_login_summary">Optional. Fill this if your tt-rss installation is protected by HTTP Basic authentication</string>
<string name="login_summary">Your tt-rss login. Not needed for single user mode</string>
@@ -56,6 +56,7 @@
<string name="enable_cats">Enable feed categories</string>
<string name="no_feeds_to_display">No feeds to display</string>
<string name="no_headlines_to_display">No headlines to display</string>
+ <string name="no_caption_to_display">No caption to display</string>
<string name="browse_cats_like_feeds">Browse categories like feeds</string>
<string name="browse_cats_like_feeds_summary">Use category context menu to override this setting</string>
<string name="headlines_mark_as_read">Mark read</string>
@@ -186,6 +187,12 @@
<string name="headlines_starred">Starred</string>
<string name="headlines_published">Published</string>
<string name="headlines_unread">Unread</string>
+ <string name="article_img_open">Open image</string>
+ <string name="article_img_share">Share image</string>
+ <string name="requires_api5">Requires version 1.7.6</string>
+ <string name="labels">Labels</string>
+ <string name="article_img_view_caption">View Caption</string>
+ <string name="light_theme_is_not_supported_on_honeycomb">Light theme is not supported on Honeycomb</string>
<string name="pref_headlines_mark_read_scroll">Mark read on scroll</string>
<string name="pref_headlines_mark_read_scroll_long">Headlines will be marked read when scrolling past them</string>
</resources>
diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml
index 095f52cb..e05fc5b6 100644
--- a/res/xml/preferences.xml
+++ b/res/xml/preferences.xml
@@ -92,10 +92,16 @@
android:key="headlines_show_content"
android:summary="@string/pref_headlines_show_content_long"
android:title="@string/pref_headlines_show_content" />
+ <CheckBoxPreference
+ android:defaultValue="false"
+ android:key="oldest_first"
+ android:summary="@string/requires_api5"
+ android:title="@string/offline_oldest_first" />
<CheckBoxPreference android:key="headlines_mark_read_scroll"
android:title="@string/pref_headlines_mark_read_scroll"
android:summary="@string/pref_headlines_mark_read_scroll_long"
android:defaultValue="false"/>
+
</PreferenceCategory>
<PreferenceCategory android:title="@string/reading" >
<ListPreference
diff --git a/src/org/fox/ttrss/ArticleFragment.java b/src/org/fox/ttrss/ArticleFragment.java
index cb2c94f4..1fa76bcc 100644
--- a/src/org/fox/ttrss/ArticleFragment.java
+++ b/src/org/fox/ttrss/ArticleFragment.java
@@ -16,16 +16,19 @@ import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
+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.Log;
import android.util.TypedValue;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.GestureDetector;
import android.view.LayoutInflater;
+import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
@@ -34,7 +37,9 @@ import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebSettings.LayoutAlgorithm;
import android.webkit.WebView;
+import android.webkit.WebView.HitTestResult;
import android.widget.TextView;
+import android.widget.AdapterView.AdapterContextMenuInfo;
public class ArticleFragment extends Fragment implements GestureDetector.OnDoubleTapListener {
private final String TAG = this.getClass().getSimpleName();
@@ -59,9 +64,26 @@ public class ArticleFragment extends Fragment implements GestureDetector.OnDoubl
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
-
- getActivity().getMenuInflater().inflate(R.menu.article_link_context_menu, menu);
- menu.setHeaderTitle(m_article.title);
+
+ 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);
@@ -88,10 +110,12 @@ public class ArticleFragment extends Fragment implements GestureDetector.OnDoubl
String titleStr;
if (m_article.title.length() > 200)
- titleStr = m_article.title.substring(0, 200) + "�";
+ titleStr = m_article.title.substring(0, 200) + "...";
else
titleStr = m_article.title;
+
+ title.setTypeface(null, m_article.unread ? Typeface.BOLD : Typeface.NORMAL);
title.setText(Html.fromHtml(titleStr));
//title.setPaintFlags(title.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
title.setOnClickListener(new OnClickListener() {
@@ -143,6 +167,8 @@ public class ArticleFragment extends Fragment implements GestureDetector.OnDoubl
WebView web = (WebView)view.findViewById(R.id.content);
if (web != null) {
+ registerForContextMenu(web);
+
web.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int progress) {
@@ -319,7 +345,6 @@ public class ArticleFragment extends Fragment implements GestureDetector.OnDoubl
out.putParcelable("article", m_article);
}
-
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
@@ -350,8 +375,7 @@ public class ArticleFragment extends Fragment implements GestureDetector.OnDoubl
@Override
public void onLongPress(MotionEvent e) {
- // TODO Auto-generated method stub
-
+ m_activity.openContextMenu(getView());
}
@Override
diff --git a/src/org/fox/ttrss/ArticlePager.java b/src/org/fox/ttrss/ArticlePager.java
index fdf64191..258c41b8 100644
--- a/src/org/fox/ttrss/ArticlePager.java
+++ b/src/org/fox/ttrss/ArticlePager.java
@@ -24,6 +24,8 @@ import android.view.ViewGroup;
import android.view.WindowManager;
import com.google.gson.JsonElement;
+import com.viewpagerindicator.TitlePageIndicator;
+import com.viewpagerindicator.UnderlinePageIndicator;
public class ArticlePager extends Fragment {
@@ -93,7 +95,7 @@ public class ArticlePager extends Fragment {
m_adapter = new PagerAdapter(getActivity().getSupportFragmentManager());
ViewPager pager = (ViewPager) view.findViewById(R.id.article_pager);
-
+
int position = m_articles.indexOf(m_article);
m_listener.onArticleSelected(m_article, false);
@@ -101,8 +103,13 @@ public class ArticlePager extends Fragment {
m_activity.setProgressBarVisibility(true);
pager.setAdapter(m_adapter);
+
+ UnderlinePageIndicator indicator = (UnderlinePageIndicator)view.findViewById(R.id.article_titles);
+ indicator.setViewPager(pager);
+
pager.setCurrentItem(position);
- pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
+
+ indicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrollStateChanged(int arg0) {
@@ -194,7 +201,6 @@ public class ArticlePager extends Fragment {
final Feed feed = m_feed;
final String sessionId = m_activity.getSessionId();
- final boolean showUnread = m_activity.getUnreadArticlesOnly();
int skip = 0;
if (append) {
@@ -221,6 +227,7 @@ public class ArticlePager extends Fragment {
put("view_mode", m_activity.getViewMode());
put("skip", String.valueOf(fskip));
put("include_nested", "true");
+ put("order_by", m_prefs.getBoolean("oldest_first", false) ? "date_reverse" : "");
if (feed.is_cat) put("is_cat", "true");
@@ -316,4 +323,8 @@ public class ArticlePager extends Fragment {
}
}
}
+
+ public void notifyUpdated() {
+ m_adapter.notifyDataSetChanged();
+ }
}
diff --git a/src/org/fox/ttrss/CommonActivity.java b/src/org/fox/ttrss/CommonActivity.java
index 5c18f383..3db70fdf 100644
--- a/src/org/fox/ttrss/CommonActivity.java
+++ b/src/org/fox/ttrss/CommonActivity.java
@@ -3,8 +3,10 @@ package org.fox.ttrss;
import org.fox.ttrss.util.DatabaseHelper;
import android.annotation.SuppressLint;
+import android.content.SharedPreferences;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
+import android.preference.PreferenceManager;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.Display;
@@ -26,27 +28,23 @@ public class CommonActivity extends FragmentActivity {
private boolean m_smallScreenMode = true;
private boolean m_compatMode = false;
+ protected SharedPreferences m_prefs;
+
protected void setSmallScreen(boolean smallScreen) {
Log.d(TAG, "m_smallScreenMode=" + smallScreen);
m_smallScreenMode = smallScreen;
}
- public boolean getUnreadArticlesOnly() {
- return GlobalState.getInstance().m_unreadArticlesOnly;
- }
-
public boolean getUnreadOnly() {
- return GlobalState.getInstance().m_unreadOnly;
+ return m_prefs.getBoolean("show_unread_only", true);
}
public void setUnreadOnly(boolean unread) {
- GlobalState.getInstance().m_unreadOnly = unread;
+ SharedPreferences.Editor editor = m_prefs.edit();
+ editor.putBoolean("show_unread_only", unread);
+ editor.commit();
}
- public void setUnreadArticlesOnly(boolean unread) {
- GlobalState.getInstance().m_unreadArticlesOnly = unread;
- }
-
public void setLoadingStatus(int status, boolean showProgress) {
TextView tv = (TextView) findViewById(R.id.loading_message);
@@ -94,6 +92,9 @@ public class CommonActivity extends FragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
+ m_prefs = PreferenceManager
+ .getDefaultSharedPreferences(getApplicationContext());
+
initDatabase();
m_compatMode = android.os.Build.VERSION.SDK_INT <= 10;
@@ -136,4 +137,24 @@ public class CommonActivity extends FragmentActivity {
toast.show();
}
+ protected void setAppTheme(SharedPreferences prefs) {
+ String defaultTheme = "THEME_DARK";
+
+ if (prefs.getString("theme", defaultTheme).equals("THEME_DARK")) {
+ setTheme(R.style.DarkTheme);
+ } else if (prefs.getString("theme", defaultTheme).equals("THEME_SEPIA")) {
+ setTheme(R.style.SepiaTheme);
+ } else if (prefs.getString("theme", defaultTheme).equals("THEME_DARK_GRAY")) {
+ setTheme(R.style.DarkGrayTheme);
+ } else {
+ // LightTheme is not supported on honeycomb
+
+ if (android.os.Build.VERSION.SDK_INT >= 11 && android.os.Build.VERSION.SDK_INT < 14) {
+ toast(R.string.light_theme_is_not_supported_on_honeycomb);
+ setTheme(R.style.DarkTheme);
+ } else {
+ setTheme(R.style.LightTheme);
+ }
+ }
+ }
}
diff --git a/src/org/fox/ttrss/FeedsActivity.java b/src/org/fox/ttrss/FeedsActivity.java
index 6e725e99..8904d4cb 100644
--- a/src/org/fox/ttrss/FeedsActivity.java
+++ b/src/org/fox/ttrss/FeedsActivity.java
@@ -40,11 +40,7 @@ public class FeedsActivity extends OnlineActivity implements HeadlinesEventListe
m_prefs = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
- if (m_prefs.getString("theme", "THEME_DARK").equals("THEME_DARK")) {
- setTheme(R.style.DarkTheme);
- } else {
- setTheme(R.style.LightTheme);
- }
+ setAppTheme(m_prefs);
super.onCreate(savedInstanceState);
diff --git a/src/org/fox/ttrss/GlobalState.java b/src/org/fox/ttrss/GlobalState.java
index 5080e449..d997cdc5 100644
--- a/src/org/fox/ttrss/GlobalState.java
+++ b/src/org/fox/ttrss/GlobalState.java
@@ -17,8 +17,6 @@ public class GlobalState extends Application {
public Feed m_activeFeed;
public Article m_activeArticle;
public int m_selectedArticleId;
- public boolean m_unreadOnly = true;
- public boolean m_unreadArticlesOnly = true;
public String m_sessionId;
public int m_apiLevel;
public boolean m_canUseProgress;
diff --git a/src/org/fox/ttrss/HeadlinesActivity.java b/src/org/fox/ttrss/HeadlinesActivity.java
index 5c4e5e3e..bccc9e79 100644
--- a/src/org/fox/ttrss/HeadlinesActivity.java
+++ b/src/org/fox/ttrss/HeadlinesActivity.java
@@ -26,11 +26,7 @@ public class HeadlinesActivity extends OnlineActivity implements HeadlinesEventL
m_prefs = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
- if (m_prefs.getString("theme", "THEME_DARK").equals("THEME_DARK")) {
- setTheme(R.style.DarkTheme);
- } else {
- setTheme(R.style.LightTheme);
- }
+ setAppTheme(m_prefs);
super.onCreate(savedInstanceState);
diff --git a/src/org/fox/ttrss/HeadlinesFragment.java b/src/org/fox/ttrss/HeadlinesFragment.java
index cc5e3638..bc31f0d8 100644
--- a/src/org/fox/ttrss/HeadlinesFragment.java
+++ b/src/org/fox/ttrss/HeadlinesFragment.java
@@ -418,6 +418,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener,
put("offset", String.valueOf(0));
put("skip", String.valueOf(fskip));
put("include_nested", "true");
+ put("order_by", m_prefs.getBoolean("oldest_first", false) ? "date_reverse" : "");
if (isCat) put("is_cat", "true");
@@ -800,13 +801,12 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener,
if (m_prefs.getBoolean("headlines_mark_read_scroll", false) && firstVisibleItem > 0) {
Article a = m_articles.get(firstVisibleItem - 1);
- if (a != null) {
- if (a.unread) {
- a.unread = false;
- m_readArticles.add(a);
- m_feed.unread--;
- }
- }
+
+ if (a != null && a.unread) {
+ a.unread = false;
+ m_readArticles.add(a);
+ m_feed.unread--;
+ }
}
}
diff --git a/src/org/fox/ttrss/OnlineActivity.java b/src/org/fox/ttrss/OnlineActivity.java
index 7530ff1e..da1a6f17 100644
--- a/src/org/fox/ttrss/OnlineActivity.java
+++ b/src/org/fox/ttrss/OnlineActivity.java
@@ -39,15 +39,24 @@ import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
+import android.webkit.WebView;
+import android.webkit.WebView.HitTestResult;
import android.widget.EditText;
import android.widget.SearchView;
import android.widget.ShareActionProvider;
+import android.widget.TextView;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+import org.jsoup.select.Elements;
+
+
public class OnlineActivity extends CommonActivity {
private final String TAG = this.getClass().getSimpleName();
@@ -61,6 +70,8 @@ public class OnlineActivity extends CommonActivity {
private ActionMode m_headlinesActionMode;
private HeadlinesActionModeCallback m_headlinesActionModeCallback;
+ private String m_lastImageHitTestUrl;
+
private BroadcastReceiver m_broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context content, Intent intent) {
@@ -129,20 +140,13 @@ public class OnlineActivity extends CommonActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
+ ApiRequest.disableConnectionReuseIfNecessary();
+
+ // we use that before parent onCreate so let's init locally
m_prefs = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
- ApiRequest.disableConnectionReuseIfNecessary();
-
- if (m_prefs.getString("theme", "THEME_DARK").equals("THEME_DARK")) {
- setTheme(R.style.DarkTheme);
- } else if (m_prefs.getString("theme", "THEME_DARK").equals("THEME_SEPIA")) {
- setTheme(R.style.SepiaTheme);
- } else if (m_prefs.getString("theme", "THEME_DARK").equals("THEME_DARK_GRAY")) {
- setTheme(R.style.DarkGrayTheme);
- } else {
- setTheme(R.style.LightTheme);
- }
+ setAppTheme(m_prefs);
super.onCreate(savedInstanceState);
@@ -536,6 +540,66 @@ public class OnlineActivity extends CommonActivity {
final ArticlePager ap = (ArticlePager)getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
switch (item.getItemId()) {
+ case R.id.article_img_open:
+ if (getLastContentImageHitTestUrl() != null) {
+ try {
+ Intent intent = new Intent(Intent.ACTION_VIEW,
+ Uri.parse(getLastContentImageHitTestUrl()));
+ startActivity(intent);
+ } catch (Exception e) {
+ e.printStackTrace();
+ toast(R.string.error_other_error);
+ }
+ }
+ return true;
+ case R.id.article_img_share:
+ if (getLastContentImageHitTestUrl() != null) {
+ Intent intent = new Intent(Intent.ACTION_SEND);
+
+ intent.setType("image/png");
+ intent.putExtra(Intent.EXTRA_SUBJECT, getLastContentImageHitTestUrl());
+ intent.putExtra(Intent.EXTRA_TEXT, getLastContentImageHitTestUrl());
+
+ startActivity(Intent.createChooser(intent, getLastContentImageHitTestUrl()));
+ }
+ return true;
+ case R.id.article_img_view_caption:
+ if (getLastContentImageHitTestUrl() != null) {
+
+ // Android doesn't give us an easy way to access title tags;
+ // we'll use Jsoup on the body text to grab the title text
+ // from the first image tag with this url. This will show
+ // the wrong text if an image is used multiple times.
+ Document doc = Jsoup.parse(ap.getSelectedArticle().content);
+ Elements es = doc.getElementsByAttributeValue("src", getLastContentImageHitTestUrl());
+ if (es.size() > 0){
+ if (es.get(0).hasAttr("title")){
+ Dialog dia = new Dialog(this);
+ if (es.get(0).hasAttr("alt")){
+ dia.setTitle(es.get(0).attr("alt"));
+ } else {
+ dia.setTitle(es.get(0).attr("title"));
+ }
+ TextView titleText = new TextView(this);
+
+ if (android.os.Build.VERSION.SDK_INT >= 16) {
+ titleText.setPaddingRelative(24, 24, 24, 24);
+ } else {
+ titleText.setPadding(24, 24, 24, 24);
+ }
+
+ titleText.setTextSize(16);
+ titleText.setText(es.get(0).attr("title"));
+ dia.setContentView(titleText);
+ dia.show();
+ } else {
+ toast(R.string.no_caption_to_display);
+ }
+ } else {
+ toast(R.string.no_caption_to_display);
+ }
+ }
+ return true;
case R.id.article_link_share:
if (ap != null && ap.getSelectedArticle() != null) {
shareArticle(ap.getSelectedArticle());
@@ -584,6 +648,7 @@ public class OnlineActivity extends CommonActivity {
Dialog dialog = new Dialog(OnlineActivity.this);
AlertDialog.Builder builder = new AlertDialog.Builder(OnlineActivity.this)
.setTitle(R.string.attachments_prompt)
+ .setCancelable(true)
.setSingleChoiceItems(items, 0, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
@@ -807,11 +872,11 @@ public class OnlineActivity extends CommonActivity {
}
return true;
case R.id.share_article:
- if (android.os.Build.VERSION.SDK_INT < 14) {
+ //if (android.os.Build.VERSION.SDK_INT < 14) {
if (ap != null) {
shareArticle(ap.getSelectedArticle());
}
- }
+ //}
return true;
case R.id.toggle_marked:
if (ap != null & ap.getSelectedArticle() != null) {
@@ -841,6 +906,7 @@ public class OnlineActivity extends CommonActivity {
toggleArticlesUnread(selected);
hf.notifyUpdated();
+ initMenu();
}
}
return true;
@@ -854,6 +920,7 @@ public class OnlineActivity extends CommonActivity {
toggleArticlesMarked(selected);
hf.notifyUpdated();
+ initMenu();
}
}
return true;
@@ -867,6 +934,7 @@ public class OnlineActivity extends CommonActivity {
toggleArticlesPublished(selected);
hf.notifyUpdated();
+ initMenu();
}
}
return true;
@@ -894,6 +962,7 @@ public class OnlineActivity extends CommonActivity {
if (tmp.size() > 0) {
toggleArticlesUnread(tmp);
hf.notifyUpdated();
+ initMenu();
}
}
}
@@ -901,8 +970,12 @@ public class OnlineActivity extends CommonActivity {
case R.id.set_unread:
if (ap != null && ap.getSelectedArticle() != null) {
Article a = ap.getSelectedArticle();
- a.unread = true;
- saveArticleUnread(a);
+
+ if (a != null) {
+ a.unread = !a.unread;
+ saveArticleUnread(a);
+ }
+
if (hf != null) hf.notifyUpdated();
}
return true;
@@ -1126,7 +1199,12 @@ public class OnlineActivity extends CommonActivity {
@SuppressWarnings({ "unchecked", "serial" })
public void saveArticleUnread(final Article article) {
- ApiRequest req = new ApiRequest(getApplicationContext());
+ ApiRequest req = new ApiRequest(getApplicationContext()) {
+ protected void onPostExecute(JsonElement result) {
+ //toast(R.string.article_set_unread);
+ initMenu();
+ }
+ };
HashMap<String, String> map = new HashMap<String, String>() {
{
@@ -1145,7 +1223,8 @@ public class OnlineActivity extends CommonActivity {
public void saveArticleMarked(final Article article) {
ApiRequest req = new ApiRequest(getApplicationContext()) {
protected void onPostExecute(JsonElement result) {
- toast(article.marked ? R.string.notify_article_marked : R.string.notify_article_unmarked);
+ //toast(article.marked ? R.string.notify_article_marked : R.string.notify_article_unmarked);
+ initMenu();
}
};
@@ -1167,7 +1246,8 @@ public class OnlineActivity extends CommonActivity {
ApiRequest req = new ApiRequest(getApplicationContext()) {
protected void onPostExecute(JsonElement result) {
- toast(article.published ? R.string.notify_article_published : R.string.notify_article_unpublished);
+ //toast(article.published ? R.string.notify_article_published : R.string.notify_article_unpublished);
+ initMenu();
}
};
@@ -1382,7 +1462,24 @@ public class OnlineActivity extends CommonActivity {
MenuItem search = m_menu.findItem(R.id.search);
search.setEnabled(getApiLevel() >= 2);
- if (android.os.Build.VERSION.SDK_INT >= 14) {
+ ArticlePager ap = (ArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
+
+ if (ap != null) {
+ Article article = ap.getSelectedArticle();
+
+ if (article != null) {
+ m_menu.findItem(R.id.toggle_marked).setIcon(article.marked ? R.drawable.ic_important_light :
+ R.drawable.ic_unimportant_light);
+
+ m_menu.findItem(R.id.toggle_published).setIcon(article.published ? R.drawable.ic_menu_published_light :
+ R.drawable.ic_menu_unpublished_light);
+
+ m_menu.findItem(R.id.set_unread).setIcon(article.unread ? R.drawable.ic_unread_light :
+ R.drawable.ic_read_light);
+ }
+ }
+
+ /* if (android.os.Build.VERSION.SDK_INT >= 14) {
ShareActionProvider shareProvider = (ShareActionProvider) m_menu.findItem(R.id.share_article).getActionProvider();
ArticlePager af = (ArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
@@ -1394,7 +1491,7 @@ public class OnlineActivity extends CommonActivity {
m_menu.findItem(R.id.share_article).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
}
- }
+ } */
if (!isCompatMode()) {
HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES);
@@ -1570,4 +1667,13 @@ public class OnlineActivity extends CommonActivity {
public String getViewMode() {
return m_prefs.getString("view_mode", "adaptive");
}
+
+ public void setLastContentImageHitTestUrl(String url) {
+ m_lastImageHitTestUrl = url;
+ }
+
+ public String getLastContentImageHitTestUrl() {
+ return m_lastImageHitTestUrl;
+ }
+
}
diff --git a/src/org/fox/ttrss/offline/OfflineActivity.java b/src/org/fox/ttrss/offline/OfflineActivity.java
index 78102c1a..bca949de 100644
--- a/src/org/fox/ttrss/offline/OfflineActivity.java
+++ b/src/org/fox/ttrss/offline/OfflineActivity.java
@@ -27,7 +27,6 @@ import android.view.View;
import android.view.Window;
import android.widget.EditText;
import android.widget.SearchView;
-import android.widget.ShareActionProvider;
public class OfflineActivity extends CommonActivity {
private final String TAG = this.getClass().getSimpleName();
@@ -74,15 +73,7 @@ public class OfflineActivity extends CommonActivity {
m_prefs = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
- if (m_prefs.getString("theme", "THEME_DARK").equals("THEME_DARK")) {
- setTheme(R.style.DarkTheme);
- } else if (m_prefs.getString("theme", "THEME_DARK").equals("THEME_SEPIA")) {
- setTheme(R.style.SepiaTheme);
- } else if (m_prefs.getString("theme", "THEME_DARK").equals("THEME_DARK_GRAY")) {
- setTheme(R.style.DarkGrayTheme);
- } else {
- setTheme(R.style.LightTheme);
- }
+ setAppTheme(m_prefs);
super.onCreate(savedInstanceState);
@@ -277,7 +268,7 @@ public class OfflineActivity extends CommonActivity {
}
return true;
case R.id.share_article:
- if (android.os.Build.VERSION.SDK_INT < 14 && oap != null && android.os.Build.VERSION.SDK_INT < 14) {
+ if (true) {
int articleId = oap.getSelectedArticleId();
shareArticle(articleId);
@@ -416,20 +407,6 @@ public class OfflineActivity extends CommonActivity {
m_menu.setGroupVisible(R.id.menu_group_article, false);
m_menu.setGroupVisible(R.id.menu_group_feeds, false);
- if (android.os.Build.VERSION.SDK_INT >= 14) {
- ShareActionProvider shareProvider = (ShareActionProvider) m_menu.findItem(R.id.share_article).getActionProvider();
-
- OfflineArticlePager af = (OfflineArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
-
- if (af != null && af.getSelectedArticleId() > 0) {
- shareProvider.setShareIntent(getShareIntent(getArticleById(af.getSelectedArticleId())));
-
- if (!isSmallScreen()) {
- m_menu.findItem(R.id.share_article).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
- }
- }
- }
-
if (!isCompatMode()) {
MenuItem search = m_menu.findItem(R.id.search);
@@ -443,6 +420,31 @@ public class OfflineActivity extends CommonActivity {
}
}
+ OfflineArticlePager ap = (OfflineArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE);
+
+ if (ap != null) {
+ int articleId = ap.getSelectedArticleId();
+
+ Cursor article = getArticleById(articleId);
+
+ if (article != null) {
+ boolean unread = article.getInt(article.getColumnIndex("unread")) == 1;
+ boolean marked = article.getInt(article.getColumnIndex("marked")) == 1;
+ boolean published = article.getInt(article.getColumnIndex("published")) == 1;
+
+ m_menu.findItem(R.id.toggle_marked).setIcon(marked ? R.drawable.ic_important_light :
+ R.drawable.ic_unimportant_light);
+
+ m_menu.findItem(R.id.toggle_published).setIcon(published ? R.drawable.ic_menu_published_light :
+ R.drawable.ic_menu_unpublished_light);
+
+ m_menu.findItem(R.id.set_unread).setIcon(unread ? R.drawable.ic_unread_light :
+ R.drawable.ic_read_light);
+
+ article.close();
+ }
+ }
+
SearchView searchView = (SearchView) search.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
private String query = "";
@@ -626,8 +628,10 @@ public class OfflineActivity extends CommonActivity {
.findFragmentByTag(FRAG_HEADLINES);
if (ohf != null) {
- ohf.refresh();
- }
+ ohf.refresh();
+ }
+
+ initMenu();
}
}
diff --git a/src/org/fox/ttrss/offline/OfflineArticlePager.java b/src/org/fox/ttrss/offline/OfflineArticlePager.java
index f4c22138..48742c12 100644
--- a/src/org/fox/ttrss/offline/OfflineArticlePager.java
+++ b/src/org/fox/ttrss/offline/OfflineArticlePager.java
@@ -2,6 +2,8 @@ package org.fox.ttrss.offline;
import org.fox.ttrss.R;
+import com.viewpagerindicator.UnderlinePageIndicator;
+
import android.app.Activity;
import android.content.SharedPreferences;
import android.database.Cursor;
@@ -171,8 +173,12 @@ public class OfflineArticlePager extends Fragment {
ViewPager pager = (ViewPager) view.findViewById(R.id.article_pager);
pager.setAdapter(m_adapter);
+
+ UnderlinePageIndicator indicator = (UnderlinePageIndicator)view.findViewById(R.id.article_titles);
+ indicator.setViewPager(pager);
+
pager.setCurrentItem(position);
- pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
+ indicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrollStateChanged(int arg0) {
@@ -186,11 +192,9 @@ public class OfflineArticlePager extends Fragment {
public void onPageSelected(int position) {
if (m_cursor.moveToPosition(position)) {
int articleId = m_cursor.getInt(m_cursor.getColumnIndex(BaseColumns._ID));
-
- m_listener.onArticleSelected(articleId, false);
m_articleId = articleId;
-
+ m_listener.onArticleSelected(articleId, false);
}
}
});
diff --git a/src/org/fox/ttrss/offline/OfflineFeedsActivity.java b/src/org/fox/ttrss/offline/OfflineFeedsActivity.java
index 002d74e4..920d2865 100644
--- a/src/org/fox/ttrss/offline/OfflineFeedsActivity.java
+++ b/src/org/fox/ttrss/offline/OfflineFeedsActivity.java
@@ -30,11 +30,7 @@ public class OfflineFeedsActivity extends OfflineActivity implements OfflineHead
m_prefs = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
- if (m_prefs.getString("theme", "THEME_DARK").equals("THEME_DARK")) {
- setTheme(R.style.DarkTheme);
- } else {
- setTheme(R.style.LightTheme);
- }
+ setAppTheme(m_prefs);
super.onCreate(savedInstanceState);
@@ -276,6 +272,8 @@ public class OfflineFeedsActivity extends OfflineActivity implements OfflineHead
stmt.execute();
stmt.close();
+ initMenu();
+
if (open) {
if (isSmallScreen()) {
diff --git a/src/org/fox/ttrss/offline/OfflineHeadlinesActivity.java b/src/org/fox/ttrss/offline/OfflineHeadlinesActivity.java
index f4352158..6faa292b 100644
--- a/src/org/fox/ttrss/offline/OfflineHeadlinesActivity.java
+++ b/src/org/fox/ttrss/offline/OfflineHeadlinesActivity.java
@@ -27,11 +27,7 @@ public class OfflineHeadlinesActivity extends OfflineActivity implements Offline
m_prefs = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
- if (m_prefs.getString("theme", "THEME_DARK").equals("THEME_DARK")) {
- setTheme(R.style.DarkTheme);
- } else {
- setTheme(R.style.LightTheme);
- }
+ setAppTheme(m_prefs);
super.onCreate(savedInstanceState);