Compare commits

..

34 Commits

Author SHA1 Message Date
3a189ee4b6 Fixed changelog version. 2017-12-10 20:01:24 +01:00
e25dc49271 Changelog. 2017-12-10 20:00:09 +01:00
4208a80db8 Fixes #151. 2017-12-10 19:42:20 +01:00
ddb75e0d93 Fixed a NPE. 2017-12-10 19:16:27 +01:00
8b37e992a2 Removed log. 2017-12-10 18:51:21 +01:00
bac59036cd Removed text as it wasn't displaying well. 2017-12-10 17:48:05 +01:00
6c89a3b77c Closes #149. 2017-12-10 17:45:34 +01:00
dc2ef39fc6 Versions update. 2017-12-10 17:42:43 +01:00
a4806da2c5 Update CHANGELOG.md 2017-12-09 09:55:10 +01:00
ee30edb214 Changelog. 2017-12-09 09:54:26 +01:00
e4ed663fb3 New Crowdin translations (#148)
* New translations strings.xml (Afrikaans)

* New translations strings.xml (Korean)

* New translations strings.xml (English, Indonesia)

* New translations strings.xml (Vietnamese)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Turkish)

* New translations strings.xml (Swedish)

* New translations strings.xml (Spanish)

* New translations strings.xml (Serbian (Cyrillic))

* New translations strings.xml (Russian)

* New translations strings.xml (Romanian)

* New translations strings.xml (Portuguese, Brazilian)

* New translations strings.xml (Portuguese)

* New translations strings.xml (Polish)

* New translations strings.xml (Norwegian)

* New translations strings.xml (Japanese)

* New translations strings.xml (Arabic)

* New translations strings.xml (Italian)

* New translations strings.xml (Hungarian)

* New translations strings.xml (Hebrew)

* New translations strings.xml (Greek)

* New translations strings.xml (German)

* New translations strings.xml (French)

* New translations strings.xml (Finnish)

* New translations strings.xml (Dutch)

* New translations strings.xml (Danish)

* New translations strings.xml (Czech)

* New translations strings.xml (Chinese Traditional)

* New translations strings.xml (Chinese Simplified)

* New translations strings.xml (Catalan)

* New translations strings.xml (Indonesian)

* New translations strings.xml (French)

* New translations strings.xml (Portuguese)
2017-12-09 09:53:20 +01:00
01629309b0 Fixed #147. Waiting for translations. 2017-12-08 09:35:14 +01:00
059c2991fb This should fix #144. 2017-12-07 06:20:15 +01:00
686ec5dd90 Changelog 2017-12-06 20:25:35 +01:00
eab9df8ed9 Fixes #144. Added some logs as I'm not sure if it's a good solution. 2017-12-06 20:24:21 +01:00
0107c3d7e2 New Crowdin translations (#145)
* New translations strings.xml (Afrikaans)

* New translations strings.xml (Korean)

* New translations strings.xml (English, Indonesia)

* New translations strings.xml (Vietnamese)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Turkish)

* New translations strings.xml (Swedish)

* New translations strings.xml (Spanish)

* New translations strings.xml (Serbian (Cyrillic))

* New translations strings.xml (Russian)

* New translations strings.xml (Romanian)

* New translations strings.xml (Portuguese, Brazilian)

* New translations strings.xml (Portuguese)

* New translations strings.xml (Polish)

* New translations strings.xml (Norwegian)

* New translations strings.xml (Japanese)

* New translations strings.xml (Arabic)

* New translations strings.xml (Italian)

* New translations strings.xml (Hungarian)

* New translations strings.xml (Hebrew)

* New translations strings.xml (Greek)

* New translations strings.xml (German)

* New translations strings.xml (French)

* New translations strings.xml (Finnish)

* New translations strings.xml (Dutch)

* New translations strings.xml (Danish)

* New translations strings.xml (Czech)

* New translations strings.xml (Chinese Traditional)

* New translations strings.xml (Chinese Simplified)

* New translations strings.xml (Catalan)

* New translations strings.xml (Indonesian)
2017-12-06 13:35:15 +01:00
2def2f2e2c This should fix it. 2017-12-05 22:57:03 +01:00
44c79892a0 Still trying to fix the auto version code messe. 2017-12-05 22:35:14 +01:00
bc96b314c2 Moved to version 1.5.6.X due to an automatic versioncode problem. 2017-12-05 22:13:12 +01:00
8dcf749b4e Changelog; 2017-12-05 22:00:19 +01:00
6a56ec6442 Swapped the title and subtitle in the article viewer. 2017-12-05 21:59:22 +01:00
30e46d7eae Remaining translations. 2017-12-05 21:52:01 +01:00
9458b1834b Added setting to enable/disable the mark on swipe. 2017-12-05 21:40:54 +01:00
297f797b97 Reading items on page adapter swipe. 2017-12-05 21:32:20 +01:00
c70e80758c Fixed an issue with the version code generation. 2017-12-05 20:34:00 +01:00
3bf1d7c4f9 Added toolbar to reader activity. 2017-12-05 20:33:32 +01:00
173247041a Added an animation to the viewpager. 2017-12-05 20:09:14 +01:00
3a28772096 Reader actovoty thele set right. Fixes #142. 2017-12-05 20:00:39 +01:00
bd08b8aba3 Build changes. 2017-12-04 20:07:30 +01:00
2ceb0f988b New Crowdin translations (#141)
* New translations strings.xml (Dutch)

* New translations strings.xml (Dutch)

* New translations strings.xml (Dutch)

* New translations strings.xml (Dutch)

* New translations strings.xml (Dutch)

* New translations strings.xml (Dutch)

* New translations strings.xml (Dutch)

* New translations strings.xml (Dutch)

* New translations strings.xml (Dutch)
2017-12-04 19:17:46 +01:00
4ef3b155b8 New translations strings.xml (Indonesian) (#139) 2017-12-04 13:27:48 +01:00
350e24cded Changelog. 2017-12-03 22:19:48 +01:00
1bf8a578bc Simple view pager. Closes #50. 2017-12-03 22:09:58 +01:00
4818a101cc Trying to solve #120. 2017-12-03 18:00:52 +01:00
47 changed files with 1155 additions and 644 deletions

View File

@ -1,3 +1,29 @@
**1.5.7.x**
- Added an option to use a webview in the article viewer (see #149)
- Fixes (#151)
**1.5.5.x (didn't last long) AND 1.5.6.x**
- Toolbar in reader activity.
- Marking items as read on scroll (with settings to enable/disable).
- Swapped the title and subtitle in the article viewer.
- Added an animation to the viewpager.
- Completed Dutch, Indonesian and Portuguese translations !
- Fixed #142, #144, #147.
- Changed versions handling.
**1.5.4.22**
- You can now scroll through the loaded articles !
**1.5.4.21** **1.5.4.21**
- Spanish translation and some Indonesian ! - Spanish translation and some Indonesian !

View File

@ -8,19 +8,27 @@ buildscript {
} }
} }
ext {
configuration = [
buildDate: new Date()
]
}
def gitVersion() { def gitVersion() {
def process = "git describe --abbrev=0 --tags".execute() def process = "git describe --abbrev=0 --tags".execute()
return process.text.substring(1).replaceAll("\\.", "") return process.text.substring(1).replaceAll("\\.", "").trim()
} }
def versionCodeFromGit() { def versionCodeFromGit() {
println "version code " + gitVersion().toInteger() def versionCode = gitVersion() + (ext.configuration.buildDate.format("yyMMD")).toInteger()
return gitVersion().toInteger() println "version code " + versionCode
return versionCode.toInteger()
} }
def versionNameFromGit() { def versionNameFromGit() {
println "version code " + gitVersion().trim() def versionName = gitVersion() + ext.configuration.buildDate.format('yyyyMMddHHmm')
return gitVersion().trim() println "version name " + versionName
return versionName
} }
apply plugin: 'org.sonarqube' apply plugin: 'org.sonarqube'
@ -41,7 +49,7 @@ repositories {
android { android {
compileSdkVersion 27 compileSdkVersion 27
buildToolsVersion '27.0.0' buildToolsVersion '27.0.2'
defaultConfig { defaultConfig {
applicationId "apps.amine.bou.readerforselfoss" applicationId "apps.amine.bou.readerforselfoss"
minSdkVersion 16 minSdkVersion 16
@ -109,20 +117,20 @@ dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
// Android Support // Android Support
compile 'com.android.support:appcompat-v7:27.0.0' compile 'com.android.support:appcompat-v7:27.0.2'
compile 'com.android.support:design:27.0.0' compile 'com.android.support:design:27.0.2'
compile 'com.android.support:recyclerview-v7:27.0.0' compile 'com.android.support:recyclerview-v7:27.0.2'
compile 'com.android.support:support-v4:27.0.0' compile 'com.android.support:support-v4:27.0.2'
compile 'com.android.support:support-vector-drawable:27.0.0' compile 'com.android.support:support-vector-drawable:27.0.2'
compile 'com.android.support:customtabs:27.0.0' compile 'com.android.support:customtabs:27.0.2'
compile 'com.android.support:cardview-v7:27.0.0' compile 'com.android.support:cardview-v7:27.0.2'
compile 'com.android.support.constraint:constraint-layout:1.0.2' compile 'com.android.support.constraint:constraint-layout:1.0.2'
// Firebase + crashlytics // Firebase + crashlytics
compile 'com.google.firebase:firebase-core:11.4.2' compile 'com.google.firebase:firebase-core:11.6.2'
compile 'com.google.firebase:firebase-config:11.4.2' compile 'com.google.firebase:firebase-config:11.6.2'
compile 'com.google.firebase:firebase-invites:11.4.2' compile 'com.google.firebase:firebase-invites:11.6.2'
compile('com.crashlytics.sdk.android:crashlytics:2.7.1@aar') { compile('com.crashlytics.sdk.android:crashlytics:2.8.0@aar') {
transitive = true; transitive = true;
} }
@ -156,9 +164,6 @@ dependencies {
// Asking politely users to rate the app // Asking politely users to rate the app
compile 'com.github.stkent:amplify:2.1.0' compile 'com.github.stkent:amplify:2.1.0'
// For the article reader
compile 'com.klinkerapps:drag-dismiss-activity:1.5.0'
// Drawer // Drawer
implementation 'co.zsmb:materialdrawer-kt:1.2.1' implementation 'co.zsmb:materialdrawer-kt:1.2.1'
compile 'com.anupcowkur:reservoir:3.1.0' compile 'com.anupcowkur:reservoir:3.1.0'
@ -170,6 +175,10 @@ dependencies {
compile 'com.heinrichreimersoftware:android-issue-reporter:1.3.1' compile 'com.heinrichreimersoftware:android-issue-reporter:1.3.1'
compile 'com.github.rubensousa:floatingtoolbar:1.5.1' compile 'com.github.rubensousa:floatingtoolbar:1.5.1'
// Pager
compile 'me.relex:circleindicator:1.2.2@aar'
} }
apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.gms.google-services'

View File

@ -69,4 +69,6 @@
-dontwarn com.anupcowkur.reservoir.** -dontwarn com.anupcowkur.reservoir.**
-dontwarn javax.annotation.** -dontwarn javax.annotation.**
-keep class android.support.v7.widget.SearchView { *; }

View File

@ -71,6 +71,12 @@
<meta-data <meta-data
android:name="apps.amine.bou.readerforselfoss.utils.glide.SelfSignedGlideModule" android:name="apps.amine.bou.readerforselfoss.utils.glide.SelfSignedGlideModule"
android:value="GlideModule" /> android:value="GlideModule" />
<meta-data android:name="android.webkit.WebView.MetricsOptOut"
android:value="true" />
<meta-data android:name="android.webkit.WebView.EnableSafeBrowsing"
android:value="true" />
</application> </application>
</manifest> </manifest>

View File

@ -629,9 +629,10 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
} }
recyclerView.layoutManager = mLayoutManager recyclerView.layoutManager = mLayoutManager
recyclerView.setHasFixedSize(true)
if (infiniteScroll) { if (!infiniteScroll) {
recyclerView.setHasFixedSize(true)
} else {
handleInfiniteScroll() handleInfiniteScroll()
} }

View File

@ -1,209 +1,172 @@
package apps.amine.bou.readerforselfoss package apps.amine.bou.readerforselfoss
import android.content.SharedPreferences import android.content.Context
import android.os.Bundle import android.os.Bundle
import android.preference.PreferenceManager import android.preference.PreferenceManager
import android.support.customtabs.CustomTabsIntent import android.support.v4.app.FragmentManager
import android.support.design.widget.FloatingActionButton import android.support.v4.app.FragmentStatePagerAdapter
import android.support.v4.widget.NestedScrollView import android.support.v4.view.ViewPager
import android.support.v7.app.AppCompatActivity import android.support.v7.app.AppCompatActivity
import android.text.Html
import android.text.method.LinkMovementMethod
import android.view.MenuItem import android.view.MenuItem
import android.view.View import apps.amine.bou.readerforselfoss.api.selfoss.Item
import apps.amine.bou.readerforselfoss.api.mercury.MercuryApi import apps.amine.bou.readerforselfoss.api.selfoss.SelfossApi
import apps.amine.bou.readerforselfoss.api.mercury.ParsedContent import apps.amine.bou.readerforselfoss.api.selfoss.SuccessResponse
import apps.amine.bou.readerforselfoss.utils.buildCustomTabsIntent import apps.amine.bou.readerforselfoss.fragments.ArticleFragment
import apps.amine.bou.readerforselfoss.utils.customtabs.CustomTabActivityHelper import apps.amine.bou.readerforselfoss.transformers.DepthPageTransformer
import apps.amine.bou.readerforselfoss.utils.isEmptyOrNullOrNullString import apps.amine.bou.readerforselfoss.utils.Config
import apps.amine.bou.readerforselfoss.utils.openItemUrl import apps.amine.bou.readerforselfoss.utils.succeeded
import apps.amine.bou.readerforselfoss.utils.shareLink
import com.bumptech.glide.Glide
import com.bumptech.glide.request.RequestOptions
import com.crashlytics.android.Crashlytics import com.crashlytics.android.Crashlytics
import com.ftinc.scoop.Scoop import com.ftinc.scoop.Scoop
import com.github.rubensousa.floatingtoolbar.FloatingToolbar
import kotlinx.android.synthetic.main.activity_reader.* import kotlinx.android.synthetic.main.activity_reader.*
import org.sufficientlysecure.htmltextview.HtmlHttpImageGetter import me.relex.circleindicator.CircleIndicator
import retrofit2.Call import retrofit2.Call
import retrofit2.Callback import retrofit2.Callback
import retrofit2.Response import retrofit2.Response
class ReaderActivity : AppCompatActivity() { class ReaderActivity : AppCompatActivity() {
private lateinit var mCustomTabActivityHelper: CustomTabActivityHelper
//private lateinit var content: HtmlTextView
private lateinit var url: String
private lateinit var contentText: String
private lateinit var contentSource: String
private lateinit var contentImage: String
private lateinit var contentTitle: String
private lateinit var fab: FloatingActionButton
override fun onStop() { private var markOnScroll: Boolean = false
super.onStop()
mCustomTabActivityHelper.unbindCustomTabsService(this) private var useWebview: Boolean = false
}
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
Scoop.getInstance().apply(this) Scoop.getInstance().apply(this)
setContentView(R.layout.activity_reader) setContentView(R.layout.activity_reader)
url = intent.getStringExtra("url") setSupportActionBar(toolBar)
contentText = intent.getStringExtra("content") supportActionBar?.setDisplayHomeAsUpEnabled(true)
contentTitle = intent.getStringExtra("title") supportActionBar?.setDisplayShowHomeEnabled(true)
contentImage = intent.getStringExtra("image")
contentSource = intent.getStringExtra("source")
fab = findViewById(R.id.fab) val settings = getSharedPreferences(Config.settingsName, Context.MODE_PRIVATE)
val mFloatingToolbar: FloatingToolbar = findViewById(R.id.floatingToolbar) val sharedPref = PreferenceManager.getDefaultSharedPreferences(this)
mFloatingToolbar.attachFab(fab)
val customTabsIntent = this@ReaderActivity.buildCustomTabsIntent() val debugReadingItems = sharedPref.getBoolean("read_debug", false)
mCustomTabActivityHelper = CustomTabActivityHelper() val userIdentifier = sharedPref.getString("unique_id", "")
mCustomTabActivityHelper.bindCustomTabsService(this) markOnScroll = sharedPref.getBoolean("mark_on_scroll", false)
useWebview = sharedPref.getBoolean("prefer_webview_in_article_viewer", false)
val prefs = PreferenceManager.getDefaultSharedPreferences(this)
mFloatingToolbar.setClickListener(object : FloatingToolbar.ItemClickListener {
override fun onItemClick(item: MenuItem) {
when (item.itemId) {
R.id.more_action -> getContentFromMercury(customTabsIntent, prefs)
R.id.share_action -> this@ReaderActivity.shareLink(url)
R.id.open_action -> this@ReaderActivity.openItemUrl(
url,
contentText,
contentImage,
contentTitle,
contentSource,
customTabsIntent,
false,
false,
this@ReaderActivity
)
else -> Unit
}
}
override fun onItemLongClick(item: MenuItem?) {
}
})
if (contentText.isEmptyOrNullOrNullString()) { if (allItems.isEmpty()) {
getContentFromMercury(customTabsIntent, prefs) Crashlytics.setUserIdentifier(userIdentifier)
} else { Crashlytics.log(
source.text = contentSource 100,
titleView.text = contentTitle "READER_ITEMS_EMPTY",
tryToHandleHtml(contentText, customTabsIntent, prefs) "Items empty when trying to open the Article Reader. Was (static) companion object field set ?"
)
Crashlytics.logException(Exception("Empty items on Reader Activity."))
if (!contentImage.isEmptyOrNullOrNullString()) { finish()
imageView.visibility = View.VISIBLE
Glide
.with(baseContext)
.asBitmap()
.load(contentImage)
.apply(RequestOptions.fitCenterTransform())
.into(imageView)
} else {
imageView.visibility = View.GONE
}
} }
nestedScrollView.setOnScrollChangeListener( val api = SelfossApi(
NestedScrollView.OnScrollChangeListener { _, _, scrollY, _, oldScrollY -> this,
if (scrollY > oldScrollY) { this@ReaderActivity,
fab.hide() settings.getBoolean("isSelfSignedCert", false),
} else { sharedPref.getBoolean("should_log_everything", false)
if (mFloatingToolbar.isShowing) mFloatingToolbar.hide() else fab.show()
}
}
) )
content.movementMethod = LinkMovementMethod.getInstance() val currentItem = intent.getIntExtra("currentItem", 0)
}
private fun getContentFromMercury( var adapter = ScreenSlidePagerAdapter(supportFragmentManager)
customTabsIntent: CustomTabsIntent, pager.adapter = adapter
prefs: SharedPreferences pager.currentItem = currentItem
) {
progressBar.visibility = View.VISIBLE
val parser = MercuryApi(
BuildConfig.MERCURY_KEY,
prefs.getBoolean("should_log_everything", false)
)
parser.parseUrl(url).enqueue(object : Callback<ParsedContent> { pager.setPageTransformer(true, DepthPageTransformer())
override fun onResponse( (indicator as CircleIndicator).setViewPager(pager)
call: Call<ParsedContent>,
response: Response<ParsedContent>
) {
if (response.body() != null && response.body()!!.content != null && response.body()!!.content.isNotEmpty()) {
source.text = response.body()!!.domain
titleView.text = response.body()!!.title
this@ReaderActivity.url = response.body()!!.url
if (response.body()!!.content != null && !response.body()!!.content.isEmpty()) { if (markOnScroll) {
tryToHandleHtml(response.body()!!.content, customTabsIntent, prefs) pager.addOnPageChangeListener(
object : ViewPager.SimpleOnPageChangeListener() {
var isLastItem = false
override fun onPageSelected(position: Int) {
isLastItem = (position === (allItems.size - 1))
}
override fun onPageScrollStateChanged(state: Int) {
if (state === ViewPager.SCROLL_STATE_DRAGGING || (state === ViewPager.SCROLL_STATE_IDLE && isLastItem)) {
api.markItem(allItems[pager.currentItem].id).enqueue(
object : Callback<SuccessResponse> {
override fun onResponse(
call: Call<SuccessResponse>,
response: Response<SuccessResponse>
) {
if (!response.succeeded() && debugReadingItems) {
val message =
"message: ${response.message()} " +
"response isSuccess: ${response.isSuccessful} " +
"response code: ${response.code()} " +
"response message: ${response.message()} " +
"response errorBody: ${response.errorBody()?.string()} " +
"body success: ${response.body()?.success} " +
"body isSuccess: ${response.body()?.isSuccess}"
Crashlytics.setUserIdentifier(userIdentifier)
Crashlytics.log(
100,
"READ_DEBUG_SUCCESS",
message
)
Crashlytics.logException(Exception("Was success, but did it work ?"))
}
}
override fun onFailure(
call: Call<SuccessResponse>,
t: Throwable
) {
if (debugReadingItems) {
Crashlytics.setUserIdentifier(userIdentifier)
Crashlytics.log(
100,
"READ_DEBUG_ERROR",
t.message
)
Crashlytics.logException(t)
}
}
}
)
}
}
} }
)
if (response.body()!!.lead_image_url != null && !response.body()!!.lead_image_url.isEmpty()) {
imageView.visibility = View.VISIBLE
Glide
.with(baseContext)
.asBitmap()
.load(response.body()!!.lead_image_url)
.apply(RequestOptions.fitCenterTransform())
.into(imageView)
} else {
imageView.visibility = View.GONE
}
nestedScrollView.scrollTo(0, 0)
progressBar.visibility = View.GONE
} else {
openInBrowserAfterFailing(customTabsIntent)
}
}
override fun onFailure(
call: Call<ParsedContent>,
t: Throwable
) = openInBrowserAfterFailing(customTabsIntent)
})
}
private fun tryToHandleHtml(
c: String,
customTabsIntent: CustomTabsIntent,
prefs: SharedPreferences
) {
try {
content.text = Html.fromHtml(c, HtmlHttpImageGetter(content, null, true), null)
//content.setHtml(response.body()!!.content, HtmlHttpImageGetter(content, null, true))
} catch (e: Exception) {
Crashlytics.setUserIdentifier(prefs.getString("unique_id", ""))
Crashlytics.log(100, "CANT_TRANSFORM_TO_HTML", e.message)
Crashlytics.logException(e)
openInBrowserAfterFailing(customTabsIntent)
} }
} }
private fun openInBrowserAfterFailing(customTabsIntent: CustomTabsIntent) { override fun onPause() {
progressBar.visibility = View.GONE super.onPause()
this@ReaderActivity.openItemUrl( if (markOnScroll) {
url, pager.clearOnPageChangeListeners()
contentText, }
contentImage, }
contentTitle,
contentSource, override fun onSaveInstanceState(oldInstanceState: Bundle?) {
customTabsIntent, super.onSaveInstanceState(oldInstanceState)
true, oldInstanceState!!.clear()
false, }
this@ReaderActivity
) private inner class ScreenSlidePagerAdapter(fm: FragmentManager) : FragmentStatePagerAdapter(fm) {
finish() override fun getCount(): Int {
return allItems.size
}
override fun getItem(position: Int): ArticleFragment {
return ArticleFragment.newInstance(position, allItems, useWebview)
}
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
android.R.id.home -> {
onBackPressed()
return true
}
}
return super.onOptionsItemSelected(item)
}
companion object {
var allItems: ArrayList<Item> = ArrayList()
} }
} }

View File

@ -8,6 +8,7 @@ import android.support.v7.widget.CardView
import android.support.v7.widget.RecyclerView import android.support.v7.widget.RecyclerView
import android.text.Html import android.text.Html
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.ImageView.ScaleType import android.widget.ImageView.ScaleType
import android.widget.TextView import android.widget.TextView
@ -52,6 +53,7 @@ class ItemCardAdapter(
) : RecyclerView.Adapter<ItemCardAdapter.ViewHolder>() { ) : RecyclerView.Adapter<ItemCardAdapter.ViewHolder>() {
private val c: Context = app.baseContext private val c: Context = app.baseContext
private val generator: ColorGenerator = ColorGenerator.MATERIAL private val generator: ColorGenerator = ColorGenerator.MATERIAL
private val imageMaxHeight: Int = c.resources.getDimension(R.dimen.card_image_max_height).toInt()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val v = LayoutInflater.from(c).inflate(R.layout.card_item, parent, false) as CardView val v = LayoutInflater.from(c).inflate(R.layout.card_item, parent, false) as CardView
@ -67,10 +69,17 @@ class ItemCardAdapter(
holder.mView.sourceTitleAndDate.text = itm.sourceAndDateText() holder.mView.sourceTitleAndDate.text = itm.sourceAndDateText()
if (!fullHeightCards) {
holder.mView.itemImage.maxHeight = imageMaxHeight
holder.mView.itemImage.scaleType = ScaleType.CENTER_CROP
}
if (itm.getThumbnail(c).isEmpty()) { if (itm.getThumbnail(c).isEmpty()) {
holder.mView.itemImage.visibility = View.GONE
Glide.with(c).clear(holder.mView.itemImage) Glide.with(c).clear(holder.mView.itemImage)
holder.mView.itemImage.setImageDrawable(null) holder.mView.itemImage.setImageDrawable(null)
} else { } else {
holder.mView.itemImage.visibility = View.VISIBLE
c.bitmapCenterCrop(itm.getThumbnail(c), holder.mView.itemImage) c.bitmapCenterCrop(itm.getThumbnail(c), holder.mView.itemImage)
} }
@ -183,11 +192,6 @@ class ItemCardAdapter(
private fun handleClickListeners() { private fun handleClickListeners() {
if (!fullHeightCards) {
mView.itemImage.maxHeight = c.resources.getDimension(R.dimen.card_image_max_height).toInt()
mView.itemImage.scaleType = ScaleType.CENTER_CROP
}
mView.favButton.setOnLikeListener(object : OnLikeListener { mView.favButton.setOnLikeListener(object : OnLikeListener {
override fun liked(likeButton: LikeButton) { override fun liked(likeButton: LikeButton) {
val (id) = items[adapterPosition] val (id) = items[adapterPosition]
@ -251,11 +255,9 @@ class ItemCardAdapter(
mView.setOnClickListener { mView.setOnClickListener {
c.openItemUrl( c.openItemUrl(
items,
adapterPosition,
items[adapterPosition].getLinkDecoded(), items[adapterPosition].getLinkDecoded(),
items[adapterPosition].content,
items[adapterPosition].getThumbnail(c),
items[adapterPosition].title,
items[adapterPosition].sourceAndDateText(),
customTabsIntent, customTabsIntent,
internalBrowser, internalBrowser,
articleViewer, articleViewer,

View File

@ -273,11 +273,9 @@ class ItemListAdapter(
if (!clickBehavior) { if (!clickBehavior) {
mView.setOnClickListener { mView.setOnClickListener {
c.openItemUrl( c.openItemUrl(
items,
adapterPosition,
items[adapterPosition].getLinkDecoded(), items[adapterPosition].getLinkDecoded(),
items[adapterPosition].content,
items[adapterPosition].getThumbnail(c),
items[adapterPosition].title,
items[adapterPosition].sourceAndDateText(),
customTabsIntent, customTabsIntent,
internalBrowser, internalBrowser,
articleViewer, articleViewer,
@ -292,11 +290,9 @@ class ItemListAdapter(
mView.setOnClickListener { actionBarShowHide() } mView.setOnClickListener { actionBarShowHide() }
mView.setOnLongClickListener { mView.setOnLongClickListener {
c.openItemUrl( c.openItemUrl(
items,
adapterPosition,
items[adapterPosition].getLinkDecoded(), items[adapterPosition].getLinkDecoded(),
items[adapterPosition].content,
items[adapterPosition].getThumbnail(c),
items[adapterPosition].title,
items[adapterPosition].sourceAndDateText(),
customTabsIntent, customTabsIntent,
internalBrowser, internalBrowser,
articleViewer, articleViewer,

View File

@ -0,0 +1,307 @@
package apps.amine.bou.readerforselfoss.fragments
import android.content.SharedPreferences
import android.os.Build
import android.os.Bundle
import android.preference.PreferenceManager
import android.support.customtabs.CustomTabsIntent
import android.support.design.widget.FloatingActionButton
import android.support.v4.app.Fragment
import android.support.v4.widget.NestedScrollView
import android.text.Html
import android.text.method.LinkMovementMethod
import android.util.TypedValue
import android.view.LayoutInflater
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import android.webkit.WebSettings
import apps.amine.bou.readerforselfoss.BuildConfig
import apps.amine.bou.readerforselfoss.R
import apps.amine.bou.readerforselfoss.api.mercury.MercuryApi
import apps.amine.bou.readerforselfoss.api.mercury.ParsedContent
import apps.amine.bou.readerforselfoss.api.selfoss.Item
import apps.amine.bou.readerforselfoss.utils.buildCustomTabsIntent
import apps.amine.bou.readerforselfoss.utils.customtabs.CustomTabActivityHelper
import apps.amine.bou.readerforselfoss.utils.isEmptyOrNullOrNullString
import apps.amine.bou.readerforselfoss.utils.openItemUrl
import apps.amine.bou.readerforselfoss.utils.shareLink
import apps.amine.bou.readerforselfoss.utils.sourceAndDateText
import com.bumptech.glide.Glide
import com.bumptech.glide.request.RequestOptions
import com.crashlytics.android.Crashlytics
import com.github.rubensousa.floatingtoolbar.FloatingToolbar
import kotlinx.android.synthetic.main.fragment_article.view.*
import org.sufficientlysecure.htmltextview.HtmlHttpImageGetter
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
class ArticleFragment : Fragment() {
private lateinit var pageNumber: Number
private lateinit var allItems: ArrayList<Item>
private lateinit var mCustomTabActivityHelper: CustomTabActivityHelper
private lateinit var url: String
private lateinit var contentText: String
private lateinit var contentSource: String
private lateinit var contentImage: String
private lateinit var contentTitle: String
private lateinit var fab: FloatingActionButton
private var useWebview: Boolean = false
override fun onStop() {
super.onStop()
mCustomTabActivityHelper.unbindCustomTabsService(activity)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
pageNumber = arguments!!.getInt(ARG_POSITION)
allItems = arguments!!.getParcelableArrayList(ARG_ITEMS)
useWebview = arguments!!.getBoolean(ARG_WEBVIEW)
}
private lateinit var rootView: ViewGroup
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
rootView = inflater
.inflate(R.layout.fragment_article, container, false) as ViewGroup
url = allItems[pageNumber.toInt()].getLinkDecoded()
contentText = allItems[pageNumber.toInt()].content
contentTitle = allItems[pageNumber.toInt()].title
contentImage = allItems[pageNumber.toInt()].getThumbnail(activity!!)
contentSource = allItems[pageNumber.toInt()].sourceAndDateText()
fab = rootView.fab
val mFloatingToolbar: FloatingToolbar = rootView.floatingToolbar
mFloatingToolbar.attachFab(fab)
val customTabsIntent = activity!!.buildCustomTabsIntent()
mCustomTabActivityHelper = CustomTabActivityHelper()
mCustomTabActivityHelper.bindCustomTabsService(activity)
val prefs = PreferenceManager.getDefaultSharedPreferences(activity)
mFloatingToolbar.setClickListener(
object : FloatingToolbar.ItemClickListener {
override fun onItemClick(item: MenuItem) {
when (item.itemId) {
R.id.more_action -> getContentFromMercury(customTabsIntent, prefs)
R.id.share_action -> activity!!.shareLink(url)
R.id.open_action -> activity!!.openItemUrl(
allItems,
pageNumber.toInt(),
url,
customTabsIntent,
false,
false,
activity!!
)
else -> Unit
}
}
override fun onItemLongClick(item: MenuItem?) {
}
}
)
if (contentText.isEmptyOrNullOrNullString()) {
getContentFromMercury(customTabsIntent, prefs)
} else {
rootView.source.text = contentSource
rootView.titleView.text = contentTitle
if (!useWebview) {
htmlToTextview(contentText, customTabsIntent, prefs)
} else {
htmlToWebview(contentText)
}
if (!contentImage.isEmptyOrNullOrNullString()) {
rootView.imageView.visibility = View.VISIBLE
Glide
.with(activity!!.baseContext)
.asBitmap()
.load(contentImage)
.apply(RequestOptions.fitCenterTransform())
.into(rootView.imageView)
} else {
rootView.imageView.visibility = View.GONE
}
}
rootView.nestedScrollView.setOnScrollChangeListener(
NestedScrollView.OnScrollChangeListener { _, _, scrollY, _, oldScrollY ->
if (scrollY > oldScrollY) {
fab.hide()
} else {
if (mFloatingToolbar.isShowing) mFloatingToolbar.hide() else fab.show()
}
}
)
if (!useWebview) {
rootView.content.movementMethod = LinkMovementMethod.getInstance()
}
return rootView
}
private fun getContentFromMercury(
customTabsIntent: CustomTabsIntent,
prefs: SharedPreferences
) {
rootView.progressBar.visibility = View.VISIBLE
val parser = MercuryApi(
BuildConfig.MERCURY_KEY,
prefs.getBoolean("should_log_everything", false)
)
parser.parseUrl(url).enqueue(
object : Callback<ParsedContent> {
override fun onResponse(
call: Call<ParsedContent>,
response: Response<ParsedContent>
) {
if (response.body() != null && response.body()!!.content != null && response.body()!!.content.isNotEmpty()) {
rootView.source.text = response.body()!!.domain
rootView.titleView.text = response.body()!!.title
url = response.body()!!.url
if (response.body()!!.content != null && !response.body()!!.content.isEmpty()) {
if (!useWebview) {
htmlToTextview(
response.body()!!.content,
customTabsIntent,
prefs
)
} else {
htmlToWebview(response.body()!!.content)
}
}
if (response.body()!!.lead_image_url != null && !response.body()!!.lead_image_url.isEmpty()) {
rootView.imageView.visibility = View.VISIBLE
Glide
.with(activity!!.baseContext)
.asBitmap()
.load(response.body()!!.lead_image_url)
.apply(RequestOptions.fitCenterTransform())
.into(rootView.imageView)
} else {
rootView.imageView.visibility = View.GONE
}
rootView.nestedScrollView.scrollTo(0, 0)
rootView.progressBar.visibility = View.GONE
} else {
openInBrowserAfterFailing(customTabsIntent)
}
}
override fun onFailure(
call: Call<ParsedContent>,
t: Throwable
) = openInBrowserAfterFailing(customTabsIntent)
}
)
}
private fun htmlToTextview(
c: String,
customTabsIntent: CustomTabsIntent,
prefs: SharedPreferences
) {
try {
rootView.content.visibility = View.VISIBLE
rootView.content.text = Html.fromHtml(
c,
HtmlHttpImageGetter(rootView.content, null, true),
null
)
} catch (e: Exception) {
Crashlytics.setUserIdentifier(prefs.getString("unique_id", ""))
Crashlytics.log(100, "CANT_TRANSFORM_TO_HTML", e.message)
Crashlytics.logException(e)
openInBrowserAfterFailing(customTabsIntent)
}
}
private fun htmlToWebview(c: String) {
val attrBackground = TypedValue()
activity!!.baseContext.theme.resolveAttribute(
android.R.attr.colorBackground,
attrBackground,
true
)
val defaultColor = TypedValue()
activity!!.baseContext.theme.resolveAttribute(
android.R.attr.colorAccent,
defaultColor,
true
)
val accentColor = fab.backgroundTintList?.defaultColor ?: defaultColor.data
val stringColor = String.format("#%06X", 0xFFFFFF and accentColor)
rootView.webcontent.visibility = View.VISIBLE
rootView.webcontent.setBackgroundColor(attrBackground.data)
rootView.webcontent.settings.useWideViewPort = true
rootView.webcontent.settings.loadWithOverviewMode = true
rootView.webcontent.settings.javaScriptEnabled = false
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
rootView.webcontent.settings.layoutAlgorithm = WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING
} else {
rootView.webcontent.settings.layoutAlgorithm = WebSettings.LayoutAlgorithm.SINGLE_COLUMN
}
rootView.webcontent.loadData(
"<style>img{display: inline-block;height: auto; width: 100%; max-width: 100%;} a{color: $stringColor}</style>$c",
"text/html; charset=utf-8",
"utf-8"
)
}
private fun openInBrowserAfterFailing(customTabsIntent: CustomTabsIntent) {
rootView.progressBar.visibility = View.GONE
activity!!.openItemUrl(
allItems,
pageNumber.toInt(),
url,
customTabsIntent,
true,
false,
activity!!
)
}
companion object {
private val ARG_POSITION = "position"
private val ARG_ITEMS = "items"
private val ARG_WEBVIEW = "userWebview"
fun newInstance(
position: Int,
allItems: ArrayList<Item>,
webview: Boolean
): ArticleFragment {
val fragment = ArticleFragment()
val args = Bundle()
args.putInt(ARG_POSITION, position)
args.putBoolean(ARG_WEBVIEW, webview)
args.putParcelableArrayList(ARG_ITEMS, allItems)
fragment.arguments = args
return fragment
}
}
}

View File

@ -0,0 +1,43 @@
package apps.amine.bou.readerforselfoss.transformers
import android.support.v4.view.ViewPager
import android.view.View
class DepthPageTransformer : ViewPager.PageTransformer {
override fun transformPage(view: View, position: Float) {
val pageWidth = view.width
when {
position < -1 -> // [-Infinity,-1)
// This page is way off-screen to the left.
view.alpha = 0F
position <= 0 -> { // [-1,0]
// Use the default slide transition when moving to the left page
view.alpha = 1F
view.translationX = 0F
view.scaleX = 1F
view.scaleY = 1F
}
position <= 1 -> { // (0,1]
// Fade the page out.
view.alpha = 1 - position
// Counteract the default slide transition
view.translationX = pageWidth * -position
// Scale the page down (between MIN_SCALE and 1)
val scaleFactor = MIN_SCALE + (1 - MIN_SCALE) * (1 - Math.abs(position))
view.scaleX = scaleFactor
view.scaleY = scaleFactor
}
else -> // (1,+Infinity]
// This page is way off-screen to the right.
view.alpha = 0F
}
}
companion object {
private val MIN_SCALE = 0.75f
}
}

View File

@ -59,30 +59,17 @@ fun Context.buildCustomTabsIntent(): CustomTabsIntent {
} }
fun Context.openItemUrlInternally( fun Context.openItemUrlInternally(
allItems: ArrayList<Item>,
currentItem: Int,
linkDecoded: String, linkDecoded: String,
content: String,
image: String,
title: String,
source: String,
customTabsIntent: CustomTabsIntent, customTabsIntent: CustomTabsIntent,
articleViewer: Boolean, articleViewer: Boolean,
app: Activity app: Activity
) { ) {
if (articleViewer) { if (articleViewer) {
ReaderActivity.allItems = allItems
val intent = Intent(this, ReaderActivity::class.java) val intent = Intent(this, ReaderActivity::class.java)
intent.putExtra("currentItem", currentItem)
/*DragDismissIntentBuilder(this)
.setFullscreenOnTablets(true) // defaults to false, tablets will have padding on each side
.setDragElasticity(DragDismissIntentBuilder.DragElasticity.NORMAL) // Larger elasticities will make it easier to dismiss.
.setDrawUnderStatusBar(true)
.build(intent)*/
intent.putExtra("url", linkDecoded)
intent.putExtra("content", content)
intent.putExtra("title", title)
intent.putExtra("image", image)
intent.putExtra("source", source)
app.startActivity(intent) app.startActivity(intent)
} else { } else {
try { try {
@ -102,11 +89,9 @@ fun Context.openItemUrlInternally(
} }
fun Context.openItemUrl( fun Context.openItemUrl(
allItems: ArrayList<Item>,
currentItem: Int,
linkDecoded: String, linkDecoded: String,
content: String,
image: String,
title: String,
source: String,
customTabsIntent: CustomTabsIntent, customTabsIntent: CustomTabsIntent,
internalBrowser: Boolean, internalBrowser: Boolean,
articleViewer: Boolean, articleViewer: Boolean,
@ -124,11 +109,9 @@ fun Context.openItemUrl(
openInBrowser(linkDecoded, app) openInBrowser(linkDecoded, app)
} else { } else {
this.openItemUrlInternally( this.openItemUrlInternally(
allItems,
currentItem,
linkDecoded, linkDecoded,
content,
image,
title,
source,
customTabsIntent, customTabsIntent,
articleViewer, articleViewer,
app app

View File

@ -1,148 +1,44 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<android.support.v4.widget.NestedScrollView <android.support.design.widget.AppBarLayout
android:id="@+id/nestedScrollView" android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView"
android:layout_width="0dp"
android:layout_height="200dp"
android:scaleType="centerCrop"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
<TextView
android:id="@+id/source"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textSize="12sp"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView" />
<TextView
android:id="@+id/titleView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="6dp"
android:textAppearance="@style/TextAppearance.AppCompat.Headline"
android:textStyle="bold"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/source" />
<TextView
android:id="@+id/content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="24dp"
android:paddingBottom="48dp"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/titleView"
android:textColorLink="?attr/colorAccent"/>
<!--<org.sufficientlysecure.htmltextview.HtmlTextView
android:id="@+id/content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="24dp"
android:paddingBottom="48dp"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/titleView" />-->
</android.support.constraint.ConstraintLayout>
</android.support.v4.widget.NestedScrollView>
<FrameLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintStart_toStartOf="parent"
android:layout_gravity="end|bottom|right"> app:layout_constraintTop_toTopOf="parent">
<com.github.rubensousa.floatingtoolbar.FloatingToolbar <android.support.v7.widget.Toolbar
android:id="@+id/floatingToolbar" android:id="@+id/toolBar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize" android:layout_height="?attr/actionBarSize"
android:layout_gravity="bottom" app:popupTheme="?attr/toolbarPopupTheme"
app:floatingItemBackground="?attr/colorAccent" app:theme="@style/ToolBarStyle" />
app:floatingMenu="@menu/reader_toolbar" />
<android.support.design.widget.FloatingActionButton </android.support.design.widget.AppBarLayout>
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_gravity="end|bottom|right"
android:layout_marginBottom="16dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:src="@drawable/ic_add"
app:backgroundTint="?attr/colorAccent"
app:fabSize="mini"
app:rippleColor="?attr/colorAccentDark" />
</FrameLayout>
<FrameLayout <android.support.v4.view.ViewPager
android:id="@+id/progressBar" android:id="@+id/pager"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="0dp"
android:visibility="gone" app:layout_constraintBottom_toBottomOf="parent"
android:animateLayoutChanges="true" app:layout_constraintEnd_toEndOf="parent"
android:alpha="0.8" app:layout_constraintStart_toStartOf="parent"
android:background="@color/black" app:layout_constraintTop_toBottomOf="@+id/appBarLayout" />
android:clickable="false">
<ProgressBar
style="?android:attr/progressBarStyleLarge"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:progressTint="?attr/colorAccent" />
</FrameLayout>
</android.support.design.widget.CoordinatorLayout>
<me.relex.circleindicator.CircleIndicator
android:id="@+id/indicator"
android:layout_width="match_parent"
android:layout_height="20dp"
android:background="#55000000"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
</android.support.constraint.ConstraintLayout>

View File

@ -0,0 +1,144 @@
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:descendantFocusability="blocksDescendants">
<android.support.v4.widget.NestedScrollView
android:id="@+id/nestedScrollView"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView"
android:layout_width="0dp"
android:layout_height="200dp"
android:scaleType="centerCrop"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
<TextView
android:id="@+id/source"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="8dp"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textSize="12sp"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/titleView" />
<TextView
android:id="@+id/titleView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="8dp"
android:textAppearance="@style/TextAppearance.AppCompat.Headline"
android:textStyle="bold"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView" />
<WebView
android:id="@+id/webcontent"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textColorLink="?attr/colorAccent"
android:visibility="gone"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="24dp"
android:paddingBottom="48dp"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/source"
tools:visibility="visible" />
<TextView
android:id="@+id/content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="24dp"
android:paddingBottom="48dp"
android:textColorLink="?attr/colorAccent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/source"
android:visibility="gone"/>
</android.support.constraint.ConstraintLayout>
</android.support.v4.widget.NestedScrollView>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_gravity="end|bottom|right">
<com.github.rubensousa.floatingtoolbar.FloatingToolbar
android:id="@+id/floatingToolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:layout_gravity="bottom"
app:floatingItemBackground="?attr/colorAccent"
app:floatingMenu="@menu/reader_toolbar" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_gravity="end|bottom|right"
android:layout_marginBottom="16dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:src="@drawable/ic_add"
app:backgroundTint="?attr/colorAccent"
app:fabSize="mini"
app:rippleColor="?attr/colorAccentDark" />
</FrameLayout>
<FrameLayout
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"
android:animateLayoutChanges="true"
android:alpha="0.8"
android:background="@color/black"
android:clickable="false">
<ProgressBar
style="?android:attr/progressBarStyleLarge"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:progressTint="?attr/colorAccent" />
</FrameLayout>
</android.support.design.widget.CoordinatorLayout>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">Read more</string> <string name="reader_action_more">Read more</string>
<string name="reader_action_open">Open in browser</string> <string name="reader_action_open">Open in browser</string>
<string name="reader_action_share">Share</string> <string name="reader_action_share">Share</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">Read more</string> <string name="reader_action_more">Read more</string>
<string name="reader_action_open">Open in browser</string> <string name="reader_action_open">Open in browser</string>
<string name="reader_action_share">Share</string> <string name="reader_action_share">Share</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">Read more</string> <string name="reader_action_more">Read more</string>
<string name="reader_action_open">Open in browser</string> <string name="reader_action_open">Open in browser</string>
<string name="reader_action_share">Share</string> <string name="reader_action_share">Share</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">Read more</string> <string name="reader_action_more">Read more</string>
<string name="reader_action_open">Open in browser</string> <string name="reader_action_open">Open in browser</string>
<string name="reader_action_share">Share</string> <string name="reader_action_share">Share</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">Read more</string> <string name="reader_action_more">Read more</string>
<string name="reader_action_open">Open in browser</string> <string name="reader_action_open">Open in browser</string>
<string name="reader_action_share">Share</string> <string name="reader_action_share">Share</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">Read more</string> <string name="reader_action_more">Read more</string>
<string name="reader_action_open">Open in browser</string> <string name="reader_action_open">Open in browser</string>
<string name="reader_action_share">Share</string> <string name="reader_action_share">Share</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">Read more</string> <string name="reader_action_more">Read more</string>
<string name="reader_action_open">Open in browser</string> <string name="reader_action_open">Open in browser</string>
<string name="reader_action_share">Share</string> <string name="reader_action_share">Share</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">Read more</string> <string name="reader_action_more">Read more</string>
<string name="reader_action_open">Open in browser</string> <string name="reader_action_open">Open in browser</string>
<string name="reader_action_share">Share</string> <string name="reader_action_share">Share</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">Leer más</string> <string name="reader_action_more">Leer más</string>
<string name="reader_action_open">Abrir en el navegador</string> <string name="reader_action_open">Abrir en el navegador</string>
<string name="reader_action_share">Compartir</string> <string name="reader_action_share">Compartir</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">Read more</string> <string name="reader_action_more">Read more</string>
<string name="reader_action_open">Open in browser</string> <string name="reader_action_open">Open in browser</string>
<string name="reader_action_share">Share</string> <string name="reader_action_share">Share</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">Lire plus</string> <string name="reader_action_more">Lire plus</string>
<string name="reader_action_open">Ouvrir</string> <string name="reader_action_open">Ouvrir</string>
<string name="reader_action_share">Partager</string> <string name="reader_action_share">Partager</string>
<string name="pref_switch_actions_pager_scroll">Marquer les articles comme lus à la navigation dans le lecteur d\'article.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">Read more</string> <string name="reader_action_more">Read more</string>
<string name="reader_action_open">Open in browser</string> <string name="reader_action_open">Open in browser</string>
<string name="reader_action_share">Share</string> <string name="reader_action_share">Share</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -6,11 +6,11 @@
<string name="prompt_password">"Kata sandi"</string> <string name="prompt_password">"Kata sandi"</string>
<string name="prompt_http_password">"Kata sandi HTTP"</string> <string name="prompt_http_password">"Kata sandi HTTP"</string>
<string name="action_sign_in">"Mulai"</string> <string name="action_sign_in">"Mulai"</string>
<string name="error_invalid_password">"Password not long enough"</string> <string name="error_invalid_password">"Kata sandinya tidak cukup panjang"</string>
<string name="error_field_required">"Kolom wajib diisi"</string> <string name="error_field_required">"Kolom wajib diisi"</string>
<string name="prompt_url">"URL"</string> <string name="prompt_url">"URL"</string>
<string name="withLoginSwitch">"Harus masuk?"</string> <string name="withLoginSwitch">"Harus masuk?"</string>
<string name="withHttpLoginSwitch">"HTTP Login required ?"</string> <string name="withHttpLoginSwitch">"Otentikasi HTTP diperlukan?"</string>
<string name="login_url_problem">"Ups. Anda mungkin harus menambahkan \"/\" di akhir url."</string> <string name="login_url_problem">"Ups. Anda mungkin harus menambahkan \"/\" di akhir url."</string>
<string name="prompt_login">"Nama pengguna"</string> <string name="prompt_login">"Nama pengguna"</string>
<string name="prompt_http_login">"Nama pengguna HTTP"</string> <string name="prompt_http_login">"Nama pengguna HTTP"</string>
@ -39,69 +39,69 @@
<string name="marked_as_read">"Membaca item"</string> <string name="marked_as_read">"Membaca item"</string>
<string name="undo_string">"Urung"</string> <string name="undo_string">"Urung"</string>
<string name="addStringNoUrl">"Masuk untuk menambah sumber."</string> <string name="addStringNoUrl">"Masuk untuk menambah sumber."</string>
<string name="cant_get_sources">"Can't get sources list."</string> <string name="cant_get_sources">"Tidak bisa mendapatkan daftar sumber."</string>
<string name="cant_create_source">"Tidak dapat membuat sumber."</string> <string name="cant_create_source">"Tidak dapat membuat sumber."</string>
<string name="cant_get_spouts">"Can't get spouts list."</string> <string name="cant_get_spouts">"Tidak bisa masuk ke daftar Spouts."</string>
<string name="form_not_complete">"The form is not complete"</string> <string name="form_not_complete">"Formulirnya belum selesai"</string>
<string name="pref_header_links">"Tautan"</string> <string name="pref_header_links">"Tautan"</string>
<string name="issue_tracker_link">"Issue Tracker"</string> <string name="issue_tracker_link">"Pelacak Masalah"</string>
<string name="issue_tracker_summary">"Laporkan bug atau meminta fitur baru"</string> <string name="issue_tracker_summary">"Laporkan bug atau meminta fitur baru"</string>
<string name="warning_wrong_url">"PERINGATAN"</string> <string name="warning_wrong_url">"PERINGATAN"</string>
<string name="pref_switch_card_view_title">"Card View"</string> <string name="pref_switch_card_view_title">"Tampilan Kartu"</string>
<string name="cant_mark_favortie">"Tidak dapat menandai artikel sebagai favorit"</string> <string name="cant_mark_favortie">"Tidak dapat menandai artikel sebagai favorit"</string>
<string name="cant_unmark_favortie">"Tidak dapat melepas item dari favorit"</string> <string name="cant_unmark_favortie">"Tidak dapat melepas item dari favorit"</string>
<string name="share">"Bagikan"</string> <string name="share">"Bagikan"</string>
<string name="rating_prompt_title">"Suka aplikasi ini?"</string> <string name="rating_prompt_title">"Suka aplikasi ini?"</string>
<string name="rating_prompt_yes">"Ya !"</string> <string name="rating_prompt_yes">"Ya !"</string>
<string name="rating_prompt_no">"Not really …"</string> <string name="rating_prompt_no">"Tidak suka …"</string>
<string name="rating_prompt_feedback_title">"Can you tell us why ?"</string> <string name="rating_prompt_feedback_title">"Bisakah Anda memberitahu kami alasannya?"</string>
<string name="rating_prompt_feedback_yes">"Oke !"</string> <string name="rating_prompt_feedback_yes">"Oke !"</string>
<string name="rating_prompt_feedback_no">"Not now."</string> <string name="rating_prompt_feedback_no">"Tidak sekarang."</string>
<string name="rating_prompt_rating_title">"Great ! Can you rate us on the Store ?"</string> <string name="rating_prompt_rating_title">"Bagus! Dapatkah Anda memberi nilai kami di Store ?"</string>
<string name="rating_prompt_rating_yes">"Sure !"</string> <string name="rating_prompt_rating_yes">"Tentu saja !"</string>
<string name="rating_prompt_rating_no">"Jangan sekarang."</string> <string name="rating_prompt_rating_no">"Jangan sekarang."</string>
<string name="rating_prompt_thanks">"Thanks, your feedback help enhance the app !"</string> <string name="rating_prompt_thanks">"Terima kasih, umpan balik Anda membantu pengembangan aplikasi !"</string>
<string name="switch_unread_count">"Display the unread count as a badge for the bottom bar."</string> <string name="switch_unread_count">"Tampilkan jumlah item yang belum dibaca di bilah bawah."</string>
<string name="switch_unread_count_title">"Display unread count"</string> <string name="switch_unread_count_title">"Tampilkan jumlah item yang belum dibaca"</string>
<string name="display_all_counts_title">"Display count for favorite and read"</string> <string name="display_all_counts_title">"Tampilkan jumlah item untuk favorit dan sudah dibaca"</string>
<string name="menu_share_the_app">"Undang teman"</string> <string name="menu_share_the_app">"Undang teman"</string>
<string name="invitation_title">"Try this app for your Selfoss RSS feeds !"</string> <string name="invitation_title">"Coba mengggunakan aplikasi ini untuk umpan RSS Selfoss Anda !"</string>
<string name="invitation_message">"I use this app for my Selfoss RSS feeds. You may like it too !"</string> <string name="invitation_message">"Saya menggunakan aplikasi ini untuk umpan RSS Selfoss saya. Anda akan menyukainya juga!"</string>
<string name="invitation_cta">"Try the app"</string> <string name="invitation_cta">"Coba aplikasi"</string>
<string name="text_wrong_url">"You seem to be trying to use an invalid URL. Make sure it is correct, and if the problem persists, contact me (via the store contact link). Please note that the app needs you to be using Selfoss. You can't access RSS feeds without it."</string> <string name="text_wrong_url">"Sepertinya Anda mencoba menggunakan URL yang tidak valid. Pastikan itu benar, jika masalah terus berlanjut, hubungi saya (melalui link kontak toko). Harap dicatat bahwa aplikasi ini mengharuskan Anda menggunakan Selfoss. Tanpa itu, Anda tidak bisa mengakses umpan RSS."</string>
<string name="pref_general_internal_browser_title">"Buka tautan dalam aplikasi"</string> <string name="pref_general_internal_browser_title">"Buka tautan dalam aplikasi"</string>
<string name="pref_general_internal_browser_on">"Artikel akan dibuka di dalam aplikasi"</string> <string name="pref_general_internal_browser_on">"Artikel akan dibuka di dalam aplikasi"</string>
<string name="pref_general_internal_browser_off">"Artikel akan dibuka dalam peramban bawaan Anda"</string> <string name="pref_general_internal_browser_off">"Artikel akan dibuka dalam peramban bawaan Anda"</string>
<string name="prefer_article_viewer_title">"Gunakan pratinjau artikel"</string> <string name="prefer_article_viewer_title">"Gunakan pratinjau artikel"</string>
<string name="prefer_article_viewer_on">"Will use the article viewer instead of the internal browser"</string> <string name="prefer_article_viewer_on">"Lihat artikel di penampil daripada peramban internal"</string>
<string name="prefer_article_viewer_off">"Will use the internal browser instead of the article viewer"</string> <string name="prefer_article_viewer_off">"Gunakan peramban internal dan bukan penampil artikel"</string>
<string name="pref_general_category_links">"Link handling"</string> <string name="pref_general_category_links">"Pengolahan tautan"</string>
<string name="pref_general_category_displaying">"Tampilan"</string> <string name="pref_general_category_displaying">"Tampilan"</string>
<string name="pref_general_category_actions">"Tindakan"</string> <string name="pref_general_category_actions">"Tindakan"</string>
<string name="pref_switch_card_view_on">"The articles will be displayed as cards"</string> <string name="pref_switch_card_view_on">"Artikel ini akan ditampilkan dalam bentuk kartu"</string>
<string name="pref_switch_card_view_off">"The articles will be displayed as a list"</string> <string name="pref_switch_card_view_off">"Artikel ini akan ditampilkan sebagai daftar"</string>
<string name="pref_switch_actions_tap_on">"Displays the action bar under the article"</string> <string name="pref_switch_actions_tap_on">"Bilah tindakan ditampilkan di bawah artikel"</string>
<string name="pref_switch_actions_tap_off">"When selecting an article it will open in your selected browser"</string> <string name="pref_switch_actions_tap_off">"Saat memilih artikel akan terbuka di peramban pilihan Anda"</string>
<string name="menu_home_refresh">"Update remote"</string> <string name="menu_home_refresh">"Pemutakhiran jarak jauh"</string>
<string name="refresh_success_response">"The remote is updated, you can now reload the articles list"</string> <string name="refresh_success_response">"Selfoss sedang diperbarui, kini Anda bisa menyegarkan daftar artikel"</string>
<string name="refresh_failer_message">"The update didn't work, try again later, or check your selfoss logs."</string> <string name="refresh_failer_message">"Pembaruan tidak berhasil, coba lagi atau periksa log Selfoss."</string>
<string name="refresh_in_progress">"Refresh in progress"</string> <string name="refresh_in_progress">"Dlam proses menyegarkan"</string>
<string name="new_apk_available_title">"A new APK is available."</string> <string name="new_apk_available_title">"APK baru sudah tersedia."</string>
<string name="new_apk_available_message">"A new APK is available to download on the official repository."</string> <string name="new_apk_available_message">"APK baru sudah tersedia untuk diunduh di gerai resmi."</string>
<string name="new_apk_available_get">"Unduh sekarang"</string> <string name="new_apk_available_get">"Unduh sekarang"</string>
<string name="new_apk_available_no">"Abaikan versi"</string> <string name="new_apk_available_no">"Abaikan versi"</string>
<string name="intro_hello_title">"Hi there !"</string> <string name="intro_hello_title">"Hai !"</string>
<string name="intro_hello_message">"Terima kasih telah mengunduh aplikasi ini !"</string> <string name="intro_hello_message">"Terima kasih telah mengunduh aplikasi ini !"</string>
<string name="intro_needs_selfoss_title">"Sebelum Anda mulai…"</string> <string name="intro_needs_selfoss_title">"Sebelum Anda mulai…"</string>
<string name="intro_needs_selfoss_message">"You can't use the app without a Selfoss instance."</string> <string name="intro_needs_selfoss_message">"Anda tidak dapat menggunakan aplikasi ini tanpa menjalankan Selfoss."</string>
<string name="intro_needs_selfoss_link">"Apa itu Selfoss ?"</string> <string name="intro_needs_selfoss_link">"Apa itu Selfoss ?"</string>
<string name="intro_all_set_title">"All set !"</string> <string name="intro_all_set_title">"Selesai !"</string>
<string name="intro_all_set_message">"You are ready to use the app. Don't forget to go to the settings page to configure your app, and where you'll find some useful links."</string> <string name="intro_all_set_message">"Kamu sudah siap Jangan lupa atur aplikasi konfigurasi halaman, Anda juga bisa menemukan beberapa tautan yang berguna disana."</string>
<string name="card_height_title">Full height cards</string> <string name="card_height_title">Peta tinggi penuh</string>
<string name="card_height_on">Cards height will adjust to its content</string> <string name="card_height_on">Tinggi kartu akan disesuaikan dengan konten</string>
<string name="card_height_off">Card height will be fixed</string> <string name="card_height_off">Ukuran kartu akan tetap</string>
<string name="source_code">Kode sumber</string> <string name="source_code">Kode sumber</string>
<string name="cant_mark_read">Can\'t mark article as read</string> <string name="cant_mark_read">Tidak dapat menandai artikel sebagai telah dibaca</string>
<string name="drawer_error_loading_tags">Kesalahan saat memuat tag…</string> <string name="drawer_error_loading_tags">Kesalahan saat memuat tag…</string>
<string name="drawer_error_loading_sources">Kesalahan saat memuat sumber…</string> <string name="drawer_error_loading_sources">Kesalahan saat memuat sumber…</string>
<string name="drawer_item_filters">Filter</string> <string name="drawer_item_filters">Filter</string>
@ -110,12 +110,12 @@
<string name="drawer_item_sources">Sumber</string> <string name="drawer_item_sources">Sumber</string>
<string name="drawer_action_edit">suntung</string> <string name="drawer_action_edit">suntung</string>
<string name="cache_drawer_error" tools:keep="@string/cache_drawer_error">Data dalam tembolok tidak dapat diambil</string> <string name="cache_drawer_error" tools:keep="@string/cache_drawer_error">Data dalam tembolok tidak dapat diambil</string>
<string name="no_tags_loaded">No tags loaded</string> <string name="no_tags_loaded">Tidak ada tag yang dimuat</string>
<string name="no_sources_loaded">Tak ada sumber yang dimuat</string> <string name="no_sources_loaded">Tak ada sumber yang dimuat</string>
<string name="drawer_loading">Memuat …</string> <string name="drawer_loading">Memuat …</string>
<string name="menu_home_search">Cari</string> <string name="menu_home_search">Cari</string>
<string name="can_delete_source">Tidak dapat menghapus sumber…</string> <string name="can_delete_source">Tidak dapat menghapus sumber…</string>
<string name="base_url_error">There was an issue when trying to communicate with your Selfoss Instance. If the issue persists, please get in touch with me.</string> <string name="base_url_error">Ada masalah saat berkomunikasi dengan Selfoss Anda. Jika masalah berlanjut, tolong hubungi saya.</string>
<string name="pref_header_theme">Tema</string> <string name="pref_header_theme">Tema</string>
<string name="default_theme">Bawaan</string> <string name="default_theme">Bawaan</string>
<string name="teal_orange_theme">Teal/Orange/Light</string> <string name="teal_orange_theme">Teal/Orange/Light</string>
@ -132,30 +132,34 @@
<string name="indigo_pink_dark_theme">Indigo/Pink/Gelap</string> <string name="indigo_pink_dark_theme">Indigo/Pink/Gelap</string>
<string name="red_teal_dark_theme">Red/Teal/Gelap</string> <string name="red_teal_dark_theme">Red/Teal/Gelap</string>
<string name="pref_header_debug">Debug</string> <string name="pref_header_debug">Debug</string>
<string name="login_debug_title">Activate to log login errors</string> <string name="login_debug_title">Aktifkan untuk mencatat semua kesalahan koneksi</string>
<string name="login_debug_on">Any error on the login page will be logged</string> <string name="login_debug_on">Semua kesalahan koneksi akan dicatat</string>
<string name="login_debug_off">No log on the login page</string> <string name="login_debug_off">Kesalahan pada halaman masuk</string>
<string name="login_menu_debug">Debug</string> <string name="login_menu_debug">Debug</string>
<string name="self_hosted_cert_switch">Using a self hosted certificate ?</string> <string name="self_hosted_cert_switch">Sertifikat yang ditandatangani sendiri?</string>
<string name="self_signed_cert_warning">Due to security reasons, self signed certificates are not supported by default. By activating this, I\'ll not be responsible of any security problem you encounter.</string> <string name="self_signed_cert_warning">Untuk alasan keamanan, sertifikat yang ditandatangani sendiri tidak didukung secara bawaan. Jika Anda mengaktifkan item ini, saya tidak akan bertanggung jawab atas masalah keamanan yang Anda hadapi.</string>
<string name="pref_selfoss_category">Selfoss Api</string> <string name="pref_selfoss_category">Selfoss Api</string>
<string name="pref_api_items_number_title">Loaded items number</string> <string name="pref_api_items_number_title">Item nomor dimuat</string>
<string name="read_debug_title">Baca artikel yang ini sebagai belum dibaca ?</string> <string name="read_debug_title">Baca artikel yang ini sebagai belum dibaca ?</string>
<string name="read_debug_off">No log when marking an item as read</string> <string name="read_debug_off">Tidak ada catatan saat item ditandai sebagai telah dibaca</string>
<string name="read_debug_on">Api calls will be logged when marking an article as read</string> <string name="read_debug_on">Panggilan api dicatat saat item ditandai sebagai telah dibaca</string>
<string name="summary_debug_identifier">Identifikasi debug</string> <string name="summary_debug_identifier">Identifikasi debug</string>
<string name="unique_id_to_clipboard">Identifier copied to your clipboard</string> <string name="unique_id_to_clipboard">Salin pengenal ke papan klip Anda</string>
<string name="display_header_drawer_summary">Display a header with the selfoss instance url on the lateral drawer.</string> <string name="display_header_drawer_summary">Kop dengan alamat link Selfoss ditampilkan di laci lateral.</string>
<string name="display_header_drawer_title">Account header</string> <string name="display_header_drawer_title">Kop akun</string>
<string name="login_everything_title">Logging every api calls</string> <string name="login_everything_title">Catat setiap panggilan api</string>
<string name="login_everything_on">This will log every api call for debug purpose.</string> <string name="login_everything_on">Untuk debug program, ini akan mencatat setiap panggilan api.</string>
<string name="login_everything_off">No api call will be logged</string> <string name="login_everything_off">Tidak ada panggilan api yang akan dicatat</string>
<string name="pref_general_infinite_loading_title">Load more articles on scroll</string> <string name="pref_general_infinite_loading_title">Muat lebih banyak artikel saat membalik halaman</string>
<string name="translation">Terjemahan</string> <string name="translation">Terjemahan</string>
<string name="cant_open_invalid_url">The item url is invalid. I\'m looking into solving this issue so the app won\'t crash.</string> <string name="cant_open_invalid_url">Alamat tautan proyek tidak valid. Saya mencoba memecahkan masalah ini untuk menghindari aplikasi berhenti.</string>
<string name="drawer_report_bug">Laporkan bug</string> <string name="drawer_report_bug">Laporkan bug</string>
<string name="items_number_should_be_number">The items number should be an integer.</string> <string name="items_number_should_be_number">Jumlah item harus berupa bilangan bulat.</string>
<string name="reader_action_more">Read more</string> <string name="reader_action_more">Baca lebih lanjut</string>
<string name="reader_action_open">Buka di peramban</string> <string name="reader_action_open">Buka di peramban</string>
<string name="reader_action_share">Bagikan</string> <string name="reader_action_share">Bagikan</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">Read more</string> <string name="reader_action_more">Read more</string>
<string name="reader_action_open">Open in browser</string> <string name="reader_action_open">Open in browser</string>
<string name="reader_action_share">Share</string> <string name="reader_action_share">Share</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">Read more</string> <string name="reader_action_more">Read more</string>
<string name="reader_action_open">Open in browser</string> <string name="reader_action_open">Open in browser</string>
<string name="reader_action_share">Share</string> <string name="reader_action_share">Share</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">Read more</string> <string name="reader_action_more">Read more</string>
<string name="reader_action_open">Open in browser</string> <string name="reader_action_open">Open in browser</string>
<string name="reader_action_share">Share</string> <string name="reader_action_share">Share</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">Read more</string> <string name="reader_action_more">Read more</string>
<string name="reader_action_open">Open in browser</string> <string name="reader_action_open">Open in browser</string>
<string name="reader_action_share">Share</string> <string name="reader_action_share">Share</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -33,7 +33,7 @@
<string name="cant_get_read">"Ophalen reeds gelezen artikelen mislukt"</string> <string name="cant_get_read">"Ophalen reeds gelezen artikelen mislukt"</string>
<string name="nothing_here">"Niets gevonden"</string> <string name="nothing_here">"Niets gevonden"</string>
<string name="tab_new">"Nieuw"</string> <string name="tab_new">"Nieuw"</string>
<string name="tab_read">"All"</string> <string name="tab_read">"Alle"</string>
<string name="tab_favs">"Favorieten"</string> <string name="tab_favs">"Favorieten"</string>
<string name="action_about">"Over"</string> <string name="action_about">"Over"</string>
<string name="marked_as_read">"Artikel gelezen"</string> <string name="marked_as_read">"Artikel gelezen"</string>
@ -100,62 +100,66 @@
<string name="card_height_title">Volledige hoogte kaarten</string> <string name="card_height_title">Volledige hoogte kaarten</string>
<string name="card_height_on">Hoogte aanpassen aan de hand van kaartinhoud</string> <string name="card_height_on">Hoogte aanpassen aan de hand van kaartinhoud</string>
<string name="card_height_off">Vaste hoogte</string> <string name="card_height_off">Vaste hoogte</string>
<string name="source_code">Source code</string> <string name="source_code">Broncode</string>
<string name="cant_mark_read">Impossible de marquer l\'article comme lu</string> <string name="cant_mark_read">Impossible de marquer l\'article comme lu</string>
<string name="drawer_error_loading_tags">Error loading tags…</string> <string name="drawer_error_loading_tags">Fout bij het laden van tags…</string>
<string name="drawer_error_loading_sources">Error loading sources</string> <string name="drawer_error_loading_sources">Fout bij laden van bronnen</string>
<string name="drawer_item_filters">Filters</string> <string name="drawer_item_filters">Filters</string>
<string name="drawer_action_clear">clear</string> <string name="drawer_action_clear">wissen</string>
<string name="drawer_item_tags">Tags</string> <string name="drawer_item_tags">Tags</string>
<string name="drawer_item_sources">Sources</string> <string name="drawer_item_sources">Bronnen</string>
<string name="drawer_action_edit">edit</string> <string name="drawer_action_edit">bewerken</string>
<string name="cache_drawer_error" tools:keep="@string/cache_drawer_error">Couldn\'t cache your drawer data</string> <string name="cache_drawer_error" tools:keep="@string/cache_drawer_error">De gegevens in uw opslagruimte kunnen niet in de cache worden opgeslagen</string>
<string name="no_tags_loaded">No tags loaded</string> <string name="no_tags_loaded">Geen tags geladen</string>
<string name="no_sources_loaded">No sources loaded</string> <string name="no_sources_loaded">Geen bronnen geladen</string>
<string name="drawer_loading">Loading</string> <string name="drawer_loading">Bezig met laden</string>
<string name="menu_home_search">Zoeken</string> <string name="menu_home_search">Zoeken</string>
<string name="can_delete_source">Can\'t delete the source</string> <string name="can_delete_source">Kan de bron niet verwijderen</string>
<string name="base_url_error">There was an issue when trying to communicate with your Selfoss Instance. If the issue persists, please get in touch with me.</string> <string name="base_url_error">Er was een probleem bij het communiceren met uw Selfoss Instance. Als het probleem blijft, neem dan contact met mij op.</string>
<string name="pref_header_theme">Themes</string> <string name="pref_header_theme">Thema \'s</string>
<string name="default_theme">Default</string> <string name="default_theme">Standaard</string>
<string name="teal_orange_theme">Teal/Orange/Light</string> <string name="teal_orange_theme">Groenblauw/Oranje/Licht</string>
<string name="cyan_pink_theme">Cyan/Pink/Light</string> <string name="cyan_pink_theme">Cyaan/Roze/Licht</string>
<string name="grey_orange_theme">Grey/Orange/Light</string> <string name="grey_orange_theme">Grijs/Oranje/Licht</string>
<string name="blue_amber_theme">Blue/Amber/Light</string> <string name="blue_amber_theme">Blauw/Amber/Licht</string>
<string name="indigo_pink_theme">Indigo/Pink/Light</string> <string name="indigo_pink_theme">Indigo/Roze/Licht</string>
<string name="red_teal_theme">Red/Teal/Light</string> <string name="red_teal_theme">Rood/Groenblauwl/Licht</string>
<string name="teal_orange_dark_theme">Teal/Orange/Dark</string> <string name="teal_orange_dark_theme">Groenblauw/Oranje/Donker</string>
<string name="cyan_pink_dark_theme">Cyan/Pink/Dark</string> <string name="cyan_pink_dark_theme">Cyaan/Roze/Donker</string>
<string name="default_dark_theme">Default/Dark</string> <string name="default_dark_theme">Standaard/Donker</string>
<string name="grey_orange_dark_theme">Grey/Orange/Dark</string> <string name="grey_orange_dark_theme">Grijs/Oranje/Donker</string>
<string name="blue_amber_dark_theme">Blue/Amber/Dark</string> <string name="blue_amber_dark_theme">Blauw/Amber/Donker</string>
<string name="indigo_pink_dark_theme">Indigo/Pink/Dark</string> <string name="indigo_pink_dark_theme">Indigo/Roze/Donker</string>
<string name="red_teal_dark_theme">Red/Teal/Dark</string> <string name="red_teal_dark_theme">Rood/Groenbauw/Donker</string>
<string name="pref_header_debug">Debug</string> <string name="pref_header_debug">Fout opsporen</string>
<string name="login_debug_title">Activate to log login errors</string> <string name="login_debug_title">Activeer om login-fouten te loggen</string>
<string name="login_debug_on">Any error on the login page will be logged</string> <string name="login_debug_on">Elke fout op de inlogpagina wordt gelogd</string>
<string name="login_debug_off">No log on the login page</string> <string name="login_debug_off">Geen log op de inlogpagina</string>
<string name="login_menu_debug">Debug</string> <string name="login_menu_debug">Fout opsporen</string>
<string name="self_hosted_cert_switch">Using a self hosted certificate ?</string> <string name="self_hosted_cert_switch">Gebruik een zelf gehost certificaat?</string>
<string name="self_signed_cert_warning">Due to security reasons, self signed certificates are not supported by default. By activating this, I\'ll not be responsible of any security problem you encounter.</string> <string name="self_signed_cert_warning">Vanwege veiligheidsredenen worden zelfondertekende certificaten niet standaard ondersteund. Door dit te activeren, ben ik niet verantwoordelijk voor beveiligingsproblemen die u tegenkomt.</string>
<string name="pref_selfoss_category">Selfoss Api</string> <string name="pref_selfoss_category">Selfoss Api</string>
<string name="pref_api_items_number_title">Loaded items number</string> <string name="pref_api_items_number_title">Geladen items nummer</string>
<string name="read_debug_title">Read articles appearing as unread ?</string> <string name="read_debug_title">Gelezen artikelen verschijnen als ongelezen?</string>
<string name="read_debug_off">No log when marking an item as read</string> <string name="read_debug_off">Geen logboek bij het markeren van een artikel als gelezen</string>
<string name="read_debug_on">Api calls will be logged when marking an article as read</string> <string name="read_debug_on">Api-oproepen zullen gelogd worden wanneer een artikel als gelezen wordt gemarkeerd</string>
<string name="summary_debug_identifier">Debug identifier</string> <string name="summary_debug_identifier">ID voor foutopsporing</string>
<string name="unique_id_to_clipboard">Identifier copied to your clipboard</string> <string name="unique_id_to_clipboard">ID naar uw klembord gekopieerd</string>
<string name="display_header_drawer_summary">Display a header with the selfoss instance url on the lateral drawer.</string> <string name="display_header_drawer_summary">Laat een koptekst weergeven met de url van de selfoss instantie in de zijlade.</string>
<string name="display_header_drawer_title">Account header</string> <string name="display_header_drawer_title">Account titel</string>
<string name="login_everything_title">Logging every api calls</string> <string name="login_everything_title">Elke api-oproepen loggen</string>
<string name="login_everything_on">This will log every api call for debug purpose.</string> <string name="login_everything_on">Hiermee wordt elke api oproepen gelogt voor foutopsporingsdoeleinden.</string>
<string name="login_everything_off">No api call will be logged</string> <string name="login_everything_off">Geen api-oproep wordt gelogt</string>
<string name="pref_general_infinite_loading_title">Load more articles on scroll</string> <string name="pref_general_infinite_loading_title">Laad meer artikelen door te bladeren</string>
<string name="translation">Vertaling</string> <string name="translation">Vertaling</string>
<string name="cant_open_invalid_url">The item url is invalid. I\'m looking into solving this issue so the app won\'t crash.</string> <string name="cant_open_invalid_url">De URL is ongeldig. Ik probeer dit probleem op te lossen, zodat de toepassing niet wordt afgesloten.</string>
<string name="drawer_report_bug">Report a bug</string> <string name="drawer_report_bug">Een fout melden</string>
<string name="items_number_should_be_number">The items number should be an integer.</string> <string name="items_number_should_be_number">Het aantal items moet een geheel getal zijn.</string>
<string name="reader_action_more">Read more</string> <string name="reader_action_more">Lees meer</string>
<string name="reader_action_open">Open in browser</string> <string name="reader_action_open">Openen in browser</string>
<string name="reader_action_share">Share</string> <string name="reader_action_share">Delen</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">Read more</string> <string name="reader_action_more">Read more</string>
<string name="reader_action_open">Open in browser</string> <string name="reader_action_open">Open in browser</string>
<string name="reader_action_share">Share</string> <string name="reader_action_share">Share</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">Read more</string> <string name="reader_action_more">Read more</string>
<string name="reader_action_open">Open in browser</string> <string name="reader_action_open">Open in browser</string>
<string name="reader_action_share">Share</string> <string name="reader_action_share">Share</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">Leia mais</string> <string name="reader_action_more">Leia mais</string>
<string name="reader_action_open">Abrir no navegador</string> <string name="reader_action_open">Abrir no navegador</string>
<string name="reader_action_share">Compartilhar</string> <string name="reader_action_share">Compartilhar</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -1,161 +1,165 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com--> <!--Generated by crowdin.com-->
<resources xmlns:tools="http://schemas.android.com/tools"> <resources xmlns:tools="http://schemas.android.com/tools">
<string name="app_name">"Reader for Selfoss"</string> <string name="app_name">"Leitor para Selfoss"</string>
<string name="title_activity_login">"Log in"</string> <string name="title_activity_login">"Iniciar sessão"</string>
<string name="prompt_password">"Password"</string> <string name="prompt_password">"Palavra passe"</string>
<string name="prompt_http_password">"HTTP Password"</string> <string name="prompt_http_password">"Senha HTTP"</string>
<string name="action_sign_in">"Go"</string> <string name="action_sign_in">"Ir"</string>
<string name="error_invalid_password">"Password not long enough"</string> <string name="error_invalid_password">"Senha não é longa o suficiente"</string>
<string name="error_field_required">"Field required"</string> <string name="error_field_required">"Campo obrigatório"</string>
<string name="prompt_url">"Url"</string> <string name="prompt_url">"Url"</string>
<string name="withLoginSwitch">"Login required ?"</string> <string name="withLoginSwitch">"É necessário fazer login?"</string>
<string name="withHttpLoginSwitch">"HTTP Login required ?"</string> <string name="withHttpLoginSwitch">"É necessário fazer login on HTTP?"</string>
<string name="login_url_problem">"Oops. You may need to add a \"/\" at the end of the url."</string> <string name="login_url_problem">"Uups. Você pode precisar adicionar uma \"/\" no final da url."</string>
<string name="prompt_login">"Username"</string> <string name="prompt_login">"Nome do usuário"</string>
<string name="prompt_http_login">"HTTP Username"</string> <string name="prompt_http_login">"Nome de utilizador HTTP"</string>
<string name="label_share">"Share"</string> <string name="label_share">"Compartilhar"</string>
<string name="readAll">"Read all"</string> <string name="readAll">"Ler tudo"</string>
<string name="action_disconnect">"Disconnect"</string> <string name="action_disconnect">"Desligar"</string>
<string name="title_activity_settings">"Settings"</string> <string name="title_activity_settings">"Configurações"</string>
<string name="pref_header_general">"General"</string> <string name="pref_header_general">"Geral"</string>
<string name="pref_switch_actions_tap_title">"Tap action on the articles"</string> <string name="pref_switch_actions_tap_title">"Toque em ação sobre os artigos"</string>
<string name="add_source_hint_tags">"Tag1, Tag2, Tag3"</string> <string name="add_source_hint_tags">"Tag1, Tag2, Tag3"</string>
<string name="add_source_hint_url">"Link"</string> <string name="add_source_hint_url">"Link"</string>
<string name="add_source_hint_name">"Name"</string> <string name="add_source_hint_name">"Nome"</string>
<string name="add_source">"Add a source"</string> <string name="add_source">"Adicionar uma fonte"</string>
<string name="add_source_save">"Save"</string> <string name="add_source_save">"Salvar"</string>
<string name="wrong_infos">"Check your details again."</string> <string name="wrong_infos">"Verifique seus dados novamente."</string>
<string name="all_posts_not_read">"All posts weren't read"</string> <string name="all_posts_not_read">"Todas as postagens não foram lidas"</string>
<string name="all_posts_read">"All posts were read"</string> <string name="all_posts_read">"Todas as postagens foram lidas"</string>
<string name="cant_get_favs">"Can't get favorites"</string> <string name="cant_get_favs">"Não é possível obter favoritos"</string>
<string name="cant_get_new_elements">"Can't get new articles"</string> <string name="cant_get_new_elements">"Não é possível obter novos artigos"</string>
<string name="cant_get_read">"Can't get read articles"</string> <string name="cant_get_read">"Não é possível ler artigos"</string>
<string name="nothing_here">"Nothing here"</string> <string name="nothing_here">"Nada aqui"</string>
<string name="tab_new">"New"</string> <string name="tab_new">"Novo"</string>
<string name="tab_read">"All"</string> <string name="tab_read">"Tudo"</string>
<string name="tab_favs">"Favorites"</string> <string name="tab_favs">"Favoritos"</string>
<string name="action_about">"About"</string> <string name="action_about">"Sobre"</string>
<string name="marked_as_read">"Item read"</string> <string name="marked_as_read">"Item lido"</string>
<string name="undo_string">"Undo"</string> <string name="undo_string">"Desfazer"</string>
<string name="addStringNoUrl">"Log in to add sources."</string> <string name="addStringNoUrl">"Logar para adicionar fontes."</string>
<string name="cant_get_sources">"Can't get sources list."</string> <string name="cant_get_sources">"Não é possível obter a lista de fontes."</string>
<string name="cant_create_source">"Can't create source."</string> <string name="cant_create_source">"Não é possível criar a fonte."</string>
<string name="cant_get_spouts">"Can't get spouts list."</string> <string name="cant_get_spouts">"Não é possível obter a lista de bicos."</string>
<string name="form_not_complete">"The form is not complete"</string> <string name="form_not_complete">"O formulário não está completo"</string>
<string name="pref_header_links">"Links"</string> <string name="pref_header_links">"Links"</string>
<string name="issue_tracker_link">"Issue Tracker"</string> <string name="issue_tracker_link">"Rastreador de problemas"</string>
<string name="issue_tracker_summary">"Report a bug or ask for a new feature"</string> <string name="issue_tracker_summary">"Relatar um bug ou pedir um novo recurso"</string>
<string name="warning_wrong_url">"WARNING"</string> <string name="warning_wrong_url">"AVISO"</string>
<string name="pref_switch_card_view_title">"Card View"</string> <string name="pref_switch_card_view_title">"Vista de cartão"</string>
<string name="cant_mark_favortie">"Can't mark article as favorite"</string> <string name="cant_mark_favortie">"Não é possível marcar o artigo como favorito"</string>
<string name="cant_unmark_favortie">"Can't remove item from favorite"</string> <string name="cant_unmark_favortie">"Não pode remover o item do favorito"</string>
<string name="share">"Share"</string> <string name="share">"Compartilhar"</string>
<string name="rating_prompt_title">"Enjoying the app ?"</string> <string name="rating_prompt_title">"Gosta da aplicação?"</string>
<string name="rating_prompt_yes">"Yes !"</string> <string name="rating_prompt_yes">"Sim!"</string>
<string name="rating_prompt_no">"Not really …"</string> <string name="rating_prompt_no">"Não realmente…"</string>
<string name="rating_prompt_feedback_title">"Can you tell us why ?"</string> <string name="rating_prompt_feedback_title">"Pode nos dizer por que?"</string>
<string name="rating_prompt_feedback_yes">"OK !"</string> <string name="rating_prompt_feedback_yes">"Okey!"</string>
<string name="rating_prompt_feedback_no">"Not now."</string> <string name="rating_prompt_feedback_no">"Agora não."</string>
<string name="rating_prompt_rating_title">"Great ! Can you rate us on the Store ?"</string> <string name="rating_prompt_rating_title">"Legal! Você pode classificar-na loja?"</string>
<string name="rating_prompt_rating_yes">"Sure !"</string> <string name="rating_prompt_rating_yes">"Claro!"</string>
<string name="rating_prompt_rating_no">"Not right now."</string> <string name="rating_prompt_rating_no">"Agora não."</string>
<string name="rating_prompt_thanks">"Thanks, your feedback help enhance the app !"</string> <string name="rating_prompt_thanks">"Obrigado, seu feedback ajudar a realçar o app!"</string>
<string name="switch_unread_count">"Display the unread count as a badge for the bottom bar."</string> <string name="switch_unread_count">"Exibir a contagem não lida como um emblema para a barra inferior."</string>
<string name="switch_unread_count_title">"Display unread count"</string> <string name="switch_unread_count_title">"Exibir a contagem não lida"</string>
<string name="display_all_counts_title">"Display count for favorite and read"</string> <string name="display_all_counts_title">"Exibir a contagem para o favorito e leitura"</string>
<string name="menu_share_the_app">"Invite friends"</string> <string name="menu_share_the_app">"Convidar amigos"</string>
<string name="invitation_title">"Try this app for your Selfoss RSS feeds !"</string> <string name="invitation_title">"Tente este aplicativo para seus Selfoss RSS feeds!"</string>
<string name="invitation_message">"I use this app for my Selfoss RSS feeds. You may like it too !"</string> <string name="invitation_message">"Eu uso este app para meus Selfoss RSS feeds. Você pode gostar também!"</string>
<string name="invitation_cta">"Try the app"</string> <string name="invitation_cta">"Tente o aplicativo"</string>
<string name="text_wrong_url">"You seem to be trying to use an invalid URL. Make sure it is correct, and if the problem persists, contact me (via the store contact link). Please note that the app needs you to be using Selfoss. You can't access RSS feeds without it."</string> <string name="text_wrong_url">"Você parece estar tentando usar um URL inválido. Certifique-se de que está correto, e se o problema persistir, entre em contato comigo (através do link de contato da loja). Por favor, note que o aplicativo precisa que você esteja usando o Selfoss. Você não pode acessar feeds RSS sem ele."</string>
<string name="pref_general_internal_browser_title">"Open links inside the app"</string> <string name="pref_general_internal_browser_title">"Abrir links dentro do app"</string>
<string name="pref_general_internal_browser_on">"Articles will open inside the app"</string> <string name="pref_general_internal_browser_on">"Artigos serão aberto dentro do aplicativo"</string>
<string name="pref_general_internal_browser_off">"Articles will open with your default browser"</string> <string name="pref_general_internal_browser_off">"Artigos serão aberto com o seu navegador padrão"</string>
<string name="prefer_article_viewer_title">"Use the article viewer"</string> <string name="prefer_article_viewer_title">"Use o Visualizador de artigo"</string>
<string name="prefer_article_viewer_on">"Will use the article viewer instead of the internal browser"</string> <string name="prefer_article_viewer_on">"Vai usar o Visualizador de artigo em vez do navegador interno"</string>
<string name="prefer_article_viewer_off">"Will use the internal browser instead of the article viewer"</string> <string name="prefer_article_viewer_off">"Vai usar o navegador interno em vez do Visualizador de artigo"</string>
<string name="pref_general_category_links">"Link handling"</string> <string name="pref_general_category_links">"Manipulação de ligações"</string>
<string name="pref_general_category_displaying">"Displaying"</string> <string name="pref_general_category_displaying">"Mostrando"</string>
<string name="pref_general_category_actions">"Actions"</string> <string name="pref_general_category_actions">"Ações"</string>
<string name="pref_switch_card_view_on">"The articles will be displayed as cards"</string> <string name="pref_switch_card_view_on">"Os artigos serão exibidos como cartões"</string>
<string name="pref_switch_card_view_off">"The articles will be displayed as a list"</string> <string name="pref_switch_card_view_off">"Os artigos serão exibidos como lista"</string>
<string name="pref_switch_actions_tap_on">"Displays the action bar under the article"</string> <string name="pref_switch_actions_tap_on">"Exibe a barra de ação sob o artigo"</string>
<string name="pref_switch_actions_tap_off">"When selecting an article it will open in your selected browser"</string> <string name="pref_switch_actions_tap_off">"Ao selecionar um artigo, ele será aberto no seu navegador selecionado"</string>
<string name="menu_home_refresh">"Update remote"</string> <string name="menu_home_refresh">"Atualização remota"</string>
<string name="refresh_success_response">"The remote is updated, you can now reload the articles list"</string> <string name="refresh_success_response">"O remoto é atualizado, você agora pode recarregar a lista de artigos"</string>
<string name="refresh_failer_message">"The update didn't work, try again later, or check your selfoss logs."</string> <string name="refresh_failer_message">"A atualização não funcionar, tente novamente mais tarde ou verifique seus logs de selfoss."</string>
<string name="refresh_in_progress">"Refresh in progress"</string> <string name="refresh_in_progress">"Atualização em curso"</string>
<string name="new_apk_available_title">"A new APK is available."</string> <string name="new_apk_available_title">"Está disponível um novo APK."</string>
<string name="new_apk_available_message">"A new APK is available to download on the official repository."</string> <string name="new_apk_available_message">"Um APK novo está disponível para download no repositório oficial."</string>
<string name="new_apk_available_get">"Download now"</string> <string name="new_apk_available_get">"Fazer download agora"</string>
<string name="new_apk_available_no">"Ignore version"</string> <string name="new_apk_available_no">"Ignorar esta versão"</string>
<string name="intro_hello_title">"Hi there !"</string> <string name="intro_hello_title">"Olá ai!"</string>
<string name="intro_hello_message">"Thanks for downloading the app !"</string> <string name="intro_hello_message">"Obrigado por baixar o aplicativo!"</string>
<string name="intro_needs_selfoss_title">"Before you start…"</string> <string name="intro_needs_selfoss_title">"Antes de começar…"</string>
<string name="intro_needs_selfoss_message">"You can't use the app without a Selfoss instance."</string> <string name="intro_needs_selfoss_message">"Você não pode usar o app sem uma instância de Selfoss."</string>
<string name="intro_needs_selfoss_link">"What is Selfoss ?"</string> <string name="intro_needs_selfoss_link">"O que é Selfoss?"</string>
<string name="intro_all_set_title">"All set !"</string> <string name="intro_all_set_title">"Tudo configurado!"</string>
<string name="intro_all_set_message">"You are ready to use the app. Don't forget to go to the settings page to configure your app, and where you'll find some useful links."</string> <string name="intro_all_set_message">"Você está pronto para usar o app. não se esqueça de ir para a página de configurações para configurar o seu aplicativo, e onde você encontrará alguns links úteis."</string>
<string name="card_height_title">Full height cards</string> <string name="card_height_title">Cartões de altura total</string>
<string name="card_height_on">Cards height will adjust to its content</string> <string name="card_height_on">Altura de cartas irá ajustar ao seu conteúdo</string>
<string name="card_height_off">Card height will be fixed</string> <string name="card_height_off">Altura do cartão será corrigida</string>
<string name="source_code">Source code</string> <string name="source_code">Código fonte</string>
<string name="cant_mark_read">Can\'t mark article as read</string> <string name="cant_mark_read">Não pode marcar o artigo como lido</string>
<string name="drawer_error_loading_tags">Error loading tags…</string> <string name="drawer_error_loading_tags">Erro ao carregar etiquetas…</string>
<string name="drawer_error_loading_sources">Error loading sources…</string> <string name="drawer_error_loading_sources">Erro ao carregar fontes…</string>
<string name="drawer_item_filters">Filters</string> <string name="drawer_item_filters">Filtros</string>
<string name="drawer_action_clear">clear</string> <string name="drawer_action_clear">limpar</string>
<string name="drawer_item_tags">Tags</string> <string name="drawer_item_tags">Etiquetas</string>
<string name="drawer_item_sources">Sources</string> <string name="drawer_item_sources">Fontes</string>
<string name="drawer_action_edit">edit</string> <string name="drawer_action_edit">editar</string>
<string name="cache_drawer_error" tools:keep="@string/cache_drawer_error">Couldn\'t cache your drawer data</string> <string name="cache_drawer_error" tools:keep="@string/cache_drawer_error">Não armazenar em cache dados sua gaveta</string>
<string name="no_tags_loaded">No tags loaded</string> <string name="no_tags_loaded">Não tags carregado</string>
<string name="no_sources_loaded">No sources loaded</string> <string name="no_sources_loaded">Não há fontes carregadas</string>
<string name="drawer_loading">Loading </string> <string name="drawer_loading">A carregar</string>
<string name="menu_home_search">Search</string> <string name="menu_home_search">Buscar</string>
<string name="can_delete_source">Can\'t delete the source…</string> <string name="can_delete_source">Não é possível excluir a fonte…</string>
<string name="base_url_error">There was an issue when trying to communicate with your Selfoss Instance. If the issue persists, please get in touch with me.</string> <string name="base_url_error">Houve um problema ao tentar se comunicar com sua instância de Selfoss. Se o problema persistir, por favor entre em contato comigo.</string>
<string name="pref_header_theme">Themes</string> <string name="pref_header_theme">Temas</string>
<string name="default_theme">Default</string> <string name="default_theme">Predefinição</string>
<string name="teal_orange_theme">Teal/Orange/Light</string> <string name="teal_orange_theme">Verde-azulado/laranja/Luz</string>
<string name="cyan_pink_theme">Cyan/Pink/Light</string> <string name="cyan_pink_theme">Ciano/rosa/luz</string>
<string name="grey_orange_theme">Grey/Orange/Light</string> <string name="grey_orange_theme">Cinza/laranja/luz</string>
<string name="blue_amber_theme">Blue/Amber/Light</string> <string name="blue_amber_theme">Azul/âmbar/luz</string>
<string name="indigo_pink_theme">Indigo/Pink/Light</string> <string name="indigo_pink_theme">Índigo/rosa/luz</string>
<string name="red_teal_theme">Red/Teal/Light</string> <string name="red_teal_theme">Vermelha/verde-azulado/Luz</string>
<string name="teal_orange_dark_theme">Teal/Orange/Dark</string> <string name="teal_orange_dark_theme">Verde-azulado/laranja/escuro</string>
<string name="cyan_pink_dark_theme">Cyan/Pink/Dark</string> <string name="cyan_pink_dark_theme">Ciano/rosa/escura</string>
<string name="default_dark_theme">Default/Dark</string> <string name="default_dark_theme">Padrão/escuro</string>
<string name="grey_orange_dark_theme">Grey/Orange/Dark</string> <string name="grey_orange_dark_theme">Cinza/laranja/Escuro</string>
<string name="blue_amber_dark_theme">Blue/Amber/Dark</string> <string name="blue_amber_dark_theme">Azul/âmbar/escuro</string>
<string name="indigo_pink_dark_theme">Indigo/Pink/Dark</string> <string name="indigo_pink_dark_theme">Índigo/rosa/escura</string>
<string name="red_teal_dark_theme">Red/Teal/Dark</string> <string name="red_teal_dark_theme">Verde-azulado/vermelho/escuro</string>
<string name="pref_header_debug">Debug</string> <string name="pref_header_debug">Depurar</string>
<string name="login_debug_title">Activate to log login errors</string> <string name="login_debug_title">Ativar para registrar erros de logon</string>
<string name="login_debug_on">Any error on the login page will be logged</string> <string name="login_debug_on">Qualquer erro na página de login será registrado</string>
<string name="login_debug_off">No log on the login page</string> <string name="login_debug_off">Não há registro na página de login</string>
<string name="login_menu_debug">Debug</string> <string name="login_menu_debug">Depurar</string>
<string name="self_hosted_cert_switch">Using a self hosted certificate ?</string> <string name="self_hosted_cert_switch">Usando um certificado hospedado?</string>
<string name="self_signed_cert_warning">Due to security reasons, self signed certificates are not supported by default. By activating this, I\'ll not be responsible of any security problem you encounter.</string> <string name="self_signed_cert_warning">Devido a razões de segurança, auto certificados auto-assinados não são suportados por padrão. Ao activar isto, eu não vou ser responsável de qualquer problema de segurança que você encontrar.</string>
<string name="pref_selfoss_category">Selfoss Api</string> <string name="pref_selfoss_category">Api de Selfoss</string>
<string name="pref_api_items_number_title">Loaded items number</string> <string name="pref_api_items_number_title">Número de itens carregados</string>
<string name="read_debug_title">Read articles appearing as unread ?</string> <string name="read_debug_title">Leia artigos aparecem como não lidas?</string>
<string name="read_debug_off">No log when marking an item as read</string> <string name="read_debug_off">Sem log quando marcar um item como lido</string>
<string name="read_debug_on">Api calls will be logged when marking an article as read</string> <string name="read_debug_on">Chamadas de Api serão registradas quando marcar um artigo como lido</string>
<string name="summary_debug_identifier">Debug identifier</string> <string name="summary_debug_identifier">Depurar o identificador</string>
<string name="unique_id_to_clipboard">Identifier copied to your clipboard</string> <string name="unique_id_to_clipboard">Identificador de copiados para a área de transferência</string>
<string name="display_header_drawer_summary">Display a header with the selfoss instance url on the lateral drawer.</string> <string name="display_header_drawer_summary">Exibir um cabeçalho com o url de instância de selfoss na gaveta lateral.</string>
<string name="display_header_drawer_title">Account header</string> <string name="display_header_drawer_title">Cabeçalho de conta</string>
<string name="login_everything_title">Logging every api calls</string> <string name="login_everything_title">Logando todas as chamadas api</string>
<string name="login_everything_on">This will log every api call for debug purpose.</string> <string name="login_everything_on">Isto irá registrar todas as chamadas de api para fins de depuração.</string>
<string name="login_everything_off">No api call will be logged</string> <string name="login_everything_off">Nenhuma chamada de api será registrada</string>
<string name="pref_general_infinite_loading_title">Load more articles on scroll</string> <string name="pref_general_infinite_loading_title">Carregar mais artigos no pergaminho</string>
<string name="translation">Translation</string> <string name="translation">Tradução</string>
<string name="cant_open_invalid_url">The item url is invalid. I\'m looking into solving this issue so the app won\'t crash.</string> <string name="cant_open_invalid_url">A url do item é inválido. Eu estou olhando para resolver esta questão, para que o app não vai falhar.</string>
<string name="drawer_report_bug">Report a bug</string> <string name="drawer_report_bug">Reportar falha</string>
<string name="items_number_should_be_number">The items number should be an integer.</string> <string name="items_number_should_be_number">O número de itens deve ser um número inteiro.</string>
<string name="reader_action_more">Read more</string> <string name="reader_action_more">Ler mais</string>
<string name="reader_action_open">Open in browser</string> <string name="reader_action_open">Abrir no browser</string>
<string name="reader_action_share">Share</string> <string name="reader_action_share">Compartilhar</string>
<string name="pref_switch_actions_pager_scroll">Artigos de marca como lida quando passar entre artigos.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">Read more</string> <string name="reader_action_more">Read more</string>
<string name="reader_action_open">Open in browser</string> <string name="reader_action_open">Open in browser</string>
<string name="reader_action_share">Share</string> <string name="reader_action_share">Share</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">Read more</string> <string name="reader_action_more">Read more</string>
<string name="reader_action_open">Open in browser</string> <string name="reader_action_open">Open in browser</string>
<string name="reader_action_share">Share</string> <string name="reader_action_share">Share</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">Read more</string> <string name="reader_action_more">Read more</string>
<string name="reader_action_open">Open in browser</string> <string name="reader_action_open">Open in browser</string>
<string name="reader_action_share">Share</string> <string name="reader_action_share">Share</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">Read more</string> <string name="reader_action_more">Read more</string>
<string name="reader_action_open">Open in browser</string> <string name="reader_action_open">Open in browser</string>
<string name="reader_action_share">Share</string> <string name="reader_action_share">Share</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">Daha fazlasını görüntüle</string> <string name="reader_action_more">Daha fazlasını görüntüle</string>
<string name="reader_action_open">Tarayıcıda aç</string> <string name="reader_action_open">Tarayıcıda aç</string>
<string name="reader_action_share">Paylaş</string> <string name="reader_action_share">Paylaş</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">Read more</string> <string name="reader_action_more">Read more</string>
<string name="reader_action_open">Open in browser</string> <string name="reader_action_open">Open in browser</string>
<string name="reader_action_share">Share</string> <string name="reader_action_share">Share</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">Read more</string> <string name="reader_action_more">Read more</string>
<string name="reader_action_open">Open in browser</string> <string name="reader_action_open">Open in browser</string>
<string name="reader_action_share">Share</string> <string name="reader_action_share">Share</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">阅读更多</string> <string name="reader_action_more">阅读更多</string>
<string name="reader_action_open">在浏览器中打开</string> <string name="reader_action_open">在浏览器中打开</string>
<string name="reader_action_share">分享</string> <string name="reader_action_share">分享</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -158,4 +158,8 @@
<string name="reader_action_more">阅读更多</string> <string name="reader_action_more">阅读更多</string>
<string name="reader_action_open">在浏览器中打开</string> <string name="reader_action_open">在浏览器中打开</string>
<string name="reader_action_share">分享</string> <string name="reader_action_share">分享</string>
<string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources> </resources>

View File

@ -161,4 +161,8 @@
<string name="reader_action_more">Read more</string> <string name="reader_action_more">Read more</string>
<string name="reader_action_open">Open in browser</string> <string name="reader_action_open">Open in browser</string>
<string name="reader_action_share">Share</string> <string name="reader_action_share">Share</string>
</resources> <string name="pref_switch_actions_pager_scroll">Mark articles as read when swiping between articles.</string>
<string name="prefer_webview_in_article_viewer_title">Use a webview in the article viewer.</string>
<string name="prefer_webview_in_article_viewer_on">Using the webview for the content of the article viewer. Urls, gifs and images will be better handled, but may be slower.</string>
<string name="prefer_webview_in_article_viewer_off">The content of the article will be displayed as simple text with links and images. Urls may not work, and gifs won\'t load.</string>
</resources>

View File

@ -1,11 +1,5 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<!--<SwitchPreference
android:defaultValue="false"
android:key="preferred_browser"
android:summary="@string/pref_switch_browser"
android:title="@string/pref_switch_browser_title"/>-->
<PreferenceCategory <PreferenceCategory
android:title="@string/pref_selfoss_category"> android:title="@string/pref_selfoss_category">
@ -39,6 +33,14 @@
android:summaryOff="@string/prefer_article_viewer_off" android:summaryOff="@string/prefer_article_viewer_off"
android:summaryOn="@string/prefer_article_viewer_on" android:summaryOn="@string/prefer_article_viewer_on"
android:title="@string/prefer_article_viewer_title" /> android:title="@string/prefer_article_viewer_title" />
<SwitchPreference
android:defaultValue="false"
android:dependency="prefer_article_viewer"
android:key="prefer_webview_in_article_viewer"
android:summaryOff="@string/prefer_webview_in_article_viewer_off"
android:summaryOn="@string/prefer_webview_in_article_viewer_on"
android:title="@string/prefer_webview_in_article_viewer_title" />
<PreferenceCategory <PreferenceCategory
android:title="@string/pref_general_category_displaying"> android:title="@string/pref_general_category_displaying">
@ -81,5 +83,9 @@
android:summaryOff="@string/pref_switch_actions_tap_off" android:summaryOff="@string/pref_switch_actions_tap_off"
android:summaryOn="@string/pref_switch_actions_tap_on" android:summaryOn="@string/pref_switch_actions_tap_on"
android:title="@string/pref_switch_actions_tap_title" /> android:title="@string/pref_switch_actions_tap_title" />
<SwitchPreference
android:defaultValue="false"
android:key="mark_on_scroll"
android:title="@string/pref_switch_actions_pager_scroll" />
</PreferenceScreen> </PreferenceScreen>

View File

@ -1,7 +1,7 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules. // Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript { buildscript {
ext.kotlin_version = '1.1.60' ext.kotlin_version = '1.2.0'
repositories { repositories {
jcenter() jcenter()
google() google()
@ -17,8 +17,7 @@ buildscript {
// in the individual module build.gradle files // in the individual module build.gradle files
classpath 'com.google.gms:google-services:3.1.1' classpath 'com.google.gms:google-services:3.1.1'
// Not the official version https://stackoverflow.com/questions/46525040/sonarqube-android-not-working-for-gradle-3-0-0/46813528#46813528 classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.6.1"
classpath "com.github.Shusshu:sonar-scanner-gradle:feature~support-android-gradle-3-SNAPSHOT"
} }
} }