diff options
81 files changed, 1048 insertions, 278 deletions
@@ -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 Binary files differnew file mode 100644 index 00000000..53cf6877 --- /dev/null +++ b/res/drawable-hdpi/ic_accept_light.png diff --git a/res/drawable-hdpi/ic_cloud_light.png b/res/drawable-hdpi/ic_cloud_light.png Binary files differnew file mode 100644 index 00000000..a1d27cec --- /dev/null +++ b/res/drawable-hdpi/ic_cloud_light.png diff --git a/res/drawable-hdpi/ic_important_light.png b/res/drawable-hdpi/ic_important_light.png Binary files differnew file mode 100644 index 00000000..11f86414 --- /dev/null +++ b/res/drawable-hdpi/ic_important_light.png diff --git a/res/drawable-hdpi/ic_labels_light.png b/res/drawable-hdpi/ic_labels_light.png Binary files differnew file mode 100644 index 00000000..432e7c00 --- /dev/null +++ b/res/drawable-hdpi/ic_labels_light.png diff --git a/res/drawable-hdpi/ic_list_light.png b/res/drawable-hdpi/ic_list_light.png Binary files differnew file mode 100644 index 00000000..e45ea1fd --- /dev/null +++ b/res/drawable-hdpi/ic_list_light.png diff --git a/res/drawable-hdpi/ic_mailbox_collapsed_holo_light.png b/res/drawable-hdpi/ic_mailbox_collapsed_holo_light.png Binary files differdeleted file mode 100644 index 2c395b80..00000000 --- a/res/drawable-hdpi/ic_mailbox_collapsed_holo_light.png +++ /dev/null diff --git a/res/drawable-hdpi/ic_marked.png b/res/drawable-hdpi/ic_marked.png Binary files differdeleted file mode 100644 index 6dee7b7f..00000000 --- a/res/drawable-hdpi/ic_marked.png +++ /dev/null diff --git a/res/drawable-hdpi/ic_menu_attaches.png b/res/drawable-hdpi/ic_menu_attaches.png Binary files differdeleted file mode 100644 index eccb0cbc..00000000 --- a/res/drawable-hdpi/ic_menu_attaches.png +++ /dev/null diff --git a/res/drawable-hdpi/ic_menu_attaches_light.png b/res/drawable-hdpi/ic_menu_attaches_light.png Binary files differnew file mode 100644 index 00000000..8bf8cb78 --- /dev/null +++ b/res/drawable-hdpi/ic_menu_attaches_light.png diff --git a/res/drawable-hdpi/ic_menu_clock.png b/res/drawable-hdpi/ic_menu_clock.png Binary files differdeleted file mode 100644 index 824f688e..00000000 --- a/res/drawable-hdpi/ic_menu_clock.png +++ /dev/null diff --git a/res/drawable-hdpi/ic_menu_cloud.png b/res/drawable-hdpi/ic_menu_cloud.png Binary files differdeleted file mode 100644 index 9f866719..00000000 --- a/res/drawable-hdpi/ic_menu_cloud.png +++ /dev/null diff --git a/res/drawable-hdpi/ic_menu_database.png b/res/drawable-hdpi/ic_menu_database.png Binary files differdeleted file mode 100644 index 8f89ade5..00000000 --- a/res/drawable-hdpi/ic_menu_database.png +++ /dev/null diff --git a/res/drawable-hdpi/ic_menu_exit.png b/res/drawable-hdpi/ic_menu_exit.png Binary files differdeleted file mode 100644 index 8e5fab5f..00000000 --- a/res/drawable-hdpi/ic_menu_exit.png +++ /dev/null diff --git a/res/drawable-hdpi/ic_menu_marked.png b/res/drawable-hdpi/ic_menu_marked.png Binary files differdeleted file mode 100644 index 4f0c07c8..00000000 --- a/res/drawable-hdpi/ic_menu_marked.png +++ /dev/null diff --git a/res/drawable-hdpi/ic_menu_publish.png b/res/drawable-hdpi/ic_menu_publish.png Binary files differdeleted file mode 100644 index de42e535..00000000 --- a/res/drawable-hdpi/ic_menu_publish.png +++ /dev/null diff --git a/res/drawable-hdpi/ic_menu_published_light.png b/res/drawable-hdpi/ic_menu_published_light.png Binary files differnew file mode 100644 index 00000000..599ca764 --- /dev/null +++ b/res/drawable-hdpi/ic_menu_published_light.png diff --git a/res/drawable-hdpi/ic_menu_tick.png b/res/drawable-hdpi/ic_menu_tick.png Binary files differdeleted file mode 100644 index 9691a11d..00000000 --- a/res/drawable-hdpi/ic_menu_tick.png +++ /dev/null diff --git a/res/drawable-hdpi/ic_menu_unpublished_light.png b/res/drawable-hdpi/ic_menu_unpublished_light.png Binary files differnew file mode 100644 index 00000000..6d10cb92 --- /dev/null +++ b/res/drawable-hdpi/ic_menu_unpublished_light.png diff --git a/res/drawable-hdpi/ic_new_light.png b/res/drawable-hdpi/ic_new_light.png Binary files differnew file mode 100644 index 00000000..ad8ada6b --- /dev/null +++ b/res/drawable-hdpi/ic_new_light.png diff --git a/res/drawable-hdpi/ic_read_light.png b/res/drawable-hdpi/ic_read_light.png Binary files differnew file mode 100644 index 00000000..9ef52959 --- /dev/null +++ b/res/drawable-hdpi/ic_read_light.png diff --git a/res/drawable-hdpi/ic_refresh_light.png b/res/drawable-hdpi/ic_refresh_light.png Binary files differnew file mode 100644 index 00000000..bb9d855f --- /dev/null +++ b/res/drawable-hdpi/ic_refresh_light.png diff --git a/res/drawable-hdpi/ic_rotate_left_light.png b/res/drawable-hdpi/ic_rotate_left_light.png Binary files differnew file mode 100644 index 00000000..97ab27f0 --- /dev/null +++ b/res/drawable-hdpi/ic_rotate_left_light.png diff --git a/res/drawable-hdpi/ic_search_light.png b/res/drawable-hdpi/ic_search_light.png Binary files differnew file mode 100644 index 00000000..f12e005e --- /dev/null +++ b/res/drawable-hdpi/ic_search_light.png diff --git a/res/drawable-hdpi/ic_select_all_light.png b/res/drawable-hdpi/ic_select_all_light.png Binary files differnew file mode 100644 index 00000000..26a270b3 --- /dev/null +++ b/res/drawable-hdpi/ic_select_all_light.png diff --git a/res/drawable-hdpi/ic_share_light.png b/res/drawable-hdpi/ic_share_light.png Binary files differnew file mode 100644 index 00000000..c329f58d --- /dev/null +++ b/res/drawable-hdpi/ic_share_light.png diff --git a/res/drawable-hdpi/ic_undo_light.png b/res/drawable-hdpi/ic_undo_light.png Binary files differnew file mode 100644 index 00000000..9e719c9c --- /dev/null +++ b/res/drawable-hdpi/ic_undo_light.png diff --git a/res/drawable-hdpi/ic_unimportant_light.png b/res/drawable-hdpi/ic_unimportant_light.png Binary files differnew file mode 100644 index 00000000..7259b06b --- /dev/null +++ b/res/drawable-hdpi/ic_unimportant_light.png diff --git a/res/drawable-hdpi/ic_unread_light.png b/res/drawable-hdpi/ic_unread_light.png Binary files differnew file mode 100644 index 00000000..d516f770 --- /dev/null +++ b/res/drawable-hdpi/ic_unread_light.png diff --git a/res/drawable-xhdpi/ic_accept_light.png b/res/drawable-xhdpi/ic_accept_light.png Binary files differnew file mode 100644 index 00000000..b52dc370 --- /dev/null +++ b/res/drawable-xhdpi/ic_accept_light.png diff --git a/res/drawable-xhdpi/ic_cloud_light.png b/res/drawable-xhdpi/ic_cloud_light.png Binary files differnew file mode 100644 index 00000000..37d98e5d --- /dev/null +++ b/res/drawable-xhdpi/ic_cloud_light.png diff --git a/res/drawable-xhdpi/ic_important_light.png b/res/drawable-xhdpi/ic_important_light.png Binary files differnew file mode 100644 index 00000000..7576cc1e --- /dev/null +++ b/res/drawable-xhdpi/ic_important_light.png diff --git a/res/drawable-xhdpi/ic_labels_light.png b/res/drawable-xhdpi/ic_labels_light.png Binary files differnew file mode 100644 index 00000000..8fdcd1a2 --- /dev/null +++ b/res/drawable-xhdpi/ic_labels_light.png diff --git a/res/drawable-xhdpi/ic_list_light.png b/res/drawable-xhdpi/ic_list_light.png Binary files differnew file mode 100644 index 00000000..95708234 --- /dev/null +++ b/res/drawable-xhdpi/ic_list_light.png diff --git a/res/drawable-xhdpi/ic_menu_attaches_light.png b/res/drawable-xhdpi/ic_menu_attaches_light.png Binary files differnew file mode 100644 index 00000000..a3e253fa --- /dev/null +++ b/res/drawable-xhdpi/ic_menu_attaches_light.png diff --git a/res/drawable-xhdpi/ic_menu_published_light.png b/res/drawable-xhdpi/ic_menu_published_light.png Binary files differnew file mode 100644 index 00000000..938ec3e3 --- /dev/null +++ b/res/drawable-xhdpi/ic_menu_published_light.png diff --git a/res/drawable-xhdpi/ic_menu_unpublished_light.png b/res/drawable-xhdpi/ic_menu_unpublished_light.png Binary files differnew file mode 100644 index 00000000..7b32106b --- /dev/null +++ b/res/drawable-xhdpi/ic_menu_unpublished_light.png diff --git a/res/drawable-xhdpi/ic_new_light.png b/res/drawable-xhdpi/ic_new_light.png Binary files differnew file mode 100644 index 00000000..23b9a1c1 --- /dev/null +++ b/res/drawable-xhdpi/ic_new_light.png diff --git a/res/drawable-xhdpi/ic_read_light.png b/res/drawable-xhdpi/ic_read_light.png Binary files differnew file mode 100644 index 00000000..62e3d1ad --- /dev/null +++ b/res/drawable-xhdpi/ic_read_light.png diff --git a/res/drawable-xhdpi/ic_refresh_light.png b/res/drawable-xhdpi/ic_refresh_light.png Binary files differnew file mode 100644 index 00000000..a7fdc0df --- /dev/null +++ b/res/drawable-xhdpi/ic_refresh_light.png diff --git a/res/drawable-xhdpi/ic_rotate_left_light.png b/res/drawable-xhdpi/ic_rotate_left_light.png Binary files differnew file mode 100644 index 00000000..46d04a53 --- /dev/null +++ b/res/drawable-xhdpi/ic_rotate_left_light.png diff --git a/res/drawable-xhdpi/ic_search_light.png b/res/drawable-xhdpi/ic_search_light.png Binary files differnew file mode 100644 index 00000000..3549f84d --- /dev/null +++ b/res/drawable-xhdpi/ic_search_light.png diff --git a/res/drawable-xhdpi/ic_select_all_light.png b/res/drawable-xhdpi/ic_select_all_light.png Binary files differnew file mode 100644 index 00000000..52d1155d --- /dev/null +++ b/res/drawable-xhdpi/ic_select_all_light.png diff --git a/res/drawable-xhdpi/ic_share_light.png b/res/drawable-xhdpi/ic_share_light.png Binary files differnew file mode 100644 index 00000000..15549b04 --- /dev/null +++ b/res/drawable-xhdpi/ic_share_light.png diff --git a/res/drawable-xhdpi/ic_undo_light.png b/res/drawable-xhdpi/ic_undo_light.png Binary files differnew file mode 100644 index 00000000..99967f2f --- /dev/null +++ b/res/drawable-xhdpi/ic_undo_light.png diff --git a/res/drawable-xhdpi/ic_unimportant_light.png b/res/drawable-xhdpi/ic_unimportant_light.png Binary files differnew file mode 100644 index 00000000..3c618a12 --- /dev/null +++ b/res/drawable-xhdpi/ic_unimportant_light.png diff --git a/res/drawable-xhdpi/ic_unread_light.png b/res/drawable-xhdpi/ic_unread_light.png Binary files differnew file mode 100644 index 00000000..606c902c --- /dev/null +++ b/res/drawable-xhdpi/ic_unread_light.png 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);
|