Working themes. Needs some cleaning. Closes #37 .

This commit is contained in:
Amine 2017-07-02 17:12:02 +02:00
parent b8105bb6fb
commit f8f710df99
34 changed files with 804 additions and 510 deletions

View File

@ -115,7 +115,7 @@ dependencies {
compile 'com.burgstaller:okhttp-digest:1.12' compile 'com.burgstaller:okhttp-digest:1.12'
// Material-ish things // Material-ish things
compile 'com.roughike:bottom-bar:2.3.1' compile 'com.ashokvarma.android:bottom-navigation-bar:2.0.1'
compile 'com.melnykov:floatingactionbutton:1.3.0' compile 'com.melnykov:floatingactionbutton:1.3.0'
compile 'com.github.jd-alexander:LikeButton:0.2.1' compile 'com.github.jd-alexander:LikeButton:0.2.1'
compile 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1' compile 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
@ -136,6 +136,9 @@ dependencies {
} }
compile 'com.anupcowkur:reservoir:3.1.0' compile 'com.anupcowkur:reservoir:3.1.0'
// Themes
compile 'com.52inc:scoops:1.0.0'
} }
apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.gms.google-services'

View File

@ -14,7 +14,7 @@
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:label="@string/app_name" android:label="@string/app_name"
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/AppTheme"> android:theme="@style/NoBar">
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:theme="@style/SplashTheme"> android:theme="@style/SplashTheme">
@ -31,8 +31,7 @@
<activity android:name=".LoginActivity" <activity android:name=".LoginActivity"
android:label="@string/title_activity_login"> android:label="@string/title_activity_login">
</activity> </activity>
<activity android:name=".HomeActivity" <activity android:name=".HomeActivity">
android:theme="@style/NoBar">
</activity> </activity>
<activity <activity
android:name=".settings.SettingsActivity" android:name=".settings.SettingsActivity"

View File

@ -4,6 +4,7 @@ import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.support.constraint.ConstraintLayout import android.support.constraint.ConstraintLayout
import android.support.v7.app.AppCompatActivity import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.Toolbar
import android.view.View import android.view.View
import android.widget.* import android.widget.*
@ -16,7 +17,7 @@ import apps.amine.bou.readerforselfoss.api.selfoss.Spout
import apps.amine.bou.readerforselfoss.api.selfoss.SuccessResponse import apps.amine.bou.readerforselfoss.api.selfoss.SuccessResponse
import apps.amine.bou.readerforselfoss.utils.Config import apps.amine.bou.readerforselfoss.utils.Config
import apps.amine.bou.readerforselfoss.utils.isUrlValid import apps.amine.bou.readerforselfoss.utils.isUrlValid
import com.ftinc.scoop.Scoop
class AddSourceActivity : AppCompatActivity() { class AddSourceActivity : AppCompatActivity() {
@ -25,7 +26,12 @@ class AddSourceActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
Scoop.getInstance().apply(this)
setContentView(R.layout.activity_add_source) setContentView(R.layout.activity_add_source)
val toolbar: Toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowHomeEnabled(true)
val mProgress: ProgressBar = findViewById(R.id.progress) val mProgress: ProgressBar = findViewById(R.id.progress)
val mForm: ConstraintLayout = findViewById(R.id.formContainer) val mForm: ConstraintLayout = findViewById(R.id.formContainer)

View File

@ -43,8 +43,6 @@ import com.mikepenz.materialdrawer.holder.BadgeStyle
import com.mikepenz.materialdrawer.model.DividerDrawerItem import com.mikepenz.materialdrawer.model.DividerDrawerItem
import com.mikepenz.materialdrawer.model.PrimaryDrawerItem import com.mikepenz.materialdrawer.model.PrimaryDrawerItem
import com.mikepenz.materialdrawer.model.SecondaryDrawerItem import com.mikepenz.materialdrawer.model.SecondaryDrawerItem
import com.roughike.bottombar.BottomBar
import com.roughike.bottombar.BottomBarTab
import retrofit2.Call import retrofit2.Call
import retrofit2.Callback import retrofit2.Callback
import retrofit2.Response import retrofit2.Response
@ -53,13 +51,17 @@ import apps.amine.bou.readerforselfoss.adapters.ItemCardAdapter
import apps.amine.bou.readerforselfoss.adapters.ItemListAdapter import apps.amine.bou.readerforselfoss.adapters.ItemListAdapter
import apps.amine.bou.readerforselfoss.api.selfoss.* import apps.amine.bou.readerforselfoss.api.selfoss.*
import apps.amine.bou.readerforselfoss.settings.SettingsActivity import apps.amine.bou.readerforselfoss.settings.SettingsActivity
import apps.amine.bou.readerforselfoss.themes.AppColors
import apps.amine.bou.readerforselfoss.utils.Config import apps.amine.bou.readerforselfoss.utils.Config
import apps.amine.bou.readerforselfoss.utils.checkAndDisplayStoreApk import apps.amine.bou.readerforselfoss.utils.checkAndDisplayStoreApk
import apps.amine.bou.readerforselfoss.utils.checkApkVersion import apps.amine.bou.readerforselfoss.utils.checkApkVersion
import apps.amine.bou.readerforselfoss.utils.customtabs.CustomTabActivityHelper import apps.amine.bou.readerforselfoss.utils.customtabs.CustomTabActivityHelper
import apps.amine.bou.readerforselfoss.utils.drawer.CustomUrlPrimaryDrawerItem import apps.amine.bou.readerforselfoss.utils.drawer.CustomUrlPrimaryDrawerItem
import apps.amine.bou.readerforselfoss.utils.longHash import apps.amine.bou.readerforselfoss.utils.longHash
import com.ashokvarma.bottomnavigation.BottomNavigationBar
import com.ashokvarma.bottomnavigation.BottomNavigationItem
import com.ashokvarma.bottomnavigation.TextBadgeItem
import com.ftinc.scoop.Scoop
class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener { class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
@ -88,20 +90,21 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
private var maybeSearchFilter: String? = null private var maybeSearchFilter: String? = null
private lateinit var emptyText: TextView private lateinit var emptyText: TextView
private lateinit var mRecyclerView: RecyclerView private lateinit var recyclerView: RecyclerView
private lateinit var mBottomBar: BottomBar private lateinit var bottomBar: BottomNavigationBar
private lateinit var mCoordinatorLayout: CoordinatorLayout private lateinit var coordinatorLayout: CoordinatorLayout
private lateinit var mSwipeRefreshLayout: SwipeRefreshLayout private lateinit var swipeRefreshLayout: SwipeRefreshLayout
private lateinit var tabNew: BottomBarTab private lateinit var tabNewBadge: TextBadgeItem
private lateinit var tabArchive: BottomBarTab private lateinit var tabArchiveBadge: TextBadgeItem
private lateinit var tabStarred: BottomBarTab private lateinit var tabStarredBadge: TextBadgeItem
private lateinit var toolbar: Toolbar private lateinit var toolbar: Toolbar
private lateinit var drawer: Drawer private lateinit var drawer: Drawer
private lateinit var api: SelfossApi private lateinit var api: SelfossApi
private lateinit var mCustomTabActivityHelper: CustomTabActivityHelper private lateinit var customTabActivityHelper: CustomTabActivityHelper
private lateinit var editor: SharedPreferences.Editor private lateinit var editor: SharedPreferences.Editor
private lateinit var sharedPref: SharedPreferences private lateinit var sharedPref: SharedPreferences
private lateinit var mFirebaseRemoteConfig: FirebaseRemoteConfig private lateinit var firebaseRemoteConfig: FirebaseRemoteConfig
private lateinit var appColors: AppColors
@ -111,11 +114,14 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
override fun onStart() { override fun onStart() {
super.onStart() super.onStart()
mCustomTabActivityHelper.bindCustomTabsService(this) customTabActivityHelper.bindCustomTabsService(this)
} }
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
Scoop.getInstance().apply(this)
setContentView(R.layout.activity_home) setContentView(R.layout.activity_home)
toolbar = findViewById(R.id.toolbar) toolbar = findViewById(R.id.toolbar)
@ -126,48 +132,33 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
Amplify.getSharedInstance().promptIfReady(promptView) Amplify.getSharedInstance().promptIfReady(promptView)
} }
mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance() firebaseRemoteConfig = FirebaseRemoteConfig.getInstance()
mFirebaseRemoteConfig.setDefaults(R.xml.default_remote_config) firebaseRemoteConfig.setDefaults(R.xml.default_remote_config)
mCustomTabActivityHelper = CustomTabActivityHelper() customTabActivityHelper = CustomTabActivityHelper()
api = SelfossApi(this, this@HomeActivity) api = SelfossApi(this, this@HomeActivity)
items = ArrayList() items = ArrayList()
mBottomBar = findViewById(R.id.bottomBar) appColors = AppColors(this@HomeActivity)
handleBottomBar()
handleDrawer() handleDrawer()
// TODO: clean this hack coordinatorLayout = findViewById(R.id.coordLayout)
val listenerAlreadySet = booleanArrayOf(false) swipeRefreshLayout = findViewById(R.id.swipeRefreshLayout)
mBottomBar.setOnTabSelectListener { tabId -> recyclerView = findViewById(R.id.my_recycler_view)
if (listenerAlreadySet[0]) {
if (tabId == R.id.tab_new) {
getUnRead()
} else if (tabId == R.id.tab_archive) {
getRead()
} else if (tabId == R.id.tab_fav) {
getStarred()
}
getElementsAccordingToTab()
} else {
listenerAlreadySet[0] = true
}
}
mCoordinatorLayout = findViewById(R.id.coordLayout)
mSwipeRefreshLayout = findViewById(R.id.swipeRefreshLayout)
mRecyclerView = findViewById(R.id.my_recycler_view)
emptyText = findViewById(R.id.emptyText) emptyText = findViewById(R.id.emptyText)
reloadLayoutManager() reloadLayoutManager()
mSwipeRefreshLayout.setColorSchemeResources( swipeRefreshLayout.setColorSchemeResources(
R.color.refresh_progress_1, R.color.refresh_progress_1,
R.color.refresh_progress_2, R.color.refresh_progress_2,
R.color.refresh_progress_3) R.color.refresh_progress_3)
mSwipeRefreshLayout.setOnRefreshListener { swipeRefreshLayout.setOnRefreshListener {
handleDrawerItems() handleDrawerItems()
getElementsAccordingToTab() getElementsAccordingToTab()
} }
@ -188,11 +179,11 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
val position = items.indexOf(i) val position = items.indexOf(i)
if (shouldBeCardView) { if (shouldBeCardView) {
(mRecyclerView.adapter as ItemCardAdapter).removeItemAtIndex(position) (recyclerView.adapter as ItemCardAdapter).removeItemAtIndex(position)
} else { } else {
(mRecyclerView.adapter as ItemListAdapter).removeItemAtIndex(position) (recyclerView.adapter as ItemListAdapter).removeItemAtIndex(position)
} }
tabNew.setBadgeCount(items.size - 1) //tabNew.setBadgeCount(items.size - 1)
mayBeEmpty() mayBeEmpty()
@ -201,12 +192,51 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
} }
} }
ItemTouchHelper(simpleItemTouchCallback).attachToRecyclerView(mRecyclerView) ItemTouchHelper(simpleItemTouchCallback).attachToRecyclerView(recyclerView)
this@HomeActivity.checkAndDisplayStoreApk() this@HomeActivity.checkAndDisplayStoreApk()
} }
private fun handleBottomBar() {
bottomBar = findViewById(R.id.bottomBar)
tabNewBadge = TextBadgeItem().setText("")
tabArchiveBadge = TextBadgeItem().setText("")
tabStarredBadge = TextBadgeItem().setText("")
val tabNew =
BottomNavigationItem(
R.drawable.ic_fiber_new_black_24dp,
getString(R.string.tab_new)
).setActiveColor(appColors.accent)
//.setBadgeItem(tabNewBadge)
val tabArchive =
BottomNavigationItem(
R.drawable.ic_archive_black_24dp,
getString(R.string.tab_read)
).setActiveColor(appColors.dark)
// .setBadgeItem(tabArchiveBadge)
val tabStarred =
BottomNavigationItem(
R.drawable.ic_favorite_black_24dp,
getString(R.string.tab_favs)
).setActiveColorResource(R.color.pink)
// .setBadgeItem(tabStarredBadge)
bottomBar
.addItem(tabNew)
.addItem(tabArchive)
.addItem(tabStarred)
.setFirstSelectedPosition(0)
.initialise()
bottomBar.setMode(BottomNavigationBar.MODE_SHIFTING)
bottomBar.setBackgroundStyle(BottomNavigationBar.BACKGROUND_STYLE_STATIC)
}
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
@ -218,22 +248,17 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
editor = settings.edit() editor = settings.edit()
if (BuildConfig.GITHUB_VERSION) { if (BuildConfig.GITHUB_VERSION) {
this@HomeActivity.checkApkVersion(settings, editor, mFirebaseRemoteConfig) this@HomeActivity.checkApkVersion(settings, editor, firebaseRemoteConfig)
} }
handleSharedPrefs() handleSharedPrefs()
tabNew = mBottomBar.getTabWithId(R.id.tab_new)
tabArchive = mBottomBar.getTabWithId(R.id.tab_archive)
tabStarred = mBottomBar.getTabWithId(R.id.tab_fav)
getElementsAccordingToTab() getElementsAccordingToTab()
} }
override fun onStop() { override fun onStop() {
super.onStop() super.onStop()
mCustomTabActivityHelper.unbindCustomTabsService(this) customTabActivityHelper.unbindCustomTabsService(this)
} }
@ -258,15 +283,15 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
.withShowDrawerOnFirstLaunch(true) .withShowDrawerOnFirstLaunch(true)
.withOnDrawerListener(object: Drawer.OnDrawerListener { .withOnDrawerListener(object: Drawer.OnDrawerListener {
override fun onDrawerSlide(v: View?, p1: Float) { override fun onDrawerSlide(v: View?, p1: Float) {
mBottomBar.alpha = (1 - p1) bottomBar.alpha = (1 - p1)
} }
override fun onDrawerClosed(v: View?) { override fun onDrawerClosed(v: View?) {
mBottomBar.shySettings.showBar() bottomBar.show()
} }
override fun onDrawerOpened(v: View?) { override fun onDrawerOpened(v: View?) {
mBottomBar.shySettings.hideBar() bottomBar.hide()
} }
}) })
@ -277,9 +302,15 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
.withName(R.string.action_about) .withName(R.string.action_about)
.withSelectable(false) .withSelectable(false)
.withIcon(R.drawable.ic_info_outline) .withIcon(R.drawable.ic_info_outline)
.withIconTintingEnabled(true)
.withOnDrawerItemClickListener { _, _, _ -> .withOnDrawerItemClickListener { _, _, _ ->
LibsBuilder() LibsBuilder()
.withActivityStyle(Libs.ActivityStyle.LIGHT_DARK_TOOLBAR) .withActivityStyle(
if (appColors.isDarkTheme)
Libs.ActivityStyle.LIGHT_DARK_TOOLBAR
else
Libs.ActivityStyle.DARK
)
.withAboutIconShown(true) .withAboutIconShown(true)
.withAboutVersionShown(true) .withAboutVersionShown(true)
.start(this@HomeActivity) .start(this@HomeActivity)
@ -289,6 +320,7 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
PrimaryDrawerItem() PrimaryDrawerItem()
.withName(R.string.title_activity_settings) .withName(R.string.title_activity_settings)
.withIcon(R.drawable.ic_settings) .withIcon(R.drawable.ic_settings)
.withIconTintingEnabled(true)
.withOnDrawerItemClickListener { _, _, _ -> .withOnDrawerItemClickListener { _, _, _ ->
startActivityForResult( startActivityForResult(
Intent( Intent(
@ -328,7 +360,7 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
.withBadge("${tag.unread}") .withBadge("${tag.unread}")
.withBadgeStyle( .withBadgeStyle(
BadgeStyle().withTextColor(Color.WHITE) BadgeStyle().withTextColor(Color.WHITE)
.withColorRes(R.color.colorAccent) .withColor(appColors.accent)
) )
.withOnDrawerItemClickListener { _, _, _ -> .withOnDrawerItemClickListener { _, _, _ ->
maybeTagFilter = tag maybeTagFilter = tag
@ -484,10 +516,13 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
mLayoutManager = GridLayoutManager(this, calculateNoOfColumns()) mLayoutManager = GridLayoutManager(this, calculateNoOfColumns())
} }
mRecyclerView.layoutManager = mLayoutManager recyclerView.layoutManager = mLayoutManager
mRecyclerView.setHasFixedSize(true) recyclerView.setHasFixedSize(true)
mBottomBar.setOnTabReselectListener { bottomBar.setTabSelectedListener(object: BottomNavigationBar.OnTabSelectedListener {
override fun onTabUnselected(position: Int) = Unit
override fun onTabReselected(position: Int) =
if (shouldBeCardView) { if (shouldBeCardView) {
if ((mLayoutManager as StaggeredGridLayoutManager).findFirstCompletelyVisibleItemPositions(null)[0] == 0) { if ((mLayoutManager as StaggeredGridLayoutManager).findFirstCompletelyVisibleItemPositions(null)[0] == 0) {
getElementsAccordingToTab() getElementsAccordingToTab()
@ -501,16 +536,25 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
mLayoutManager.scrollToPositionWithOffset(0, 0) mLayoutManager.scrollToPositionWithOffset(0, 0)
} }
} }
override fun onTabSelected(position: Int) =
when(position) {
0 -> getUnRead()
1 -> getRead()
2 -> getStarred()
else -> Unit
} }
})
} }
fun mayBeEmpty() = fun mayBeEmpty() =
if (items.isEmpty()) { if (items.isEmpty()) {
emptyText.visibility = View.VISIBLE emptyText.visibility = View.VISIBLE
mRecyclerView.visibility = View.GONE recyclerView.visibility = View.GONE
} else { } else {
emptyText.visibility = View.GONE emptyText.visibility = View.GONE
mRecyclerView.visibility = View.VISIBLE recyclerView.visibility = View.VISIBLE
} }
private fun getElementsAccordingToTab() = private fun getElementsAccordingToTab() =
@ -534,11 +578,11 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
if (didUpdate) if (didUpdate)
handleListResult() handleListResult()
mayBeEmpty() mayBeEmpty()
mSwipeRefreshLayout.isRefreshing = false swipeRefreshLayout.isRefreshing = false
} }
if (!mSwipeRefreshLayout.isRefreshing) if (!swipeRefreshLayout.isRefreshing)
mSwipeRefreshLayout.post { mSwipeRefreshLayout.isRefreshing = true } swipeRefreshLayout.post { swipeRefreshLayout.isRefreshing = true }
call(maybeTagFilter?.tag, maybeSourceFilter?.id?.toLong(), maybeSearchFilter) call(maybeTagFilter?.tag, maybeSourceFilter?.id?.toLong(), maybeSearchFilter)
.enqueue(object : Callback<List<Item>> { .enqueue(object : Callback<List<Item>> {
@ -547,7 +591,7 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
} }
override fun onFailure(call: Call<List<Item>>, t: Throwable) { override fun onFailure(call: Call<List<Item>>, t: Throwable) {
mSwipeRefreshLayout.isRefreshing = false swipeRefreshLayout.isRefreshing = false
Toast.makeText(this@HomeActivity, toastMessage, Toast.LENGTH_SHORT).show() Toast.makeText(this@HomeActivity, toastMessage, Toast.LENGTH_SHORT).show()
} }
}) })
@ -578,22 +622,23 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
this, this,
items, items,
api, api,
mCustomTabActivityHelper, customTabActivityHelper,
internalBrowser, internalBrowser,
articleViewer, articleViewer,
fullHeightCards) fullHeightCards,
appColors)
} else { } else {
mAdapter = mAdapter =
ItemListAdapter( ItemListAdapter(
this, this,
items, items,
api, api,
mCustomTabActivityHelper, customTabActivityHelper,
clickBehavior, clickBehavior,
internalBrowser, internalBrowser,
articleViewer) articleViewer)
} }
mRecyclerView.adapter = mAdapter recyclerView.adapter = mAdapter
mAdapter.notifyDataSetChanged() mAdapter.notifyDataSetChanged()
reloadBadges() reloadBadges()
@ -604,24 +649,24 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
api.stats.enqueue(object : Callback<Stats> { api.stats.enqueue(object : Callback<Stats> {
override fun onResponse(call: Call<Stats>, response: Response<Stats>) { override fun onResponse(call: Call<Stats>, response: Response<Stats>) {
if (response.body() != null) { if (response.body() != null) {
tabNew.setBadgeCount(response.body()!!.unread) tabStarredBadge.setText(response.body()!!.unread.toString())
if (displayAllCount) { if (displayAllCount) {
tabArchive.setBadgeCount(response.body()!!.total) tabStarredBadge.setText(response.body()!!.total.toString())
tabStarred.setBadgeCount(response.body()!!.starred) tabStarredBadge.setText(response.body()!!.starred.toString())
} else { }/* else {
tabArchive.removeBadge() tabArchive.removeBadge()
tabStarred.removeBadge() tabStarred.removeBadge()
} }*/
} }
} }
override fun onFailure(call: Call<Stats>, t: Throwable) {} override fun onFailure(call: Call<Stats>, t: Throwable) {}
}) })
} else { }/* else {
tabNew.removeBadge() tabNew.removeBadge()
tabArchive.removeBadge() tabArchive.removeBadge()
tabStarred.removeBadge() tabStarred.removeBadge()
} }*/
} }
private fun calculateNoOfColumns(): Int { private fun calculateNoOfColumns(): Int {
@ -692,7 +737,7 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
} }
R.id.readAll -> { R.id.readAll -> {
if (elementsShown == UNREAD_SHOWN) { if (elementsShown == UNREAD_SHOWN) {
mSwipeRefreshLayout.isRefreshing = false swipeRefreshLayout.isRefreshing = false
val ids = items.map { it.id } val ids = items.map { it.id }
api.readAll(ids).enqueue(object : Callback<SuccessResponse> { api.readAll(ids).enqueue(object : Callback<SuccessResponse> {
@ -702,12 +747,12 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
else else
Toast.makeText(this@HomeActivity, R.string.all_posts_not_read, Toast.LENGTH_SHORT).show() Toast.makeText(this@HomeActivity, R.string.all_posts_not_read, Toast.LENGTH_SHORT).show()
mSwipeRefreshLayout.isRefreshing = false swipeRefreshLayout.isRefreshing = false
} }
override fun onFailure(call: Call<SuccessResponse>, t: Throwable) { override fun onFailure(call: Call<SuccessResponse>, t: Throwable) {
Toast.makeText(this@HomeActivity, R.string.all_posts_not_read, Toast.LENGTH_SHORT).show() Toast.makeText(this@HomeActivity, R.string.all_posts_not_read, Toast.LENGTH_SHORT).show()
mSwipeRefreshLayout.isRefreshing = false swipeRefreshLayout.isRefreshing = false
} }
}) })
items = ArrayList() items = ArrayList()

View File

@ -9,6 +9,7 @@ import android.os.Bundle
import android.support.design.widget.TextInputLayout import android.support.design.widget.TextInputLayout
import android.support.v7.app.AlertDialog import android.support.v7.app.AlertDialog
import android.support.v7.app.AppCompatActivity import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.Toolbar
import android.text.TextUtils import android.text.TextUtils
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
@ -31,7 +32,7 @@ import apps.amine.bou.readerforselfoss.api.selfoss.SuccessResponse
import apps.amine.bou.readerforselfoss.utils.Config import apps.amine.bou.readerforselfoss.utils.Config
import apps.amine.bou.readerforselfoss.utils.checkAndDisplayStoreApk import apps.amine.bou.readerforselfoss.utils.checkAndDisplayStoreApk
import apps.amine.bou.readerforselfoss.utils.isUrlValid import apps.amine.bou.readerforselfoss.utils.isUrlValid
import com.ftinc.scoop.Scoop
class LoginActivity : AppCompatActivity() { class LoginActivity : AppCompatActivity() {
@ -54,8 +55,12 @@ class LoginActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
Scoop.getInstance().apply(this)
setContentView(R.layout.activity_login) setContentView(R.layout.activity_login)
val toolbar: Toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar)
if (intent.getBooleanExtra("baseUrlFail", false)) { if (intent.getBooleanExtra("baseUrlFail", false)) {
val alertDialog = AlertDialog.Builder(this).create() val alertDialog = AlertDialog.Builder(this).create()
alertDialog.setTitle(getString(R.string.warning_wrong_url)) alertDialog.setTitle(getString(R.string.warning_wrong_url))

View File

@ -3,11 +3,13 @@ package apps.amine.bou.readerforselfoss
import android.content.Context import android.content.Context
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.net.Uri import android.net.Uri
import android.preference.PreferenceManager
import android.support.multidex.MultiDexApplication import android.support.multidex.MultiDexApplication
import android.widget.ImageView import android.widget.ImageView
import com.anupcowkur.reservoir.Reservoir import com.anupcowkur.reservoir.Reservoir
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.crashlytics.android.Crashlytics import com.crashlytics.android.Crashlytics
import com.ftinc.scoop.Scoop
import com.github.stkent.amplify.tracking.Amplify import com.github.stkent.amplify.tracking.Amplify
import com.mikepenz.materialdrawer.util.AbstractDrawerImageLoader import com.mikepenz.materialdrawer.util.AbstractDrawerImageLoader
import com.mikepenz.materialdrawer.util.DrawerImageLoader import com.mikepenz.materialdrawer.util.DrawerImageLoader
@ -42,8 +44,26 @@ class MyApp : MultiDexApplication() {
} }
override fun placeholder(ctx: Context?, tag: String?): Drawable { override fun placeholder(ctx: Context?, tag: String?): Drawable {
return applicationContext.resources.getDrawable(R.mipmap.ic_launcher) return baseContext.resources.getDrawable(R.mipmap.ic_launcher)
} }
}) })
Scoop.waffleCone()
.addFlavor(getString(R.string.default_theme), R.style.NoBar, true)
.addFlavor(getString(R.string.default_dark_theme), R.style.NoBarDark)
.addFlavor(getString(R.string.teal_orange_theme), R.style.NoBarTealOrange)
.addFlavor(getString(R.string.teal_orange_dark_theme), R.style.NoBarTealOrangeDark)
.addFlavor(getString(R.string.cyan_pink_theme), R.style.NoBarCyanPink)
.addFlavor(getString(R.string.cyan_pink_dark_theme), R.style.NoBarCyanPinkDark)
.addFlavor(getString(R.string.grey_orange_theme), R.style.NoBarGreyOrange)
.addFlavor(getString(R.string.grey_orange_dark_theme), R.style.NoBarGreyOrangeDark)
.addFlavor(getString(R.string.blue_amber_theme), R.style.NoBarBlueAmber)
.addFlavor(getString(R.string.blue_amber_dark_theme), R.style.NoBarBlueAmberDark)
.addFlavor(getString(R.string.indigo_pink_theme), R.style.NoBarIndigoPink)
.addFlavor(getString(R.string.indigo_pink_dark_theme), R.style.NoBarIndigoPinkDark)
.addFlavor(getString(R.string.red_teal_theme), R.style.NoBarRedTeal)
.addFlavor(getString(R.string.red_teal_dark_theme), R.style.NoBarRedTealDark)
.setSharedPreferences(PreferenceManager.getDefaultSharedPreferences(this))
.initialize()
} }
} }

View File

@ -23,6 +23,7 @@ import apps.amine.bou.readerforselfoss.api.mercury.ParsedContent
import apps.amine.bou.readerforselfoss.utils.buildCustomTabsIntent import apps.amine.bou.readerforselfoss.utils.buildCustomTabsIntent
import apps.amine.bou.readerforselfoss.utils.customtabs.CustomTabActivityHelper import apps.amine.bou.readerforselfoss.utils.customtabs.CustomTabActivityHelper
import apps.amine.bou.readerforselfoss.utils.shareLink import apps.amine.bou.readerforselfoss.utils.shareLink
import com.ftinc.scoop.Scoop
class ReaderActivity : DragDismissActivity() { class ReaderActivity : DragDismissActivity() {
@ -39,6 +40,7 @@ class ReaderActivity : DragDismissActivity() {
} }
override fun onCreateContent(inflater: LayoutInflater, parent: ViewGroup, savedInstanceState: Bundle?): View { override fun onCreateContent(inflater: LayoutInflater, parent: ViewGroup, savedInstanceState: Bundle?): View {
Scoop.getInstance().apply(this)
val v = inflater.inflate(R.layout.activity_reader, parent, false) val v = inflater.inflate(R.layout.activity_reader, parent, false)
showProgressBar() showProgressBar()
@ -71,7 +73,7 @@ class ReaderActivity : DragDismissActivity() {
} }
if (response.body()!!.lead_image_url != null && !response.body()!!.lead_image_url.isEmpty()) if (response.body()!!.lead_image_url != null && !response.body()!!.lead_image_url.isEmpty())
Glide Glide
.with(applicationContext) .with(baseContext)
.load(response.body()!!.lead_image_url) .load(response.body()!!.lead_image_url)
.asBitmap() .asBitmap()
.fitCenter() .fitCenter()

View File

@ -5,6 +5,7 @@ import android.os.Bundle
import android.support.v7.app.AppCompatActivity import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.LinearLayoutManager import android.support.v7.widget.LinearLayoutManager
import android.support.v7.widget.RecyclerView import android.support.v7.widget.RecyclerView
import android.support.v7.widget.Toolbar
import android.widget.Toast import android.widget.Toast
import com.melnykov.fab.FloatingActionButton import com.melnykov.fab.FloatingActionButton
@ -15,14 +16,19 @@ import retrofit2.Response
import apps.amine.bou.readerforselfoss.adapters.SourcesListAdapter import apps.amine.bou.readerforselfoss.adapters.SourcesListAdapter
import apps.amine.bou.readerforselfoss.api.selfoss.SelfossApi import apps.amine.bou.readerforselfoss.api.selfoss.SelfossApi
import apps.amine.bou.readerforselfoss.api.selfoss.Sources import apps.amine.bou.readerforselfoss.api.selfoss.Sources
import com.ftinc.scoop.Scoop
class SourcesActivity : AppCompatActivity() { class SourcesActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
Scoop.getInstance().apply(this)
setContentView(R.layout.activity_sources) setContentView(R.layout.activity_sources)
val toolbar: Toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowHomeEnabled(true)
} }
override fun onResume() { override fun onResume() {

View File

@ -7,6 +7,7 @@ import android.graphics.Color
import android.support.constraint.ConstraintLayout import android.support.constraint.ConstraintLayout
import android.support.design.widget.Snackbar import android.support.design.widget.Snackbar
import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory
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.text.format.DateUtils import android.text.format.DateUtils
@ -35,6 +36,7 @@ import apps.amine.bou.readerforselfoss.R
import apps.amine.bou.readerforselfoss.api.selfoss.Item import apps.amine.bou.readerforselfoss.api.selfoss.Item
import apps.amine.bou.readerforselfoss.api.selfoss.SelfossApi import apps.amine.bou.readerforselfoss.api.selfoss.SelfossApi
import apps.amine.bou.readerforselfoss.api.selfoss.SuccessResponse import apps.amine.bou.readerforselfoss.api.selfoss.SuccessResponse
import apps.amine.bou.readerforselfoss.themes.AppColors
import apps.amine.bou.readerforselfoss.utils.* import apps.amine.bou.readerforselfoss.utils.*
import apps.amine.bou.readerforselfoss.utils.customtabs.CustomTabActivityHelper import apps.amine.bou.readerforselfoss.utils.customtabs.CustomTabActivityHelper
@ -44,8 +46,9 @@ class ItemCardAdapter(private val app: Activity,
private val helper: CustomTabActivityHelper, private val helper: CustomTabActivityHelper,
private val internalBrowser: Boolean, private val internalBrowser: Boolean,
private val articleViewer: Boolean, private val articleViewer: Boolean,
private val fullHeightCards: Boolean) : RecyclerView.Adapter<ItemCardAdapter.ViewHolder>() { private val fullHeightCards: Boolean,
private val c: Context = app.applicationContext private val appColors: AppColors) : RecyclerView.Adapter<ItemCardAdapter.ViewHolder>() {
private val c: Context = app.baseContext
private val generator: ColorGenerator = ColorGenerator.MATERIAL private val generator: ColorGenerator = ColorGenerator.MATERIAL
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
@ -150,6 +153,7 @@ class ItemCardAdapter(private val app: Activity,
lateinit var sourceTitleAndDate: TextView lateinit var sourceTitleAndDate: TextView
init { init {
(mView.findViewById<CardView>(R.id.card)).setCardBackgroundColor(appColors.cardBackground)
handleClickListeners() handleClickListeners()
handleCustomTabActions() handleCustomTabActions()
} }

View File

@ -36,6 +36,7 @@ import apps.amine.bou.readerforselfoss.R
import apps.amine.bou.readerforselfoss.api.selfoss.Item import apps.amine.bou.readerforselfoss.api.selfoss.Item
import apps.amine.bou.readerforselfoss.api.selfoss.SelfossApi import apps.amine.bou.readerforselfoss.api.selfoss.SelfossApi
import apps.amine.bou.readerforselfoss.api.selfoss.SuccessResponse import apps.amine.bou.readerforselfoss.api.selfoss.SuccessResponse
import apps.amine.bou.readerforselfoss.themes.AppColors
import apps.amine.bou.readerforselfoss.utils.* import apps.amine.bou.readerforselfoss.utils.*
import apps.amine.bou.readerforselfoss.utils.customtabs.CustomTabActivityHelper import apps.amine.bou.readerforselfoss.utils.customtabs.CustomTabActivityHelper
@ -48,7 +49,7 @@ class ItemListAdapter(private val app: Activity,
private val internalBrowser: Boolean, private val internalBrowser: Boolean,
private val articleViewer: Boolean) : RecyclerView.Adapter<ItemListAdapter.ViewHolder>() { private val articleViewer: Boolean) : RecyclerView.Adapter<ItemListAdapter.ViewHolder>() {
private val generator: ColorGenerator = ColorGenerator.MATERIAL private val generator: ColorGenerator = ColorGenerator.MATERIAL
private val c: Context = app.applicationContext private val c: Context = app.baseContext
private val bars: ArrayList<Boolean> = ArrayList(Collections.nCopies(items.size + 1, false)) private val bars: ArrayList<Boolean> = ArrayList(Collections.nCopies(items.size + 1, false))
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {

View File

@ -6,12 +6,19 @@ import android.preference.PreferenceActivity;
import android.support.annotation.LayoutRes; import android.support.annotation.LayoutRes;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.design.widget.AppBarLayout;
import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatDelegate; import android.support.v7.app.AppCompatDelegate;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.MenuInflater; import android.view.MenuInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.LinearLayout;
import apps.amine.bou.readerforselfoss.R;
import com.ftinc.scoop.Scoop;
/** /**
* A {@link PreferenceActivity} which implements and proxies the necessary calls * A {@link PreferenceActivity} which implements and proxies the necessary calls
@ -25,12 +32,23 @@ public abstract class AppCompatPreferenceActivity extends PreferenceActivity {
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
getDelegate().installViewFactory(); getDelegate().installViewFactory();
getDelegate().onCreate(savedInstanceState); getDelegate().onCreate(savedInstanceState);
Scoop.getInstance().apply(this);
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
} }
@Override @Override
protected void onPostCreate(Bundle savedInstanceState) { protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState); super.onPostCreate(savedInstanceState);
LinearLayout root = (LinearLayout)findViewById(android.R.id.list).getParent().getParent().getParent();
AppBarLayout bar = (AppBarLayout) LayoutInflater.from(this).inflate(R.layout.settings_toolbar, root, false);
Toolbar toolbar = bar.findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
root.addView(bar, 0);
getDelegate().onPostCreate(savedInstanceState); getDelegate().onPostCreate(savedInstanceState);
} }

View File

@ -20,6 +20,7 @@ import android.view.MenuItem;
import java.util.List; import java.util.List;
import apps.amine.bou.readerforselfoss.R; import apps.amine.bou.readerforselfoss.R;
import com.ftinc.scoop.ui.ScoopSettingsActivity;
/** /**
@ -201,6 +202,15 @@ public class SettingsActivity extends AppCompatPreferenceActivity {
} }
} }
@Override
public void onHeaderClick(Header header, int position) {
super.onHeaderClick(header, position);
if (header.id == R.id.theme_change) {
getBaseContext().startActivity(ScoopSettingsActivity.createIntent(getApplicationContext()));
finish();
}
}
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId(); int id = item.getItemId();

View File

@ -0,0 +1,53 @@
package apps.amine.bou.readerforselfoss.themes
import android.app.Activity
import android.content.Context
import android.support.annotation.ColorInt
import android.util.TypedValue
import apps.amine.bou.readerforselfoss.R
import java.lang.reflect.AccessibleObject.setAccessible
class AppColors(a: Activity) {
@ColorInt val accent: Int
@ColorInt val dark: Int
@ColorInt val primary: Int
@ColorInt val cardBackground: Int
@ColorInt val windowBackground: Int
val isDarkTheme: Boolean
init {
val wrapper = Context::class.java
val method = wrapper!!.getMethod("getThemeResId")
method.isAccessible = true
isDarkTheme = when(method.invoke(a.baseContext)) {
R.style.NoBarTealOrangeDark,
R.style.NoBarDark,
R.style.NoBarBlueAmberDark,
R.style.NoBarGreyOrangeDark,
R.style.NoBarIndigoPinkDark,
R.style.NoBarRedTealDark,
R.style.NoBarCyanPinkDark -> true
else -> false
}
val typedAccent = TypedValue()
val typedAccentDark = TypedValue()
val typedPrimary = TypedValue()
val typedCardBackground = TypedValue()
val typedWindowBackground = TypedValue()
a.theme.resolveAttribute(R.attr.colorAccent, typedAccent, true)
a.theme.resolveAttribute(R.attr.colorAccent, typedAccent, true)
a.theme.resolveAttribute(R.attr.colorPrimary, typedPrimary, true)
a.theme.resolveAttribute(R.attr.cardBackgroundColor, typedCardBackground, true)
a.theme.resolveAttribute(android.R.attr.colorBackground, typedWindowBackground, true)
accent = typedAccent.data
dark = typedAccentDark.data
primary = typedPrimary.data
cardBackground = typedCardBackground.data
windowBackground = typedWindowBackground.data
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 458 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 741 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 966 B

View File

@ -1,130 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
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:fitsSystemWindows="true"
tools:context="apps.amine.bou.readerforselfoss.HomeActivity">
<com.roughike.bottombar.BottomBar
android:id="@+id/bottomBar"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
app:bb_tabletMode="true"
app:bb_tabXmlResource="@xml/bottombar"
app:bb_activeTabColor="@color/white"
app:bb_inActiveTabColor="@color/black"
app:bb_badgeBackgroundColor="@color/colorPrimary"/>
<com.github.stkent.amplify.prompt.DefaultLayoutPromptView
android:id="@+id/prompt_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:prompt_view_user_opinion_question_title="@string/rating_prompt_title"
app:prompt_view_user_opinion_question_positive_button_label="@string/rating_prompt_yes"
app:prompt_view_user_opinion_question_negative_button_label="@string/rating_prompt_no"
app:prompt_view_positive_feedback_question_title="@string/rating_prompt_rating_title"
app:prompt_view_positive_feedback_question_positive_button_label="@string/rating_prompt_rating_yes"
app:prompt_view_positive_feedback_question_negative_button_label="@string/rating_prompt_rating_no"
app:prompt_view_critical_feedback_question_title="@string/rating_prompt_feedback_title"
app:prompt_view_critical_feedback_question_positive_button_label="@string/rating_prompt_feedback_yes"
app:prompt_view_critical_feedback_question_negative_button_label="@string/rating_prompt_feedback_no"
app:prompt_view_thanks_title="@string/rating_prompt_thanks"
app:prompt_view_positive_button_background_color="@color/colorPrimary"
app:prompt_view_positive_button_text_color="@color/white"
app:prompt_view_positive_button_border_color="@color/colorPrimary"
app:prompt_view_negative_button_background_color="@color/colorAccent"
app:prompt_view_negative_button_border_color="@color/white"
app:prompt_view_thanks_display_time_ms="2000"
android:layout_toEndOf="@+id/bottomBar"
android:layout_toRightOf="@+id/bottomBar"/>
<!-- This could be your fragment container, or something -->
<android.support.design.widget.CoordinatorLayout
android:id="@+id/coordLayout"
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:layout_toEndOf="@+id/bottomBar"
android:layout_toRightOf="@+id/bottomBar"
android:layout_below="@id/prompt_view">
<android.support.design.widget.CoordinatorLayout
android:id="@+id/intern_coordLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:theme="@style/ToolBarStyle"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:id="@+id/drawer_layout"
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">
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/emptyText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="fill"
android:paddingTop="100dp"
android:text="@string/nothing_here"
android:textAlignment="center"
android:textAppearance="@style/TextAppearance.AppCompat.Headline"
android:textColor="@color/about_libraries_card_dark"
android:visibility="gone" />
<android.support.v7.widget.RecyclerView
android:id="@+id/my_recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/background_grey"
android:scrollbars="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</LinearLayout>
</android.support.v4.widget.SwipeRefreshLayout>
</FrameLayout>
</LinearLayout>
</android.support.design.widget.CoordinatorLayout>
</android.support.design.widget.CoordinatorLayout>
</RelativeLayout>

View File

@ -1,16 +1,32 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout <LinearLayout
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" 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"
tools:context="apps.amine.bou.readerforselfoss.AddSourceActivity"
android:orientation="vertical">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:theme="@style/ToolBarStyle" />
</android.support.design.widget.AppBarLayout>
<android.support.constraint.ConstraintLayout
android:paddingBottom="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" android:paddingTop="@dimen/activity_vertical_margin"
tools:context="apps.amine.bou.readerforselfoss.AddSourceActivity"> android:layout_height="match_parent"
android:layout_width="match_parent">
<android.support.constraint.ConstraintLayout <android.support.constraint.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
@ -90,7 +106,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:id="@+id/saveBtn" android:id="@+id/saveBtn"
android:elevation="5dp" android:elevation="5dp"
android:textColor="@color/colorAccent" android:textColor="?attr/colorAccent"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"
android:layout_marginRight="16dp" android:layout_marginRight="16dp"
@ -115,4 +131,6 @@
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
android:visibility="visible"/> android:visibility="visible"/>
</android.support.constraint.ConstraintLayout> </android.support.constraint.ConstraintLayout>
</LinearLayout>

View File

@ -27,6 +27,7 @@
app:prompt_view_positive_button_border_color="@color/colorPrimary" app:prompt_view_positive_button_border_color="@color/colorPrimary"
app:prompt_view_negative_button_background_color="@color/colorAccent" app:prompt_view_negative_button_background_color="@color/colorAccent"
app:prompt_view_negative_button_border_color="@color/white" app:prompt_view_negative_button_border_color="@color/white"
app:prompt_view_background_color="?attr/colorAccent"
app:prompt_view_thanks_display_time_ms="2000"/> app:prompt_view_thanks_display_time_ms="2000"/>
<android.support.design.widget.CoordinatorLayout <android.support.design.widget.CoordinatorLayout
@ -53,8 +54,7 @@
android:id="@+id/toolbar" android:id="@+id/toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize" android:layout_height="?attr/actionBarSize"
app:theme="@style/ToolBarStyle" app:theme="@style/ToolBarStyle" />
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
</android.support.design.widget.AppBarLayout> </android.support.design.widget.AppBarLayout>
@ -74,7 +74,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical" android:orientation="vertical"
android:background="@color/background_grey"> android:background="?android:attr/windowBackground">
<TextView <TextView
android:id="@+id/emptyText" android:id="@+id/emptyText"
@ -85,7 +85,6 @@
android:text="@string/nothing_here" android:text="@string/nothing_here"
android:textAlignment="center" android:textAlignment="center"
android:textAppearance="@style/TextAppearance.AppCompat.Headline" android:textAppearance="@style/TextAppearance.AppCompat.Headline"
android:textColor="@color/about_libraries_card_dark"
android:background="@color/transparent" android:background="@color/transparent"
android:visibility="gone" /> android:visibility="gone" />
<android.support.v7.widget.RecyclerView <android.support.v7.widget.RecyclerView
@ -104,17 +103,10 @@
</LinearLayout> </LinearLayout>
</android.support.design.widget.CoordinatorLayout> </android.support.design.widget.CoordinatorLayout>
<com.roughike.bottombar.BottomBar <com.ashokvarma.bottomnavigation.BottomNavigationBar
android:layout_gravity="bottom"
android:id="@+id/bottomBar" android:id="@+id/bottomBar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="60dp" android:layout_height="60dp"/>
android:layout_gravity="bottom"
app:bb_behavior="shy"
android:layout_alignParentBottom="true"
app:bb_tabXmlResource="@xml/bottombar"
app:bb_activeTabColor="@color/white"
app:bb_badgeBackgroundColor="@color/colorPrimary"
app:bb_inActiveTabColor="@color/black"
app:bb_badgesHideWhenActive="false" />
</android.support.design.widget.CoordinatorLayout> </android.support.design.widget.CoordinatorLayout>
</RelativeLayout> </RelativeLayout>

View File

@ -2,14 +2,29 @@
xmlns:tools="http://schemas.android.com/tools" 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"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:orientation="vertical" android:orientation="vertical"
tools:context="apps.amine.bou.readerforselfoss.LoginActivity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:theme="@style/ToolBarStyle" />
</android.support.design.widget.AppBarLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" android:paddingTop="@dimen/activity_vertical_margin">
tools:context="apps.amine.bou.readerforselfoss.LoginActivity">
<!-- Login progress --> <!-- Login progress -->
<ProgressBar <ProgressBar
android:id="@+id/login_progress" android:id="@+id/login_progress"
@ -135,4 +150,6 @@
</LinearLayout> </LinearLayout>
</ScrollView> </ScrollView>
</LinearLayout>
</LinearLayout> </LinearLayout>

View File

@ -5,7 +5,8 @@
xmlns:tools="http://schemas.android.com/tools" 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"
tools:context="apps.amine.bou.readerforselfoss.ReaderActivity"> tools:context="apps.amine.bou.readerforselfoss.ReaderActivity"
android:background="?android:attr/windowBackground">
<ImageView <ImageView
android:id="@+id/imageView" android:id="@+id/imageView"
@ -96,7 +97,7 @@
android:padding="4dp" android:padding="4dp"
android:scaleType="centerCrop" android:scaleType="centerCrop"
android:src="@drawable/ic_open_in_browser_black_24dp" android:src="@drawable/ic_open_in_browser_black_24dp"
android:tint="#000000" android:tint="?android:attr/textColorPrimary"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/shareBtn" app:layout_constraintEnd_toStartOf="@+id/shareBtn"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintHorizontal_bias="0.5"
@ -113,7 +114,7 @@
android:padding="4dp" android:padding="4dp"
android:scaleType="centerCrop" android:scaleType="centerCrop"
android:src="@drawable/ic_share_black_24dp" android:src="@drawable/ic_share_black_24dp"
android:tint="#000000" android:tint="?android:attr/textColorPrimary"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintHorizontal_bias="0.5"

View File

@ -8,12 +8,22 @@
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context="apps.amine.bou.readerforselfoss.SourcesActivity" tools:context="apps.amine.bou.readerforselfoss.SourcesActivity"
xmlns:fab="http://schemas.android.com/apk/res-auto"> xmlns:fab="http://schemas.android.com/apk/res-auto">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:theme="@style/ToolBarStyle" />
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.RecyclerView <android.support.v7.widget.RecyclerView
android:id="@+id/activity_sources" android:id="@+id/activity_sources"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/background_grey"
android:scrollbars="vertical" android:scrollbars="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior"> app:layout_behavior="@string/appbar_scrolling_view_behavior">
</android.support.v7.widget.RecyclerView> </android.support.v7.widget.RecyclerView>
@ -24,8 +34,9 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="end|bottom|right" android:layout_gravity="end|bottom|right"
android:src="@drawable/ic_add_black_24dp" android:src="@drawable/ic_add_black_24dp"
fab:fab_colorNormal="@color/colorAccent" android:tint="?android:textColorPrimary"
fab:fab_colorPressed="@color/colorAccentDark" fab:fab_colorNormal="?attr/colorAccent"
fab:fab_colorPressed="?attr/colorAccentDark"
fab:fab_colorRipple="@color/pink" fab:fab_colorRipple="@color/pink"
android:paddingBottom="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingTop="@dimen/activity_vertical_margin" android:paddingTop="@dimen/activity_vertical_margin"

View File

@ -6,13 +6,15 @@
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<android.support.v7.widget.CardView <android.support.v7.widget.CardView
android:id="@+id/card"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="0dp" android:layout_width="0dp"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintHorizontal_bias="0.62" app:layout_constraintHorizontal_bias="0.62"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:cardElevation="2dp" card_view:cardElevation="2dp"
app:cardUseCompatPadding="true" card_view:cardUseCompatPadding="true"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginLeft="8dp" android:layout_marginLeft="8dp"
@ -60,24 +62,21 @@
android:layout_width="40dp" /> android:layout_width="40dp" />
<TextView <TextView
android:id="@+id/title"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:id="@+id/title"
tools:text="Titre"
android:fontFamily="sans-serif"
android:textSize="16sp"
android:textAllCaps="false"
android:textAlignment="viewStart"
android:textColor="@color/black"
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
app:layout_constraintRight_toRightOf="parent" android:layout_marginLeft="8dp"
android:layout_marginRight="8dp" android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:gravity="start"
android:textAlignment="viewStart"
android:textStyle="bold"
app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toRightOf="@+id/sourceImage" app:layout_constraintLeft_toRightOf="@+id/sourceImage"
android:layout_marginStart="8dp" app:layout_constraintRight_toRightOf="parent"
android:layout_marginLeft="8dp"
app:layout_constraintTop_toTopOf="@+id/sourceImage" app:layout_constraintTop_toTopOf="@+id/sourceImage"
android:gravity="start" /> tools:text="Titre" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -85,7 +84,6 @@
android:id="@+id/sourceTitleAndDate" android:id="@+id/sourceTitleAndDate"
android:textSize="14sp" android:textSize="14sp"
tools:text="Google Actualité Il y a 5h" tools:text="Google Actualité Il y a 5h"
android:textColor="#868686"
android:textAlignment="viewStart" android:textAlignment="viewStart"
app:layout_constraintTop_toBottomOf="@+id/title" app:layout_constraintTop_toBottomOf="@+id/title"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
@ -117,38 +115,38 @@
android:layout_marginEnd="8dp"/> android:layout_marginEnd="8dp"/>
<ImageButton <ImageButton
android:id="@+id/shareBtn"
android:layout_width="35dp" android:layout_width="35dp"
android:layout_height="35dp" android:layout_height="35dp"
android:src="@drawable/ic_share_black_24dp"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
android:layout_toLeftOf="@+id/favButton" android:layout_toLeftOf="@+id/favButton"
android:layout_toStartOf="@+id/favButton" android:layout_toStartOf="@+id/favButton"
android:id="@+id/shareBtn" android:adjustViewBounds="true"
android:background="@android:color/transparent" android:background="@android:color/transparent"
android:elevation="5dp" android:elevation="5dp"
android:layout_marginEnd="16dp" android:padding="4dp"
android:layout_marginRight="16dp"
android:tint="#000000"
android:adjustViewBounds="true"
android:scaleType="centerCrop" android:scaleType="centerCrop"
android:padding="4dp"/> android:src="@drawable/ic_share_black_24dp"
android:tint="?android:attr/textColorPrimary" />
<ImageButton <ImageButton
android:id="@+id/browserBtn"
android:layout_width="35dp" android:layout_width="35dp"
android:layout_height="35dp" android:layout_height="35dp"
android:src="@drawable/ic_open_in_browser_black_24dp"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/shareBtn"
android:layout_toStartOf="@+id/shareBtn"
android:id="@+id/browserBtn"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:layout_marginRight="16dp" android:layout_marginRight="16dp"
android:elevation="5dp" android:layout_toLeftOf="@+id/shareBtn"
android:background="@android:color/transparent" android:layout_toStartOf="@+id/shareBtn"
android:tint="#000000"
android:adjustViewBounds="true" android:adjustViewBounds="true"
android:background="@android:color/transparent"
android:elevation="5dp"
android:padding="4dp"
android:scaleType="centerCrop" android:scaleType="centerCrop"
android:padding="4dp"/> android:src="@drawable/ic_open_in_browser_black_24dp"
android:tint="?android:attr/textColorPrimary" />
</RelativeLayout> </RelativeLayout>

View File

@ -3,11 +3,10 @@
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" xmlns:tools="http://schemas.android.com/tools"
android:orientation="horizontal" android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:minHeight="88dp" android:minHeight="88dp">
android:background="#EDEDED">
<ImageView <ImageView
android:id="@+id/itemImage" android:id="@+id/itemImage"
@ -20,25 +19,25 @@
/> />
<TextView <TextView
android:id="@+id/title"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:id="@+id/title"
tools:text="Titre"
android:fontFamily="sans-serif"
android:textSize="16sp"
android:textAllCaps="false"
android:textAlignment="viewStart"
app:layout_constraintLeft_toRightOf="@+id/itemImage"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="16dp"
app:layout_constraintTop_toTopOf="parent"
android:textColor="@color/black"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
app:layout_constraintRight_toRightOf="parent" android:layout_marginLeft="16dp"
android:layout_marginRight="16dp" android:layout_marginRight="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:fontFamily="sans-serif"
android:gravity="start"
android:textAlignment="viewStart"
android:textAllCaps="false"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_bias="0.0"
android:gravity="start" /> app:layout_constraintLeft_toRightOf="@+id/itemImage"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="Titre" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -46,7 +45,6 @@
android:id="@+id/sourceTitleAndDate" android:id="@+id/sourceTitleAndDate"
android:textSize="14sp" android:textSize="14sp"
tools:text="Google Actualité Il y a 5h" tools:text="Google Actualité Il y a 5h"
android:textColor="#868686"
android:textAlignment="viewStart" android:textAlignment="viewStart"
app:layout_constraintTop_toBottomOf="@+id/title" app:layout_constraintTop_toBottomOf="@+id/title"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
@ -90,11 +88,11 @@
android:layout_toStartOf="@+id/favButton" android:layout_toStartOf="@+id/favButton"
android:adjustViewBounds="true" android:adjustViewBounds="true"
android:background="@android:color/transparent" android:background="@android:color/transparent"
android:backgroundTint="?android:attr/textColorPrimary"
android:elevation="5dp" android:elevation="5dp"
android:padding="4dp" android:padding="4dp"
android:scaleType="centerCrop" android:scaleType="centerCrop"
android:src="@drawable/ic_share_black_24dp" android:src="@drawable/ic_share_black_24dp" />
android:tint="#000000" />
<ImageButton <ImageButton
android:id="@+id/browserBtn" android:id="@+id/browserBtn"
@ -107,11 +105,11 @@
android:layout_toStartOf="@+id/shareBtn" android:layout_toStartOf="@+id/shareBtn"
android:adjustViewBounds="true" android:adjustViewBounds="true"
android:background="@android:color/transparent" android:background="@android:color/transparent"
android:backgroundTint="?android:attr/textColorPrimary"
android:elevation="5dp" android:elevation="5dp"
android:padding="4dp" android:padding="4dp"
android:scaleType="centerCrop" android:scaleType="centerCrop"
android:src="@drawable/ic_open_in_browser_black_24dp" android:src="@drawable/ic_open_in_browser_black_24dp" />
android:tint="#000000" />
</RelativeLayout> </RelativeLayout>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.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
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:theme="@style/ToolBarStyle" />
</android.support.design.widget.AppBarLayout>

View File

@ -5,7 +5,6 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical" android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="match_parent"
android:background="#EDEDED"
android:layout_height="48dp"> android:layout_height="48dp">
@ -37,6 +36,7 @@
android:id="@+id/deleteBtn" android:id="@+id/deleteBtn"
android:background="@drawable/ic_remove_circle_outline_black_24dp" android:background="@drawable/ic_remove_circle_outline_black_24dp"
style="@style/Widget.AppCompat.Button.Borderless" style="@style/Widget.AppCompat.Button.Borderless"
android:backgroundTint="?android:textColorSecondary"
android:elevation="4dp" android:elevation="4dp"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"

View File

@ -116,4 +116,19 @@
<string name="menu_home_search">Rechercher</string> <string name="menu_home_search">Rechercher</string>
<string name="can_delete_source">Petit soucis lors de la suppression de la source.</string> <string name="can_delete_source">Petit soucis lors de la suppression de la source.</string>
<string name="base_url_error">Il y a eu un souci lors de la communication avec votre instance Selfoss. Si le problèmes persiste, contactez-moi pour trouver une solution.</string> <string name="base_url_error">Il y a eu un souci lors de la communication avec votre instance Selfoss. Si le problèmes persiste, contactez-moi pour trouver une solution.</string>
<string name="pref_header_theme">Thèmes</string>
<string name="default_theme">Par défaut</string>
<string name="teal_orange_theme">Sarcelle/Orange/Clair</string>
<string name="cyan_pink_theme">Cyan/Rose/Clair</string>
<string name="grey_orange_theme">Gris/Orange/Clair</string>
<string name="blue_amber_theme">Bleu/Ambre/Clair</string>
<string name="indigo_pink_theme">Indigo/Rose/Clair</string>
<string name="red_teal_theme">Rouge/Sarcelle/Clair</string>
<string name="teal_orange_dark_theme">Sarcelle/Orange/Foncé</string>
<string name="cyan_pink_dark_theme">Cyan/Rose/Foncé</string>
<string name="default_dark_theme">Par défaut/Foncé</string>
<string name="grey_orange_dark_theme">Gris/Orange/Foncé</string>
<string name="blue_amber_dark_theme">Bleu/Ambre/Foncé</string>
<string name="indigo_pink_dark_theme">Indigo/Rose/Foncé</string>
<string name="red_teal_dark_theme">Rouge/Sarcelle/Foncé</string>
</resources> </resources>

View File

@ -116,4 +116,19 @@
<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">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="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">Themes</string>
<string name="default_theme">Default</string>
<string name="teal_orange_theme">Teal/Orange/Light</string>
<string name="cyan_pink_theme">Cyan/Pink/Light</string>
<string name="grey_orange_theme">Grey/Orange/Light</string>
<string name="blue_amber_theme">Blue/Amber/Light</string>
<string name="indigo_pink_theme">Indigo/Pink/Light</string>
<string name="red_teal_theme">Red/Teal/Light</string>
<string name="teal_orange_dark_theme">Teal/Orange/Dark</string>
<string name="cyan_pink_dark_theme">Cyan/Pink/Dark</string>
<string name="default_dark_theme">Default/Dark</string>
<string name="grey_orange_dark_theme">Grey/Orange/Dark</string>
<string name="blue_amber_dark_theme">Blue/Amber/Dark</string>
<string name="indigo_pink_dark_theme">Indigo/Pink/Dark</string>
<string name="red_teal_dark_theme">Red/Teal/Dark</string>
</resources> </resources>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="Theme">
<attr name="colorAccentDark" format="reference|color" />
</declare-styleable>
</resources>

View File

@ -118,4 +118,19 @@
<string name="menu_home_search">Search</string> <string name="menu_home_search">Search</string>
<string name="can_delete_source">Can\'t delete the source...</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="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">Themes</string>
<string name="default_theme">Default</string>
<string name="teal_orange_theme">Teal/Orange/Light</string>
<string name="cyan_pink_theme">Cyan/Pink/Light</string>
<string name="grey_orange_theme">Grey/Orange/Light</string>
<string name="blue_amber_theme">Blue/Amber/Light</string>
<string name="indigo_pink_theme">Indigo/Pink/Light</string>
<string name="red_teal_theme">Red/Teal/Light</string>
<string name="teal_orange_dark_theme">Teal/Orange/Dark</string>
<string name="cyan_pink_dark_theme">Cyan/Pink/Dark</string>
<string name="default_dark_theme">Default/Dark</string>
<string name="grey_orange_dark_theme">Grey/Orange/Dark</string>
<string name="blue_amber_dark_theme">Blue/Amber/Dark</string>
<string name="indigo_pink_dark_theme">Indigo/Pink/Dark</string>
<string name="red_teal_dark_theme">Red/Teal/Dark</string>
</resources> </resources>

View File

@ -1,23 +1,30 @@
<resources> <resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:textColor">#000000</item>
</style>
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar"> <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/background_splash</item> <item name="android:windowBackground">@drawable/background_splash</item>
</style> </style>
<style name="NoBar" parent="Theme.AppCompat.Light.NoActionBar"> <style name="NoBar" parent="MaterialDrawerTheme.Light">
<item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item> <item name="colorAccent">@color/colorAccent</item>
<item name="android:textColor">#000000</item> <item name="colorAccentDark">@color/colorAccentDark</item>
<item name="cardBackgroundColor">@color/white</item>
<item name="android:colorBackground">@color/md_grey_50</item>
<item name="android:textColorPrimary">@color/md_grey_900</item>
<item name="android:textColorSecondary">@color/md_grey_400</item>
</style>
<style name="NoBarDark" parent="MaterialDrawerTheme">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="colorAccentDark">@color/colorAccentDark</item>
<item name="cardBackgroundColor">@color/md_grey_800</item>
<item name="android:colorBackground">#303030</item>
<item name="bnbBackgroundColor">@color/md_grey_900</item>
<item name="android:textColorPrimary">@color/md_white_1000</item>
<item name="android:textColorSecondary">@color/md_grey_600</item>
</style> </style>
<!-- ToolBar --> <!-- ToolBar -->
@ -29,4 +36,144 @@
<item name="drawerArrowStyle">@style/DrawerArrowStyle</item>--> <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>-->
</style> </style>
<style name="NoBarBlueAmber" parent="MaterialDrawerTheme.Light">
<item name="colorPrimary">@color/md_blue_500</item>
<item name="colorPrimaryDark">@color/md_blue_700</item>
<item name="colorAccent">@color/md_amber_500</item>
<item name="colorAccentDark">@color/md_amber_700</item>
<item name="cardBackgroundColor">@color/white</item>
<item name="android:colorBackground">@color/md_grey_50</item>
<item name="android:textColorPrimary">@color/md_grey_900</item>
<item name="android:textColorSecondary">@color/md_grey_400</item>
</style>
<style name="NoBarBlueAmberDark" parent="MaterialDrawerTheme">
<item name="colorPrimary">@color/md_blue_500</item>
<item name="colorPrimaryDark">@color/md_blue_700</item>
<item name="colorAccent">@color/md_amber_500</item>
<item name="colorAccentDark">@color/md_amber_700</item>
<item name="cardBackgroundColor">@color/md_grey_800</item>
<item name="android:colorBackground">#303030</item>
<item name="bnbBackgroundColor">@color/md_grey_900</item>
<item name="android:textColorPrimary">@color/md_white_1000</item>
<item name="android:textColorSecondary">@color/md_grey_600</item>
</style>
<style name="NoBarGreyOrange" parent="MaterialDrawerTheme.Light">
<item name="colorPrimary">@color/md_blue_grey_500</item>
<item name="colorPrimaryDark">@color/md_blue_grey_700</item>
<item name="colorAccent">@color/md_deep_orange_500</item>
<item name="colorAccentDark">@color/md_deep_orange_700</item>
<item name="cardBackgroundColor">@color/white</item>
<item name="android:colorBackground">@color/md_grey_50</item>
<item name="android:textColorPrimary">@color/md_grey_900</item>
<item name="android:textColorSecondary">@color/md_grey_400</item>
</style>
<style name="NoBarGreyOrangeDark" parent="MaterialDrawerTheme">
<item name="colorPrimary">@color/md_blue_grey_500</item>
<item name="colorPrimaryDark">@color/md_blue_grey_700</item>
<item name="colorAccent">@color/md_deep_orange_500</item>
<item name="colorAccentDark">@color/md_deep_orange_700</item>
<item name="cardBackgroundColor">@color/md_grey_800</item>
<item name="android:colorBackground">#303030</item>
<item name="bnbBackgroundColor">@color/md_grey_900</item>
<item name="android:textColorPrimary">@color/md_white_1000</item>
<item name="android:textColorSecondary">@color/md_grey_600</item>
</style>
<style name="NoBarIndigoPink" parent="MaterialDrawerTheme.Light">
<item name="colorPrimary">@color/md_indigo_500</item>
<item name="colorPrimaryDark">@color/md_indigo_700</item>
<item name="colorAccent">@color/md_pink_500</item>
<item name="colorAccentDark">@color/md_pink_700</item>
<item name="cardBackgroundColor">@color/white</item>
<item name="android:colorBackground">@color/md_grey_50</item>
<item name="android:textColorPrimary">@color/md_grey_900</item>
<item name="android:textColorSecondary">@color/md_grey_400</item>
</style>
<style name="NoBarIndigoPinkDark" parent="MaterialDrawerTheme">
<item name="colorPrimary">@color/md_indigo_500</item>
<item name="colorPrimaryDark">@color/md_indigo_700</item>
<item name="colorAccent">@color/md_pink_500</item>
<item name="colorAccentDark">@color/md_pink_700</item>
<item name="cardBackgroundColor">@color/md_grey_800</item>
<item name="android:colorBackground">#303030</item>
<item name="bnbBackgroundColor">@color/md_grey_900</item>
<item name="android:textColorPrimary">@color/md_white_1000</item>
<item name="android:textColorSecondary">@color/md_grey_600</item>
</style>
<style name="NoBarRedTeal" parent="MaterialDrawerTheme.Light">
<item name="colorPrimary">@color/md_red_500</item>
<item name="colorPrimaryDark">@color/md_red_700</item>
<item name="colorAccent">@color/md_teal_500</item>
<item name="colorAccentDark">@color/md_teal_700</item>
<item name="cardBackgroundColor">@color/white</item>
<item name="android:colorBackground">@color/md_grey_50</item>
<item name="android:textColorPrimary">@color/md_grey_900</item>
<item name="android:textColorSecondary">@color/md_grey_400</item>
</style>
<style name="NoBarRedTealDark" parent="MaterialDrawerTheme">
<item name="colorPrimary">@color/md_red_500</item>
<item name="colorPrimaryDark">@color/md_red_700</item>
<item name="colorAccent">@color/md_teal_500</item>
<item name="colorAccentDark">@color/md_teal_700</item>
<item name="cardBackgroundColor">@color/md_grey_800</item>
<item name="android:colorBackground">#303030</item>
<item name="bnbBackgroundColor">@color/md_grey_900</item>
<item name="android:textColorPrimary">@color/md_white_1000</item>
<item name="android:textColorSecondary">@color/md_grey_600</item>
</style>
<style name="NoBarCyanPink" parent="MaterialDrawerTheme.Light">
<item name="colorPrimary">@color/md_cyan_500</item>
<item name="colorPrimaryDark">@color/md_cyan_700</item>
<item name="colorAccent">@color/md_pink_500</item>
<item name="colorAccentDark">@color/md_pink_700</item>
<item name="cardBackgroundColor">@color/white</item>
<item name="android:colorBackground">@color/md_grey_50</item>
<item name="android:textColorPrimary">@color/md_grey_900</item>
<item name="android:textColorSecondary">@color/md_grey_400</item>
</style>
<style name="NoBarCyanPinkDark" parent="MaterialDrawerTheme">
<item name="colorPrimary">@color/md_cyan_500</item>
<item name="colorPrimaryDark">@color/md_cyan_700</item>
<item name="colorAccent">@color/md_pink_500</item>
<item name="colorAccentDark">@color/md_pink_700</item>
<item name="cardBackgroundColor">@color/md_grey_800</item>
<item name="android:colorBackground">#303030</item>
<item name="bnbBackgroundColor">@color/md_grey_900</item>
<item name="android:textColorPrimary">@color/md_white_1000</item>
<item name="android:textColorSecondary">@color/md_grey_600</item>
</style>
<style name="NoBarTealOrange" parent="MaterialDrawerTheme.Light">
<item name="colorPrimary">@color/md_teal_500</item>
<item name="colorPrimaryDark">@color/md_teal_700</item>
<item name="colorAccent">@color/md_orange_500</item>
<item name="colorAccentDark">@color/md_orange_700</item>
<item name="cardBackgroundColor">@color/white</item>
<item name="android:colorBackground">@color/md_grey_50</item>
<item name="android:textColorPrimary">@color/md_grey_900</item>
<item name="android:textColorSecondary">@color/md_grey_400</item>
</style>
<style name="NoBarTealOrangeDark" parent="MaterialDrawerTheme">
<item name="colorPrimary">@color/md_teal_500</item>
<item name="colorPrimaryDark">@color/md_teal_700</item>
<item name="colorAccent">@color/md_orange_500</item>
<item name="colorAccentDark">@color/md_orange_700</item>
<item name="cardBackgroundColor">@color/md_grey_800</item>
<item name="android:colorBackground">#303030</item>
<item name="bnbBackgroundColor">@color/md_grey_900</item>
<item name="android:textColorPrimary">@color/md_white_1000</item>
<item name="android:textColorSecondary">@color/md_grey_600</item>
</style>
</resources> </resources>

View File

@ -5,6 +5,11 @@
android:icon="@drawable/ic_settings_black_24dp" android:icon="@drawable/ic_settings_black_24dp"
android:title="@string/pref_header_general"/> android:title="@string/pref_header_general"/>
<header
android:id="@+id/theme_change"
android:icon="@drawable/ic_color_lens_black_24dp"
android:title="@string/pref_header_theme"/>
<header <header
android:fragment="apps.amine.bou.readerforselfoss.settings.SettingsActivity$LinksPreferenceFragment" android:fragment="apps.amine.bou.readerforselfoss.settings.SettingsActivity$LinksPreferenceFragment"
android:icon="@drawable/ic_info_black_24" android:icon="@drawable/ic_info_black_24"