Compare commits
	
		
			1 Commits
		
	
	
		
			v161810280
			...
			v161809267
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 5321becd24 | 
| @@ -53,7 +53,7 @@ android { | ||||
|         vectorDrawables.useSupportLibrary = true | ||||
|  | ||||
|         // tests | ||||
|         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" | ||||
|         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" | ||||
|     } | ||||
|     buildTypes { | ||||
|         release { | ||||
| @@ -85,26 +85,26 @@ android { | ||||
|  | ||||
| dependencies { | ||||
|     // Testing | ||||
|     androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' | ||||
|     androidTestImplementation 'com.android.support.test:runner:1.0.1' | ||||
|     androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4' | ||||
|     androidTestImplementation 'androidx.test:runner:1.1.0-alpha4' | ||||
|     // Espresso-contrib for DatePicker, RecyclerView, Drawer actions, Accessibility checks, CountingIdlingResource | ||||
|     androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.1' | ||||
|     androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.1.0-alpha4' | ||||
|     // Espresso-intents for validation and stubbing of Intents | ||||
|     androidTestImplementation 'com.android.support.test.espresso:espresso-intents:3.0.1' | ||||
|     androidTestImplementation 'androidx.test.espresso:espresso-intents:3.1.0-alpha4' | ||||
|     implementation fileTree(include: ['*.jar'], dir: 'libs') | ||||
|     implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" | ||||
|     // Android Support | ||||
|     implementation "com.android.support:appcompat-v7:$android_version" | ||||
|     implementation "com.android.support:design:$android_version" | ||||
|     implementation "com.android.support:recyclerview-v7:$android_version" | ||||
|     implementation "com.android.support:support-v4:$android_version" | ||||
|     implementation "com.android.support:support-vector-drawable:$android_version" | ||||
|     implementation "com.android.support:customtabs:$android_version" | ||||
|     implementation "com.android.support:cardview-v7:$android_version" | ||||
|     implementation 'com.android.support.constraint:constraint-layout:1.1.0' | ||||
|     implementation 'androidx.appcompat:appcompat:1.0.0' | ||||
|     implementation 'com.google.android.material:material:1.0.0' | ||||
|     implementation 'androidx.recyclerview:recyclerview:1.0.0' | ||||
|     implementation 'androidx.legacy:legacy-support-v4:1.0.0' | ||||
|     implementation 'androidx.vectordrawable:vectordrawable:1.0.0' | ||||
|     implementation 'androidx.browser:browser:1.0.0' | ||||
|     implementation 'androidx.cardview:cardview:1.0.0' | ||||
|     implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2' | ||||
|  | ||||
|     //multidex | ||||
|     implementation 'com.android.support:multidex:1.0.3' | ||||
|     implementation 'androidx.multidex:multidex:2.0.0' | ||||
|  | ||||
|     // Intro | ||||
|     implementation 'agency.tango.android:material-intro-screen:0.0.5' | ||||
| @@ -133,7 +133,7 @@ dependencies { | ||||
|     implementation 'com.github.stkent:amplify:2.1.0' | ||||
|  | ||||
|     // Drawer | ||||
|     implementation 'co.zsmb:materialdrawer-kt:1.3.7' | ||||
|     implementation 'co.zsmb:materialdrawer-kt:2.0.0' | ||||
|     implementation 'com.anupcowkur:reservoir:3.1.0' | ||||
|  | ||||
|     // Themes | ||||
| @@ -144,11 +144,11 @@ dependencies { | ||||
|     // Pager | ||||
|     implementation 'me.relex:circleindicator:1.2.2@aar' | ||||
|  | ||||
|     implementation 'androidx.core:core-ktx:0.3' | ||||
|     implementation 'androidx.core:core-ktx:1.0.0' | ||||
|  | ||||
|     // Crash | ||||
|     implementation 'ch.acra:acra-http:5.1.3' | ||||
|     implementation 'ch.acra:acra-dialog:5.1.3' | ||||
|     implementation 'ch.acra:acra-http:5.2.0' | ||||
|     implementation 'ch.acra:acra-dialog:5.2.0' | ||||
| } | ||||
|  | ||||
|  | ||||
|   | ||||
							
								
								
									
										2
									
								
								app/proguard-rules.pro
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								app/proguard-rules.pro
									
									
									
									
										vendored
									
									
								
							| @@ -75,4 +75,4 @@ | ||||
|  | ||||
| -dontwarn javax.annotation.** | ||||
|  | ||||
| -keep class android.support.v7.widget.SearchView { *; } | ||||
| -keep class androidx.appcompat.widget.SearchView { *; } | ||||
| @@ -2,27 +2,24 @@ package apps.amine.bou.readerforselfoss | ||||
|  | ||||
| import android.content.Context | ||||
| import android.content.Intent | ||||
| import android.support.test.InstrumentationRegistry | ||||
| import android.support.test.espresso.Espresso.onView | ||||
| import android.support.test.espresso.Espresso.openActionBarOverflowOrOptionsMenu | ||||
| import android.support.test.espresso.action.ViewActions.click | ||||
| import android.support.test.espresso.action.ViewActions.closeSoftKeyboard | ||||
| import android.support.test.espresso.action.ViewActions.pressBack | ||||
| import android.support.test.espresso.action.ViewActions.pressKey | ||||
| import android.support.test.espresso.action.ViewActions.typeText | ||||
| import android.support.test.espresso.assertion.ViewAssertions.matches | ||||
| import android.support.test.espresso.contrib.DrawerActions | ||||
| import android.support.test.espresso.intent.Intents | ||||
| import android.support.test.espresso.intent.Intents.intended | ||||
| import android.support.test.espresso.intent.Intents.times | ||||
| import android.support.test.espresso.intent.matcher.IntentMatchers.hasComponent | ||||
| import android.support.test.espresso.matcher.ViewMatchers.isDisplayed | ||||
| import android.support.test.espresso.matcher.ViewMatchers.isRoot | ||||
| import android.support.test.espresso.matcher.ViewMatchers.withContentDescription | ||||
| import android.support.test.espresso.matcher.ViewMatchers.withId | ||||
| import android.support.test.espresso.matcher.ViewMatchers.withText | ||||
| import android.support.test.rule.ActivityTestRule | ||||
| import android.support.test.runner.AndroidJUnit4 | ||||
| import androidx.test.InstrumentationRegistry | ||||
| import androidx.test.espresso.Espresso.onView | ||||
| import androidx.test.espresso.Espresso.openActionBarOverflowOrOptionsMenu | ||||
| import androidx.test.espresso.action.ViewActions.click | ||||
| import androidx.test.espresso.action.ViewActions.closeSoftKeyboard | ||||
| import androidx.test.espresso.action.ViewActions.pressKey | ||||
| import androidx.test.espresso.action.ViewActions.typeText | ||||
| import androidx.test.espresso.assertion.ViewAssertions.matches | ||||
| import androidx.test.espresso.intent.Intents | ||||
| import androidx.test.espresso.intent.Intents.intended | ||||
| import androidx.test.espresso.intent.Intents.times | ||||
| import androidx.test.espresso.intent.matcher.IntentMatchers.hasComponent | ||||
| import androidx.test.espresso.matcher.ViewMatchers.isDisplayed | ||||
| import androidx.test.espresso.matcher.ViewMatchers.withContentDescription | ||||
| import androidx.test.espresso.matcher.ViewMatchers.withId | ||||
| import androidx.test.espresso.matcher.ViewMatchers.withText | ||||
| import androidx.test.rule.ActivityTestRule | ||||
| import androidx.test.runner.AndroidJUnit4 | ||||
| import android.view.KeyEvent | ||||
| import apps.amine.bou.readerforselfoss.utils.Config | ||||
| import org.junit.After | ||||
|   | ||||
| @@ -2,19 +2,19 @@ package apps.amine.bou.readerforselfoss | ||||
|  | ||||
| import android.content.Context | ||||
| import android.content.Intent | ||||
| import android.support.test.InstrumentationRegistry.getInstrumentation | ||||
| import android.support.test.espresso.Espresso.onView | ||||
| import android.support.test.espresso.action.ViewActions.click | ||||
| import android.support.test.espresso.assertion.ViewAssertions.matches | ||||
| import android.support.test.espresso.intent.Intents | ||||
| import android.support.test.espresso.intent.Intents.intended | ||||
| import android.support.test.espresso.intent.Intents.times | ||||
| import android.support.test.espresso.intent.matcher.IntentMatchers.hasComponent | ||||
| import android.support.test.espresso.matcher.ViewMatchers.isDisplayed | ||||
| import android.support.test.espresso.matcher.ViewMatchers.withId | ||||
| import android.support.test.espresso.matcher.ViewMatchers.withText | ||||
| import android.support.test.rule.ActivityTestRule | ||||
| import android.support.test.runner.AndroidJUnit4 | ||||
| import androidx.test.InstrumentationRegistry.getInstrumentation | ||||
| import androidx.test.espresso.Espresso.onView | ||||
| import androidx.test.espresso.action.ViewActions.click | ||||
| import androidx.test.espresso.assertion.ViewAssertions.matches | ||||
| import androidx.test.espresso.intent.Intents | ||||
| import androidx.test.espresso.intent.Intents.intended | ||||
| import androidx.test.espresso.intent.Intents.times | ||||
| import androidx.test.espresso.intent.matcher.IntentMatchers.hasComponent | ||||
| import androidx.test.espresso.matcher.ViewMatchers.isDisplayed | ||||
| import androidx.test.espresso.matcher.ViewMatchers.withId | ||||
| import androidx.test.espresso.matcher.ViewMatchers.withText | ||||
| import androidx.test.rule.ActivityTestRule | ||||
| import androidx.test.runner.AndroidJUnit4 | ||||
| import apps.amine.bou.readerforselfoss.utils.Config | ||||
| import org.junit.After | ||||
| import org.junit.Before | ||||
|   | ||||
| @@ -2,25 +2,25 @@ package apps.amine.bou.readerforselfoss | ||||
|  | ||||
| import android.content.Context | ||||
| import android.content.Intent | ||||
| import android.support.test.InstrumentationRegistry | ||||
| import android.support.test.espresso.Espresso.onView | ||||
| import android.support.test.espresso.Espresso.openActionBarOverflowOrOptionsMenu | ||||
| import android.support.test.espresso.action.ViewActions.click | ||||
| import android.support.test.espresso.action.ViewActions.closeSoftKeyboard | ||||
| import android.support.test.espresso.action.ViewActions.pressBack | ||||
| import android.support.test.espresso.action.ViewActions.typeText | ||||
| import android.support.test.espresso.assertion.ViewAssertions.matches | ||||
| import android.support.test.espresso.intent.Intents | ||||
| import android.support.test.espresso.intent.Intents.intended | ||||
| import android.support.test.espresso.intent.Intents.times | ||||
| import android.support.test.espresso.intent.matcher.IntentMatchers.hasComponent | ||||
| import android.support.test.espresso.matcher.ViewMatchers | ||||
| import android.support.test.espresso.matcher.ViewMatchers.isRoot | ||||
| import android.support.test.espresso.matcher.ViewMatchers.withEffectiveVisibility | ||||
| import android.support.test.espresso.matcher.ViewMatchers.withId | ||||
| import android.support.test.espresso.matcher.ViewMatchers.withText | ||||
| import android.support.test.rule.ActivityTestRule | ||||
| import android.support.test.runner.AndroidJUnit4 | ||||
| import androidx.test.InstrumentationRegistry | ||||
| import androidx.test.espresso.Espresso.onView | ||||
| import androidx.test.espresso.Espresso.openActionBarOverflowOrOptionsMenu | ||||
| import androidx.test.espresso.action.ViewActions.click | ||||
| import androidx.test.espresso.action.ViewActions.closeSoftKeyboard | ||||
| import androidx.test.espresso.action.ViewActions.pressBack | ||||
| import androidx.test.espresso.action.ViewActions.typeText | ||||
| import androidx.test.espresso.assertion.ViewAssertions.matches | ||||
| import androidx.test.espresso.intent.Intents | ||||
| import androidx.test.espresso.intent.Intents.intended | ||||
| import androidx.test.espresso.intent.Intents.times | ||||
| import androidx.test.espresso.intent.matcher.IntentMatchers.hasComponent | ||||
| import androidx.test.espresso.matcher.ViewMatchers | ||||
| import androidx.test.espresso.matcher.ViewMatchers.isRoot | ||||
| import androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility | ||||
| import androidx.test.espresso.matcher.ViewMatchers.withId | ||||
| import androidx.test.espresso.matcher.ViewMatchers.withText | ||||
| import androidx.test.rule.ActivityTestRule | ||||
| import androidx.test.runner.AndroidJUnit4 | ||||
| import apps.amine.bou.readerforselfoss.utils.Config | ||||
| import com.mikepenz.aboutlibraries.ui.LibsActivity | ||||
| import org.junit.After | ||||
|   | ||||
| @@ -3,13 +3,13 @@ package apps.amine.bou.readerforselfoss | ||||
| import android.content.Intent | ||||
| import android.content.SharedPreferences | ||||
| import android.preference.PreferenceManager | ||||
| import android.support.test.InstrumentationRegistry.getInstrumentation | ||||
| import android.support.test.espresso.intent.Intents | ||||
| import android.support.test.espresso.intent.Intents.intended | ||||
| import android.support.test.espresso.intent.Intents.times | ||||
| import android.support.test.espresso.intent.matcher.IntentMatchers.hasComponent | ||||
| import android.support.test.rule.ActivityTestRule | ||||
| import android.support.test.runner.AndroidJUnit4 | ||||
| import androidx.test.InstrumentationRegistry.getInstrumentation | ||||
| import androidx.test.espresso.intent.Intents | ||||
| import androidx.test.espresso.intent.Intents.intended | ||||
| import androidx.test.espresso.intent.Intents.times | ||||
| import androidx.test.espresso.intent.matcher.IntentMatchers.hasComponent | ||||
| import androidx.test.rule.ActivityTestRule | ||||
| import androidx.test.runner.AndroidJUnit4 | ||||
| import org.junit.After | ||||
|  | ||||
| import org.junit.Before | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| package apps.amine.bou.readerforselfoss | ||||
|  | ||||
| import android.support.design.widget.TextInputLayout | ||||
| import android.support.test.espresso.matcher.ViewMatchers | ||||
| import com.google.android.material.textfield.TextInputLayout | ||||
| import androidx.test.espresso.matcher.ViewMatchers | ||||
| import android.view.View | ||||
| import org.hamcrest.Description | ||||
| import org.hamcrest.Matcher | ||||
|   | ||||
| @@ -4,8 +4,8 @@ import android.content.Intent | ||||
| import android.os.Build | ||||
| import android.os.Bundle | ||||
| import android.preference.PreferenceManager | ||||
| import android.support.constraint.ConstraintLayout | ||||
| import android.support.v7.app.AppCompatActivity | ||||
| import androidx.constraintlayout.widget.ConstraintLayout | ||||
| import androidx.appcompat.app.AppCompatActivity | ||||
| import android.view.View | ||||
| import android.widget.AdapterView | ||||
| import android.widget.ArrayAdapter | ||||
| @@ -22,13 +22,12 @@ import apps.amine.bou.readerforselfoss.themes.Toppings | ||||
| import apps.amine.bou.readerforselfoss.utils.Config | ||||
| import apps.amine.bou.readerforselfoss.utils.isBaseUrlValid | ||||
| import com.ftinc.scoop.Scoop | ||||
| import kotlinx.android.synthetic.main.activity_add_source.* | ||||
| import retrofit2.Call | ||||
| import retrofit2.Callback | ||||
| import retrofit2.Response | ||||
| import android.graphics.PorterDuff | ||||
|  | ||||
|  | ||||
| import androidx.appcompat.widget.Toolbar | ||||
| import kotlinx.android.synthetic.main.activity_add_source.* | ||||
|  | ||||
| class AddSourceActivity : AppCompatActivity() { | ||||
|  | ||||
|   | ||||
| @@ -9,16 +9,15 @@ import android.net.Uri | ||||
| import android.os.Build | ||||
| import android.os.Bundle | ||||
| import android.preference.PreferenceManager | ||||
| import android.support.v4.view.MenuItemCompat | ||||
| import android.support.v7.app.AlertDialog | ||||
| import android.support.v7.app.AppCompatActivity | ||||
| import android.support.v7.widget.DividerItemDecoration | ||||
| import android.support.v7.widget.GridLayoutManager | ||||
| import android.support.v7.widget.RecyclerView | ||||
| import android.support.v7.widget.SearchView | ||||
| import android.support.v7.widget.StaggeredGridLayoutManager | ||||
| import android.support.v7.widget.helper.ItemTouchHelper | ||||
| import android.util.Log | ||||
| import androidx.core.view.MenuItemCompat | ||||
| import androidx.appcompat.app.AlertDialog | ||||
| import androidx.appcompat.app.AppCompatActivity | ||||
| import androidx.recyclerview.widget.DividerItemDecoration | ||||
| import androidx.recyclerview.widget.GridLayoutManager | ||||
| import androidx.recyclerview.widget.RecyclerView | ||||
| import androidx.appcompat.widget.SearchView | ||||
| import androidx.recyclerview.widget.StaggeredGridLayoutManager | ||||
| import androidx.recyclerview.widget.ItemTouchHelper | ||||
| import android.view.Menu | ||||
| import android.view.MenuItem | ||||
| import android.view.View | ||||
| @@ -114,7 +113,7 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener { | ||||
|     private lateinit var appColors: AppColors | ||||
|     private var offset: Int = 0 | ||||
|     private var firstVisible: Int = 0 | ||||
|     private lateinit var recyclerViewScrollListener: RecyclerView.OnScrollListener | ||||
|     private var recyclerViewScrollListener: RecyclerView.OnScrollListener? = null | ||||
|     private lateinit var settings: SharedPreferences | ||||
|  | ||||
|     private var recyclerAdapter: RecyclerView.Adapter<*>? = null | ||||
| @@ -805,27 +804,31 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener { | ||||
|     } | ||||
|  | ||||
|     private fun handleInfiniteScroll() { | ||||
|         recyclerViewScrollListener = object : RecyclerView.OnScrollListener() { | ||||
|             override fun onScrolled(localRecycler: RecyclerView, dx: Int, dy: Int) { | ||||
|                 if (localRecycler != null && dy > 0) { | ||||
|                     val manager = recyclerView.layoutManager | ||||
|                     val lastVisibleItem: Int = when (manager) { | ||||
|                         is StaggeredGridLayoutManager -> manager.findLastCompletelyVisibleItemPositions( | ||||
|                             null | ||||
|                         ).last() | ||||
|                         is GridLayoutManager -> manager.findLastCompletelyVisibleItemPosition() | ||||
|                         else -> 0 | ||||
|                     } | ||||
|         if (recyclerViewScrollListener == null) { | ||||
|             recyclerViewScrollListener = object : RecyclerView.OnScrollListener() { | ||||
|                 override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { | ||||
|                     if (recyclerView != null && dy > 0) { | ||||
|                         val manager = recyclerView.layoutManager | ||||
|                         val lastVisibleItem: Int = when (manager) { | ||||
|                             is StaggeredGridLayoutManager -> manager.findLastCompletelyVisibleItemPositions( | ||||
|                                 null | ||||
|                             ).last() | ||||
|                             is GridLayoutManager -> manager.findLastCompletelyVisibleItemPosition() | ||||
|                             else -> 0 | ||||
|                         } | ||||
|  | ||||
|                     if (lastVisibleItem == (items.size - 1) && items.size < maxItemNumber()) { | ||||
|                         getElementsAccordingToTab(appendResults = true) | ||||
|                         if (lastVisibleItem == (items.size - 1) && items.size < maxItemNumber()) { | ||||
|                             getElementsAccordingToTab(appendResults = true) | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         recyclerView.clearOnScrollListeners() | ||||
|         recyclerView.addOnScrollListener(recyclerViewScrollListener) | ||||
|         if (recyclerViewScrollListener != null) { | ||||
|             recyclerView.addOnScrollListener(recyclerViewScrollListener!!) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private fun mayBeEmpty() = | ||||
|   | ||||
| @@ -7,8 +7,8 @@ import android.content.Intent | ||||
| import android.net.Uri | ||||
| import android.os.Bundle | ||||
| import android.preference.PreferenceManager | ||||
| import android.support.v7.app.AppCompatDelegate | ||||
| import android.view.View | ||||
| import androidx.appcompat.app.AppCompatDelegate | ||||
|  | ||||
| class IntroActivity : MaterialIntroActivity() { | ||||
|  | ||||
|   | ||||
| @@ -6,8 +6,8 @@ import android.content.Context | ||||
| import android.content.Intent | ||||
| import android.content.SharedPreferences | ||||
| import android.os.Bundle | ||||
| import android.support.v7.app.AlertDialog | ||||
| import android.support.v7.app.AppCompatActivity | ||||
| import androidx.appcompat.app.AlertDialog | ||||
| import androidx.appcompat.app.AppCompatActivity | ||||
| import android.text.TextUtils | ||||
| import android.view.Menu | ||||
| import android.view.MenuItem | ||||
| @@ -112,9 +112,8 @@ class LoginActivity : AppCompatActivity() { | ||||
|             alertDialog.setMessage(getString(R.string.base_url_error)) | ||||
|             alertDialog.setButton( | ||||
|                 AlertDialog.BUTTON_NEUTRAL, | ||||
|                 "OK", | ||||
|                 { dialog, _ -> dialog.dismiss() } | ||||
|             ) | ||||
|                 "OK" | ||||
|             ) { dialog, _ -> dialog.dismiss() } | ||||
|             alertDialog.show() | ||||
|         } | ||||
|     } | ||||
| @@ -155,9 +154,8 @@ class LoginActivity : AppCompatActivity() { | ||||
|                 alertDialog.setMessage(getString(R.string.text_wrong_url)) | ||||
|                 alertDialog.setButton( | ||||
|                     AlertDialog.BUTTON_NEUTRAL, | ||||
|                     "OK", | ||||
|                     { dialog, _ -> dialog.dismiss() } | ||||
|                 ) | ||||
|                     "OK" | ||||
|                 ) { dialog, _ -> dialog.dismiss() } | ||||
|                 alertDialog.show() | ||||
|                 inValidCount = 0 | ||||
|             } | ||||
|   | ||||
| @@ -3,7 +3,7 @@ package apps.amine.bou.readerforselfoss | ||||
| import android.content.Intent | ||||
| import android.os.Bundle | ||||
| import android.preference.PreferenceManager | ||||
| import android.support.v7.app.AppCompatActivity | ||||
| import androidx.appcompat.app.AppCompatActivity | ||||
|  | ||||
| class MainActivity : AppCompatActivity() { | ||||
|  | ||||
|   | ||||
| @@ -5,8 +5,8 @@ import android.content.SharedPreferences | ||||
| import android.graphics.drawable.Drawable | ||||
| import android.net.Uri | ||||
| import android.preference.PreferenceManager | ||||
| import android.support.multidex.MultiDexApplication | ||||
| import android.widget.ImageView | ||||
| import androidx.multidex.MultiDexApplication | ||||
| import apps.amine.bou.readerforselfoss.utils.Config | ||||
| import com.anupcowkur.reservoir.Reservoir | ||||
| import com.bumptech.glide.Glide | ||||
|   | ||||
| @@ -4,11 +4,11 @@ import android.graphics.drawable.ColorDrawable | ||||
| import android.os.Build | ||||
| import android.os.Bundle | ||||
| import android.preference.PreferenceManager | ||||
| import android.support.v4.app.FragmentManager | ||||
| import android.support.v4.app.FragmentStatePagerAdapter | ||||
| import android.support.v4.content.ContextCompat | ||||
| import android.support.v4.view.ViewPager | ||||
| import android.support.v7.app.AppCompatActivity | ||||
| import androidx.fragment.app.FragmentManager | ||||
| import androidx.fragment.app.FragmentStatePagerAdapter | ||||
| import androidx.core.content.ContextCompat | ||||
| import androidx.viewpager.widget.ViewPager | ||||
| import androidx.appcompat.app.AppCompatActivity | ||||
| import android.view.Menu | ||||
| import android.view.MenuItem | ||||
| import android.view.ViewGroup | ||||
| @@ -101,7 +101,8 @@ class ReaderActivity : AppCompatActivity() { | ||||
|         notifyAdapter() | ||||
|  | ||||
|         pager.setPageTransformer(true, DepthPageTransformer()) | ||||
|         (indicator as CircleIndicator).setViewPager(pager) | ||||
|         // TODO: add back the page indicator | ||||
|         // (indicator as CircleIndicator).setViewPager(pager as android.support.v4.view.ViewPager) | ||||
|  | ||||
|         pager.addOnPageChangeListener( | ||||
|             object : ViewPager.SimpleOnPageChangeListener() { | ||||
|   | ||||
| @@ -5,9 +5,9 @@ import android.content.res.ColorStateList | ||||
| import android.os.Build | ||||
| import android.os.Bundle | ||||
| import android.preference.PreferenceManager | ||||
| import android.support.v7.app.AppCompatActivity | ||||
| import android.support.v7.widget.LinearLayoutManager | ||||
| import androidx.appcompat.app.AppCompatActivity | ||||
| import android.widget.Toast | ||||
| import androidx.recyclerview.widget.LinearLayoutManager | ||||
| import apps.amine.bou.readerforselfoss.adapters.SourcesListAdapter | ||||
| import apps.amine.bou.readerforselfoss.api.selfoss.SelfossApi | ||||
| import apps.amine.bou.readerforselfoss.api.selfoss.Sources | ||||
|   | ||||
| @@ -2,8 +2,8 @@ package apps.amine.bou.readerforselfoss.adapters | ||||
|  | ||||
| import android.app.Activity | ||||
| import android.content.Context | ||||
| import android.support.v7.widget.CardView | ||||
| import android.support.v7.widget.RecyclerView | ||||
| import androidx.cardview.widget.CardView | ||||
| import androidx.recyclerview.widget.RecyclerView | ||||
| import android.text.Html | ||||
| import android.view.LayoutInflater | ||||
| import android.view.View | ||||
|   | ||||
| @@ -2,8 +2,8 @@ package apps.amine.bou.readerforselfoss.adapters | ||||
|  | ||||
| import android.app.Activity | ||||
| import android.content.Context | ||||
| import android.support.constraint.ConstraintLayout | ||||
| import android.support.v7.widget.RecyclerView | ||||
| import androidx.constraintlayout.widget.ConstraintLayout | ||||
| import androidx.recyclerview.widget.RecyclerView | ||||
| import android.text.Html | ||||
| import android.util.TypedValue | ||||
| import android.view.LayoutInflater | ||||
|   | ||||
| @@ -2,8 +2,7 @@ package apps.amine.bou.readerforselfoss.adapters | ||||
|  | ||||
| import android.app.Activity | ||||
| import android.graphics.Color | ||||
| import android.support.design.widget.Snackbar | ||||
| import android.support.v7.widget.RecyclerView | ||||
| import androidx.recyclerview.widget.RecyclerView | ||||
| import android.widget.TextView | ||||
| import android.widget.Toast | ||||
| import apps.amine.bou.readerforselfoss.R | ||||
| @@ -13,6 +12,7 @@ import apps.amine.bou.readerforselfoss.api.selfoss.SuccessResponse | ||||
| import apps.amine.bou.readerforselfoss.themes.AppColors | ||||
| import apps.amine.bou.readerforselfoss.utils.maybeHandleSilentException | ||||
| import apps.amine.bou.readerforselfoss.utils.succeeded | ||||
| import com.google.android.material.snackbar.Snackbar | ||||
| import org.acra.ACRA | ||||
| import retrofit2.Call | ||||
| import retrofit2.Callback | ||||
| @@ -62,7 +62,7 @@ abstract class ItemsAdapter<VH : RecyclerView.ViewHolder?> : RecyclerView.Adapte | ||||
|             } | ||||
|  | ||||
|         val view = s.view | ||||
|         val tv: TextView = view.findViewById(android.support.design.R.id.snackbar_text) | ||||
|         val tv: TextView = view.findViewById(com.google.android.material.R.id.snackbar_text) | ||||
|         tv.setTextColor(Color.WHITE) | ||||
|         s.show() | ||||
|     } | ||||
|   | ||||
| @@ -2,8 +2,8 @@ package apps.amine.bou.readerforselfoss.adapters | ||||
|  | ||||
| import android.app.Activity | ||||
| import android.content.Context | ||||
| import android.support.constraint.ConstraintLayout | ||||
| import android.support.v7.widget.RecyclerView | ||||
| import androidx.constraintlayout.widget.ConstraintLayout | ||||
| import androidx.recyclerview.widget.RecyclerView | ||||
| import android.view.LayoutInflater | ||||
| import android.view.ViewGroup | ||||
| import android.widget.Button | ||||
|   | ||||
| @@ -1,17 +1,20 @@ | ||||
| package apps.amine.bou.readerforselfoss.fragments | ||||
|  | ||||
| import android.content.Context | ||||
| import android.content.Intent | ||||
| import android.content.SharedPreferences | ||||
| import android.content.res.ColorStateList | ||||
| import android.graphics.drawable.ColorDrawable | ||||
| import android.net.Uri | ||||
| 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.content.ContextCompat | ||||
| import android.support.v4.widget.NestedScrollView | ||||
| import androidx.browser.customtabs.CustomTabsIntent | ||||
| import com.google.android.material.floatingactionbutton.FloatingActionButton | ||||
| import androidx.fragment.app.Fragment | ||||
| import androidx.core.content.ContextCompat | ||||
| import androidx.core.widget.NestedScrollView | ||||
| import androidx.appcompat.app.AlertDialog | ||||
| import android.view.LayoutInflater | ||||
| import android.view.MenuItem | ||||
| import android.view.View | ||||
| @@ -55,6 +58,7 @@ class ArticleFragment : Fragment() { | ||||
|     private lateinit var contentSource: String | ||||
|     private lateinit var contentImage: String | ||||
|     private lateinit var contentTitle: String | ||||
|     private var showMalformedUrl: Boolean = false | ||||
|     private lateinit var editor: SharedPreferences.Editor | ||||
|     private lateinit var fab: FloatingActionButton | ||||
|     private lateinit var appColors: AppColors | ||||
| @@ -93,6 +97,7 @@ class ArticleFragment : Fragment() { | ||||
|         val prefs = PreferenceManager.getDefaultSharedPreferences(activity) | ||||
|         editor = prefs.edit() | ||||
|         fontSize = prefs.getString("reader_font_size", "14").toInt() | ||||
|         showMalformedUrl = prefs.getBoolean("show_error_malformed_url", true) | ||||
|  | ||||
|         val settings = activity!!.getSharedPreferences(Config.settingsName, Context.MODE_PRIVATE) | ||||
|         val debugReadingItems = prefs.getBoolean("read_debug", false) | ||||
| @@ -228,13 +233,7 @@ class ArticleFragment : Fragment() { | ||||
|                         if (response.body() != null && response.body()!!.content != null && !response.body()!!.content.isNullOrEmpty()) { | ||||
|                             try { | ||||
|                                 rootView.titleView.text = response.body()!!.title | ||||
|                                 try { | ||||
|                                     // Note: Mercury may return relative urls... If it does the url val will not be changed. | ||||
|                                     URL(response.body()!!.url) | ||||
|                                     url = response.body()!!.url | ||||
|                                 } catch (e: MalformedURLException) { | ||||
|                                     ACRA.getErrorReporter().maybeHandleSilentException(e, activity!!) | ||||
|                                 } | ||||
|                                 url = response.body()!!.url | ||||
|                             } catch (e: Exception) { | ||||
|                                 if (context != null) { | ||||
|                                     ACRA.getErrorReporter().maybeHandleSilentException(e, context!!) | ||||
| @@ -363,46 +362,73 @@ class ArticleFragment : Fragment() { | ||||
|             val itemUrl = URL(url) | ||||
|             baseUrl = itemUrl.protocol + "://" + itemUrl.host | ||||
|         } catch (e: MalformedURLException) { | ||||
|             ACRA.getErrorReporter().maybeHandleSilentException(e, activity!!) | ||||
|             if (showMalformedUrl && context != null) { | ||||
|                 val alertDialog = AlertDialog.Builder(context!!).create() | ||||
|                 alertDialog.setTitle("Error") | ||||
|                 alertDialog.setMessage("You are encountering a bug that I can't solve. Can you please contact me to solve the issue, please ?") | ||||
|                 alertDialog.setButton( | ||||
|                     AlertDialog.BUTTON_POSITIVE, | ||||
|                     "Send mail" | ||||
|                 ) { dialog, _ -> | ||||
|  | ||||
|                     // This won't be translated because it should only be temporary. | ||||
|                     val to = Config.feedbackEmail | ||||
|                     val subject= "[ReaderForSelfoss MalformedURLException]" | ||||
|                     val body= "Please specify the source, item and spout you are using for the url below : \n ${e.message}" | ||||
|                     val mailTo = "mailto:" + to + "?&subject=" + Uri.encode(subject) + "&body=" + Uri.encode(body) | ||||
|  | ||||
|                     val emailIntent = Intent(Intent.ACTION_VIEW) | ||||
|                     emailIntent.data = Uri.parse(mailTo) | ||||
|                     startActivity(emailIntent) | ||||
|  | ||||
|                     dialog.dismiss() | ||||
|                 } | ||||
|                 alertDialog.setButton( | ||||
|                     AlertDialog.BUTTON_NEUTRAL, | ||||
|                     "Not now" | ||||
|                 ) { dialog, _ -> dialog.dismiss() } | ||||
|                 alertDialog.setButton( | ||||
|                     AlertDialog.BUTTON_NEGATIVE, | ||||
|                     "Don't show anymore." | ||||
|                 ) { dialog, _ -> | ||||
|                     editor.putBoolean("show_error_malformed_url", false) | ||||
|                     editor.apply() | ||||
|                     dialog.dismiss() | ||||
|                 } | ||||
|                 alertDialog.show() | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         rootView.webcontent.loadDataWithBaseURL( | ||||
|             baseUrl, | ||||
|             """<html> | ||||
|                 |<head> | ||||
|                 |   <style> | ||||
|                 |      img { | ||||
|                 |        display: inline-block; | ||||
|                 |        height: auto; | ||||
|                 |        width: 100%; | ||||
|                 |        max-width: 100%; | ||||
|                 |      } | ||||
|                 |      a { | ||||
|                 |        color: $stringColor !important; | ||||
|                 |      } | ||||
|                 |      *:not(a) { | ||||
|                 |        color: $stringTextColor; | ||||
|                 |      } | ||||
|                 |      * { | ||||
|                 |        font-size: ${fontSize.toPx}px; | ||||
|                 |        text-align: justify; | ||||
|                 |        word-break: break-word; | ||||
|                 |        overflow:hidden; | ||||
|                 |      } | ||||
|                 |      a, pre, code { | ||||
|                 |        text-align: left; | ||||
|                 |      } | ||||
|                 |      pre, code { | ||||
|                 |        white-space: pre-wrap; | ||||
|                 |        width:100%; | ||||
|                 |        background-color: $stringBackgroundColor; | ||||
|                 |      } | ||||
|                 |   </style> | ||||
|                 |</head> | ||||
|                 |<body> | ||||
|                 |   $c | ||||
|                 |</body>""".trimMargin(), | ||||
|             "text/html", | ||||
|             """<style> | ||||
|                 |img { | ||||
|                 |  display: inline-block; | ||||
|                 |  height: auto; | ||||
|                 |  width: 100%; | ||||
|                 |  max-width: 100%; | ||||
|                 |} | ||||
|                 |a { | ||||
|                 |  color: $stringColor !important; | ||||
|                 |} | ||||
|                 |*:not(a) { | ||||
|                 |  color: $stringTextColor; | ||||
|                 |} | ||||
|                 |* { | ||||
|                 |  font-size: ${fontSize.toPx}px; | ||||
|                 |  text-align: justify; | ||||
|                 |  word-break: break-word; | ||||
|                 |  overflow:hidden; | ||||
|                 |} | ||||
|                 |a, pre, code { | ||||
|                 |  text-align: left; | ||||
|                 |} | ||||
|                 |pre, code { | ||||
|                 |  white-space: pre-wrap; | ||||
|                 |  width:100%; | ||||
|                 |  background-color: $stringBackgroundColor; | ||||
|                 |}</style>$c""".trimMargin(), | ||||
|             "text/html; charset=utf-8", | ||||
|             "utf-8", | ||||
|             null | ||||
|         ) | ||||
|   | ||||
| @@ -4,13 +4,12 @@ import android.content.res.Configuration; | ||||
| import android.os.Build; | ||||
| import android.os.Bundle; | ||||
| import android.preference.PreferenceActivity; | ||||
| import android.support.annotation.LayoutRes; | ||||
| import android.support.annotation.NonNull; | ||||
| import android.support.annotation.Nullable; | ||||
| import android.support.design.widget.AppBarLayout; | ||||
| import android.support.v7.app.ActionBar; | ||||
| import android.support.v7.app.AppCompatDelegate; | ||||
| import android.support.v7.widget.Toolbar; | ||||
| import androidx.annotation.LayoutRes; | ||||
| import androidx.annotation.NonNull; | ||||
| import androidx.annotation.Nullable; | ||||
| import androidx.appcompat.app.ActionBar; | ||||
| import androidx.appcompat.app.AppCompatDelegate; | ||||
| import androidx.appcompat.widget.Toolbar; | ||||
| import android.view.LayoutInflater; | ||||
| import android.view.MenuInflater; | ||||
| import android.view.View; | ||||
| @@ -18,6 +17,7 @@ import android.view.ViewGroup; | ||||
| import android.widget.LinearLayout; | ||||
|  | ||||
| import com.ftinc.scoop.Scoop; | ||||
| import com.google.android.material.appbar.AppBarLayout; | ||||
|  | ||||
| import apps.amine.bou.readerforselfoss.R; | ||||
| import apps.amine.bou.readerforselfoss.themes.AppColors; | ||||
|   | ||||
| @@ -19,7 +19,7 @@ import android.preference.PreferenceActivity; | ||||
| import android.preference.PreferenceFragment; | ||||
| import android.preference.PreferenceManager; | ||||
| import android.preference.SwitchPreference; | ||||
| import android.support.v7.app.ActionBar; | ||||
| import androidx.appcompat.app.ActionBar; | ||||
| import android.text.Editable; | ||||
| import android.text.InputFilter; | ||||
| import android.text.Spanned; | ||||
| @@ -31,7 +31,6 @@ import android.widget.Toast; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| import apps.amine.bou.readerforselfoss.BuildConfig; | ||||
| import apps.amine.bou.readerforselfoss.R; | ||||
| import apps.amine.bou.readerforselfoss.themes.AppColors; | ||||
| import apps.amine.bou.readerforselfoss.utils.Config; | ||||
|   | ||||
| @@ -3,12 +3,9 @@ package apps.amine.bou.readerforselfoss.themes | ||||
| import android.app.Activity | ||||
| import android.content.Context | ||||
| import android.preference.PreferenceManager | ||||
| import android.support.annotation.ColorInt | ||||
| import android.support.v7.view.ContextThemeWrapper | ||||
| import android.util.TypedValue | ||||
| import androidx.annotation.ColorInt | ||||
| import apps.amine.bou.readerforselfoss.R | ||||
| import android.view.LayoutInflater | ||||
| import android.view.ViewGroup | ||||
|  | ||||
| class AppColors(a: Activity) { | ||||
|  | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| package apps.amine.bou.readerforselfoss.transformers | ||||
|  | ||||
| import android.support.v4.view.ViewPager | ||||
| import androidx.viewpager.widget.ViewPager | ||||
| import android.view.View | ||||
|  | ||||
| class DepthPageTransformer : ViewPager.PageTransformer { | ||||
|   | ||||
| @@ -6,7 +6,7 @@ import android.content.Context | ||||
| import android.content.Intent | ||||
| import android.graphics.BitmapFactory | ||||
| import android.net.Uri | ||||
| import android.support.customtabs.CustomTabsIntent | ||||
| import androidx.browser.customtabs.CustomTabsIntent | ||||
| import android.util.Patterns | ||||
| import android.widget.Toast | ||||
| import apps.amine.bou.readerforselfoss.R | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| package apps.amine.bou.readerforselfoss.utils | ||||
|  | ||||
| import android.content.Context | ||||
| import android.support.design.widget.CoordinatorLayout | ||||
| import android.support.design.widget.FloatingActionButton | ||||
| import androidx.coordinatorlayout.widget.CoordinatorLayout | ||||
| import com.google.android.material.floatingactionbutton.FloatingActionButton | ||||
| import android.util.AttributeSet | ||||
| import android.view.View | ||||
|  | ||||
|   | ||||
| @@ -4,10 +4,10 @@ package apps.amine.bou.readerforselfoss.utils.customtabs; | ||||
| import android.app.Activity; | ||||
| import android.net.Uri; | ||||
| import android.os.Bundle; | ||||
| import android.support.customtabs.CustomTabsClient; | ||||
| import android.support.customtabs.CustomTabsIntent; | ||||
| import android.support.customtabs.CustomTabsServiceConnection; | ||||
| import android.support.customtabs.CustomTabsSession; | ||||
| import androidx.browser.customtabs.CustomTabsClient; | ||||
| import androidx.browser.customtabs.CustomTabsIntent; | ||||
| import androidx.browser.customtabs.CustomTabsServiceConnection; | ||||
| import androidx.browser.customtabs.CustomTabsSession; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
|   | ||||
| @@ -7,7 +7,7 @@ import android.content.IntentFilter; | ||||
| import android.content.pm.PackageManager; | ||||
| import android.content.pm.ResolveInfo; | ||||
| import android.net.Uri; | ||||
| import android.support.customtabs.CustomTabsService; | ||||
| import androidx.browser.customtabs.CustomTabsService; | ||||
| import android.text.TextUtils; | ||||
| import android.util.Log; | ||||
|  | ||||
| @@ -24,7 +24,7 @@ class CustomTabsHelper { | ||||
|     private static final String DEV_PACKAGE = "com.chrome.dev"; | ||||
|     private static final String LOCAL_PACKAGE = "com.google.android.apps.chrome"; | ||||
|     private static final String EXTRA_CUSTOM_TABS_KEEP_ALIVE = | ||||
|             "android.support.customtabs.extra.KEEP_ALIVE"; | ||||
|             "androidx.browser.customtabs.extra.KEEP_ALIVE"; | ||||
|  | ||||
|     private static String sPackageNameToUse; | ||||
|  | ||||
|   | ||||
| @@ -2,8 +2,8 @@ package apps.amine.bou.readerforselfoss.utils.customtabs; | ||||
|  | ||||
|  | ||||
| import android.content.ComponentName; | ||||
| import android.support.customtabs.CustomTabsClient; | ||||
| import android.support.customtabs.CustomTabsServiceConnection; | ||||
| import androidx.browser.customtabs.CustomTabsClient; | ||||
| import androidx.browser.customtabs.CustomTabsServiceConnection; | ||||
|  | ||||
| import java.lang.ref.WeakReference; | ||||
|  | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| package apps.amine.bou.readerforselfoss.utils.customtabs; | ||||
|  | ||||
|  | ||||
| import android.support.customtabs.CustomTabsClient; | ||||
| import androidx.browser.customtabs.CustomTabsClient; | ||||
|  | ||||
|  | ||||
| public interface ServiceConnectionCallback { | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| /* From https://github.com/mikepenz/MaterialDrawer/blob/develop/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/CustomBaseViewHolder.java */ | ||||
| package apps.amine.bou.readerforselfoss.utils.drawer | ||||
|  | ||||
| import android.support.v7.widget.RecyclerView | ||||
| import androidx.recyclerview.widget.RecyclerView | ||||
| import android.view.View | ||||
| import android.widget.ImageView | ||||
| import android.widget.TextView | ||||
|   | ||||
| @@ -2,10 +2,10 @@ | ||||
| package apps.amine.bou.readerforselfoss.utils.drawer | ||||
|  | ||||
| import android.net.Uri | ||||
| import android.support.annotation.ColorInt | ||||
| import android.support.annotation.ColorRes | ||||
| import android.support.annotation.StringRes | ||||
| import android.support.v7.widget.RecyclerView | ||||
| import androidx.annotation.ColorInt | ||||
| import androidx.annotation.ColorRes | ||||
| import androidx.annotation.StringRes | ||||
| import androidx.recyclerview.widget.RecyclerView | ||||
|  | ||||
| import com.mikepenz.materialdrawer.holder.ColorHolder | ||||
| import com.mikepenz.materialdrawer.holder.ImageHolder | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| /* From https://github.com/mikepenz/MaterialDrawer/blob/develop/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/CustomUrlPrimaryDrawerItem.java */ | ||||
| package apps.amine.bou.readerforselfoss.utils.drawer | ||||
|  | ||||
| import android.support.annotation.LayoutRes | ||||
| import android.support.annotation.StringRes | ||||
| import androidx.annotation.LayoutRes | ||||
| import androidx.annotation.StringRes | ||||
| import android.view.View | ||||
| import android.widget.TextView | ||||
| import apps.amine.bou.readerforselfoss.R | ||||
|   | ||||
| @@ -2,7 +2,7 @@ package apps.amine.bou.readerforselfoss.utils.glide | ||||
|  | ||||
| import android.content.Context | ||||
| import android.graphics.Bitmap | ||||
| import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory | ||||
| import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory | ||||
| import android.widget.ImageView | ||||
| import com.bumptech.glide.Glide | ||||
| import com.bumptech.glide.request.RequestOptions | ||||
|   | ||||
| @@ -10,22 +10,22 @@ | ||||
|         android:layout_height="match_parent" | ||||
|         android:orientation="vertical"> | ||||
|  | ||||
|         <android.support.design.widget.AppBarLayout | ||||
|         <com.google.android.material.appbar.AppBarLayout | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content"> | ||||
|  | ||||
|             <android.support.v7.widget.Toolbar | ||||
|             <androidx.appcompat.widget.Toolbar | ||||
|                 android:id="@+id/toolbar" | ||||
|                 android:layout_width="match_parent" | ||||
|                 android:layout_height="?attr/actionBarSize" | ||||
|                 app:theme="@style/ToolBarStyle" | ||||
|                 app:popupTheme="?attr/toolbarPopupTheme" /> | ||||
|  | ||||
|         </android.support.design.widget.AppBarLayout> | ||||
|         </com.google.android.material.appbar.AppBarLayout> | ||||
|  | ||||
|  | ||||
|  | ||||
|         <android.support.constraint.ConstraintLayout | ||||
|         <androidx.constraintlayout.widget.ConstraintLayout | ||||
|             android:paddingBottom="@dimen/activity_vertical_margin" | ||||
|             android:paddingLeft="@dimen/activity_horizontal_margin" | ||||
|             android:paddingRight="@dimen/activity_horizontal_margin" | ||||
| @@ -121,7 +121,7 @@ | ||||
|                 android:layout_marginBottom="16dp" | ||||
|                 app:layout_constraintVertical_bias="0.0"/> | ||||
|  | ||||
|         </android.support.constraint.ConstraintLayout> | ||||
|         </androidx.constraintlayout.widget.ConstraintLayout> | ||||
|  | ||||
|         <ProgressBar | ||||
|             android:id="@+id/progress" | ||||
|   | ||||
| @@ -30,13 +30,13 @@ | ||||
|         app:prompt_view_background_color="?attr/colorAccent" | ||||
|         app:prompt_view_thanks_display_time_ms="2000"/> | ||||
|  | ||||
|     <android.support.design.widget.CoordinatorLayout | ||||
|     <androidx.coordinatorlayout.widget.CoordinatorLayout | ||||
|         android:id="@+id/coordLayout" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="match_parent" | ||||
|         android:layout_below="@id/promptView"> | ||||
|  | ||||
|         <android.support.design.widget.CoordinatorLayout | ||||
|         <androidx.coordinatorlayout.widget.CoordinatorLayout | ||||
|             android:id="@+id/intern_coordLayout" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="match_parent"> | ||||
| @@ -46,18 +46,18 @@ | ||||
|                 android:layout_height="match_parent" | ||||
|                 android:orientation="vertical"> | ||||
|  | ||||
|                 <android.support.design.widget.AppBarLayout | ||||
|                 <com.google.android.material.appbar.AppBarLayout | ||||
|                     android:layout_width="match_parent" | ||||
|                     android:layout_height="wrap_content"> | ||||
|  | ||||
|                     <android.support.v7.widget.Toolbar | ||||
|                     <androidx.appcompat.widget.Toolbar | ||||
|                         android:id="@+id/toolBar" | ||||
|                         android:layout_width="match_parent" | ||||
|                         android:layout_height="?attr/actionBarSize" | ||||
|                         app:theme="@style/ToolBarStyle" | ||||
|                         app:popupTheme="?attr/toolbarPopupTheme" /> | ||||
|  | ||||
|                 </android.support.design.widget.AppBarLayout> | ||||
|                 </com.google.android.material.appbar.AppBarLayout> | ||||
|  | ||||
|                 <FrameLayout | ||||
|                     android:id="@+id/drawer_layout" | ||||
| @@ -66,7 +66,7 @@ | ||||
|                     android:layout_width="match_parent" | ||||
|                     android:layout_height="match_parent"> | ||||
|  | ||||
|                     <android.support.v4.widget.SwipeRefreshLayout | ||||
|                     <androidx.swiperefreshlayout.widget.SwipeRefreshLayout | ||||
|                         android:id="@+id/swipeRefreshLayout" | ||||
|                         android:layout_width="match_parent" | ||||
|                         android:layout_height="match_parent"> | ||||
| @@ -89,7 +89,7 @@ | ||||
|                                 android:background="@color/transparent" | ||||
|                                 android:visibility="gone" /> | ||||
|  | ||||
|                             <android.support.v7.widget.RecyclerView | ||||
|                             <androidx.recyclerview.widget.RecyclerView | ||||
|                                 android:id="@+id/recyclerView" | ||||
|                                 android:layout_width="match_parent" | ||||
|                                 android:layout_height="wrap_content" | ||||
| @@ -100,16 +100,16 @@ | ||||
|                                 app:layout_behavior="@string/appbar_scrolling_view_behavior" /> | ||||
|                         </LinearLayout> | ||||
|  | ||||
|                     </android.support.v4.widget.SwipeRefreshLayout> | ||||
|                     </androidx.swiperefreshlayout.widget.SwipeRefreshLayout> | ||||
|  | ||||
|                 </FrameLayout> | ||||
|             </LinearLayout> | ||||
|  | ||||
|         </android.support.design.widget.CoordinatorLayout> | ||||
|         </androidx.coordinatorlayout.widget.CoordinatorLayout> | ||||
|         <com.ashokvarma.bottomnavigation.BottomNavigationBar | ||||
|             android:layout_gravity="bottom" | ||||
|             android:id="@+id/bottomBar" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="60dp"/> | ||||
|     </android.support.design.widget.CoordinatorLayout> | ||||
|     </androidx.coordinatorlayout.widget.CoordinatorLayout> | ||||
| </RelativeLayout> | ||||
| @@ -6,18 +6,18 @@ | ||||
|     android:gravity="center_horizontal" | ||||
|     android:orientation="vertical" | ||||
|     tools:context="apps.amine.bou.readerforselfoss.LoginActivity"> | ||||
|     <android.support.design.widget.AppBarLayout | ||||
|     <com.google.android.material.appbar.AppBarLayout | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content"> | ||||
|  | ||||
|         <android.support.v7.widget.Toolbar | ||||
|         <androidx.appcompat.widget.Toolbar | ||||
|             android:id="@+id/toolbar" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="?attr/actionBarSize" | ||||
|             app:theme="@style/ToolBarStyle" | ||||
|             app:popupTheme="?attr/toolbarPopupTheme" /> | ||||
|  | ||||
|     </android.support.design.widget.AppBarLayout> | ||||
|     </com.google.android.material.appbar.AppBarLayout> | ||||
|     <LinearLayout | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="match_parent" | ||||
| @@ -45,7 +45,7 @@ | ||||
|                 android:layout_height="wrap_content" | ||||
|                 android:orientation="vertical"> | ||||
|  | ||||
|                 <android.support.design.widget.TextInputLayout | ||||
|                 <com.google.android.material.textfield.TextInputLayout | ||||
|                     android:layout_width="match_parent" | ||||
|                     android:layout_height="wrap_content" | ||||
|                     android:id="@+id/urlLayout" | ||||
| @@ -60,7 +60,7 @@ | ||||
|                         android:inputType="textUri" | ||||
|                         android:maxLines="1" /> | ||||
|  | ||||
|                 </android.support.design.widget.TextInputLayout> | ||||
|                 </com.google.android.material.textfield.TextInputLayout> | ||||
|  | ||||
|                 <Switch | ||||
|                     android:text="@string/withLoginSwitch" | ||||
| @@ -69,7 +69,7 @@ | ||||
|                     android:id="@+id/withLogin" | ||||
|                     android:layout_weight="1"/> | ||||
|  | ||||
|                 <android.support.design.widget.TextInputLayout | ||||
|                 <com.google.android.material.textfield.TextInputLayout | ||||
|                     android:id="@+id/loginLayout" | ||||
|                     android:layout_width="match_parent" | ||||
|                     android:layout_height="wrap_content" | ||||
| @@ -83,9 +83,9 @@ | ||||
|                         android:inputType="text" | ||||
|                         android:maxLines="1" /> | ||||
|  | ||||
|                 </android.support.design.widget.TextInputLayout> | ||||
|                 </com.google.android.material.textfield.TextInputLayout> | ||||
|  | ||||
|                 <android.support.design.widget.TextInputLayout | ||||
|                 <com.google.android.material.textfield.TextInputLayout | ||||
|                     android:id="@+id/passwordLayout" | ||||
|                     android:layout_width="match_parent" | ||||
|                     android:layout_height="wrap_content" | ||||
| @@ -99,7 +99,7 @@ | ||||
|                         android:inputType="textPassword" | ||||
|                         android:maxLines="1" /> | ||||
|  | ||||
|                 </android.support.design.widget.TextInputLayout> | ||||
|                 </com.google.android.material.textfield.TextInputLayout> | ||||
|  | ||||
|                 <Switch | ||||
|                     android:id="@+id/withHttpLogin" | ||||
| @@ -108,7 +108,7 @@ | ||||
|                     android:layout_weight="1" | ||||
|                     android:text="@string/withHttpLoginSwitch" /> | ||||
|  | ||||
|                 <android.support.design.widget.TextInputLayout | ||||
|                 <com.google.android.material.textfield.TextInputLayout | ||||
|                     android:id="@+id/httpLoginInput" | ||||
|                     android:layout_width="match_parent" | ||||
|                     android:layout_height="match_parent" | ||||
| @@ -120,9 +120,9 @@ | ||||
|                         android:layout_width="match_parent" | ||||
|                         android:layout_height="wrap_content" | ||||
|                         android:hint="@string/prompt_http_login" /> | ||||
|                 </android.support.design.widget.TextInputLayout> | ||||
|                 </com.google.android.material.textfield.TextInputLayout> | ||||
|  | ||||
|                 <android.support.design.widget.TextInputLayout | ||||
|                 <com.google.android.material.textfield.TextInputLayout | ||||
|                     android:id="@+id/httpPasswordInput" | ||||
|                     android:layout_width="match_parent" | ||||
|                     android:layout_height="match_parent" | ||||
| @@ -134,7 +134,7 @@ | ||||
|                         android:layout_height="wrap_content" | ||||
|                         android:hint="@string/prompt_http_password" | ||||
|                         android:inputType="textPassword" /> | ||||
|                 </android.support.design.widget.TextInputLayout> | ||||
|                 </com.google.android.material.textfield.TextInputLayout> | ||||
|  | ||||
|                 <Switch | ||||
|                     android:id="@+id/withSelfhostedCert" | ||||
|   | ||||
| @@ -1,9 +1,9 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <android.support.constraint.ConstraintLayout | ||||
| <androidx.constraintlayout.widget.ConstraintLayout | ||||
|     xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     xmlns:tools="http://schemas.android.com/tools" | ||||
|     android:layout_width="match_parent" | ||||
|     android:layout_height="match_parent" | ||||
|     tools:context="apps.amine.bou.readerforselfoss.MainActivity"> | ||||
|  | ||||
| </android.support.constraint.ConstraintLayout> | ||||
| </androidx.constraintlayout.widget.ConstraintLayout> | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||||
| <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     xmlns:app="http://schemas.android.com/apk/res-auto" | ||||
|     android:layout_width="match_parent" | ||||
|     android:layout_height="match_parent"> | ||||
|  | ||||
|     <android.support.design.widget.AppBarLayout | ||||
|     <com.google.android.material.appbar.AppBarLayout | ||||
|         android:id="@+id/appBarLayout" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content" | ||||
| @@ -12,16 +12,16 @@ | ||||
|         app:layout_constraintStart_toStartOf="parent" | ||||
|         app:layout_constraintTop_toTopOf="parent"> | ||||
|  | ||||
|         <android.support.v7.widget.Toolbar | ||||
|         <androidx.appcompat.widget.Toolbar | ||||
|             android:id="@+id/toolBar" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="?attr/actionBarSize" | ||||
|             app:popupTheme="?attr/toolbarPopupTheme" | ||||
|             app:theme="@style/ToolBarStyle" /> | ||||
|  | ||||
|     </android.support.design.widget.AppBarLayout> | ||||
|     </com.google.android.material.appbar.AppBarLayout> | ||||
|  | ||||
|     <android.support.v4.view.ViewPager | ||||
|     <androidx.viewpager.widget.ViewPager | ||||
|         android:id="@+id/pager" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="0dp" | ||||
| @@ -41,4 +41,4 @@ | ||||
|         app:layout_constraintLeft_toLeftOf="parent" | ||||
|         app:layout_constraintRight_toRightOf="parent" | ||||
|         app:layout_constraintTop_toTopOf="@+id/pager" /> | ||||
| </android.support.constraint.ConstraintLayout> | ||||
| </androidx.constraintlayout.widget.ConstraintLayout> | ||||
|   | ||||
| @@ -1,33 +1,33 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
|  | ||||
| <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||||
| <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     xmlns:tools="http://schemas.android.com/tools" | ||||
|     xmlns:app="http://schemas.android.com/apk/res-auto" | ||||
|     android:layout_width="match_parent" | ||||
|     android:layout_height="match_parent" | ||||
|     tools:context="apps.amine.bou.readerforselfoss.SourcesActivity"> | ||||
|     <android.support.design.widget.AppBarLayout | ||||
|     <com.google.android.material.appbar.AppBarLayout | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content"> | ||||
|  | ||||
|         <android.support.v7.widget.Toolbar | ||||
|         <androidx.appcompat.widget.Toolbar | ||||
|             android:id="@+id/toolbar" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="?attr/actionBarSize" | ||||
|             app:theme="@style/ToolBarStyle" | ||||
|             app:popupTheme="?attr/toolbarPopupTheme" /> | ||||
|  | ||||
|     </android.support.design.widget.AppBarLayout> | ||||
|     </com.google.android.material.appbar.AppBarLayout> | ||||
|  | ||||
|     <android.support.v7.widget.RecyclerView | ||||
|     <androidx.recyclerview.widget.RecyclerView | ||||
|         android:id="@+id/recyclerView" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="match_parent" | ||||
|         android:scrollbars="vertical" | ||||
|         app:layout_behavior="@string/appbar_scrolling_view_behavior"> | ||||
|     </android.support.v7.widget.RecyclerView> | ||||
|     </androidx.recyclerview.widget.RecyclerView> | ||||
|  | ||||
|     <android.support.design.widget.FloatingActionButton | ||||
|     <com.google.android.material.floatingactionbutton.FloatingActionButton | ||||
|         android:id="@+id/fab" | ||||
|         android:layout_width="wrap_content" | ||||
|         android:layout_height="wrap_content" | ||||
| @@ -42,4 +42,4 @@ | ||||
|         android:layout_marginEnd="16dp" | ||||
|         android:layout_marginRight="16dp" | ||||
|         app:layout_behavior="apps.amine.bou.readerforselfoss.utils.ScrollAwareFABBehavior" /> | ||||
| </android.support.design.widget.CoordinatorLayout> | ||||
| </androidx.coordinatorlayout.widget.CoordinatorLayout> | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <android.support.v7.widget.CardView | ||||
| <androidx.appcompat.widget.CardView | ||||
|     xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     xmlns:app="http://schemas.android.com/apk/res-auto" | ||||
|     xmlns:card_view="http://schemas.android.com/apk/res-auto" | ||||
| @@ -18,7 +18,7 @@ | ||||
|     card_view:cardUseCompatPadding="true" | ||||
|     card_view:layout_constraintBottom_toBottomOf="parent"> | ||||
|  | ||||
|     <android.support.constraint.ConstraintLayout | ||||
|     <androidx.constraintlayout.widget.ConstraintLayout | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content"> | ||||
|  | ||||
| @@ -34,7 +34,7 @@ | ||||
|             app:srcCompat="@drawable/background_splash" | ||||
|             card_view:layout_constraintBottom_toTopOf="@+id/constraintLayout" /> | ||||
|  | ||||
|         <android.support.constraint.ConstraintLayout | ||||
|         <androidx.constraintlayout.widget.ConstraintLayout | ||||
|             android:id="@+id/constraintLayout" | ||||
|             android:layout_width="0dp" | ||||
|             android:layout_height="wrap_content" | ||||
| @@ -143,7 +143,7 @@ | ||||
|  | ||||
|             </RelativeLayout> | ||||
|  | ||||
|         </android.support.constraint.ConstraintLayout> | ||||
|     </android.support.constraint.ConstraintLayout> | ||||
|         </androidx.constraintlayout.widget.ConstraintLayout> | ||||
|     </androidx.constraintlayout.widget.ConstraintLayout> | ||||
|  | ||||
| </android.support.v7.widget.CardView> | ||||
| </androidx.appcompat.widget.CardView> | ||||
| @@ -1,4 +1,4 @@ | ||||
| <android.support.design.widget.CoordinatorLayout | ||||
| <androidx.coordinatorlayout.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" | ||||
| @@ -6,12 +6,12 @@ | ||||
|     android:layout_height="match_parent" | ||||
|     android:descendantFocusability="blocksDescendants"> | ||||
|  | ||||
|     <android.support.v4.widget.NestedScrollView | ||||
|     <androidx.core.widget.NestedScrollView | ||||
|         android:id="@+id/nestedScrollView" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="match_parent"> | ||||
|  | ||||
|         <android.support.constraint.ConstraintLayout | ||||
|         <androidx.constraintlayout.widget.ConstraintLayout | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="match_parent"> | ||||
|  | ||||
| @@ -70,9 +70,9 @@ | ||||
|                 app:layout_constraintTop_toBottomOf="@+id/source" | ||||
|                 tools:visibility="visible" /> | ||||
|  | ||||
|         </android.support.constraint.ConstraintLayout> | ||||
|         </androidx.constraintlayout.widget.ConstraintLayout> | ||||
|  | ||||
|     </android.support.v4.widget.NestedScrollView> | ||||
|     </androidx.core.widget.NestedScrollView> | ||||
|  | ||||
|     <FrameLayout | ||||
|         android:layout_width="match_parent" | ||||
| @@ -89,7 +89,7 @@ | ||||
|             android:layout_gravity="bottom" | ||||
|             app:floatingMenu="@menu/reader_toolbar" /> | ||||
|  | ||||
|         <android.support.design.widget.FloatingActionButton | ||||
|         <com.google.android.material.floatingactionbutton.FloatingActionButton | ||||
|             android:id="@+id/fab" | ||||
|             android:layout_width="wrap_content" | ||||
|             android:layout_height="wrap_content" | ||||
| @@ -123,4 +123,4 @@ | ||||
|             android:progressTint="?attr/colorAccent" /> | ||||
|     </FrameLayout> | ||||
|  | ||||
| </android.support.design.widget.CoordinatorLayout> | ||||
| </androidx.coordinatorlayout.widget.CoordinatorLayout> | ||||
| @@ -1,5 +1,5 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||||
| <androidx.constraintlayout.widget.ConstraintLayout 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" | ||||
| @@ -115,4 +115,4 @@ | ||||
|  | ||||
|     </RelativeLayout> | ||||
|  | ||||
| </android.support.constraint.ConstraintLayout> | ||||
| </androidx.constraintlayout.widget.ConstraintLayout> | ||||
| @@ -1,15 +1,15 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <android.support.design.widget.AppBarLayout | ||||
| <com.google.android.material.appbar.AppBarLayout | ||||
|     xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     android:layout_width="match_parent" | ||||
|     android:layout_height="wrap_content" | ||||
|     xmlns:app="http://schemas.android.com/apk/res-auto"> | ||||
|  | ||||
|     <android.support.v7.widget.Toolbar | ||||
|     <androidx.appcompat.widget.Toolbar | ||||
|         android:id="@+id/toolbar" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="?attr/actionBarSize" | ||||
|         app:theme="@style/ToolBarStyle" | ||||
|         app:popupTheme="?attr/toolbarPopupTheme" /> | ||||
|  | ||||
| </android.support.design.widget.AppBarLayout> | ||||
| </com.google.android.material.appbar.AppBarLayout> | ||||
| @@ -1,5 +1,5 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <android.support.constraint.ConstraintLayout | ||||
| <androidx.constraintlayout.widget.ConstraintLayout | ||||
|     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" | ||||
| @@ -52,4 +52,4 @@ | ||||
|         android:layout_width="34dp" | ||||
|         android:layout_height="34dp"/> | ||||
|  | ||||
| </android.support.constraint.ConstraintLayout> | ||||
| </androidx.constraintlayout.widget.ConstraintLayout> | ||||
| @@ -6,7 +6,7 @@ | ||||
|         android:title="@string/menu_home_search" | ||||
|         android:icon="@drawable/ic_action_search" | ||||
|         app:showAsAction="ifRoom|collapseActionView" | ||||
|         app:actionViewClass="android.support.v7.widget.SearchView" /> | ||||
|         app:actionViewClass="androidx.appcompat.widget.SearchView" /> | ||||
|  | ||||
|     <item android:id="@+id/readAll" | ||||
|           android:icon="@drawable/ic_done_all_white_24dp" | ||||
|   | ||||
| @@ -1,53 +1,53 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <!--Generated by crowdin.com--> | ||||
| <resources xmlns:tools="http://schemas.android.com/tools"> | ||||
|   <string name="app_name">"Lettore RSS per Selfoss"</string> | ||||
|   <string name="title_activity_login">"Accedi"</string> | ||||
|   <string name="app_name">"Reader for Selfoss"</string> | ||||
|   <string name="title_activity_login">"Log in"</string> | ||||
|   <string name="prompt_password">"Password"</string> | ||||
|   <string name="prompt_http_password">"Password HTTP"</string> | ||||
|   <string name="action_sign_in">"Vai"</string> | ||||
|   <string name="error_invalid_password">"La password non è sufficientemente lunga"</string> | ||||
|   <string name="error_field_required">"Campo obbligatorio"</string> | ||||
|   <string name="prompt_url">"URL"</string> | ||||
|   <string name="withLoginSwitch">"È richiesto l'accesso?"</string> | ||||
|   <string name="withHttpLoginSwitch">"Accesso HTTP necessario?"</string> | ||||
|   <string name="login_url_problem">"Oops. Potrebbe essere necessario aggiungere un \"/\" alla fine dell'url."</string> | ||||
|   <string name="prompt_login">"Nome utente"</string> | ||||
|   <string name="prompt_http_login">"Nome utente HTTP"</string> | ||||
|   <string name="label_share">"Condividi"</string> | ||||
|   <string name="readAll">"Segna tutte come lette"</string> | ||||
|   <string name="action_disconnect">"Scollegati"</string> | ||||
|   <string name="title_activity_settings">"Impostazioni"</string> | ||||
|   <string name="pref_header_general">"Generali"</string> | ||||
|   <string name="pref_switch_actions_tap_title">"Tap sugli articoli"</string> | ||||
|   <string name="prompt_http_password">"HTTP Password"</string> | ||||
|   <string name="action_sign_in">"Go"</string> | ||||
|   <string name="error_invalid_password">"Password not long enough"</string> | ||||
|   <string name="error_field_required">"Field required"</string> | ||||
|   <string name="prompt_url">"Url"</string> | ||||
|   <string name="withLoginSwitch">"Login required ?"</string> | ||||
|   <string name="withHttpLoginSwitch">"HTTP Login required ?"</string> | ||||
|   <string name="login_url_problem">"Oops. You may need to add a \"/\" at the end of the url."</string> | ||||
|   <string name="prompt_login">"Username"</string> | ||||
|   <string name="prompt_http_login">"HTTP Username"</string> | ||||
|   <string name="label_share">"Share"</string> | ||||
|   <string name="readAll">"Read all"</string> | ||||
|   <string name="action_disconnect">"Disconnect"</string> | ||||
|   <string name="title_activity_settings">"Settings"</string> | ||||
|   <string name="pref_header_general">"General"</string> | ||||
|   <string name="pref_switch_actions_tap_title">"Tap action on the articles"</string> | ||||
|   <string name="add_source_hint_tags">"Tag1, Tag2, Tag3"</string> | ||||
|   <string name="add_source_hint_url">"Link"</string> | ||||
|   <string name="add_source_hint_name">"Nome"</string> | ||||
|   <string name="add_source">"Aggiungi una fonte"</string> | ||||
|   <string name="add_source_save">"Salva"</string> | ||||
|   <string name="wrong_infos">"Controlla nuovamente i dati."</string> | ||||
|   <string name="add_source_hint_name">"Name"</string> | ||||
|   <string name="add_source">"Add a source"</string> | ||||
|   <string name="add_source_save">"Save"</string> | ||||
|   <string name="wrong_infos">"Check your details again."</string> | ||||
|   <string name="all_posts_not_read">"All posts weren't read"</string> | ||||
|   <string name="all_posts_read">"Tutti i messaggi sono stati letti"</string> | ||||
|   <string name="cant_get_favs">"Non è possibile ottenere i preferiti"</string> | ||||
|   <string name="cant_get_new_elements">"Non è possibile ottenere nuovi articoli"</string> | ||||
|   <string name="all_posts_read">"All posts were read"</string> | ||||
|   <string name="cant_get_favs">"Can't get favorites"</string> | ||||
|   <string name="cant_get_new_elements">"Can't get new articles"</string> | ||||
|   <string name="cant_get_read">"Can't get read articles"</string> | ||||
|   <string name="nothing_here">"Non c'è niente qui"</string> | ||||
|   <string name="tab_new">"Nuovi"</string> | ||||
|   <string name="tab_read">"Tutti"</string> | ||||
|   <string name="tab_favs">"Preferiti"</string> | ||||
|   <string name="action_about">"Informazioni"</string> | ||||
|   <string name="marked_as_read">"Articolo letto"</string> | ||||
|   <string name="undo_string">"Annulla"</string> | ||||
|   <string name="addStringNoUrl">"Autenticati per aggiungere fonti."</string> | ||||
|   <string name="nothing_here">"Nothing here"</string> | ||||
|   <string name="tab_new">"New"</string> | ||||
|   <string name="tab_read">"All"</string> | ||||
|   <string name="tab_favs">"Favorites"</string> | ||||
|   <string name="action_about">"About"</string> | ||||
|   <string name="marked_as_read">"Item read"</string> | ||||
|   <string name="undo_string">"Undo"</string> | ||||
|   <string name="addStringNoUrl">"Log in to add sources."</string> | ||||
|   <string name="cant_get_sources">"Can't get sources list."</string> | ||||
|   <string name="cant_create_source">"Can't create source."</string> | ||||
|   <string name="cant_get_spouts">"Can't get spouts list."</string> | ||||
|   <string name="form_not_complete">"Il modulo non è completo"</string> | ||||
|   <string name="form_not_complete">"The form is not complete"</string> | ||||
|   <string name="pref_header_links">"Links"</string> | ||||
|   <string name="issue_tracker_link">"Traccia problemi"</string> | ||||
|   <string name="issue_tracker_summary">"Segnalare un bug o richiedere una nuova funzionalità"</string> | ||||
|   <string name="warning_wrong_url">"ATTENZIONE"</string> | ||||
|   <string name="pref_switch_card_view_title">"Visualizzazione a schede"</string> | ||||
|   <string name="issue_tracker_link">"Issue Tracker"</string> | ||||
|   <string name="issue_tracker_summary">"Report a bug or ask for a new feature"</string> | ||||
|   <string name="warning_wrong_url">"WARNING"</string> | ||||
|   <string name="pref_switch_card_view_title">"Card View"</string> | ||||
|   <string name="cant_mark_favortie">"Can't mark article as favorite"</string> | ||||
|   <string name="cant_unmark_favortie">"Can't remove item from favorite"</string> | ||||
|   <string name="share">"Share"</string> | ||||
| @@ -92,32 +92,32 @@ | ||||
|   <string name="intro_hello_title">"Hi there !"</string> | ||||
|   <string name="intro_hello_message">"Thanks for downloading the app !"</string> | ||||
|   <string name="intro_needs_selfoss_title">"Before you start…"</string> | ||||
|   <string name="intro_needs_selfoss_message">"Non è possibile utilizzare l'app senza un'istanza di Selfoss."</string> | ||||
|   <string name="intro_needs_selfoss_link">"Che cosa è Selfoss?"</string> | ||||
|   <string name="intro_all_set_title">"Tutto pronto!"</string> | ||||
|   <string name="intro_needs_selfoss_message">"You can't use the app without a Selfoss instance."</string> | ||||
|   <string name="intro_needs_selfoss_link">"What is Selfoss ?"</string> | ||||
|   <string name="intro_all_set_title">"All set !"</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="card_height_title">Schede a piena altezza</string> | ||||
|   <string name="card_height_title">Full height cards</string> | ||||
|   <string name="card_height_on">Cards height will adjust to its content</string> | ||||
|   <string name="card_height_off">Card height will be fixed</string> | ||||
|   <string name="source_code">Codice sorgente</string> | ||||
|   <string name="cant_mark_read">Impossibile contrassegnare l\'articolo come già letto</string> | ||||
|   <string name="drawer_error_loading_tags">Errore nel caricamento dei tag…</string> | ||||
|   <string name="drawer_error_loading_sources">Errore nel caricamento delle fonti…</string> | ||||
|   <string name="drawer_item_filters">Filtri</string> | ||||
|   <string name="drawer_action_clear">cancella</string> | ||||
|   <string name="source_code">Source code</string> | ||||
|   <string name="cant_mark_read">Can\'t mark article as read</string> | ||||
|   <string name="drawer_error_loading_tags">Error loading tags…</string> | ||||
|   <string name="drawer_error_loading_sources">Error loading sources…</string> | ||||
|   <string name="drawer_item_filters">Filters</string> | ||||
|   <string name="drawer_action_clear">clear</string> | ||||
|   <string name="drawer_item_tags">Tags</string> | ||||
|   <string name="drawer_item_sources">Fonti</string> | ||||
|   <string name="drawer_action_edit">modifica</string> | ||||
|   <string name="drawer_item_sources">Sources</string> | ||||
|   <string name="drawer_action_edit">edit</string> | ||||
|   <string name="cache_drawer_error" tools:keep="@string/cache_drawer_error">Couldn\'t cache your drawer data</string> | ||||
|   <string name="no_tags_loaded">Nessun tag caricato</string> | ||||
|   <string name="no_tags_loaded">No tags loaded</string> | ||||
|   <string name="no_sources_loaded">No sources loaded</string> | ||||
|   <string name="drawer_loading">Caricamento…</string> | ||||
|   <string name="menu_home_search">Cerca</string> | ||||
|   <string name="can_delete_source">Non è possibile eliminare la fonte…</string> | ||||
|   <string name="drawer_loading">Loading …</string> | ||||
|   <string name="menu_home_search">Search</string> | ||||
|   <string name="can_delete_source">Can\'t delete the source…</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="pref_header_theme">Temi</string> | ||||
|   <string name="default_theme">Predefinito</string> | ||||
|   <string name="default_dark_theme">Predefinito (Scuro)</string> | ||||
|   <string name="pref_header_theme">Themes</string> | ||||
|   <string name="default_theme">Default</string> | ||||
|   <string name="default_dark_theme">Default/Dark</string> | ||||
|   <string name="pref_header_debug">Debug</string> | ||||
|   <string name="login_debug_title">Activate to log login errors</string> | ||||
|   <string name="login_debug_on">Any error on the login page will be logged</string> | ||||
| @@ -125,9 +125,9 @@ | ||||
|   <string name="login_menu_debug">Debug</string> | ||||
|   <string name="self_hosted_cert_switch">Using a self hosted certificate ?</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="pref_selfoss_category">Api di Selfoss</string> | ||||
|   <string name="pref_api_items_number_title">Numero di elementi caricati</string> | ||||
|   <string name="pref_hidden_tags">Tag nascosti</string> | ||||
|   <string name="pref_selfoss_category">Selfoss Api</string> | ||||
|   <string name="pref_api_items_number_title">Loaded items number</string> | ||||
|   <string name="pref_hidden_tags">Hidden Tags</string> | ||||
|   <string name="read_debug_title">Read articles appearing as unread ?</string> | ||||
|   <string name="read_debug_off">No log when marking an item as read</string> | ||||
|   <string name="read_debug_on">Api calls will be logged when marking an article as read</string> | ||||
| @@ -139,9 +139,9 @@ | ||||
|   <string name="login_everything_on">This will log every api call for debug purpose.</string> | ||||
|   <string name="login_everything_off">No api call will be logged</string> | ||||
|   <string name="pref_general_infinite_loading_title">Load more articles on scroll</string> | ||||
|   <string name="translation">Traduzioni</string> | ||||
|   <string name="translation">Translation</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="drawer_report_bug">Segnala un bug</string> | ||||
|   <string name="drawer_report_bug">Report a bug</string> | ||||
|   <string name="items_number_should_be_number">The items number should be an integer.</string> | ||||
|   <string name="reader_action_more">Read more</string> | ||||
|   <string name="reader_action_open">Open in browser</string> | ||||
| @@ -168,5 +168,5 @@ | ||||
|   <string name="pref_debug_debug_logs">Debug logging (these will be sent without a dialog)</string> | ||||
|   <string name="acra_login">Enable logging</string> | ||||
|   <string name="drawer_item_hidden_tags">Hidden Tags</string> | ||||
|   <string name="unmark">Segna come non letto</string> | ||||
|   <string name="unmark">Mark item as unread</string> | ||||
| </resources> | ||||
|   | ||||
| @@ -2,61 +2,61 @@ | ||||
| <!--Generated by crowdin.com--> | ||||
| <resources xmlns:tools="http://schemas.android.com/tools"> | ||||
|   <string name="app_name">"Reader for Selfoss"</string> | ||||
|   <string name="title_activity_login">"로그인"</string> | ||||
|   <string name="prompt_password">"비밀번호"</string> | ||||
|   <string name="prompt_http_password">"HTTP 암호"</string> | ||||
|   <string name="title_activity_login">"Log in"</string> | ||||
|   <string name="prompt_password">"Password"</string> | ||||
|   <string name="prompt_http_password">"HTTP Password"</string> | ||||
|   <string name="action_sign_in">"Go"</string> | ||||
|   <string name="error_invalid_password">"패스워드가 짧습니다."</string> | ||||
|   <string name="error_field_required">"필수 항목"</string> | ||||
|   <string name="error_invalid_password">"Password not long enough"</string> | ||||
|   <string name="error_field_required">"Field required"</string> | ||||
|   <string name="prompt_url">"Url"</string> | ||||
|   <string name="withLoginSwitch">"로그인이 필요합니까?"</string> | ||||
|   <string name="withHttpLoginSwitch">"HTTP 로그인이 필요 합니까?"</string> | ||||
|   <string name="login_url_problem">"죄송합니다. Url의 끝에 \"/\"를 추가할 필요가 있습니다."</string> | ||||
|   <string name="prompt_login">"사용자 이름"</string> | ||||
|   <string name="prompt_http_login">"HTTP 사용자 이름"</string> | ||||
|   <string name="label_share">"공유"</string> | ||||
|   <string name="readAll">"모두 읽기"</string> | ||||
|   <string name="action_disconnect">"연결 해제"</string> | ||||
|   <string name="title_activity_settings">"설정"</string> | ||||
|   <string name="pref_header_general">"일반"</string> | ||||
|   <string name="pref_switch_actions_tap_title">"기사에 탭 액션"</string> | ||||
|   <string name="add_source_hint_tags">"태그1, 태그2, 태그3"</string> | ||||
|   <string name="add_source_hint_url">"링크"</string> | ||||
|   <string name="add_source_hint_name">"이름"</string> | ||||
|   <string name="add_source">"소스 추가"</string> | ||||
|   <string name="add_source_save">"저장"</string> | ||||
|   <string name="wrong_infos">"세부 정보를 다시 확인하세요."</string> | ||||
|   <string name="all_posts_not_read">"모든 게시물을 읽지 않았습니다."</string> | ||||
|   <string name="all_posts_read">"모든 게시물을 읽었습니다."</string> | ||||
|   <string name="cant_get_favs">"즐겨찾기를 가져올 수 없습니다."</string> | ||||
|   <string name="cant_get_new_elements">"새로운 기사를 가져올 수 없습니다."</string> | ||||
|   <string name="cant_get_read">"읽은 기사를 가져올 수 없습니다."</string> | ||||
|   <string name="nothing_here">"비어있음"</string> | ||||
|   <string name="tab_new">"새로운"</string> | ||||
|   <string name="tab_read">"전체"</string> | ||||
|   <string name="tab_favs">"즐겨찾기"</string> | ||||
|   <string name="action_about">"정보"</string> | ||||
|   <string name="marked_as_read">"항목 읽기"</string> | ||||
|   <string name="undo_string">"실행 취소"</string> | ||||
|   <string name="addStringNoUrl">"로그인 소스를 추가 해야 합니다."</string> | ||||
|   <string name="cant_get_sources">"소스 리스트를 얻을 수 없습니다."</string> | ||||
|   <string name="cant_create_source">"소스를 만들 수 없습니다."</string> | ||||
|   <string name="cant_get_spouts">"Spouts 목록을 가져올 수 없습니다."</string> | ||||
|   <string name="form_not_complete">"양식이 완료되지 않았습니다."</string> | ||||
|   <string name="pref_header_links">"링크"</string> | ||||
|   <string name="issue_tracker_link">"이슈 트래커"</string> | ||||
|   <string name="issue_tracker_summary">"버그를 보고 하거나 새기능에 대해 요청하세요."</string> | ||||
|   <string name="warning_wrong_url">"경고"</string> | ||||
|   <string name="pref_switch_card_view_title">"카드 형식 보기"</string> | ||||
|   <string name="cant_mark_favortie">"좋아하는 문서를 마크할 수 없습니다."</string> | ||||
|   <string name="cant_unmark_favortie">"좋아하는 항목에서 제거할 수 없습니다."</string> | ||||
|   <string name="share">"공유"</string> | ||||
|   <string name="rating_prompt_title">"이 앱에 만족하십니까?"</string> | ||||
|   <string name="rating_prompt_yes">"예!"</string> | ||||
|   <string name="rating_prompt_no">"설마..."</string> | ||||
|   <string name="rating_prompt_feedback_title">"이유를 우리에게 말해줄 수 있습니까?"</string> | ||||
|   <string name="rating_prompt_feedback_yes">"OK!"</string> | ||||
|   <string name="rating_prompt_feedback_no">"나중에"</string> | ||||
|   <string name="withLoginSwitch">"Login required ?"</string> | ||||
|   <string name="withHttpLoginSwitch">"HTTP Login required ?"</string> | ||||
|   <string name="login_url_problem">"Oops. You may need to add a \"/\" at the end of the url."</string> | ||||
|   <string name="prompt_login">"Username"</string> | ||||
|   <string name="prompt_http_login">"HTTP Username"</string> | ||||
|   <string name="label_share">"Share"</string> | ||||
|   <string name="readAll">"Read all"</string> | ||||
|   <string name="action_disconnect">"Disconnect"</string> | ||||
|   <string name="title_activity_settings">"Settings"</string> | ||||
|   <string name="pref_header_general">"General"</string> | ||||
|   <string name="pref_switch_actions_tap_title">"Tap action on the articles"</string> | ||||
|   <string name="add_source_hint_tags">"Tag1, Tag2, Tag3"</string> | ||||
|   <string name="add_source_hint_url">"Link"</string> | ||||
|   <string name="add_source_hint_name">"Name"</string> | ||||
|   <string name="add_source">"Add a source"</string> | ||||
|   <string name="add_source_save">"Save"</string> | ||||
|   <string name="wrong_infos">"Check your details again."</string> | ||||
|   <string name="all_posts_not_read">"All posts weren't read"</string> | ||||
|   <string name="all_posts_read">"All posts were read"</string> | ||||
|   <string name="cant_get_favs">"Can't get favorites"</string> | ||||
|   <string name="cant_get_new_elements">"Can't get new articles"</string> | ||||
|   <string name="cant_get_read">"Can't get read articles"</string> | ||||
|   <string name="nothing_here">"Nothing here"</string> | ||||
|   <string name="tab_new">"New"</string> | ||||
|   <string name="tab_read">"All"</string> | ||||
|   <string name="tab_favs">"Favorites"</string> | ||||
|   <string name="action_about">"About"</string> | ||||
|   <string name="marked_as_read">"Item read"</string> | ||||
|   <string name="undo_string">"Undo"</string> | ||||
|   <string name="addStringNoUrl">"Log in to add sources."</string> | ||||
|   <string name="cant_get_sources">"Can't get sources list."</string> | ||||
|   <string name="cant_create_source">"Can't create source."</string> | ||||
|   <string name="cant_get_spouts">"Can't get spouts list."</string> | ||||
|   <string name="form_not_complete">"The form is not complete"</string> | ||||
|   <string name="pref_header_links">"Links"</string> | ||||
|   <string name="issue_tracker_link">"Issue Tracker"</string> | ||||
|   <string name="issue_tracker_summary">"Report a bug or ask for a new feature"</string> | ||||
|   <string name="warning_wrong_url">"WARNING"</string> | ||||
|   <string name="pref_switch_card_view_title">"Card View"</string> | ||||
|   <string name="cant_mark_favortie">"Can't mark article as favorite"</string> | ||||
|   <string name="cant_unmark_favortie">"Can't remove item from favorite"</string> | ||||
|   <string name="share">"Share"</string> | ||||
|   <string name="rating_prompt_title">"Enjoying the app ?"</string> | ||||
|   <string name="rating_prompt_yes">"Yes !"</string> | ||||
|   <string name="rating_prompt_no">"Not really …"</string> | ||||
|   <string name="rating_prompt_feedback_title">"Can you tell us why ?"</string> | ||||
|   <string name="rating_prompt_feedback_yes">"OK !"</string> | ||||
|   <string name="rating_prompt_feedback_no">"Not now."</string> | ||||
|   <string name="rating_prompt_rating_title">"Great ! Can you rate us on the Store ?"</string> | ||||
|   <string name="rating_prompt_rating_yes">"Sure !"</string> | ||||
|   <string name="rating_prompt_rating_no">"Not right now."</string> | ||||
|   | ||||
| @@ -3,7 +3,6 @@ | ||||
| buildscript { | ||||
|     ext { | ||||
|         kotlin_version = '1.2.51' | ||||
|         android_version = '28.0.0' | ||||
|     } | ||||
|     repositories { | ||||
|         jcenter() | ||||
|   | ||||
| @@ -16,4 +16,6 @@ org.gradle.jvmargs=-Xmx1536m | ||||
| # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects | ||||
| # org.gradle.parallel=true | ||||
| org.gradle.caching=true | ||||
| android.enableD8=true | ||||
| android.enableD8=true | ||||
| android.useAndroidX=true | ||||
| android.enableJetifier=true | ||||
							
								
								
									
										2
									
								
								gradle/wrapper/gradle-wrapper.properties
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								gradle/wrapper/gradle-wrapper.properties
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| #Tue Sep 25 20:41:54 CEST 2018 | ||||
| #Mon Sep 24 20:50:58 CEST 2018 | ||||
| distributionBase=GRADLE_USER_HOME | ||||
| distributionPath=wrapper/dists | ||||
| zipStoreBase=GRADLE_USER_HOME | ||||
|   | ||||
		Reference in New Issue
	
	Block a user