parent
4ceaf681c4
commit
85ae456b4a
|
@ -23,6 +23,7 @@ import android.app.Activity
|
|||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.support.v4.app.LoaderManager
|
||||
import android.support.v4.app.hasRunningLoadersSafe
|
||||
import android.support.v4.content.Loader
|
||||
import android.view.View
|
||||
import android.widget.AdapterView.OnItemClickListener
|
||||
|
@ -38,12 +39,14 @@ import org.mariotaku.twidere.loader.UserListOwnershipsLoader
|
|||
import org.mariotaku.twidere.model.ParcelableUser
|
||||
import org.mariotaku.twidere.model.ParcelableUserList
|
||||
import org.mariotaku.twidere.model.UserKey
|
||||
import org.mariotaku.twidere.util.ContentScrollHandler
|
||||
import org.mariotaku.twidere.util.ListViewScrollHandler
|
||||
|
||||
class UserListSelectorActivity : BaseActivity(),
|
||||
ContentScrollHandler.ContentListSupport<SimpleParcelableUserListsAdapter>,
|
||||
LoaderManager.LoaderCallbacks<List<ParcelableUserList>> {
|
||||
|
||||
|
||||
private lateinit var adapter: SimpleParcelableUserListsAdapter
|
||||
override lateinit var adapter: SimpleParcelableUserListsAdapter
|
||||
|
||||
private val accountKey: UserKey?
|
||||
get() = intent.getParcelableExtra<UserKey>(EXTRA_ACCOUNT_KEY)
|
||||
|
@ -68,6 +71,7 @@ class UserListSelectorActivity : BaseActivity(),
|
|||
(findViewById(android.R.id.text1) as TextView).setText(R.string.action_select_user)
|
||||
}, SelectUserAction, true)
|
||||
listView.adapter = adapter
|
||||
listView.setOnScrollListener(ListViewScrollHandler(this, listView))
|
||||
listView.onItemClickListener = OnItemClickListener { view, child, position, id ->
|
||||
val item = view.getItemAtPosition(position)
|
||||
when (item) {
|
||||
|
@ -132,6 +136,26 @@ class UserListSelectorActivity : BaseActivity(),
|
|||
showList()
|
||||
}
|
||||
|
||||
override fun setControlVisible(visible: Boolean) {
|
||||
}
|
||||
|
||||
override var refreshing: Boolean
|
||||
get() {
|
||||
return supportLoaderManager.hasRunningLoadersSafe()
|
||||
}
|
||||
set(value) {
|
||||
|
||||
}
|
||||
|
||||
override val reachingStart: Boolean
|
||||
get() = listView.firstVisiblePosition < 0
|
||||
override val reachingEnd: Boolean
|
||||
get() = listView.lastVisiblePosition > (listView.count + listView.headerViewsCount
|
||||
+ listView.footerViewsCount)
|
||||
|
||||
override fun onLoadMoreContents(position: Long) {
|
||||
}
|
||||
|
||||
private fun loadUserLists(accountKey: UserKey, userKey: UserKey) {
|
||||
if (userKey != this.userKey) {
|
||||
adapter.clear()
|
||||
|
|
|
@ -43,9 +43,9 @@ import org.mariotaku.twidere.util.TwidereColorUtils
|
|||
* Created by mariotaku on 15/4/16.
|
||||
*/
|
||||
abstract class AbsContentListViewFragment<A : ListAdapter> : BaseFragment(),
|
||||
OnRefreshListener, RefreshScrollTopInterface, ControlBarOffsetListener, ContentListSupport,
|
||||
OnRefreshListener, RefreshScrollTopInterface, ControlBarOffsetListener, ContentListSupport<A>,
|
||||
AbsListView.OnScrollListener {
|
||||
private lateinit var scrollHandler: ListViewScrollHandler
|
||||
private lateinit var scrollHandler: ListViewScrollHandler<A>
|
||||
// Data fields
|
||||
private val systemWindowsInsets = Rect()
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@ import org.mariotaku.twidere.view.iface.IExtendedView
|
|||
abstract class AbsContentRecyclerViewFragment<A : LoadMoreSupportAdapter<RecyclerView.ViewHolder>,
|
||||
L : RecyclerView.LayoutManager> : BaseFragment(), SwipeRefreshLayout.OnRefreshListener,
|
||||
HeaderDrawerLayout.DrawerCallback, RefreshScrollTopInterface, IControlBarActivity.ControlBarOffsetListener,
|
||||
ContentScrollHandler.ContentListSupport, ControlBarShowHideHelper.ControlBarAnimationListener {
|
||||
ContentScrollHandler.ContentListSupport<A>, ControlBarShowHideHelper.ControlBarAnimationListener {
|
||||
|
||||
lateinit var layoutManager: L
|
||||
protected set
|
||||
|
@ -57,7 +57,7 @@ abstract class AbsContentRecyclerViewFragment<A : LoadMoreSupportAdapter<Recycle
|
|||
|
||||
// Callbacks and listeners
|
||||
private lateinit var drawerCallback: SimpleDrawerCallback
|
||||
lateinit var scrollListener: RecyclerViewScrollHandler
|
||||
lateinit var scrollListener: RecyclerViewScrollHandler<A>
|
||||
// Data fields
|
||||
private val systemWindowsInsets = Rect()
|
||||
|
||||
|
|
|
@ -121,14 +121,15 @@ import java.util.*
|
|||
* Created by mariotaku on 14/12/5.
|
||||
*/
|
||||
class StatusFragment : BaseFragment(), LoaderCallbacks<SingleResponse<ParcelableStatus>>,
|
||||
OnMediaClickListener, StatusClickListener, KeyboardShortcutCallback, ContentListSupport {
|
||||
OnMediaClickListener, StatusClickListener, KeyboardShortcutCallback,
|
||||
ContentListSupport<StatusFragment.StatusAdapter> {
|
||||
private var mItemDecoration: DividerItemDecoration? = null
|
||||
|
||||
override lateinit var adapter: StatusAdapter
|
||||
|
||||
private lateinit var layoutManager: LinearLayoutManager
|
||||
private lateinit var navigationHelper: RecyclerViewNavigationHelper
|
||||
private lateinit var scrollListener: RecyclerViewScrollHandler
|
||||
private lateinit var scrollListener: RecyclerViewScrollHandler<StatusFragment.StatusAdapter>
|
||||
|
||||
private var loadTranslationTask: LoadTranslationTask? = null
|
||||
// Data fields
|
||||
|
|
|
@ -34,10 +34,7 @@ import org.mariotaku.twidere.model.`FiltersData$UserItemCursorIndices`
|
|||
import org.mariotaku.twidere.model.analyzer.PurchaseFinished
|
||||
import org.mariotaku.twidere.provider.TwidereDataStore.Filters
|
||||
import org.mariotaku.twidere.text.style.EmojiSpan
|
||||
import org.mariotaku.twidere.util.Analyzer
|
||||
import org.mariotaku.twidere.util.ContentValuesCreator
|
||||
import org.mariotaku.twidere.util.ThemeUtils
|
||||
import org.mariotaku.twidere.util.UserColorNameManager
|
||||
import org.mariotaku.twidere.util.*
|
||||
import org.mariotaku.twidere.util.dagger.GeneralComponentHelper
|
||||
import org.mariotaku.twidere.util.premium.ExtraFeaturesService
|
||||
import javax.inject.Inject
|
||||
|
@ -55,35 +52,30 @@ class FilteredUsersFragment : BaseFiltersFragment() {
|
|||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||
when (requestCode) {
|
||||
REQUEST_SELECT_USER -> {
|
||||
if (resultCode != FragmentActivity.RESULT_OK) return
|
||||
val user = data!!.getParcelableExtra<ParcelableUser>(EXTRA_USER)
|
||||
val values = ContentValuesCreator.createFilteredUser(user)
|
||||
val resolver = context.contentResolver
|
||||
val where = Expression.equalsArgs(Filters.Users.USER_KEY).sql
|
||||
val whereArgs = arrayOf(user.key.toString())
|
||||
resolver.delete(Filters.Users.CONTENT_URI, where, whereArgs)
|
||||
resolver.insert(Filters.Users.CONTENT_URI, values)
|
||||
if (resultCode != FragmentActivity.RESULT_OK || data == null) return
|
||||
val user = data.getParcelableExtra<ParcelableUser>(EXTRA_USER)
|
||||
DataStoreUtils.addToFilter(context, listOf(user), false)
|
||||
}
|
||||
REQUEST_IMPORT_BLOCKS_SELECT_ACCOUNT -> {
|
||||
if (resultCode != FragmentActivity.RESULT_OK) return
|
||||
if (resultCode != FragmentActivity.RESULT_OK || data == null) return
|
||||
val intent = Intent(context, LinkHandlerActivity::class.java)
|
||||
intent.data = Uri.Builder().scheme(SCHEME_TWIDERE).authority(AUTHORITY_FILTERS).path(PATH_FILTERS_IMPORT_BLOCKS).build()
|
||||
intent.putExtra(EXTRA_ACCOUNT_KEY, data!!.getParcelableExtra<UserKey>(EXTRA_ACCOUNT_KEY))
|
||||
intent.putExtra(EXTRA_ACCOUNT_KEY, data.getParcelableExtra<UserKey>(EXTRA_ACCOUNT_KEY))
|
||||
startActivity(intent)
|
||||
}
|
||||
REQUEST_IMPORT_MUTES_SELECT_ACCOUNT -> {
|
||||
if (resultCode != FragmentActivity.RESULT_OK) return
|
||||
if (resultCode != FragmentActivity.RESULT_OK || data == null) return
|
||||
val intent = Intent(context, LinkHandlerActivity::class.java)
|
||||
intent.data = Uri.Builder().scheme(SCHEME_TWIDERE).authority(AUTHORITY_FILTERS).path(PATH_FILTERS_IMPORT_MUTES).build()
|
||||
intent.putExtra(EXTRA_ACCOUNT_KEY, data!!.getParcelableExtra<UserKey>(EXTRA_ACCOUNT_KEY))
|
||||
intent.putExtra(EXTRA_ACCOUNT_KEY, data.getParcelableExtra<UserKey>(EXTRA_ACCOUNT_KEY))
|
||||
startActivity(intent)
|
||||
}
|
||||
REQUEST_ADD_USER_SELECT_ACCOUNT -> {
|
||||
if (resultCode != FragmentActivity.RESULT_OK) return
|
||||
if (resultCode != FragmentActivity.RESULT_OK || data == null) return
|
||||
val intent = Intent(INTENT_ACTION_SELECT_USER)
|
||||
intent.setClass(context, UserSelectorActivity::class.java)
|
||||
intent.putExtra(EXTRA_ACCOUNT_KEY, data!!.getParcelableExtra<UserKey>(EXTRA_ACCOUNT_KEY))
|
||||
startActivityForResult(intent, REQUEST_ADD_USER_SELECT_ACCOUNT)
|
||||
intent.putExtra(EXTRA_ACCOUNT_KEY, data.getParcelableExtra<UserKey>(EXTRA_ACCOUNT_KEY))
|
||||
startActivityForResult(intent, REQUEST_SELECT_USER)
|
||||
}
|
||||
REQUEST_PURCHASE_EXTRA_FEATURES -> {
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
|
|
|
@ -29,8 +29,8 @@ import org.mariotaku.twidere.adapter.iface.ILoadMoreSupportAdapter.IndicatorPosi
|
|||
/**
|
||||
* Created by mariotaku on 15/3/15.
|
||||
*/
|
||||
open class ContentScrollHandler(
|
||||
private val contentListSupport: ContentScrollHandler.ContentListSupport,
|
||||
open class ContentScrollHandler<A>(
|
||||
private val contentListSupport: ContentScrollHandler.ContentListSupport<A>,
|
||||
private val viewCallback: ContentScrollHandler.ViewCallback?
|
||||
) {
|
||||
val touchListener: View.OnTouchListener
|
||||
|
@ -123,7 +123,7 @@ open class ContentScrollHandler(
|
|||
scrollDirection = 0
|
||||
}
|
||||
|
||||
internal class TouchListener(private val listener: ContentScrollHandler) : View.OnTouchListener {
|
||||
internal class TouchListener<A>(private val listener: ContentScrollHandler<A>) : View.OnTouchListener {
|
||||
private var lastY: Float = 0f
|
||||
|
||||
override fun onTouch(v: View, event: MotionEvent): Boolean {
|
||||
|
@ -151,9 +151,9 @@ open class ContentScrollHandler(
|
|||
fun post(runnable: Runnable)
|
||||
}
|
||||
|
||||
interface ContentListSupport {
|
||||
interface ContentListSupport<A> {
|
||||
|
||||
val adapter: Any?
|
||||
val adapter: A?
|
||||
|
||||
val refreshing: Boolean
|
||||
|
||||
|
|
|
@ -1,25 +1,25 @@
|
|||
package org.mariotaku.twidere.util
|
||||
|
||||
import android.widget.AbsListView
|
||||
import android.widget.ListView
|
||||
|
||||
import org.mariotaku.twidere.util.support.ViewSupport
|
||||
|
||||
/**
|
||||
* Created by mariotaku on 16/3/1.
|
||||
*/
|
||||
class ListViewScrollHandler(
|
||||
contentListSupport: ContentScrollHandler.ContentListSupport,
|
||||
class ListViewScrollHandler<A>(
|
||||
contentListSupport: ContentScrollHandler.ContentListSupport<A>,
|
||||
viewCallback: ContentScrollHandler.ViewCallback?
|
||||
) : ContentScrollHandler(contentListSupport, viewCallback), AbsListView.OnScrollListener,
|
||||
) : ContentScrollHandler<A>(contentListSupport, viewCallback), AbsListView.OnScrollListener,
|
||||
ListScrollDistanceCalculator.ScrollDistanceListener {
|
||||
private val calculator: ListScrollDistanceCalculator
|
||||
private val calculator: ListScrollDistanceCalculator = ListScrollDistanceCalculator()
|
||||
var onScrollListener: AbsListView.OnScrollListener? = null
|
||||
private var dy: Int = 0
|
||||
private var oldState = AbsListView.OnScrollListener.SCROLL_STATE_IDLE
|
||||
|
||||
init {
|
||||
calculator = ListScrollDistanceCalculator()
|
||||
}
|
||||
constructor(contentListSupport: ContentScrollHandler.ContentListSupport<A>, listView: ListView)
|
||||
: this(contentListSupport, ListViewCallback(listView))
|
||||
|
||||
override fun onScrollStateChanged(view: AbsListView, scrollState: Int) {
|
||||
calculator.onScrollStateChanged(view, scrollState)
|
||||
|
|
|
@ -9,15 +9,11 @@ import org.mariotaku.twidere.util.ContentScrollHandler.ViewCallback
|
|||
/**
|
||||
* Created by mariotaku on 16/3/1.
|
||||
*/
|
||||
class RecyclerViewScrollHandler(contentListSupport: ContentListSupport, viewCallback: ViewCallback?) : RecyclerView.OnScrollListener() {
|
||||
class RecyclerViewScrollHandler<A>(contentListSupport: ContentListSupport<A>, viewCallback: ViewCallback?) : RecyclerView.OnScrollListener() {
|
||||
|
||||
internal val scrollHandler: ContentScrollHandler
|
||||
internal val scrollHandler: ContentScrollHandler<A> = ContentScrollHandler(contentListSupport, viewCallback)
|
||||
private var oldState = RecyclerView.SCROLL_STATE_IDLE
|
||||
|
||||
init {
|
||||
scrollHandler = ContentScrollHandler(contentListSupport, viewCallback)
|
||||
}
|
||||
|
||||
var touchSlop: Int
|
||||
get() = scrollHandler.touchSlop
|
||||
set(value) {
|
||||
|
|
Loading…
Reference in New Issue