diff --git a/CHANGELOG.md b/CHANGELOG.md index c081d23..5bd3df8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,8 @@ -**1.5.0.3 to 1.5.0.9** +**1.5.1** - Added a drawer for filtering sources and tags. -- Fixes to the drawer. +- You can now search for items from the toolbar. **1.5.0.2** diff --git a/app/build.gradle b/app/build.gradle index fd17230..7641028 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -25,8 +25,8 @@ android { applicationId "apps.amine.bou.readerforselfoss" minSdkVersion 16 targetSdkVersion 25 - versionCode 1509 - versionName "1.5.0.9" + versionCode 1510 + versionName "1.5.1" // Enabling multidex support. multiDexEnabled true diff --git a/app/src/main/java/apps/amine/bou/readerforselfoss/HomeActivity.kt b/app/src/main/java/apps/amine/bou/readerforselfoss/HomeActivity.kt index 39688ea..dc652d1 100644 --- a/app/src/main/java/apps/amine/bou/readerforselfoss/HomeActivity.kt +++ b/app/src/main/java/apps/amine/bou/readerforselfoss/HomeActivity.kt @@ -5,24 +5,19 @@ import android.content.Context import android.content.Intent import android.content.SharedPreferences import android.graphics.Color -import android.graphics.drawable.Drawable import android.graphics.drawable.GradientDrawable import android.net.Uri import android.os.Bundle import android.preference.PreferenceManager import android.support.design.widget.CoordinatorLayout +import android.support.v4.view.MenuItemCompat import android.support.v4.widget.SwipeRefreshLayout import android.support.v7.app.AppCompatActivity -import android.support.v7.widget.GridLayoutManager -import android.support.v7.widget.RecyclerView -import android.support.v7.widget.StaggeredGridLayoutManager -import android.support.v7.widget.Toolbar +import android.support.v7.widget.* import android.support.v7.widget.helper.ItemTouchHelper -import android.util.DisplayMetrics import android.view.Menu import android.view.MenuItem import android.view.View -import android.widget.ImageView import android.widget.Toast import apps.amine.bou.readerforselfoss.adapters.ItemCardAdapter import apps.amine.bou.readerforselfoss.adapters.ItemListAdapter @@ -37,7 +32,6 @@ import apps.amine.bou.readerforselfoss.utils.longHash import com.anupcowkur.reservoir.Reservoir import com.anupcowkur.reservoir.ReservoirGetCallback import com.anupcowkur.reservoir.ReservoirPutCallback -import com.bumptech.glide.Glide import com.crashlytics.android.answers.Answers import com.crashlytics.android.answers.InviteEvent import com.github.stkent.amplify.prompt.DefaultLayoutPromptView @@ -49,15 +43,12 @@ import com.google.firebase.remoteconfig.FirebaseRemoteConfig import com.google.gson.reflect.TypeToken import com.mikepenz.aboutlibraries.Libs import com.mikepenz.aboutlibraries.LibsBuilder -import com.mikepenz.iconics.IconicsDrawable import com.mikepenz.materialdrawer.Drawer import com.mikepenz.materialdrawer.DrawerBuilder import com.mikepenz.materialdrawer.holder.BadgeStyle import com.mikepenz.materialdrawer.model.DividerDrawerItem -import com.mikepenz.materialdrawer.model.SecondaryDrawerItem import com.mikepenz.materialdrawer.model.PrimaryDrawerItem -import com.mikepenz.materialdrawer.util.AbstractDrawerImageLoader -import com.mikepenz.materialdrawer.util.DrawerImageLoader +import com.mikepenz.materialdrawer.model.SecondaryDrawerItem import com.roughike.bottombar.BottomBar import com.roughike.bottombar.BottomBarTab import retrofit2.Call @@ -65,9 +56,7 @@ import retrofit2.Callback import retrofit2.Response import java.lang.Exception - -class HomeActivity : AppCompatActivity() { - +class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener { private val MENU_PREFERENCES = 12302 private val REQUEST_INVITE = 13231 @@ -105,6 +94,7 @@ class HomeActivity : AppCompatActivity() { private var drawer: Drawer? = null private var maybeTagFilter: Tag? = null private var maybeSourceFilter: Sources? = null + private var maybeSearchFilter: String? = null data class DrawerData(val tags: List?, val sources: List?) @@ -471,16 +461,16 @@ class HomeActivity : AppCompatActivity() { private fun getElementsAccordingToTab() { when (elementsShown) { - UNREAD_SHOWN -> getUnRead(maybeTagFilter, maybeSourceFilter) - READ_SHOWN -> getRead(maybeTagFilter, maybeSourceFilter) - FAV_SHOWN -> getStarred(maybeTagFilter, maybeSourceFilter) - else -> getUnRead(maybeTagFilter, maybeSourceFilter) + UNREAD_SHOWN -> getUnRead() + READ_SHOWN -> getRead() + FAV_SHOWN -> getStarred() + else -> getUnRead() } } - private fun getUnRead(maybeTagFilter: Tag? = null, maybeSourceFilter: Sources? = null) { + private fun getUnRead() { elementsShown = UNREAD_SHOWN - api!!.unreadItems(maybeTagFilter?.tag, maybeSourceFilter?.id?.toLong()).enqueue(object : Callback> { + api!!.unreadItems(maybeTagFilter?.tag, maybeSourceFilter?.id?.toLong(), maybeSearchFilter).enqueue(object : Callback> { override fun onResponse(call: Call>, response: Response>) { handleItemsResponse(response) } @@ -507,9 +497,9 @@ class HomeActivity : AppCompatActivity() { mSwipeRefreshLayout!!.isRefreshing = false } - private fun getRead(maybeTagFilter: Tag? = null, maybeSourceFilter: Sources? = null) { + private fun getRead() { elementsShown = READ_SHOWN - api!!.readItems(maybeTagFilter?.tag, maybeSourceFilter?.id?.toLong()).enqueue(object : Callback> { + api!!.readItems(maybeTagFilter?.tag, maybeSourceFilter?.id?.toLong(), maybeSearchFilter).enqueue(object : Callback> { override fun onResponse(call: Call>, response: Response>) { handleItemsResponse(response) } @@ -521,9 +511,9 @@ class HomeActivity : AppCompatActivity() { }) } - private fun getStarred(maybeTagFilter: Tag? = null, maybeSourceFilter: Sources? = null) { + private fun getStarred() { elementsShown = FAV_SHOWN - api!!.starredItems(maybeTagFilter?.tag, maybeSourceFilter?.id?.toLong()).enqueue(object : Callback> { + api!!.starredItems(maybeTagFilter?.tag, maybeSourceFilter?.id?.toLong(), maybeSearchFilter).enqueue(object : Callback> { override fun onResponse(call: Call>, response: Response>) { handleItemsResponse(response) } @@ -563,6 +553,11 @@ class HomeActivity : AppCompatActivity() { override fun onCreateOptionsMenu(menu: Menu): Boolean { val inflater = menuInflater inflater.inflate(R.menu.home_menu, menu) + + val searchItem = menu.findItem(R.id.action_search) + val searchView = MenuItemCompat.getActionView(searchItem) as SearchView + searchView.setOnQueryTextListener(this) + return true } @@ -690,4 +685,18 @@ class HomeActivity : AppCompatActivity() { val dpWidth = displayMetrics.widthPixels / displayMetrics.density return (dpWidth / 300).toInt() } + + override fun onQueryTextChange(p0: String?): Boolean { + if (p0.isNullOrBlank()) { + maybeSearchFilter = null + getElementsAccordingToTab() + } + return false + } + + override fun onQueryTextSubmit(p0: String?): Boolean { + maybeSearchFilter = p0 + getElementsAccordingToTab() + return false + } } diff --git a/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossApi.kt b/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossApi.kt index baced67..a4be878 100644 --- a/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossApi.kt +++ b/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossApi.kt @@ -72,17 +72,17 @@ class SelfossApi(c: Context) { return service.loginToSelfoss(config.userLogin, config.userPassword) } - fun readItems(tag: String?, sourceId: Long?): Call> = - getItems("read", tag, sourceId) + fun readItems(tag: String?, sourceId: Long?, search: String?): Call> = + getItems("read", tag, sourceId, search) - fun unreadItems(tag: String?, sourceId: Long?): Call> = - getItems("unread", tag, sourceId) + fun unreadItems(tag: String?, sourceId: Long?, search: String?): Call> = + getItems("unread", tag, sourceId, search) - fun starredItems(tag: String?, sourceId: Long?): Call> = - getItems("starred", tag, sourceId) + fun starredItems(tag: String?, sourceId: Long?, search: String?): Call> = + getItems("starred", tag, sourceId, search) - private fun getItems(type: String, tag: String?, sourceId: Long?): Call> { - return service.getItems(type, tag, sourceId, userName, password) + private fun getItems(type: String, tag: String?, sourceId: Long?, search: String?): Call> { + return service.getItems(type, tag, sourceId, search, userName, password) } fun markItem(itemId: String): Call { diff --git a/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossService.kt b/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossService.kt index 3b48401..4b0f2f0 100644 --- a/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossService.kt +++ b/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossService.kt @@ -19,6 +19,7 @@ internal interface SelfossService { fun getItems(@Query("type") type: String, @Query("tag") tag: String?, @Query("source") source: Long?, + @Query("search") search: String?, @Query("username") username: String, @Query("password") password: String): Call> diff --git a/app/src/main/res/drawable-hdpi/ic_action_search.png b/app/src/main/res/drawable-hdpi/ic_action_search.png new file mode 100644 index 0000000..45c099a Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_action_search.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_action_search.png b/app/src/main/res/drawable-mdpi/ic_action_search.png new file mode 100644 index 0000000..174ccaa Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_action_search.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_action_search.png b/app/src/main/res/drawable-xhdpi/ic_action_search.png new file mode 100644 index 0000000..079c9a3 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_action_search.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_action_search.png b/app/src/main/res/drawable-xxhdpi/ic_action_search.png new file mode 100644 index 0000000..7d8c57b Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_action_search.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_action_search.png b/app/src/main/res/drawable-xxxhdpi/ic_action_search.png new file mode 100644 index 0000000..aa17f31 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_action_search.png differ diff --git a/app/src/main/res/menu/home_menu.xml b/app/src/main/res/menu/home_menu.xml index f9d4199..bdf0335 100644 --- a/app/src/main/res/menu/home_menu.xml +++ b/app/src/main/res/menu/home_menu.xml @@ -2,6 +2,12 @@ + + Pas de tags chargés Pas de sources chargés Chargement … + Rechercher \ No newline at end of file diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index ddf1f08..41990e5 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -114,4 +114,5 @@ No tags loaded No sources loaded Loading … + Zoeken \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 644a88c..08e6bd6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -116,4 +116,5 @@ No tags loaded No sources loaded Loading … + Search \ No newline at end of file