diff --git a/app/build.gradle b/app/build.gradle index ab7cb40..caa4c1d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -118,7 +118,7 @@ dependencies { implementation 'com.burgstaller:okhttp-digest:1.12' // Material-ish things - implementation 'com.ashokvarma.android:bottom-navigation-bar:2.0.5' + implementation 'com.ashokvarma.android:bottom-navigation-bar:2.1.0' implementation 'com.github.jd-alexander:LikeButton:0.2.3' implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1' @@ -131,17 +131,17 @@ dependencies { // Themes implementation 'com.52inc:scoops:1.0.0' - implementation 'com.jaredrummler:colorpicker:1.0.2' + implementation 'com.jaredrummler:colorpicker:1.1.0' implementation 'com.github.rubensousa:floatingtoolbar:1.5.1' // Pager implementation 'me.relex:circleindicator:2.0.0@aar' - implementation 'androidx.core:core-ktx:1.0.0' + implementation 'androidx.core:core-ktx:1.1.0-beta01' // Crash - implementation 'ch.acra:acra-http:5.2.1' - implementation 'ch.acra:acra-dialog:5.2.1' + implementation 'ch.acra:acra-http:5.3.0' + implementation 'ch.acra:acra-dialog:5.3.0' implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version" implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" 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 6afffb4..3fc09e2 100644 --- a/app/src/main/java/apps/amine/bou/readerforselfoss/HomeActivity.kt +++ b/app/src/main/java/apps/amine/bou/readerforselfoss/HomeActivity.kt @@ -4,24 +4,21 @@ import android.content.Context import android.content.Intent import android.content.SharedPreferences import android.graphics.Color +import android.graphics.drawable.BitmapDrawable import android.graphics.drawable.GradientDrawable import android.net.Uri import android.os.Build import android.os.Bundle import android.preference.PreferenceManager -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 import android.widget.Toast +import androidx.appcompat.app.AlertDialog +import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.widget.SearchView +import androidx.core.view.MenuItemCompat +import androidx.recyclerview.widget.* import androidx.room.Room import androidx.work.Constraints import androidx.work.ExistingPeriodicWorkPolicy @@ -30,12 +27,7 @@ import androidx.work.WorkManager import apps.amine.bou.readerforselfoss.adapters.ItemCardAdapter import apps.amine.bou.readerforselfoss.adapters.ItemListAdapter import apps.amine.bou.readerforselfoss.adapters.ItemsAdapter -import apps.amine.bou.readerforselfoss.api.selfoss.Item -import apps.amine.bou.readerforselfoss.api.selfoss.SelfossApi -import apps.amine.bou.readerforselfoss.api.selfoss.Source -import apps.amine.bou.readerforselfoss.api.selfoss.Stats -import apps.amine.bou.readerforselfoss.api.selfoss.SuccessResponse -import apps.amine.bou.readerforselfoss.api.selfoss.Tag +import apps.amine.bou.readerforselfoss.api.selfoss.* import apps.amine.bou.readerforselfoss.background.LoadingWorker import apps.amine.bou.readerforselfoss.persistence.database.AppDatabase import apps.amine.bou.readerforselfoss.persistence.entities.ActionEntity @@ -48,7 +40,6 @@ import apps.amine.bou.readerforselfoss.utils.Config import apps.amine.bou.readerforselfoss.utils.bottombar.maybeShow import apps.amine.bou.readerforselfoss.utils.bottombar.removeBadge import apps.amine.bou.readerforselfoss.utils.customtabs.CustomTabActivityHelper -import apps.amine.bou.readerforselfoss.utils.drawer.CustomUrlPrimaryDrawerItem import apps.amine.bou.readerforselfoss.utils.flattenTags import apps.amine.bou.readerforselfoss.utils.longHash import apps.amine.bou.readerforselfoss.utils.maybeHandleSilentException @@ -63,6 +54,7 @@ import co.zsmb.materialdrawerkt.draweritems.profile.profile import com.ashokvarma.bottomnavigation.BottomNavigationBar import com.ashokvarma.bottomnavigation.BottomNavigationItem import com.ashokvarma.bottomnavigation.TextBadgeItem +import com.bumptech.glide.Glide import com.ftinc.scoop.Scoop import com.mikepenz.aboutlibraries.Libs import com.mikepenz.aboutlibraries.LibsBuilder @@ -619,18 +611,24 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener { } } else { for (tag in maybeSources) { - drawer.addItem( - CustomUrlPrimaryDrawerItem() + val item = PrimaryDrawerItem() .withName(tag.title) .withIdentifier(tag.id.toLong()) - .withIcon(tag.getIcon(this@HomeActivity)) .withOnDrawerItemClickListener { _, _, _ -> allItems = ArrayList() maybeSourceFilter = tag getElementsAccordingToTab() false } - ) + if (tag.getIcon(this@HomeActivity).isNotBlank()) { + thread { + item.withIcon(BitmapDrawable(resources, Glide.with(this@HomeActivity).asBitmap().load(tag.getIcon(this@HomeActivity)).submit(100, 100).get())) + } + } else { + item.withIcon(R.mipmap.ic_launcher_round) + } + drawer.addItem(item) + } } } diff --git a/app/src/main/java/apps/amine/bou/readerforselfoss/utils/drawer/CustomUrlBasePrimaryDrawerItem.kt b/app/src/main/java/apps/amine/bou/readerforselfoss/utils/drawer/CustomUrlBasePrimaryDrawerItem.kt deleted file mode 100644 index f8b74c8..0000000 --- a/app/src/main/java/apps/amine/bou/readerforselfoss/utils/drawer/CustomUrlBasePrimaryDrawerItem.kt +++ /dev/null @@ -1,112 +0,0 @@ -/* From https://github.com/mikepenz/MaterialDrawer/blob/develop/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/CustomUrlBasePrimaryDrawerItem.java */ -package apps.amine.bou.readerforselfoss.utils.drawer - -import android.net.Uri -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 -import com.mikepenz.materialdrawer.holder.StringHolder -import com.mikepenz.materialdrawer.model.BaseDrawerItem -import com.mikepenz.materialdrawer.util.DrawerImageLoader -import com.mikepenz.materialdrawer.util.DrawerUIUtils -import com.mikepenz.materialize.util.UIUtils - -abstract class CustomUrlBasePrimaryDrawerItem : - BaseDrawerItem() { - fun withIcon(url: String): T { - this.icon = ImageHolder(url) - return this as T - } - - fun withIcon(uri: Uri): T { - this.icon = ImageHolder(uri) - return this as T - } - - var description: StringHolder? = null - private set - var descriptionTextColor: ColorHolder? = null - private set - - fun withDescription(description: String): T { - this.description = StringHolder(description) - return this as T - } - - fun withDescription(@StringRes descriptionRes: Int): T { - this.description = StringHolder(descriptionRes) - return this as T - } - - fun withDescriptionTextColor(@ColorInt color: Int): T { - this.descriptionTextColor = ColorHolder.fromColor(color) - return this as T - } - - fun withDescriptionTextColorRes(@ColorRes colorRes: Int): T { - this.descriptionTextColor = ColorHolder.fromColorRes(colorRes) - return this as T - } - - /** - * a helper method to have the logic for all secondaryDrawerItems only once - - * @param viewHolder - */ - protected fun bindViewHelper(viewHolder: CustomBaseViewHolder) { - val ctx = viewHolder.itemView.context - - //set the identifier from the drawerItem here. It can be used to run tests - viewHolder.itemView.id = hashCode() - - //set the item selected if it is - viewHolder.itemView.isSelected = isSelected - - //get the correct color for the background - val selectedColor = getSelectedColor(ctx) - //get the correct color for the text - val color = getColor(ctx) - val selectedTextColor = getSelectedTextColor(ctx) - //get the correct color for the icon - val iconColor = getIconColor(ctx) - val selectedIconColor = getSelectedIconColor(ctx) - - //set the background for the item - UIUtils.setBackground( - viewHolder.view, - UIUtils.getSelectableBackground(ctx, selectedColor, true) - ) - //set the text for the name - StringHolder.applyTo(this.getName(), viewHolder.name) - //set the text for the description or hide - StringHolder.applyToOrHide(this.description, viewHolder.description) - - //set the colors for textViews - viewHolder.name.setTextColor(getTextColorStateList(color, selectedTextColor)) - //set the description text color - ColorHolder.applyToOr( - descriptionTextColor, - viewHolder.description, - getTextColorStateList(color, selectedTextColor) - ) - - //define the typeface for our textViews - if (getTypeface() != null) { - viewHolder.name.typeface = getTypeface() - viewHolder.description.typeface = getTypeface() - } - - //we make sure we reset the image first before setting the new one in case there is an empty one - DrawerImageLoader.getInstance().cancelImage(viewHolder.icon) - viewHolder.icon.setImageBitmap(null) - //get the drawables for our icon and set it - ImageHolder.applyTo(icon, viewHolder.icon, "customUrlItem") - - //for android API 17 --> Padding not applied via xml - DrawerUIUtils.setDrawerVerticalPadding(viewHolder.view) - } -} diff --git a/app/src/main/java/apps/amine/bou/readerforselfoss/utils/drawer/CustomUrlPrimaryDrawerItem.kt b/app/src/main/java/apps/amine/bou/readerforselfoss/utils/drawer/CustomUrlPrimaryDrawerItem.kt deleted file mode 100644 index c4bb2b5..0000000 --- a/app/src/main/java/apps/amine/bou/readerforselfoss/utils/drawer/CustomUrlPrimaryDrawerItem.kt +++ /dev/null @@ -1,94 +0,0 @@ -/* 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 androidx.annotation.LayoutRes -import androidx.annotation.StringRes -import android.view.View -import android.widget.TextView -import apps.amine.bou.readerforselfoss.R -import com.mikepenz.materialdrawer.holder.BadgeStyle -import com.mikepenz.materialdrawer.holder.StringHolder -import com.mikepenz.materialdrawer.model.interfaces.ColorfulBadgeable - -class CustomUrlPrimaryDrawerItem : - CustomUrlBasePrimaryDrawerItem(), - ColorfulBadgeable { - protected var mBadge: StringHolder = StringHolder("") - protected var mBadgeStyle = BadgeStyle() - - override fun withBadge(badge: StringHolder): CustomUrlPrimaryDrawerItem { - this.mBadge = badge - return this - } - - override fun withBadge(badge: String): CustomUrlPrimaryDrawerItem { - this.mBadge = StringHolder(badge) - return this - } - - override fun withBadge(@StringRes badgeRes: Int): CustomUrlPrimaryDrawerItem { - this.mBadge = StringHolder(badgeRes) - return this - } - - override fun withBadgeStyle(badgeStyle: BadgeStyle): CustomUrlPrimaryDrawerItem { - this.mBadgeStyle = badgeStyle - return this - } - - override fun getBadge(): StringHolder { - return mBadge - } - - override fun getBadgeStyle(): BadgeStyle { - return mBadgeStyle - } - - override fun getType(): Int { - return R.id.material_drawer_item_custom_url_item - } - - @LayoutRes - override fun getLayoutRes(): Int { - return R.layout.material_drawer_item_primary - } - - override fun bindView(viewHolder: ViewHolder, payloads: List<*>?) { - super.bindView(viewHolder, payloads) - - val ctx = viewHolder.itemView.context - - //bind the basic view parts - bindViewHelper(viewHolder) - - //set the text for the badge or hide - val badgeVisible = StringHolder.applyToOrHide(mBadge, viewHolder.badge) - //style the badge if it is visible - if (badgeVisible) { - mBadgeStyle.style( - viewHolder.badge, - getTextColorStateList(getColor(ctx), getSelectedTextColor(ctx)) - ) - viewHolder.badgeContainer.visibility = View.VISIBLE - } else { - viewHolder.badgeContainer.visibility = View.GONE - } - - //define the typeface for our textViews - if (getTypeface() != null) { - viewHolder.badge.typeface = getTypeface() - } - - //call the onPostBindView method to trigger post bind view actions (like the listener to modify the item if required) - onPostBindView(this, viewHolder.itemView) - } - - override fun getViewHolder(v: View): ViewHolder { - return ViewHolder(v) - } - - class ViewHolder(view: View) : CustomBaseViewHolder(view) { - val badgeContainer: View = view.findViewById(R.id.material_drawer_badge_container) - val badge: TextView = view.findViewById(R.id.material_drawer_badge) - } -} \ No newline at end of file diff --git a/app/src/main/res/drawable/web_hi_res_512.png b/app/src/main/res/drawable/web_hi_res_512.png deleted file mode 100644 index a149479..0000000 Binary files a/app/src/main/res/drawable/web_hi_res_512.png and /dev/null differ diff --git a/app/src/main/res/values/ids.xml b/app/src/main/res/values/ids.xml deleted file mode 100644 index 201f9a0..0000000 --- a/app/src/main/res/values/ids.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/build.gradle b/build.gradle index ce7aefa..b42660c 100644 --- a/build.gradle +++ b/build.gradle @@ -2,11 +2,11 @@ buildscript { ext { - kotlin_version = '1.3.21' + kotlin_version = '1.3.31' android_version = '1.0.0' androidx_version = '1.0.2' - lifecycle_version = '2.0.0' - room_version = '2.1.0-alpha06' + lifecycle_version = '2.2.0-alpha01' + room_version = '2.1.0-beta01' work_version = "1.0.1-rc01" } repositories {