From 719794778dff640e432b4bafa7fbdec274daade6 Mon Sep 17 00:00:00 2001 From: Mariotaku Lee Date: Thu, 2 Mar 2017 17:23:34 +0800 Subject: [PATCH] migrating to Glide --- gradle.properties | 7 +----- .../activity/QuickSearchBarActivity.kt | 17 +++++++------- .../adapter/ComposeAutoCompleteAdapter.kt | 8 ++++--- .../adapter/UserAutoCompleteAdapter.kt | 13 ++++++----- .../twidere/extension/GlideExtensions.kt | 2 +- .../fragment/AccountsDashboardFragment.kt | 4 ++++ .../fragment/filter/BaseFiltersFragment.kt | 3 ++- .../fragment/filter/FilteredUsersFragment.kt | 2 +- .../twidere/loader/ParcelableUserLoader.kt | 22 +++++++++---------- .../twidere/util/MediaLoaderWrapper.kt | 9 -------- .../mariotaku/twidere/view/ComposeEditText.kt | 3 ++- .../layout/header_drawer_account_selector.xml | 2 +- 12 files changed, 45 insertions(+), 47 deletions(-) diff --git a/gradle.properties b/gradle.properties index c00fb02d8..abf350c69 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,20 +1,15 @@ # Project-wide Gradle settings. - # IDE (e.g. Android Studio) users: # Settings specified in this file will override any Gradle settings # configured through the IDE. - # For more details on how to configure your build environment visit # http://www.gradle.org/docs/current/userguide/build_environment.html - # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. # Default value: -Xmx10248m -XX:MaxPermSize=256m # org.gradle.jvmargs=-Xmx10248m -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 - # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true -org.gradle.jvmargs=-Xmx2048M -kotlin.incremental=true \ No newline at end of file +org.gradle.jvmargs=-Xmx2048M \ No newline at end of file diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/activity/QuickSearchBarActivity.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/activity/QuickSearchBarActivity.kt index 0633a33a4..a4f82728a 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/activity/QuickSearchBarActivity.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/activity/QuickSearchBarActivity.kt @@ -50,6 +50,7 @@ import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT_KEY import org.mariotaku.twidere.constant.KeyboardShortcutConstants.ACTION_NAVIGATION_BACK import org.mariotaku.twidere.constant.KeyboardShortcutConstants.CONTEXT_TAG_NAVIGATION import org.mariotaku.twidere.constant.newDocumentApiKey +import org.mariotaku.twidere.extension.loadProfileImage import org.mariotaku.twidere.model.AccountDetails import org.mariotaku.twidere.model.SuggestionItem import org.mariotaku.twidere.model.UserKey @@ -263,10 +264,11 @@ class QuickSearchBarActivity : BaseActivity(), OnClickListener, LoaderCallbacks< private val activity: QuickSearchBarActivity ) : CursorAdapter(activity, null, 0), OnClickListener { - private val inflater: LayoutInflater = LayoutInflater.from(activity) - private val mediaLoader: MediaLoaderWrapper = activity.mediaLoader - private val userColorNameManager: UserColorNameManager = activity.userColorNameManager - private val removedPositions: SortableIntList? = SortableIntList() + private val requestManager = Glide.with(activity) + private val inflater = LayoutInflater.from(activity) + private val mediaLoader = activity.mediaLoader + private val userColorNameManager = activity.userColorNameManager + private val removedPositions = SortableIntList() private var indices: SuggestionItem.Indices? = null @@ -319,7 +321,7 @@ class QuickSearchBarActivity : BaseActivity(), OnClickListener, LoaderCallbacks< holder.text2.visibility = View.VISIBLE holder.text2.text = "@${cursor.getString(indices.summary)}" holder.icon.clearColorFilter() - mediaLoader.displayProfileImage(holder.icon, cursor.getString(indices.icon)) + requestManager.loadProfileImage(context, cursor.getString(indices.icon)).into(holder.icon) } VIEW_TYPE_USER_SCREEN_NAME -> { val holder = view.tag as UserViewHolder @@ -396,7 +398,6 @@ class QuickSearchBarActivity : BaseActivity(), OnClickListener, LoaderCallbacks< } private fun getActualPosition(position: Int): Int { - if (removedPositions == null) return position var skipped = 0 for (i in 0 until removedPositions.size()) { if (position + skipped >= removedPositions.get(i)) { @@ -408,9 +409,9 @@ class QuickSearchBarActivity : BaseActivity(), OnClickListener, LoaderCallbacks< fun addRemovedPositions(positions: IntArray) { for (position in positions) { - removedPositions!!.add(getActualPosition(position)) + removedPositions.add(getActualPosition(position)) } - removedPositions!!.sort() + removedPositions.sort() notifyDataSetChanged() } diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/adapter/ComposeAutoCompleteAdapter.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/adapter/ComposeAutoCompleteAdapter.kt index d66603e7e..1b1f65dd0 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/adapter/ComposeAutoCompleteAdapter.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/adapter/ComposeAutoCompleteAdapter.kt @@ -25,11 +25,13 @@ import android.graphics.PorterDuff.Mode import android.support.v4.widget.SimpleCursorAdapter import android.view.View import android.widget.TextView +import com.bumptech.glide.RequestManager import org.mariotaku.kpreferences.get import org.mariotaku.twidere.R import org.mariotaku.twidere.TwidereConstants.* import org.mariotaku.twidere.constant.displayProfileImageKey import org.mariotaku.twidere.constant.profileImageStyleKey +import org.mariotaku.twidere.extension.loadProfileImage import org.mariotaku.twidere.model.SuggestionItem import org.mariotaku.twidere.model.UserKey import org.mariotaku.twidere.provider.TwidereDataStore.Suggestions @@ -40,7 +42,7 @@ import org.mariotaku.twidere.util.dagger.GeneralComponentHelper import org.mariotaku.twidere.view.ProfileImageView import javax.inject.Inject -class ComposeAutoCompleteAdapter(context: Context) : SimpleCursorAdapter(context, +class ComposeAutoCompleteAdapter(context: Context, val requestManager: RequestManager) : SimpleCursorAdapter(context, R.layout.list_item_auto_complete, null, emptyArray(), intArrayOf(), 0) { @Inject @@ -63,7 +65,7 @@ class ComposeAutoCompleteAdapter(context: Context) : SimpleCursorAdapter(context profileImageStyle = preferences[profileImageStyleKey] } - override fun bindView(view: View, context: Context?, cursor: Cursor) { + override fun bindView(view: View, context: Context, cursor: Cursor) { val indices = this.indices!! val text1 = view.findViewById(android.R.id.text1) as TextView val text2 = view.findViewById(android.R.id.text2) as TextView @@ -77,7 +79,7 @@ class ComposeAutoCompleteAdapter(context: Context) : SimpleCursorAdapter(context text2.text = String.format("@%s", cursor.getString(indices.summary)) if (displayProfileImage) { val profileImageUrl = cursor.getString(indices.icon) - mediaLoader.displayProfileImage(icon, profileImageUrl) + requestManager.loadProfileImage(context, profileImageUrl).into(icon) } else { //TODO cancel image load } diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/adapter/UserAutoCompleteAdapter.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/adapter/UserAutoCompleteAdapter.kt index 4b8233885..6d52552ef 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/adapter/UserAutoCompleteAdapter.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/adapter/UserAutoCompleteAdapter.kt @@ -27,6 +27,7 @@ import android.support.v4.widget.SimpleCursorAdapter import android.text.TextUtils import android.view.View import android.widget.TextView +import com.bumptech.glide.RequestManager import org.mariotaku.kpreferences.get import org.mariotaku.sqliteqb.library.Columns import org.mariotaku.sqliteqb.library.Expression @@ -34,6 +35,7 @@ import org.mariotaku.sqliteqb.library.OrderBy import org.mariotaku.twidere.R import org.mariotaku.twidere.constant.displayProfileImageKey import org.mariotaku.twidere.constant.profileImageStyleKey +import org.mariotaku.twidere.extension.loadProfileImage import org.mariotaku.twidere.model.ParcelableUserCursorIndices import org.mariotaku.twidere.model.UserKey import org.mariotaku.twidere.provider.TwidereDataStore.CachedUsers @@ -46,9 +48,10 @@ import org.mariotaku.twidere.view.ProfileImageView import javax.inject.Inject -class UserAutoCompleteAdapter(val context: Context) : SimpleCursorAdapter(context, - R.layout.list_item_auto_complete, null, emptyArray(), - intArrayOf(), 0) { +class UserAutoCompleteAdapter( + val context: Context, + val requestManager: RequestManager +) : SimpleCursorAdapter(context, R.layout.list_item_auto_complete, null, emptyArray(), intArrayOf(), 0) { @Inject lateinit var profileImageLoader: MediaLoaderWrapper @@ -70,7 +73,7 @@ class UserAutoCompleteAdapter(val context: Context) : SimpleCursorAdapter(contex profileImageStyle = preferences[profileImageStyleKey] } - override fun bindView(view: View, context: Context?, cursor: Cursor) { + override fun bindView(view: View, context: Context, cursor: Cursor) { val indices = this.indices!! val text1 = view.findViewById(android.R.id.text1) as TextView val text2 = view.findViewById(android.R.id.text2) as TextView @@ -83,7 +86,7 @@ class UserAutoCompleteAdapter(val context: Context) : SimpleCursorAdapter(contex text2.text = "@${cursor.getString(indices.screen_name)}" if (displayProfileImage) { val profileImageUrl = cursor.getString(indices.profile_image_url) - profileImageLoader.displayProfileImage(icon, profileImageUrl) + requestManager.loadProfileImage(context, profileImageUrl, profileImageStyle).into(icon) } else { //TODO cancel image load } diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/extension/GlideExtensions.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/extension/GlideExtensions.kt index c8081c5e7..703faa389 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/extension/GlideExtensions.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/extension/GlideExtensions.kt @@ -95,7 +95,7 @@ fun RequestManager.loadProfileImage(context: Context, conversation: ParcelableMe fun RequestManager.loadOriginalProfileImage(context: Context, user: ParcelableUser, @ImageShapeStyle shapeStyle: Int = ImageShapeStyle.SHAPE_CIRCLE): DrawableRequestBuilder { - val original = user.extras.profile_image_url_original?.takeIf(String::isEmpty) + val original = user.extras.profile_image_url_original?.takeUnless(String::isEmpty) ?: Utils.getOriginalTwitterProfileImage(user.profile_image_url) return configureLoadProfileImage(context, shapeStyle) { load(original) } } diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AccountsDashboardFragment.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AccountsDashboardFragment.kt index 1d17d6966..0c12c7b07 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AccountsDashboardFragment.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AccountsDashboardFragment.kt @@ -147,6 +147,10 @@ class AccountsDashboardFragment : BaseFragment(), LoaderCallbacks, hasPrevAccountIndicator.alpha = 0f hasNextAccountIndicator.alpha = 0f + val profileImageStyle = preferences[profileImageStyleKey] + floatingProfileImageSnapshot.style = profileImageStyle + accountProfileImageView.style = profileImageStyle + val menuInflater = SupportMenuInflater(context) menuInflater.inflate(R.menu.action_dashboard_timeline_toggle, accountDashboardMenu.menu) accountDashboardMenu.setOnMenuItemClickListener(OnMenuItemClickListener { item -> diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/filter/BaseFiltersFragment.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/filter/BaseFiltersFragment.kt index 273483eb3..3d5105b9a 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/filter/BaseFiltersFragment.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/filter/BaseFiltersFragment.kt @@ -41,6 +41,7 @@ import android.text.TextUtils import android.view.* import android.widget.* import android.widget.AbsListView.MultiChoiceModeListener +import com.bumptech.glide.Glide import kotlinx.android.synthetic.main.fragment_content_listview.* import org.mariotaku.ktextension.setGroupAvailability import org.mariotaku.sqliteqb.library.Columns @@ -300,7 +301,7 @@ abstract class BaseFiltersFragment : AbsContentListViewFragment -