parent
52ebf05b84
commit
20c49e727c
|
@ -148,11 +148,11 @@ public interface ListResources {
|
|||
|
||||
|
||||
@GET("/lists/subscriptions.json")
|
||||
PageableResponseList<UserList> getUserListSubscriptionsByScreenName(@Query("screen_name") String listOwnerScreenName, long cursor)
|
||||
PageableResponseList<UserList> getUserListSubscriptionsByScreenName(@Query("screen_name") String listOwnerScreenName, @Query Paging paging)
|
||||
throws MicroBlogException;
|
||||
|
||||
@GET("/lists/subscriptions.json")
|
||||
PageableResponseList<UserList> getUserListSubscriptions(@Query("user_id") String userId, long cursor)
|
||||
PageableResponseList<UserList> getUserListSubscriptions(@Query("user_id") String userId, @Query Paging paging)
|
||||
throws MicroBlogException;
|
||||
|
||||
@GET("/lists/show.json")
|
||||
|
|
|
@ -1,117 +0,0 @@
|
|||
/*
|
||||
* Twidere - Twitter client for Android
|
||||
*
|
||||
* Copyright (C) 2012-2014 Mariotaku Lee <mariotaku.lee@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package org.mariotaku.twidere.loader;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v4.content.AsyncTaskLoader;
|
||||
import android.util.Log;
|
||||
|
||||
import org.mariotaku.microblog.library.MicroBlog;
|
||||
import org.mariotaku.microblog.library.MicroBlogException;
|
||||
import org.mariotaku.microblog.library.twitter.model.CursorSupport;
|
||||
import org.mariotaku.microblog.library.twitter.model.PageableResponseList;
|
||||
import org.mariotaku.microblog.library.twitter.model.UserList;
|
||||
import org.mariotaku.twidere.TwidereConstants;
|
||||
import org.mariotaku.twidere.loader.iface.ICursorSupportLoader;
|
||||
import org.mariotaku.twidere.model.ParcelableUserList;
|
||||
import org.mariotaku.twidere.model.UserKey;
|
||||
import org.mariotaku.twidere.model.util.ParcelableUserListUtils;
|
||||
import org.mariotaku.twidere.util.MicroBlogAPIFactory;
|
||||
import org.mariotaku.twidere.util.collection.NoDuplicatesArrayList;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public abstract class BaseUserListsLoader extends AsyncTaskLoader<List<ParcelableUserList>>
|
||||
implements TwidereConstants, ICursorSupportLoader {
|
||||
|
||||
protected final NoDuplicatesArrayList<ParcelableUserList> mData = new NoDuplicatesArrayList<>();
|
||||
protected final UserKey mAccountId;
|
||||
private final long mCursor;
|
||||
|
||||
private long mNextCursor, mPrevCursor;
|
||||
|
||||
public BaseUserListsLoader(final Context context, final UserKey accountKey, final long cursor,
|
||||
final List<ParcelableUserList> data) {
|
||||
super(context);
|
||||
if (data != null) {
|
||||
mData.addAll(data);
|
||||
}
|
||||
mCursor = cursor;
|
||||
mAccountId = accountKey;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getCursor() {
|
||||
return mCursor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getNextCursor() {
|
||||
return mNextCursor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getPrevCursor() {
|
||||
return mPrevCursor;
|
||||
}
|
||||
|
||||
public abstract List<UserList> getUserLists(final MicroBlog twitter) throws MicroBlogException;
|
||||
|
||||
@Override
|
||||
public List<ParcelableUserList> loadInBackground() {
|
||||
final MicroBlog twitter = MicroBlogAPIFactory.getInstance(getContext(), mAccountId);
|
||||
List<UserList> listLoaded = null;
|
||||
try {
|
||||
listLoaded = getUserLists(twitter);
|
||||
} catch (final MicroBlogException e) {
|
||||
Log.w(LOGTAG, e);
|
||||
}
|
||||
if (listLoaded != null) {
|
||||
final int listSize = listLoaded.size();
|
||||
if (listLoaded instanceof PageableResponseList) {
|
||||
mNextCursor = ((CursorSupport) listLoaded).getNextCursor();
|
||||
mPrevCursor = ((CursorSupport) listLoaded).getPreviousCursor();
|
||||
final int dataSize = mData.size();
|
||||
for (int i = 0; i < listSize; i++) {
|
||||
final UserList list = listLoaded.get(i);
|
||||
mData.add(ParcelableUserListUtils.from(list, mAccountId, dataSize + i, isFollowing(list)));
|
||||
}
|
||||
} else {
|
||||
for (int i = 0; i < listSize; i++) {
|
||||
final UserList list = listLoaded.get(i);
|
||||
mData.add(ParcelableUserListUtils.from(listLoaded.get(i), mAccountId, i, isFollowing(list)));
|
||||
}
|
||||
}
|
||||
}
|
||||
Collections.sort(mData);
|
||||
return mData;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStartLoading() {
|
||||
forceLoad();
|
||||
}
|
||||
|
||||
protected boolean isFollowing(final UserList list) {
|
||||
return list.isFollowing();
|
||||
}
|
||||
}
|
|
@ -1,60 +0,0 @@
|
|||
/*
|
||||
* Twidere - Twitter client for Android
|
||||
*
|
||||
* Copyright (C) 2012-2014 Mariotaku Lee <mariotaku.lee@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package org.mariotaku.twidere.loader;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import org.mariotaku.microblog.library.MicroBlog;
|
||||
import org.mariotaku.microblog.library.MicroBlogException;
|
||||
import org.mariotaku.microblog.library.twitter.model.PageableResponseList;
|
||||
import org.mariotaku.microblog.library.twitter.model.Paging;
|
||||
import org.mariotaku.microblog.library.twitter.model.UserList;
|
||||
import org.mariotaku.twidere.model.ParcelableUserList;
|
||||
import org.mariotaku.twidere.model.UserKey;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class UserListMembershipsLoader extends BaseUserListsLoader {
|
||||
|
||||
private final UserKey mUserKey;
|
||||
private final String mScreenName;
|
||||
|
||||
public UserListMembershipsLoader(final Context context, final UserKey accountKey,
|
||||
final UserKey userKey, final String screenName,
|
||||
final long cursor, final List<ParcelableUserList> data) {
|
||||
super(context, accountKey, cursor, data);
|
||||
mUserKey = userKey;
|
||||
mScreenName = screenName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageableResponseList<UserList> getUserLists(final MicroBlog twitter) throws MicroBlogException {
|
||||
if (twitter == null) return null;
|
||||
final Paging paging = new Paging();
|
||||
paging.cursor(getCursor());
|
||||
if (mUserKey != null) {
|
||||
return twitter.getUserListMemberships(mUserKey.getId(), paging);
|
||||
} else if (mScreenName != null) {
|
||||
return twitter.getUserListMembershipsByScreenName(mScreenName, paging);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,62 +0,0 @@
|
|||
/*
|
||||
* Twidere - Twitter client for Android
|
||||
*
|
||||
* Copyright (C) 2012-2014 Mariotaku Lee <mariotaku.lee@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package org.mariotaku.twidere.loader;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import org.mariotaku.microblog.library.MicroBlog;
|
||||
import org.mariotaku.microblog.library.MicroBlogException;
|
||||
import org.mariotaku.microblog.library.twitter.model.ResponseList;
|
||||
import org.mariotaku.microblog.library.twitter.model.UserList;
|
||||
import org.mariotaku.twidere.model.ParcelableUserList;
|
||||
import org.mariotaku.twidere.model.UserKey;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class UserListsLoader extends BaseUserListsLoader {
|
||||
|
||||
private final UserKey mUserKey;
|
||||
private final String mScreenName;
|
||||
private final boolean mReverse;
|
||||
|
||||
public UserListsLoader(final Context context, final UserKey accountKey, final UserKey userKey,
|
||||
final String screenName, final boolean reverse, final List<ParcelableUserList> data) {
|
||||
super(context, accountKey, 0, data);
|
||||
mUserKey = userKey;
|
||||
mScreenName = screenName;
|
||||
mReverse = reverse;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResponseList<UserList> getUserLists(final MicroBlog twitter) throws MicroBlogException {
|
||||
if (twitter == null) return null;
|
||||
if (mUserKey != null) {
|
||||
return twitter.getUserLists(mUserKey.getId(), mReverse);
|
||||
} else if (mScreenName != null) {
|
||||
return twitter.getUserListsByScreenName(mScreenName, mReverse);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isFollowing(final UserList list) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -89,7 +89,7 @@ class BrowserSignInActivity : BaseActivity() {
|
|||
getRequestToken()
|
||||
}
|
||||
|
||||
public override fun onDestroy() {
|
||||
override fun onDestroy() {
|
||||
if (task?.status == AsyncTask.Status.RUNNING) {
|
||||
task?.cancel(true)
|
||||
}
|
||||
|
|
|
@ -143,7 +143,7 @@ class ComposeActivity : BaseActivity(), OnMenuItemClickListener, OnClickListener
|
|||
// Listeners
|
||||
private var locationListener: LocationListener? = null
|
||||
|
||||
public override fun onActivityResult(requestCode: Int, resultCode: Int, intent: Intent?) {
|
||||
override fun onActivityResult(requestCode: Int, resultCode: Int, intent: Intent?) {
|
||||
when (requestCode) {
|
||||
REQUEST_TAKE_PHOTO, REQUEST_PICK_MEDIA -> {
|
||||
if (resultCode == Activity.RESULT_OK && intent != null) {
|
||||
|
@ -213,7 +213,7 @@ class ComposeActivity : BaseActivity(), OnMenuItemClickListener, OnClickListener
|
|||
return textChanged || hasMedia() || isEditingDraft
|
||||
}
|
||||
|
||||
public override fun onSaveInstanceState(outState: Bundle) {
|
||||
override fun onSaveInstanceState(outState: Bundle) {
|
||||
outState.putParcelableArray(EXTRA_ACCOUNT_KEYS, accountsAdapter.selectedAccountKeys)
|
||||
outState.putParcelableArrayList(EXTRA_MEDIA, ArrayList<Parcelable>(mediaList))
|
||||
outState.putBoolean(EXTRA_IS_POSSIBLY_SENSITIVE, possiblySensitive)
|
||||
|
|
|
@ -37,7 +37,7 @@ import org.mariotaku.twidere.nyan.NyanWallpaperService
|
|||
|
||||
class NyanActivity : BaseActivity(), OnLongClickListener, OnSharedPreferenceChangeListener {
|
||||
|
||||
private var helper: NyanSurfaceHelper? = null
|
||||
private lateinit var helper: NyanSurfaceHelper
|
||||
|
||||
override fun onLongClick(v: View): Boolean {
|
||||
Toast.makeText(this, R.string.message_toast_nyan_sakamoto, Toast.LENGTH_SHORT).show()
|
||||
|
@ -63,11 +63,11 @@ class NyanActivity : BaseActivity(), OnLongClickListener, OnSharedPreferenceChan
|
|||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
helper?.start()
|
||||
helper.start()
|
||||
}
|
||||
|
||||
override fun onStop() {
|
||||
helper?.stop()
|
||||
helper.stop()
|
||||
super.onStop()
|
||||
}
|
||||
|
||||
|
@ -97,7 +97,7 @@ class NyanActivity : BaseActivity(), OnLongClickListener, OnSharedPreferenceChan
|
|||
|
||||
private fun updateSurface() {
|
||||
val def = resources.getInteger(R.integer.default_live_wallpaper_scale)
|
||||
helper!!.setScale(preferences.getInt(KEY_LIVE_WALLPAPER_SCALE, def).toFloat())
|
||||
helper.setScale(preferences.getInt(KEY_LIVE_WALLPAPER_SCALE, def).toFloat())
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -24,7 +24,6 @@ import android.content.Intent
|
|||
import android.os.AsyncTask
|
||||
import android.os.Bundle
|
||||
import android.support.v4.app.DialogFragment
|
||||
import android.support.v4.app.LoaderManager
|
||||
import android.text.TextUtils
|
||||
import android.text.TextUtils.isEmpty
|
||||
import android.util.Log
|
||||
|
@ -44,7 +43,6 @@ import org.mariotaku.twidere.adapter.UserAutoCompleteAdapter
|
|||
import org.mariotaku.twidere.constant.IntentConstants.*
|
||||
import org.mariotaku.twidere.fragment.CreateUserListDialogFragment
|
||||
import org.mariotaku.twidere.fragment.ProgressDialogFragment
|
||||
import org.mariotaku.twidere.model.ParcelableUser
|
||||
import org.mariotaku.twidere.model.ParcelableUserList
|
||||
import org.mariotaku.twidere.model.SingleResponse
|
||||
import org.mariotaku.twidere.model.UserKey
|
||||
|
@ -126,9 +124,6 @@ class UserListSelectorActivity : BaseActivity(), OnClickListener, OnItemClickLis
|
|||
AsyncTaskUtils.executeTask(task)
|
||||
}
|
||||
|
||||
private val isSelectingUser: Boolean
|
||||
get() = INTENT_ACTION_SELECT_USER == intent.action
|
||||
|
||||
private fun setUserListsData(data: List<ParcelableUserList>, isMyAccount: Boolean) {
|
||||
userListsAdapter.setData(data, true)
|
||||
userListsContainer.visibility = View.VISIBLE
|
||||
|
|
|
@ -123,7 +123,7 @@ class GroupFragment : AbsToolbarTabPagesFragment(), LoaderCallbacks<SingleRespon
|
|||
|
||||
}
|
||||
|
||||
public override fun onStartLoading() {
|
||||
override fun onStartLoading() {
|
||||
forceLoad()
|
||||
}
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ import org.mariotaku.twidere.model.UserKey
|
|||
|
||||
class GroupMembersFragment : CursorUsersListFragment() {
|
||||
|
||||
public override fun onCreateUsersLoader(context: Context,
|
||||
override fun onCreateUsersLoader(context: Context,
|
||||
args: Bundle, fromUser: Boolean): CursorSupportUsersLoader {
|
||||
val accountId = args.getParcelable<UserKey>(EXTRA_ACCOUNT_KEY)
|
||||
val groupId = args.getString(EXTRA_GROUP_ID)
|
||||
|
|
|
@ -35,7 +35,7 @@ import org.mariotaku.twidere.view.holder.UserViewHolder
|
|||
|
||||
class IncomingFriendshipsFragment : CursorUsersListFragment(), IUsersAdapter.RequestClickListener {
|
||||
|
||||
public override fun onCreateUsersLoader(context: Context, args: Bundle,
|
||||
override fun onCreateUsersLoader(context: Context, args: Bundle,
|
||||
fromUser: Boolean): CursorSupportUsersLoader {
|
||||
val accountKey = args.getParcelable<UserKey>(EXTRA_ACCOUNT_KEY)
|
||||
val loader = IncomingFriendshipsLoader(context, accountKey, adapter.getData(), fromUser)
|
||||
|
|
|
@ -32,7 +32,11 @@ class ListsFragment : AbsToolbarTabPagesFragment() {
|
|||
}
|
||||
|
||||
override fun addTabs(adapter: SupportTabsAdapter) {
|
||||
adapter.addTab(cls = UserListsFragment::class.java, args = arguments, name = getString(R.string.follows))
|
||||
adapter.addTab(cls = UserListMembershipsFragment::class.java, args = arguments, name = getString(R.string.belongs_to))
|
||||
adapter.addTab(cls = UserListsOwnershipsFragment::class.java, args = arguments,
|
||||
name = getString(R.string.title_user_list_ownerships))
|
||||
adapter.addTab(cls = UserListSubscriptionsFragment::class.java, args = arguments,
|
||||
name = getString(R.string.title_user_list_subscriptions))
|
||||
adapter.addTab(cls = UserListMembershipsFragment::class.java, args = arguments,
|
||||
name = getString(R.string.title_user_list_memberships))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -44,7 +44,7 @@ import org.mariotaku.twidere.view.holder.GroupViewHolder
|
|||
abstract class ParcelableGroupsFragment : AbsContentListRecyclerViewFragment<ParcelableGroupsAdapter>(),
|
||||
LoaderCallbacks<List<ParcelableGroup>?>, GroupAdapterListener, KeyboardShortcutCallback {
|
||||
|
||||
private var mNavigationHelper: RecyclerViewNavigationHelper? = null
|
||||
private lateinit var navigationHelper: RecyclerViewNavigationHelper
|
||||
val nextCursor: Long = 0
|
||||
val prevCursor: Long = 0
|
||||
|
||||
|
@ -109,15 +109,15 @@ abstract class ParcelableGroupsFragment : AbsContentListRecyclerViewFragment<Par
|
|||
get() = adapter.getData()
|
||||
|
||||
override fun handleKeyboardShortcutSingle(handler: KeyboardShortcutsHandler, keyCode: Int, event: KeyEvent, metaState: Int): Boolean {
|
||||
return mNavigationHelper!!.handleKeyboardShortcutSingle(handler, keyCode, event, metaState)
|
||||
return navigationHelper.handleKeyboardShortcutSingle(handler, keyCode, event, metaState)
|
||||
}
|
||||
|
||||
override fun handleKeyboardShortcutRepeat(handler: KeyboardShortcutsHandler, keyCode: Int, repeatCount: Int, event: KeyEvent, metaState: Int): Boolean {
|
||||
return mNavigationHelper!!.handleKeyboardShortcutRepeat(handler, keyCode, repeatCount, event, metaState)
|
||||
return navigationHelper.handleKeyboardShortcutRepeat(handler, keyCode, repeatCount, event, metaState)
|
||||
}
|
||||
|
||||
override fun isKeyboardShortcutHandled(handler: KeyboardShortcutsHandler, keyCode: Int, event: KeyEvent, metaState: Int): Boolean {
|
||||
return mNavigationHelper!!.isKeyboardShortcutHandled(handler, keyCode, event, metaState)
|
||||
return navigationHelper.isKeyboardShortcutHandled(handler, keyCode, event, metaState)
|
||||
}
|
||||
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
|
@ -125,7 +125,7 @@ abstract class ParcelableGroupsFragment : AbsContentListRecyclerViewFragment<Par
|
|||
val layoutManager = layoutManager
|
||||
adapter.groupAdapterListener = this
|
||||
|
||||
mNavigationHelper = RecyclerViewNavigationHelper(recyclerView, layoutManager, adapter,
|
||||
navigationHelper = RecyclerViewNavigationHelper(recyclerView, layoutManager, adapter,
|
||||
this)
|
||||
val loaderArgs = Bundle(arguments)
|
||||
loaderArgs.putBoolean(EXTRA_FROM_USER, true)
|
||||
|
|
|
@ -44,7 +44,7 @@ import org.mariotaku.twidere.view.holder.UserListViewHolder
|
|||
|
||||
abstract class ParcelableUserListsFragment : AbsContentListRecyclerViewFragment<ParcelableUserListsAdapter>(), LoaderCallbacks<List<ParcelableUserList>>, UserListClickListener, KeyboardShortcutCallback {
|
||||
|
||||
private var navigationHelper: RecyclerViewNavigationHelper? = null
|
||||
private lateinit var navigationHelper: RecyclerViewNavigationHelper
|
||||
var nextCursor: Long = 0
|
||||
private set
|
||||
var prevCursor: Long = 0
|
||||
|
@ -115,15 +115,15 @@ abstract class ParcelableUserListsFragment : AbsContentListRecyclerViewFragment<
|
|||
get() = adapter.getData()
|
||||
|
||||
override fun handleKeyboardShortcutSingle(handler: KeyboardShortcutsHandler, keyCode: Int, event: KeyEvent, metaState: Int): Boolean {
|
||||
return navigationHelper!!.handleKeyboardShortcutSingle(handler, keyCode, event, metaState)
|
||||
return navigationHelper.handleKeyboardShortcutSingle(handler, keyCode, event, metaState)
|
||||
}
|
||||
|
||||
override fun handleKeyboardShortcutRepeat(handler: KeyboardShortcutsHandler, keyCode: Int, repeatCount: Int, event: KeyEvent, metaState: Int): Boolean {
|
||||
return navigationHelper!!.handleKeyboardShortcutRepeat(handler, keyCode, repeatCount, event, metaState)
|
||||
return navigationHelper.handleKeyboardShortcutRepeat(handler, keyCode, repeatCount, event, metaState)
|
||||
}
|
||||
|
||||
override fun isKeyboardShortcutHandled(handler: KeyboardShortcutsHandler, keyCode: Int, event: KeyEvent, metaState: Int): Boolean {
|
||||
return navigationHelper!!.isKeyboardShortcutHandled(handler, keyCode, event, metaState)
|
||||
return navigationHelper.isKeyboardShortcutHandled(handler, keyCode, event, metaState)
|
||||
}
|
||||
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
|
|
|
@ -40,7 +40,6 @@ import org.mariotaku.twidere.adapter.iface.IUsersAdapter.UserClickListener
|
|||
import org.mariotaku.twidere.annotation.Referral
|
||||
import org.mariotaku.twidere.constant.IntentConstants
|
||||
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_SIMPLE_LAYOUT
|
||||
import org.mariotaku.twidere.constant.SharedPreferenceConstants
|
||||
import org.mariotaku.twidere.constant.newDocumentApiKey
|
||||
import org.mariotaku.twidere.loader.iface.IExtendedLoader
|
||||
import org.mariotaku.twidere.model.ParcelableUser
|
||||
|
@ -56,9 +55,9 @@ abstract class ParcelableUsersFragment : AbsContentListRecyclerViewFragment<Parc
|
|||
LoaderCallbacks<List<ParcelableUser>?>, UserClickListener, KeyboardShortcutCallback,
|
||||
IUsersAdapter.FriendshipClickListener {
|
||||
|
||||
private val usersBusCallback: Any
|
||||
private lateinit var navigationHelper: RecyclerViewNavigationHelper
|
||||
|
||||
private var navigationHelper: RecyclerViewNavigationHelper? = null
|
||||
private val usersBusCallback: Any
|
||||
|
||||
init {
|
||||
usersBusCallback = createMessageBusCallback()
|
||||
|
@ -118,17 +117,17 @@ abstract class ParcelableUsersFragment : AbsContentListRecyclerViewFragment<Parc
|
|||
|
||||
override fun handleKeyboardShortcutSingle(handler: KeyboardShortcutsHandler, keyCode: Int,
|
||||
event: KeyEvent, metaState: Int): Boolean {
|
||||
return navigationHelper!!.handleKeyboardShortcutSingle(handler, keyCode, event, metaState)
|
||||
return navigationHelper.handleKeyboardShortcutSingle(handler, keyCode, event, metaState)
|
||||
}
|
||||
|
||||
override fun handleKeyboardShortcutRepeat(handler: KeyboardShortcutsHandler, keyCode: Int,
|
||||
repeatCount: Int, event: KeyEvent, metaState: Int): Boolean {
|
||||
return navigationHelper!!.handleKeyboardShortcutRepeat(handler, keyCode, repeatCount, event, metaState)
|
||||
return navigationHelper.handleKeyboardShortcutRepeat(handler, keyCode, repeatCount, event, metaState)
|
||||
}
|
||||
|
||||
override fun isKeyboardShortcutHandled(handler: KeyboardShortcutsHandler, keyCode: Int,
|
||||
event: KeyEvent, metaState: Int): Boolean {
|
||||
return navigationHelper!!.isKeyboardShortcutHandled(handler, keyCode, event, metaState)
|
||||
return navigationHelper.isKeyboardShortcutHandled(handler, keyCode, event, metaState)
|
||||
}
|
||||
|
||||
override fun onCreateLoader(id: Int, args: Bundle): Loader<List<ParcelableUser>?> {
|
||||
|
|
|
@ -41,7 +41,7 @@ class SearchUsersFragment : ParcelableUsersFragment() {
|
|||
super.onActivityCreated(savedInstanceState)
|
||||
}
|
||||
|
||||
public override fun onCreateUsersLoader(context: Context, args: Bundle, fromUser: Boolean): Loader<List<ParcelableUser>?> {
|
||||
override fun onCreateUsersLoader(context: Context, args: Bundle, fromUser: Boolean): Loader<List<ParcelableUser>?> {
|
||||
val accountKey = args.getParcelable<UserKey>(EXTRA_ACCOUNT_KEY)
|
||||
val query = args.getString(EXTRA_QUERY)
|
||||
val page = args.getInt(EXTRA_PAGE, 1)
|
||||
|
|
|
@ -29,7 +29,7 @@ import org.mariotaku.twidere.model.UserKey
|
|||
|
||||
class StatusFavoritersListFragment : CursorUsersListFragment() {
|
||||
|
||||
public override fun onCreateUsersLoader(context: Context, args: Bundle, fromUser: Boolean): CursorSupportUsersLoader {
|
||||
override fun onCreateUsersLoader(context: Context, args: Bundle, fromUser: Boolean): CursorSupportUsersLoader {
|
||||
val accountKey = args.getParcelable<UserKey>(EXTRA_ACCOUNT_KEY)
|
||||
val statusId = args.getString(EXTRA_STATUS_ID)
|
||||
val loader = StatusFavoritersLoader(context, accountKey,
|
||||
|
|
|
@ -29,7 +29,7 @@ import org.mariotaku.twidere.model.UserKey
|
|||
|
||||
class StatusRetweetersListFragment : CursorUsersListFragment() {
|
||||
|
||||
public override fun onCreateUsersLoader(context: Context,
|
||||
override fun onCreateUsersLoader(context: Context,
|
||||
args: Bundle,
|
||||
fromUser: Boolean): CursorSupportUsersLoader {
|
||||
val accountKey = args.getParcelable<UserKey>(EXTRA_ACCOUNT_KEY)
|
||||
|
|
|
@ -29,7 +29,7 @@ import org.mariotaku.twidere.model.message.FriendshipTaskEvent
|
|||
|
||||
class UserFollowersFragment : CursorUsersListFragment() {
|
||||
|
||||
public override fun onCreateUsersLoader(context: Context,
|
||||
override fun onCreateUsersLoader(context: Context,
|
||||
args: Bundle,
|
||||
fromUser: Boolean): CursorSupportUsersLoader {
|
||||
val accountKey = args.getParcelable<UserKey>(EXTRA_ACCOUNT_KEY)
|
||||
|
|
|
@ -29,7 +29,7 @@ import org.mariotaku.twidere.model.message.FriendshipTaskEvent
|
|||
|
||||
class UserFriendsFragment : CursorUsersListFragment() {
|
||||
|
||||
public override fun onCreateUsersLoader(context: Context,
|
||||
override fun onCreateUsersLoader(context: Context,
|
||||
args: Bundle, fromUser: Boolean): CursorSupportUsersLoader {
|
||||
val accountKey = args.getParcelable<UserKey>(EXTRA_ACCOUNT_KEY)
|
||||
val userKey = args.getParcelable<UserKey>(EXTRA_USER_KEY)
|
||||
|
|
|
@ -439,7 +439,7 @@ class UserListFragment : AbsToolbarTabPagesFragment(), OnClickListener, LoaderCa
|
|||
|
||||
}
|
||||
|
||||
public override fun onStartLoading() {
|
||||
override fun onStartLoading() {
|
||||
forceLoad()
|
||||
}
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ import java.util.*
|
|||
|
||||
class UserListMembersFragment : CursorUsersListFragment() {
|
||||
|
||||
public override fun onCreateUsersLoader(context: Context,
|
||||
override fun onCreateUsersLoader(context: Context,
|
||||
args: Bundle, fromUser: Boolean): CursorSupportUsersLoader {
|
||||
val accountId = args.getParcelable<UserKey>(EXTRA_ACCOUNT_KEY)
|
||||
val listId = args.getString(EXTRA_LIST_ID)
|
||||
|
|
|
@ -29,7 +29,7 @@ import org.mariotaku.twidere.model.UserKey
|
|||
|
||||
class UserListMembershipsFragment : ParcelableUserListsFragment() {
|
||||
|
||||
public override fun onCreateUserListsLoader(context: Context,
|
||||
override fun onCreateUserListsLoader(context: Context,
|
||||
args: Bundle, fromUser: Boolean): Loader<List<ParcelableUserList>> {
|
||||
val accountKey = args.getParcelable<UserKey>(EXTRA_ACCOUNT_KEY)
|
||||
val userKey = args.getParcelable<UserKey>(EXTRA_USER_KEY)
|
||||
|
|
|
@ -28,7 +28,7 @@ import org.mariotaku.twidere.model.UserKey
|
|||
|
||||
class UserListSubscribersFragment : CursorUsersListFragment() {
|
||||
|
||||
public override fun onCreateUsersLoader(context: Context, args: Bundle, fromUser: Boolean): CursorSupportUsersLoader {
|
||||
override fun onCreateUsersLoader(context: Context, args: Bundle, fromUser: Boolean): CursorSupportUsersLoader {
|
||||
val listId = args.getString(EXTRA_LIST_ID)
|
||||
val accountKey = args.getParcelable<UserKey>(EXTRA_ACCOUNT_KEY)
|
||||
val userKey = args.getParcelable<UserKey>(EXTRA_USER_KEY)
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
/*
|
||||
* Twidere - Twitter client for Android
|
||||
*
|
||||
* Copyright (C) 2012-2014 Mariotaku Lee <mariotaku.lee@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package org.mariotaku.twidere.fragment
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.support.v4.content.Loader
|
||||
import org.mariotaku.twidere.constant.IntentConstants.*
|
||||
import org.mariotaku.twidere.loader.UserListSubscriptionsLoader
|
||||
import org.mariotaku.twidere.model.ParcelableUserList
|
||||
import org.mariotaku.twidere.model.UserKey
|
||||
|
||||
class UserListSubscriptionsFragment : ParcelableUserListsFragment() {
|
||||
|
||||
override fun onCreateUserListsLoader(context: Context, args: Bundle, fromUser: Boolean): Loader<List<ParcelableUserList>> {
|
||||
val accountKey = args.getParcelable<UserKey>(EXTRA_ACCOUNT_KEY)
|
||||
val userKey = args.getParcelable<UserKey>(EXTRA_USER_KEY)
|
||||
val screenName = args.getString(EXTRA_SCREEN_NAME)
|
||||
val cursor = args.getLong(EXTRA_NEXT_CURSOR, -1)
|
||||
return UserListSubscriptionsLoader(activity, accountKey, userKey, screenName, cursor, data)
|
||||
}
|
||||
|
||||
}
|
|
@ -28,21 +28,21 @@ import android.view.MenuItem
|
|||
import com.squareup.otto.Subscribe
|
||||
import org.mariotaku.twidere.R
|
||||
import org.mariotaku.twidere.constant.IntentConstants.*
|
||||
import org.mariotaku.twidere.loader.UserListsLoader
|
||||
import org.mariotaku.twidere.loader.UserListOwnershipsLoader
|
||||
import org.mariotaku.twidere.model.ParcelableUserList
|
||||
import org.mariotaku.twidere.model.UserKey
|
||||
import org.mariotaku.twidere.model.message.UserListDestroyedEvent
|
||||
import org.mariotaku.twidere.util.MenuUtils
|
||||
import org.mariotaku.twidere.util.Utils
|
||||
|
||||
class UserListsFragment : ParcelableUserListsFragment() {
|
||||
class UserListsOwnershipsFragment : ParcelableUserListsFragment() {
|
||||
|
||||
public override fun onCreateUserListsLoader(context: Context,
|
||||
override fun onCreateUserListsLoader(context: Context,
|
||||
args: Bundle, fromUser: Boolean): Loader<List<ParcelableUserList>> {
|
||||
val accountKey = args.getParcelable<UserKey>(EXTRA_ACCOUNT_KEY)
|
||||
val userKey = args.getParcelable<UserKey>(EXTRA_USER_KEY)
|
||||
val screenName = args.getString(EXTRA_SCREEN_NAME)
|
||||
return UserListsLoader(activity, accountKey, userKey, screenName, true, data)
|
||||
return UserListOwnershipsLoader(activity, accountKey, userKey, screenName, data)
|
||||
}
|
||||
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
|
@ -233,7 +233,7 @@ class VideoPageFragment : CacheDownloadMediaViewerFragment(), MediaPlayer.OnPrep
|
|||
}
|
||||
}
|
||||
|
||||
public override fun onCreateMediaView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
||||
override fun onCreateMediaView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
||||
return inflater.inflate(R.layout.layout_media_viewer_texture_video_view, container, false)
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,103 @@
|
|||
/*
|
||||
* Twidere - Twitter client for Android
|
||||
*
|
||||
* Copyright (C) 2012-2014 Mariotaku Lee <mariotaku.lee@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package org.mariotaku.twidere.loader
|
||||
|
||||
import android.content.Context
|
||||
import android.support.v4.content.AsyncTaskLoader
|
||||
import android.util.Log
|
||||
import org.mariotaku.microblog.library.MicroBlog
|
||||
import org.mariotaku.microblog.library.MicroBlogException
|
||||
import org.mariotaku.microblog.library.twitter.model.CursorSupport
|
||||
import org.mariotaku.microblog.library.twitter.model.PageableResponseList
|
||||
import org.mariotaku.microblog.library.twitter.model.Paging
|
||||
import org.mariotaku.microblog.library.twitter.model.UserList
|
||||
import org.mariotaku.twidere.TwidereConstants.LOGTAG
|
||||
import org.mariotaku.twidere.loader.iface.ICursorSupportLoader
|
||||
import org.mariotaku.twidere.model.ParcelableUserList
|
||||
import org.mariotaku.twidere.model.UserKey
|
||||
import org.mariotaku.twidere.model.util.ParcelableUserListUtils
|
||||
import org.mariotaku.twidere.util.MicroBlogAPIFactory
|
||||
import org.mariotaku.twidere.util.collection.NoDuplicatesArrayList
|
||||
import java.util.*
|
||||
|
||||
|
||||
abstract class BaseUserListsLoader(
|
||||
context: Context,
|
||||
protected val accountId: UserKey,
|
||||
override val cursor: Long,
|
||||
data: List<ParcelableUserList>?
|
||||
) : AsyncTaskLoader<List<ParcelableUserList>>(context), ICursorSupportLoader {
|
||||
|
||||
protected val data = NoDuplicatesArrayList<ParcelableUserList>()
|
||||
|
||||
override var nextCursor: Long = 0
|
||||
override var prevCursor: Long = 0
|
||||
|
||||
init {
|
||||
if (data != null) {
|
||||
this.data.addAll(data)
|
||||
}
|
||||
}
|
||||
|
||||
@Throws(MicroBlogException::class)
|
||||
abstract fun getUserLists(twitter: MicroBlog, paging: Paging): List<UserList>
|
||||
|
||||
override fun loadInBackground(): List<ParcelableUserList> {
|
||||
val twitter = MicroBlogAPIFactory.getInstance(context, accountId) ?: return data
|
||||
var listLoaded: List<UserList>? = null
|
||||
try {
|
||||
val paging = Paging()
|
||||
if (cursor > 0) {
|
||||
paging.cursor(cursor)
|
||||
}
|
||||
listLoaded = getUserLists(twitter, paging)
|
||||
} catch (e: MicroBlogException) {
|
||||
Log.w(LOGTAG, e)
|
||||
}
|
||||
|
||||
if (listLoaded != null) {
|
||||
val listSize = listLoaded.size
|
||||
if (listLoaded is PageableResponseList<*>) {
|
||||
nextCursor = (listLoaded as CursorSupport).nextCursor
|
||||
prevCursor = listLoaded.previousCursor
|
||||
val dataSize = data.size
|
||||
for (i in 0..listSize - 1) {
|
||||
val list = listLoaded[i]
|
||||
data.add(ParcelableUserListUtils.from(list, accountId, (dataSize + i).toLong(), isFollowing(list)))
|
||||
}
|
||||
} else {
|
||||
for (i in 0..listSize - 1) {
|
||||
val list = listLoaded[i]
|
||||
data.add(ParcelableUserListUtils.from(listLoaded[i], accountId, i.toLong(), isFollowing(list)))
|
||||
}
|
||||
}
|
||||
}
|
||||
Collections.sort(data)
|
||||
return data
|
||||
}
|
||||
|
||||
override fun onStartLoading() {
|
||||
forceLoad()
|
||||
}
|
||||
|
||||
protected open fun isFollowing(list: UserList): Boolean {
|
||||
return list.isFollowing
|
||||
}
|
||||
}
|
|
@ -60,7 +60,7 @@ class ConversationLoader(
|
|||
}
|
||||
|
||||
@Throws(MicroBlogException::class)
|
||||
public override fun getStatuses(microBlog: MicroBlog, details: AccountDetails, paging: Paging): List<Status> {
|
||||
override fun getStatuses(microBlog: MicroBlog, details: AccountDetails, paging: Paging): List<Status> {
|
||||
canLoadAllReplies = false
|
||||
when (details.type) {
|
||||
AccountType.TWITTER -> {
|
||||
|
|
|
@ -39,7 +39,7 @@ class GroupMembersLoader(
|
|||
) : CursorSupportUsersLoader(context, accountKey, data, fromUser) {
|
||||
|
||||
@Throws(MicroBlogException::class)
|
||||
public override fun getCursoredUsers(twitter: MicroBlog, details: AccountDetails, paging: Paging): ResponseList<User> {
|
||||
override fun getCursoredUsers(twitter: MicroBlog, details: AccountDetails, paging: Paging): ResponseList<User> {
|
||||
if (groupId != null)
|
||||
return twitter.getGroupMembers(groupId, paging)
|
||||
else if (groupName != null)
|
||||
|
|
|
@ -41,7 +41,7 @@ abstract class ParcelableUsersLoader(
|
|||
}
|
||||
}
|
||||
|
||||
public override fun onStartLoading() {
|
||||
override fun onStartLoading() {
|
||||
forceLoad()
|
||||
}
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@ class SavedSearchesLoader(
|
|||
return null
|
||||
}
|
||||
|
||||
public override fun onStartLoading() {
|
||||
override fun onStartLoading() {
|
||||
forceLoad()
|
||||
}
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ open class TweetSearchLoader(
|
|||
tabPosition, fromUser, loadingMore) {
|
||||
|
||||
@Throws(MicroBlogException::class)
|
||||
public override fun getStatuses(microBlog: MicroBlog,
|
||||
override fun getStatuses(microBlog: MicroBlog,
|
||||
details: AccountDetails,
|
||||
paging: Paging): List<Status> {
|
||||
if (query == null) throw MicroBlogException("Empty query")
|
||||
|
|
|
@ -50,7 +50,7 @@ class UserFavoritesLoader(
|
|||
tabPosition, fromUser, loadingMore) {
|
||||
|
||||
@Throws(MicroBlogException::class)
|
||||
public override fun getStatuses(microBlog: MicroBlog, details: AccountDetails, paging: Paging): ResponseList<Status> {
|
||||
override fun getStatuses(microBlog: MicroBlog, details: AccountDetails, paging: Paging): ResponseList<Status> {
|
||||
if (userKey != null) {
|
||||
return microBlog.getFavorites(userKey.id, paging)
|
||||
} else if (screenName != null) {
|
||||
|
|
|
@ -42,7 +42,7 @@ class UserListMembersLoader(
|
|||
) : CursorSupportUsersLoader(context, accountKey, data, fromUser) {
|
||||
|
||||
@Throws(MicroBlogException::class)
|
||||
public override fun getCursoredUsers(twitter: MicroBlog, details: AccountDetails, paging: Paging): PageableResponseList<User> {
|
||||
override fun getCursoredUsers(twitter: MicroBlog, details: AccountDetails, paging: Paging): PageableResponseList<User> {
|
||||
if (listId != null) {
|
||||
return twitter.getUserListMembers(listId, paging)
|
||||
} else if (listName != null) {
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
/*
|
||||
* Twidere - Twitter client for Android
|
||||
*
|
||||
* Copyright (C) 2012-2014 Mariotaku Lee <mariotaku.lee@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package org.mariotaku.twidere.loader
|
||||
|
||||
import android.content.Context
|
||||
|
||||
import org.mariotaku.microblog.library.MicroBlog
|
||||
import org.mariotaku.microblog.library.MicroBlogException
|
||||
import org.mariotaku.microblog.library.twitter.model.PageableResponseList
|
||||
import org.mariotaku.microblog.library.twitter.model.Paging
|
||||
import org.mariotaku.microblog.library.twitter.model.UserList
|
||||
import org.mariotaku.twidere.model.ParcelableUserList
|
||||
import org.mariotaku.twidere.model.UserKey
|
||||
|
||||
class UserListMembershipsLoader(
|
||||
context: Context,
|
||||
accountKey: UserKey,
|
||||
private val userKey: UserKey?,
|
||||
private val screenName: String?,
|
||||
cursor: Long,
|
||||
data: List<ParcelableUserList>?
|
||||
) : BaseUserListsLoader(context, accountKey, cursor, data) {
|
||||
|
||||
@Throws(MicroBlogException::class)
|
||||
override fun getUserLists(twitter: MicroBlog, paging: Paging): PageableResponseList<UserList> {
|
||||
if (userKey != null) {
|
||||
return twitter.getUserListMemberships(userKey.id, paging)
|
||||
} else if (screenName != null) {
|
||||
return twitter.getUserListMembershipsByScreenName(screenName, paging)
|
||||
}
|
||||
throw MicroBlogException("Invalid user")
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
/*
|
||||
* Twidere - Twitter client for Android
|
||||
*
|
||||
* Copyright (C) 2012-2014 Mariotaku Lee <mariotaku.lee@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package org.mariotaku.twidere.loader
|
||||
|
||||
import android.content.Context
|
||||
import org.mariotaku.microblog.library.MicroBlog
|
||||
import org.mariotaku.microblog.library.MicroBlogException
|
||||
import org.mariotaku.microblog.library.twitter.model.Paging
|
||||
import org.mariotaku.microblog.library.twitter.model.UserList
|
||||
import org.mariotaku.twidere.model.ParcelableUserList
|
||||
import org.mariotaku.twidere.model.UserKey
|
||||
|
||||
class UserListOwnershipsLoader(
|
||||
context: Context,
|
||||
accountKey: UserKey,
|
||||
private val userKey: UserKey?,
|
||||
private val screenName: String?,
|
||||
data: List<ParcelableUserList>?
|
||||
) : BaseUserListsLoader(context, accountKey, 0, data) {
|
||||
|
||||
@Throws(MicroBlogException::class)
|
||||
override fun getUserLists(twitter: MicroBlog, paging: Paging): List<UserList> {
|
||||
if (userKey != null) {
|
||||
return twitter.getUserListOwnerships(userKey.id, paging)
|
||||
} else if (screenName != null) {
|
||||
return twitter.getUserListOwnershipsByScreenName(screenName, paging)
|
||||
}
|
||||
throw MicroBlogException("Invalid user")
|
||||
}
|
||||
|
||||
override fun isFollowing(list: UserList): Boolean {
|
||||
return true
|
||||
}
|
||||
}
|
|
@ -42,7 +42,7 @@ class UserListSubscribersLoader(
|
|||
) : CursorSupportUsersLoader(context, accountKey, data, fromUser) {
|
||||
|
||||
@Throws(MicroBlogException::class)
|
||||
public override fun getCursoredUsers(twitter: MicroBlog, details: AccountDetails, paging: Paging): PageableResponseList<User> {
|
||||
override fun getCursoredUsers(twitter: MicroBlog, details: AccountDetails, paging: Paging): PageableResponseList<User> {
|
||||
if (listId != null)
|
||||
return twitter.getUserListSubscribers(listId, paging)
|
||||
else if (userKey != null)
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
/*
|
||||
* Twidere - Twitter client for Android
|
||||
*
|
||||
* Copyright (C) 2012-2014 Mariotaku Lee <mariotaku.lee@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package org.mariotaku.twidere.loader
|
||||
|
||||
import android.content.Context
|
||||
|
||||
import org.mariotaku.microblog.library.MicroBlog
|
||||
import org.mariotaku.microblog.library.MicroBlogException
|
||||
import org.mariotaku.microblog.library.twitter.model.PageableResponseList
|
||||
import org.mariotaku.microblog.library.twitter.model.Paging
|
||||
import org.mariotaku.microblog.library.twitter.model.UserList
|
||||
import org.mariotaku.twidere.model.ParcelableUserList
|
||||
import org.mariotaku.twidere.model.UserKey
|
||||
|
||||
class UserListSubscriptionsLoader(
|
||||
context: Context,
|
||||
accountKey: UserKey,
|
||||
private val userKey: UserKey?,
|
||||
private val screenName: String?,
|
||||
cursor: Long,
|
||||
data: List<ParcelableUserList>?
|
||||
) : BaseUserListsLoader(context, accountKey, cursor, data) {
|
||||
|
||||
@Throws(MicroBlogException::class)
|
||||
override fun getUserLists(twitter: MicroBlog, paging: Paging): PageableResponseList<UserList> {
|
||||
if (userKey != null) {
|
||||
return twitter.getUserListSubscriptions(userKey.id, paging)
|
||||
} else if (screenName != null) {
|
||||
return twitter.getUserListSubscriptionsByScreenName(screenName, paging)
|
||||
}
|
||||
throw MicroBlogException("Invalid user")
|
||||
}
|
||||
|
||||
}
|
|
@ -39,7 +39,7 @@ open class UserSearchLoader(
|
|||
) : MicroBlogAPIUsersLoader(context, accountKey, data, fromUser) {
|
||||
|
||||
@Throws(MicroBlogException::class)
|
||||
public override fun getUsers(twitter: MicroBlog, details: AccountDetails): List<User> {
|
||||
override fun getUsers(twitter: MicroBlog, details: AccountDetails): List<User> {
|
||||
val paging = Paging()
|
||||
paging.page(page)
|
||||
when (details.type) {
|
||||
|
|
|
@ -70,7 +70,7 @@ abstract class AbsFriendshipOperationTask(
|
|||
bus.post(event)
|
||||
}
|
||||
|
||||
public override fun doLongOperation(args: Arguments): SingleResponse<ParcelableUser> {
|
||||
override fun doLongOperation(args: Arguments): SingleResponse<ParcelableUser> {
|
||||
val details = AccountUtils.getAccountDetails(AccountManager.get(context), args.accountKey, true) ?: return SingleResponse.getInstance()
|
||||
val twitter = details.newMicroBlogInstance(context, cls = MicroBlog::class.java)
|
||||
try {
|
||||
|
|
|
@ -35,7 +35,7 @@ class CacheUsersStatusesTask(
|
|||
private val context: Context
|
||||
) : AbstractTask<TwitterListResponse<Status>, Unit, Unit>() {
|
||||
|
||||
public override fun doLongOperation(params: TwitterListResponse<Status>) {
|
||||
override fun doLongOperation(params: TwitterListResponse<Status>) {
|
||||
val resolver = context.contentResolver
|
||||
val extractor = Extractor()
|
||||
val list = params.data ?: return
|
||||
|
|
|
@ -47,7 +47,7 @@ abstract class GetDirectMessagesTask(
|
|||
|
||||
protected abstract val isOutgoing: Boolean
|
||||
|
||||
public override fun doLongOperation(param: RefreshTaskParam): List<TwitterWrapper.MessageListResponse> {
|
||||
override fun doLongOperation(param: RefreshTaskParam): List<TwitterWrapper.MessageListResponse> {
|
||||
val accountKeys = param.accountKeys
|
||||
val sinceIds = param.sinceIds
|
||||
val maxIds = param.maxIds
|
||||
|
|
|
@ -22,7 +22,7 @@ class GetSavedSearchesTask(
|
|||
private val context: Context
|
||||
) : AbstractTask<Array<UserKey>, SingleResponse<Unit>, Any?>() {
|
||||
|
||||
public override fun doLongOperation(params: Array<UserKey>): SingleResponse<Unit> {
|
||||
override fun doLongOperation(params: Array<UserKey>): SingleResponse<Unit> {
|
||||
val cr = context.contentResolver
|
||||
for (accountKey in params) {
|
||||
val twitter = MicroBlogAPIFactory.getInstance(context, accountKey) ?: continue
|
||||
|
|
|
@ -37,7 +37,7 @@ abstract class GetTrendsTask(
|
|||
@Throws(MicroBlogException::class)
|
||||
abstract fun getTrends(twitter: MicroBlog): List<Trends>
|
||||
|
||||
public override fun doLongOperation(param: Any?) {
|
||||
override fun doLongOperation(param: Any?) {
|
||||
val twitter = MicroBlogAPIFactory.getInstance(context, accountId) ?: return
|
||||
try {
|
||||
val trends = getTrends(twitter)
|
||||
|
|
|
@ -53,7 +53,7 @@ abstract class GetActivitiesTask(
|
|||
GeneralComponentHelper.build(context).inject(this)
|
||||
}
|
||||
|
||||
public override fun doLongOperation(param: RefreshTaskParam) {
|
||||
override fun doLongOperation(param: RefreshTaskParam) {
|
||||
if (param.shouldAbort) return
|
||||
val accountIds = param.accountKeys
|
||||
val maxIds = param.maxIds
|
||||
|
@ -189,7 +189,7 @@ abstract class GetActivitiesTask(
|
|||
@Throws(MicroBlogException::class)
|
||||
protected abstract fun getActivities(twitter: MicroBlog, details: AccountDetails, paging: Paging): ResponseList<Activity>
|
||||
|
||||
public override fun afterExecute(handler: ((Boolean) -> Unit)?, result: Unit) {
|
||||
override fun afterExecute(handler: ((Boolean) -> Unit)?, result: Unit) {
|
||||
context.contentResolver.notifyChange(contentUri, null)
|
||||
bus.post(GetActivitiesTaskEvent(contentUri, false, null))
|
||||
handler?.invoke(true)
|
||||
|
@ -198,7 +198,7 @@ abstract class GetActivitiesTask(
|
|||
protected abstract val contentUri: Uri
|
||||
|
||||
@UiThread
|
||||
public override fun beforeExecute() {
|
||||
override fun beforeExecute() {
|
||||
bus.post(GetActivitiesTaskEvent(contentUri, true, null))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -67,7 +67,7 @@ abstract class GetStatusesTask(
|
|||
|
||||
protected abstract val timelineType: String
|
||||
|
||||
public override fun afterExecute(handler: ((Boolean) -> Unit)?, result: List<TwitterWrapper.StatusListResponse>) {
|
||||
override fun afterExecute(handler: ((Boolean) -> Unit)?, result: List<TwitterWrapper.StatusListResponse>) {
|
||||
context.contentResolver.notifyChange(contentUri, null)
|
||||
bus.post(GetStatusesTaskEvent(contentUri, false, AsyncTwitterWrapper.getException(result)))
|
||||
handler?.invoke(true)
|
||||
|
@ -79,7 +79,7 @@ abstract class GetStatusesTask(
|
|||
|
||||
protected abstract val errorInfoKey: String
|
||||
|
||||
public override fun doLongOperation(param: RefreshTaskParam): List<TwitterWrapper.StatusListResponse> {
|
||||
override fun doLongOperation(param: RefreshTaskParam): List<TwitterWrapper.StatusListResponse> {
|
||||
if (param.shouldAbort) return emptyList()
|
||||
val accountKeys = param.accountKeys
|
||||
val maxIds = param.maxIds
|
||||
|
|
|
@ -147,12 +147,12 @@ class CardPollViewController : ContainerView.ViewController() {
|
|||
cardData.putString("selected_choice", (i + 1).toString())
|
||||
val task = object : AbstractTask<CardDataMap, ParcelableCardEntity, CardPollViewController>() {
|
||||
|
||||
public override fun afterExecute(handler: CardPollViewController?, result: ParcelableCardEntity?) {
|
||||
override fun afterExecute(handler: CardPollViewController?, result: ParcelableCardEntity?) {
|
||||
result ?: return
|
||||
handler?.displayAndReloadPoll(result, status)
|
||||
}
|
||||
|
||||
public override fun doLongOperation(cardDataMap: CardDataMap): ParcelableCardEntity? {
|
||||
override fun doLongOperation(cardDataMap: CardDataMap): ParcelableCardEntity? {
|
||||
val details = AccountUtils.getAccountDetails(AccountManager.get(context),
|
||||
card.account_key, true) ?: return null
|
||||
val caps = details.newMicroBlogInstance(context, cls = TwitterCaps::class.java)
|
||||
|
|
|
@ -486,6 +486,9 @@
|
|||
<string name="following_you">Following you</string>
|
||||
|
||||
<string name="follows">Follows</string>
|
||||
<string name="title_user_list_subscriptions">Subscriptions</string>
|
||||
<string name="title_user_list_memberships">Belongs to</string>
|
||||
<string name="title_user_list_ownerships">Created</string>
|
||||
|
||||
<string name="font">Font</string>
|
||||
<string name="font_family">Font family</string>
|
||||
|
|
Loading…
Reference in New Issue