mirror of
https://github.com/TwidereProject/Twidere-Android
synced 2025-02-02 09:46:51 +01:00
using databases for public timelines
improved link handler title
This commit is contained in:
parent
d98c25c453
commit
9eb346a5ed
@ -6,7 +6,7 @@ buildscript {
|
|||||||
maven { url 'https://maven.google.com' }
|
maven { url 'https://maven.google.com' }
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:3.0.0-beta6'
|
classpath 'com.android.tools.build:gradle:3.0.0-beta7'
|
||||||
// NOTE: Do not place your application dependencies here; they belong
|
// NOTE: Do not place your application dependencies here; they belong
|
||||||
// in the individual module build.gradle files
|
// in the individual module build.gradle files
|
||||||
}
|
}
|
||||||
@ -20,7 +20,7 @@ allprojects {
|
|||||||
projectVersionName = '3.6.33'
|
projectVersionName = '3.6.33'
|
||||||
|
|
||||||
globalCompileSdkVersion = 26
|
globalCompileSdkVersion = 26
|
||||||
globalBuildToolsVersion = '26.0.1'
|
globalBuildToolsVersion = '26.0.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
@ -79,7 +79,7 @@ subprojects {
|
|||||||
ACRA : '4.9.2',
|
ACRA : '4.9.2',
|
||||||
AbstractTask : '0.9.5',
|
AbstractTask : '0.9.5',
|
||||||
Dagger : '2.11',
|
Dagger : '2.11',
|
||||||
StethoBeanShellREPL : '0.1',
|
StethoBeanShellREPL : '0.3',
|
||||||
]
|
]
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -217,6 +217,8 @@ public interface TwidereConstants extends SharedPreferenceConstants, IntentConst
|
|||||||
int TABLE_ID_CACHED_STATUSES = 62;
|
int TABLE_ID_CACHED_STATUSES = 62;
|
||||||
int TABLE_ID_CACHED_HASHTAGS = 63;
|
int TABLE_ID_CACHED_HASHTAGS = 63;
|
||||||
int TABLE_ID_CACHED_RELATIONSHIPS = 64;
|
int TABLE_ID_CACHED_RELATIONSHIPS = 64;
|
||||||
|
int TABLE_ID_PUBLIC_TIMELINE = 71;
|
||||||
|
int TABLE_ID_NETWORK_PUBLIC_TIMELINE = 72;
|
||||||
int VIRTUAL_TABLE_ID_PERMISSIONS = 104;
|
int VIRTUAL_TABLE_ID_PERMISSIONS = 104;
|
||||||
int VIRTUAL_TABLE_ID_CACHED_USERS_WITH_RELATIONSHIP = 121;
|
int VIRTUAL_TABLE_ID_CACHED_USERS_WITH_RELATIONSHIP = 121;
|
||||||
int VIRTUAL_TABLE_ID_CACHED_USERS_WITH_SCORE = 122;
|
int VIRTUAL_TABLE_ID_CACHED_USERS_WITH_SCORE = 122;
|
||||||
|
@ -213,7 +213,6 @@ public class ParcelableActivity extends ParcelableStatus implements Parcelable {
|
|||||||
", spans=" + Arrays.toString(spans) +
|
", spans=" + Arrays.toString(spans) +
|
||||||
", quoted_spans=" + Arrays.toString(quoted_spans) +
|
", quoted_spans=" + Arrays.toString(quoted_spans) +
|
||||||
", account_color=" + account_color +
|
", account_color=" + account_color +
|
||||||
", inserted_date=" + inserted_date +
|
|
||||||
", filter_flags=" + filter_flags +
|
", filter_flags=" + filter_flags +
|
||||||
", filter_users=" + Arrays.toString(filter_users) +
|
", filter_users=" + Arrays.toString(filter_users) +
|
||||||
", filter_sources=" + Arrays.toString(filter_sources) +
|
", filter_sources=" + Arrays.toString(filter_sources) +
|
||||||
@ -221,6 +220,7 @@ public class ParcelableActivity extends ParcelableStatus implements Parcelable {
|
|||||||
", filter_names=" + Arrays.toString(filter_names) +
|
", filter_names=" + Arrays.toString(filter_names) +
|
||||||
", filter_texts='" + filter_texts + '\'' +
|
", filter_texts='" + filter_texts + '\'' +
|
||||||
", filter_descriptions='" + filter_descriptions + '\'' +
|
", filter_descriptions='" + filter_descriptions + '\'' +
|
||||||
|
", tab_id=" + tab_id +
|
||||||
", is_pinned_status=" + is_pinned_status +
|
", is_pinned_status=" + is_pinned_status +
|
||||||
", is_filtered=" + is_filtered +
|
", is_filtered=" + is_filtered +
|
||||||
'}';
|
'}';
|
||||||
|
@ -323,9 +323,6 @@ public class ParcelableStatus implements Parcelable, Comparable<ParcelableStatus
|
|||||||
@CursorField(Statuses.ACCOUNT_COLOR)
|
@CursorField(Statuses.ACCOUNT_COLOR)
|
||||||
public int account_color;
|
public int account_color;
|
||||||
|
|
||||||
@CursorField(Statuses.INSERTED_DATE)
|
|
||||||
public long inserted_date;
|
|
||||||
|
|
||||||
@FilterFlags
|
@FilterFlags
|
||||||
@JsonField(name = "filter_flags")
|
@JsonField(name = "filter_flags")
|
||||||
@CursorField(Statuses.FILTER_FLAGS)
|
@CursorField(Statuses.FILTER_FLAGS)
|
||||||
@ -355,6 +352,9 @@ public class ParcelableStatus implements Parcelable, Comparable<ParcelableStatus
|
|||||||
@CursorField(value = Statuses.FILTER_DESCRIPTIONS)
|
@CursorField(value = Statuses.FILTER_DESCRIPTIONS)
|
||||||
public String filter_descriptions;
|
public String filter_descriptions;
|
||||||
|
|
||||||
|
@CursorField(Statuses.TAB_ID)
|
||||||
|
public long tab_id;
|
||||||
|
|
||||||
public transient boolean is_pinned_status;
|
public transient boolean is_pinned_status;
|
||||||
public transient boolean is_filtered;
|
public transient boolean is_filtered;
|
||||||
|
|
||||||
@ -457,7 +457,6 @@ public class ParcelableStatus implements Parcelable, Comparable<ParcelableStatus
|
|||||||
", spans=" + Arrays.toString(spans) +
|
", spans=" + Arrays.toString(spans) +
|
||||||
", quoted_spans=" + Arrays.toString(quoted_spans) +
|
", quoted_spans=" + Arrays.toString(quoted_spans) +
|
||||||
", account_color=" + account_color +
|
", account_color=" + account_color +
|
||||||
", inserted_date=" + inserted_date +
|
|
||||||
", filter_flags=" + filter_flags +
|
", filter_flags=" + filter_flags +
|
||||||
", filter_users=" + Arrays.toString(filter_users) +
|
", filter_users=" + Arrays.toString(filter_users) +
|
||||||
", filter_sources=" + Arrays.toString(filter_sources) +
|
", filter_sources=" + Arrays.toString(filter_sources) +
|
||||||
@ -465,6 +464,7 @@ public class ParcelableStatus implements Parcelable, Comparable<ParcelableStatus
|
|||||||
", filter_names=" + Arrays.toString(filter_names) +
|
", filter_names=" + Arrays.toString(filter_names) +
|
||||||
", filter_texts='" + filter_texts + '\'' +
|
", filter_texts='" + filter_texts + '\'' +
|
||||||
", filter_descriptions='" + filter_descriptions + '\'' +
|
", filter_descriptions='" + filter_descriptions + '\'' +
|
||||||
|
", tab_id=" + tab_id +
|
||||||
", is_pinned_status=" + is_pinned_status +
|
", is_pinned_status=" + is_pinned_status +
|
||||||
", is_filtered=" + is_filtered +
|
", is_filtered=" + is_filtered +
|
||||||
'}';
|
'}';
|
||||||
|
@ -63,11 +63,6 @@ public interface TwidereDataStore {
|
|||||||
Uri CONTENT_URI_RAW_QUERY = Uri.withAppendedPath(BASE_CONTENT_URI, CONTENT_PATH_RAW_QUERY);
|
Uri CONTENT_URI_RAW_QUERY = Uri.withAppendedPath(BASE_CONTENT_URI, CONTENT_PATH_RAW_QUERY);
|
||||||
Uri CONTENT_URI_DATABASE_PREPARE = Uri.withAppendedPath(BASE_CONTENT_URI, CONTENT_PATH_DATABASE_PREPARE);
|
Uri CONTENT_URI_DATABASE_PREPARE = Uri.withAppendedPath(BASE_CONTENT_URI, CONTENT_PATH_DATABASE_PREPARE);
|
||||||
|
|
||||||
interface InsertedDateColumns {
|
|
||||||
String INSERTED_DATE = "inserted_date";
|
|
||||||
String INSERTED_DATE_TYPE = TYPE_INT;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface AccountSupportColumns {
|
interface AccountSupportColumns {
|
||||||
|
|
||||||
String ACCOUNT_KEY = "account_id";
|
String ACCOUNT_KEY = "account_id";
|
||||||
@ -342,7 +337,7 @@ public interface TwidereDataStore {
|
|||||||
String[] COLUMNS = {_ID, NAME, PATH};
|
String[] COLUMNS = {_ID, NAME, PATH};
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Messages extends BaseColumns, InsertedDateColumns, AccountSupportColumns {
|
interface Messages extends BaseColumns, AccountSupportColumns {
|
||||||
String MESSAGE_ID = "message_id";
|
String MESSAGE_ID = "message_id";
|
||||||
String CONVERSATION_ID = "conversation_id";
|
String CONVERSATION_ID = "conversation_id";
|
||||||
String MESSAGE_TYPE = "message_type";
|
String MESSAGE_TYPE = "message_type";
|
||||||
@ -578,7 +573,7 @@ public interface TwidereDataStore {
|
|||||||
String[] COLUMNS = {_ID, PACKAGE_NAME, PERMISSION};
|
String[] COLUMNS = {_ID, PACKAGE_NAME, PERMISSION};
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Statuses extends BaseColumns, InsertedDateColumns, AccountSupportColumns {
|
interface Statuses extends BaseColumns, AccountSupportColumns {
|
||||||
|
|
||||||
String TABLE_NAME = "statuses";
|
String TABLE_NAME = "statuses";
|
||||||
String CONTENT_PATH = TABLE_NAME;
|
String CONTENT_PATH = TABLE_NAME;
|
||||||
@ -738,6 +733,8 @@ public interface TwidereDataStore {
|
|||||||
String FILTER_TEXTS = "filter_texts";
|
String FILTER_TEXTS = "filter_texts";
|
||||||
String FILTER_DESCRIPTIONS = "filter_descriptions";
|
String FILTER_DESCRIPTIONS = "filter_descriptions";
|
||||||
|
|
||||||
|
String TAB_ID = "tab_id";
|
||||||
|
|
||||||
String DEFAULT_SORT_ORDER = TIMESTAMP + " DESC, " + SORT_ID + " DESC, " + ID
|
String DEFAULT_SORT_ORDER = TIMESTAMP + " DESC, " + SORT_ID + " DESC, " + ID
|
||||||
+ " DESC";
|
+ " DESC";
|
||||||
|
|
||||||
@ -745,9 +742,27 @@ public interface TwidereDataStore {
|
|||||||
|
|
||||||
String[] TYPES = ParcelableStatusTableInfo.TYPES;
|
String[] TYPES = ParcelableStatusTableInfo.TYPES;
|
||||||
|
|
||||||
|
interface Public extends Statuses {
|
||||||
|
|
||||||
|
String CONTENT_PATH = "public_timeline";
|
||||||
|
String TABLE_NAME = "public_timeline";
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
Uri CONTENT_URI = Uri.withAppendedPath(BASE_CONTENT_URI, CONTENT_PATH);
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Activities extends Statuses, BaseColumns, InsertedDateColumns, AccountSupportColumns {
|
interface NetworkPublic extends Statuses {
|
||||||
|
|
||||||
|
String CONTENT_PATH = "network_public_timeline";
|
||||||
|
String TABLE_NAME = "network_public_timeline";
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
Uri CONTENT_URI = Uri.withAppendedPath(BASE_CONTENT_URI, CONTENT_PATH);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Activities extends Statuses, BaseColumns, AccountSupportColumns {
|
||||||
|
|
||||||
String ACTIVITY_ID = "activity_id";
|
String ACTIVITY_ID = "activity_id";
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ import org.junit.runner.RunWith
|
|||||||
import org.mariotaku.twidere.R
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.TwidereConstants
|
import org.mariotaku.twidere.TwidereConstants
|
||||||
import org.mariotaku.twidere.TwidereConstants.SHARED_PREFERENCES_NAME
|
import org.mariotaku.twidere.TwidereConstants.SHARED_PREFERENCES_NAME
|
||||||
import org.mariotaku.twidere.task.twitter.UpdateStatusTask
|
import org.mariotaku.twidere.task.status.UpdateStatusTask
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by mariotaku on 2016/12/7.
|
* Created by mariotaku on 2016/12/7.
|
||||||
|
@ -30,7 +30,7 @@ import org.mariotaku.twidere.model.UserKey;
|
|||||||
public interface Constants extends TwidereConstants {
|
public interface Constants extends TwidereConstants {
|
||||||
|
|
||||||
String DATABASES_NAME = "twidere.sqlite";
|
String DATABASES_NAME = "twidere.sqlite";
|
||||||
int DATABASES_VERSION = 188;
|
int DATABASES_VERSION = 190;
|
||||||
|
|
||||||
int EXTRA_FEATURES_NOTICE_VERSION = 2;
|
int EXTRA_FEATURES_NOTICE_VERSION = 2;
|
||||||
|
|
||||||
|
@ -11,12 +11,16 @@ import java.lang.annotation.RetentionPolicy;
|
|||||||
@StringDef({
|
@StringDef({
|
||||||
ReadPositionTag.ACTIVITIES_ABOUT_ME,
|
ReadPositionTag.ACTIVITIES_ABOUT_ME,
|
||||||
ReadPositionTag.HOME_TIMELINE,
|
ReadPositionTag.HOME_TIMELINE,
|
||||||
|
ReadPositionTag.PUBLIC_TIMELINE,
|
||||||
|
ReadPositionTag.NETWORK_PUBLIC_TIMELINE,
|
||||||
ReadPositionTag.DIRECT_MESSAGES,
|
ReadPositionTag.DIRECT_MESSAGES,
|
||||||
ReadPositionTag.CUSTOM_TIMELINE,
|
ReadPositionTag.CUSTOM_TIMELINE,
|
||||||
})
|
})
|
||||||
@Retention(RetentionPolicy.SOURCE)
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
public @interface ReadPositionTag {
|
public @interface ReadPositionTag {
|
||||||
String HOME_TIMELINE = "home_timeline";
|
String HOME_TIMELINE = "home_timeline";
|
||||||
|
String PUBLIC_TIMELINE = "public_timeline";
|
||||||
|
String NETWORK_PUBLIC_TIMELINE = "network_public_timeline";
|
||||||
String ACTIVITIES_ABOUT_ME = "activities_about_me";
|
String ACTIVITIES_ABOUT_ME = "activities_about_me";
|
||||||
String DIRECT_MESSAGES = "direct_messages";
|
String DIRECT_MESSAGES = "direct_messages";
|
||||||
String CUSTOM_TIMELINE = "custom_timeline";
|
String CUSTOM_TIMELINE = "custom_timeline";
|
||||||
|
@ -92,7 +92,7 @@ import org.mariotaku.twidere.provider.TwidereDataStore.Drafts
|
|||||||
import org.mariotaku.twidere.service.LengthyOperationsService
|
import org.mariotaku.twidere.service.LengthyOperationsService
|
||||||
import org.mariotaku.twidere.task.compose.AbsAddMediaTask
|
import org.mariotaku.twidere.task.compose.AbsAddMediaTask
|
||||||
import org.mariotaku.twidere.task.compose.AbsDeleteMediaTask
|
import org.mariotaku.twidere.task.compose.AbsDeleteMediaTask
|
||||||
import org.mariotaku.twidere.task.twitter.UpdateStatusTask
|
import org.mariotaku.twidere.task.status.UpdateStatusTask
|
||||||
import org.mariotaku.twidere.text.MarkForDeleteSpan
|
import org.mariotaku.twidere.text.MarkForDeleteSpan
|
||||||
import org.mariotaku.twidere.text.style.EmojiSpan
|
import org.mariotaku.twidere.text.style.EmojiSpan
|
||||||
import org.mariotaku.twidere.util.*
|
import org.mariotaku.twidere.util.*
|
||||||
|
@ -48,7 +48,10 @@ import org.mariotaku.twidere.Constants.*
|
|||||||
import org.mariotaku.twidere.R
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.activity.iface.IControlBarActivity
|
import org.mariotaku.twidere.activity.iface.IControlBarActivity
|
||||||
import org.mariotaku.twidere.activity.iface.IControlBarActivity.ControlBarShowHideHelper
|
import org.mariotaku.twidere.activity.iface.IControlBarActivity.ControlBarShowHideHelper
|
||||||
import org.mariotaku.twidere.constant.*
|
import org.mariotaku.twidere.constant.CompatibilityConstants
|
||||||
|
import org.mariotaku.twidere.constant.IntentConstants
|
||||||
|
import org.mariotaku.twidere.constant.KeyboardShortcutConstants
|
||||||
|
import org.mariotaku.twidere.constant.floatingDetailedContentsKey
|
||||||
import org.mariotaku.twidere.exception.NoAccountException
|
import org.mariotaku.twidere.exception.NoAccountException
|
||||||
import org.mariotaku.twidere.fragment.*
|
import org.mariotaku.twidere.fragment.*
|
||||||
import org.mariotaku.twidere.fragment.drafts.DraftsFragment
|
import org.mariotaku.twidere.fragment.drafts.DraftsFragment
|
||||||
@ -56,6 +59,8 @@ import org.mariotaku.twidere.fragment.filter.FiltersFragment
|
|||||||
import org.mariotaku.twidere.fragment.filter.FiltersImportBlocksFragment
|
import org.mariotaku.twidere.fragment.filter.FiltersImportBlocksFragment
|
||||||
import org.mariotaku.twidere.fragment.filter.FiltersImportMutesFragment
|
import org.mariotaku.twidere.fragment.filter.FiltersImportMutesFragment
|
||||||
import org.mariotaku.twidere.fragment.filter.FiltersSubscriptionsFragment
|
import org.mariotaku.twidere.fragment.filter.FiltersSubscriptionsFragment
|
||||||
|
import org.mariotaku.twidere.fragment.group.GroupFragment
|
||||||
|
import org.mariotaku.twidere.fragment.group.UserGroupsFragment
|
||||||
import org.mariotaku.twidere.fragment.iface.IBaseFragment
|
import org.mariotaku.twidere.fragment.iface.IBaseFragment
|
||||||
import org.mariotaku.twidere.fragment.iface.IBaseFragment.SystemWindowInsetsCallback
|
import org.mariotaku.twidere.fragment.iface.IBaseFragment.SystemWindowInsetsCallback
|
||||||
import org.mariotaku.twidere.fragment.iface.IFloatingActionButtonFragment
|
import org.mariotaku.twidere.fragment.iface.IFloatingActionButtonFragment
|
||||||
@ -69,6 +74,9 @@ import org.mariotaku.twidere.fragment.search.MastodonSearchFragment
|
|||||||
import org.mariotaku.twidere.fragment.search.SearchFragment
|
import org.mariotaku.twidere.fragment.search.SearchFragment
|
||||||
import org.mariotaku.twidere.fragment.status.StatusFragment
|
import org.mariotaku.twidere.fragment.status.StatusFragment
|
||||||
import org.mariotaku.twidere.fragment.statuses.*
|
import org.mariotaku.twidere.fragment.statuses.*
|
||||||
|
import org.mariotaku.twidere.fragment.userlist.ListsFragment
|
||||||
|
import org.mariotaku.twidere.fragment.userlist.UserListFragment
|
||||||
|
import org.mariotaku.twidere.fragment.userlist.UserListMembershipsFragment
|
||||||
import org.mariotaku.twidere.fragment.users.*
|
import org.mariotaku.twidere.fragment.users.*
|
||||||
import org.mariotaku.twidere.graphic.ActionBarColorDrawable
|
import org.mariotaku.twidere.graphic.ActionBarColorDrawable
|
||||||
import org.mariotaku.twidere.graphic.EmptyDrawable
|
import org.mariotaku.twidere.graphic.EmptyDrawable
|
||||||
@ -82,11 +90,15 @@ import org.mariotaku.twidere.util.theme.getCurrentThemeResource
|
|||||||
class LinkHandlerActivity : BaseActivity(), SystemWindowInsetsCallback, IControlBarActivity,
|
class LinkHandlerActivity : BaseActivity(), SystemWindowInsetsCallback, IControlBarActivity,
|
||||||
SupportFragmentCallback {
|
SupportFragmentCallback {
|
||||||
|
|
||||||
|
var subtitle: CharSequence? = null
|
||||||
|
set(value) {
|
||||||
|
field = value
|
||||||
|
setupActionBarOption()
|
||||||
|
}
|
||||||
private lateinit var multiSelectHandler: MultiSelectEventHandler
|
private lateinit var multiSelectHandler: MultiSelectEventHandler
|
||||||
private lateinit var controlBarShowHideHelper: ControlBarShowHideHelper
|
private lateinit var controlBarShowHideHelper: ControlBarShowHideHelper
|
||||||
private var finishOnly: Boolean = false
|
private var finishOnly: Boolean = false
|
||||||
private var actionBarHeight: Int = 0
|
private var actionBarHeight: Int = 0
|
||||||
private var subtitle: CharSequence? = null
|
|
||||||
private var hideOffsetNotSupported: Boolean = false
|
private var hideOffsetNotSupported: Boolean = false
|
||||||
private lateinit var fragmentLifecycleCallbacks: FragmentLifecycleCallbacks
|
private lateinit var fragmentLifecycleCallbacks: FragmentLifecycleCallbacks
|
||||||
|
|
||||||
@ -173,7 +185,6 @@ class LinkHandlerActivity : BaseActivity(), SystemWindowInsetsCallback, IControl
|
|||||||
ft.replace(contentFragmentId, fragment, "content_fragment")
|
ft.replace(contentFragmentId, fragment, "content_fragment")
|
||||||
ft.commit()
|
ft.commit()
|
||||||
}
|
}
|
||||||
setTitle(linkId, uri)
|
|
||||||
finishOnly = uri.getQueryParameter(QUERY_PARAM_FINISH_ONLY)?.toBoolean() == true
|
finishOnly = uri.getQueryParameter(QUERY_PARAM_FINISH_ONLY)?.toBoolean() == true
|
||||||
|
|
||||||
val theme = overrideTheme
|
val theme = overrideTheme
|
||||||
@ -299,11 +310,6 @@ class LinkHandlerActivity : BaseActivity(), SystemWindowInsetsCallback, IControl
|
|||||||
setupActionBarOption()
|
setupActionBarOption()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setSubtitle(subtitle: CharSequence?) {
|
|
||||||
this.subtitle = subtitle
|
|
||||||
setupActionBarOption()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun setControlBarVisibleAnimate(visible: Boolean, listener: ControlBarShowHideHelper.ControlBarAnimationListener?) {
|
override fun setControlBarVisibleAnimate(visible: Boolean, listener: ControlBarShowHideHelper.ControlBarAnimationListener?) {
|
||||||
// Currently only search page needs this pattern, so we only enable this feature for it.
|
// Currently only search page needs this pattern, so we only enable this feature for it.
|
||||||
actionsButton?.let { fab ->
|
actionsButton?.let { fab ->
|
||||||
@ -370,140 +376,6 @@ class LinkHandlerActivity : BaseActivity(), SystemWindowInsetsCallback, IControl
|
|||||||
return getCurrentThemeResource(this, theme, R.style.Theme_Twidere)
|
return getCurrentThemeResource(this, theme, R.style.Theme_Twidere)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setTitle(linkId: Int, uri: Uri): Boolean {
|
|
||||||
setSubtitle(null)
|
|
||||||
when (linkId) {
|
|
||||||
LINK_ID_STATUS -> {
|
|
||||||
setTitle(R.string.title_status)
|
|
||||||
}
|
|
||||||
LINK_ID_USER -> {
|
|
||||||
setTitle(R.string.title_user)
|
|
||||||
}
|
|
||||||
LINK_ID_USER_TIMELINE -> {
|
|
||||||
setTitle(R.string.title_statuses)
|
|
||||||
}
|
|
||||||
LINK_ID_USER_FAVORITES -> {
|
|
||||||
if (preferences[iWantMyStarsBackKey]) {
|
|
||||||
setTitle(R.string.title_favorites)
|
|
||||||
} else {
|
|
||||||
setTitle(R.string.title_likes)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
LINK_ID_USER_FOLLOWERS -> {
|
|
||||||
setTitle(R.string.title_followers)
|
|
||||||
}
|
|
||||||
LINK_ID_USER_FRIENDS -> {
|
|
||||||
setTitle(R.string.title_following)
|
|
||||||
}
|
|
||||||
LINK_ID_USER_BLOCKS -> {
|
|
||||||
setTitle(R.string.title_blocked_users)
|
|
||||||
}
|
|
||||||
LINK_ID_MUTES_USERS -> {
|
|
||||||
setTitle(R.string.action_twitter_muted_users)
|
|
||||||
}
|
|
||||||
LINK_ID_USER_LIST -> {
|
|
||||||
setTitle(R.string.title_user_list)
|
|
||||||
}
|
|
||||||
LINK_ID_GROUP -> {
|
|
||||||
setTitle(R.string.group)
|
|
||||||
}
|
|
||||||
LINK_ID_USER_LISTS -> {
|
|
||||||
setTitle(R.string.user_lists)
|
|
||||||
}
|
|
||||||
LINK_ID_USER_GROUPS -> {
|
|
||||||
setTitle(R.string.groups)
|
|
||||||
}
|
|
||||||
LINK_ID_USER_LIST_TIMELINE -> {
|
|
||||||
setTitle(R.string.list_timeline)
|
|
||||||
}
|
|
||||||
LINK_ID_USER_LIST_MEMBERS -> {
|
|
||||||
setTitle(R.string.list_members)
|
|
||||||
}
|
|
||||||
LINK_ID_USER_LIST_SUBSCRIBERS -> {
|
|
||||||
setTitle(R.string.list_subscribers)
|
|
||||||
}
|
|
||||||
LINK_ID_USER_LIST_MEMBERSHIPS -> {
|
|
||||||
setTitle(R.string.lists_following_user)
|
|
||||||
}
|
|
||||||
LINK_ID_SAVED_SEARCHES -> {
|
|
||||||
setTitle(R.string.saved_searches)
|
|
||||||
}
|
|
||||||
LINK_ID_USER_MENTIONS -> {
|
|
||||||
setTitle(R.string.user_mentions)
|
|
||||||
}
|
|
||||||
LINK_ID_INCOMING_FRIENDSHIPS -> {
|
|
||||||
setTitle(R.string.incoming_friendships)
|
|
||||||
}
|
|
||||||
LINK_ID_ITEMS -> {
|
|
||||||
}// TODO show title
|
|
||||||
LINK_ID_USER_MEDIA_TIMELINE -> {
|
|
||||||
setTitle(R.string.media)
|
|
||||||
}
|
|
||||||
LINK_ID_STATUS_RETWEETERS -> {
|
|
||||||
setTitle(R.string.title_users_retweeted_this)
|
|
||||||
}
|
|
||||||
LINK_ID_STATUS_FAVORITERS -> {
|
|
||||||
if (preferences[iWantMyStarsBackKey]) {
|
|
||||||
setTitle(R.string.title_users_favorited_this)
|
|
||||||
} else {
|
|
||||||
setTitle(R.string.title_users_liked_this)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
LINK_ID_SEARCH -> {
|
|
||||||
setTitle(R.string.title_search)
|
|
||||||
setSubtitle(uri.getQueryParameter(QUERY_PARAM_QUERY))
|
|
||||||
}
|
|
||||||
LINK_ID_MASTODON_SEARCH -> {
|
|
||||||
setTitle(R.string.title_search)
|
|
||||||
setSubtitle(uri.getQueryParameter(QUERY_PARAM_QUERY))
|
|
||||||
}
|
|
||||||
LINK_ID_ACCOUNTS -> {
|
|
||||||
setTitle(R.string.title_accounts)
|
|
||||||
}
|
|
||||||
LINK_ID_MAP -> {
|
|
||||||
setTitle(R.string.action_view_map)
|
|
||||||
}
|
|
||||||
LINK_ID_PROFILE_EDITOR -> {
|
|
||||||
setTitle(R.string.title_edit_profile)
|
|
||||||
}
|
|
||||||
LINK_ID_MESSAGES -> {
|
|
||||||
title = getString(R.string.title_direct_messages)
|
|
||||||
}
|
|
||||||
LINK_ID_MESSAGES_CONVERSATION -> {
|
|
||||||
title = getString(R.string.title_direct_messages)
|
|
||||||
}
|
|
||||||
LINK_ID_MESSAGES_CONVERSATION_NEW -> {
|
|
||||||
title = getString(R.string.title_direct_messages_conversation_new)
|
|
||||||
}
|
|
||||||
LINK_ID_MESSAGES_CONVERSATION_INFO -> {
|
|
||||||
title = getString(R.string.title_direct_messages_conversation_info)
|
|
||||||
}
|
|
||||||
LINK_ID_INTERACTIONS -> {
|
|
||||||
title = getString(R.string.interactions)
|
|
||||||
}
|
|
||||||
LINK_ID_PUBLIC_TIMELINE -> {
|
|
||||||
title = getString(R.string.title_public_timeline)
|
|
||||||
}
|
|
||||||
LINK_ID_NETWORK_PUBLIC_TIMELINE -> {
|
|
||||||
title = getString(R.string.title_network_public_timeline)
|
|
||||||
}
|
|
||||||
LINK_ID_FILTERS_IMPORT_BLOCKS -> {
|
|
||||||
title = getString(R.string.title_select_users)
|
|
||||||
}
|
|
||||||
LINK_ID_FILTERS_IMPORT_MUTES -> {
|
|
||||||
title = getString(R.string.title_select_users)
|
|
||||||
}
|
|
||||||
LINK_ID_FILTERS_SUBSCRIPTIONS_ADD,
|
|
||||||
LINK_ID_FILTERS_SUBSCRIPTIONS -> {
|
|
||||||
title = getString(R.string.title_manage_filter_subscriptions)
|
|
||||||
}
|
|
||||||
else -> {
|
|
||||||
title = getString(R.string.app_name)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun handleFragmentKeyboardShortcutRepeat(handler: KeyboardShortcutsHandler, keyCode: Int,
|
private fun handleFragmentKeyboardShortcutRepeat(handler: KeyboardShortcutsHandler, keyCode: Int,
|
||||||
repeatCount: Int, event: KeyEvent, metaState: Int): Boolean {
|
repeatCount: Int, event: KeyEvent, metaState: Int): Boolean {
|
||||||
val fragment = currentVisibleFragment
|
val fragment = currentVisibleFragment
|
||||||
|
@ -20,12 +20,16 @@
|
|||||||
package org.mariotaku.twidere.extension
|
package org.mariotaku.twidere.extension
|
||||||
|
|
||||||
import android.support.v4.app.Fragment
|
import android.support.v4.app.Fragment
|
||||||
|
import org.mariotaku.twidere.activity.LinkHandlerActivity
|
||||||
|
|
||||||
/**
|
var Fragment.linkHandlerTitle: CharSequence?
|
||||||
* Created by mariotaku on 2017/10/4.
|
get() = (activity as? LinkHandlerActivity)?.title
|
||||||
*/
|
|
||||||
var Fragment.title: CharSequence?
|
|
||||||
get() = activity.title
|
|
||||||
set(value) {
|
set(value) {
|
||||||
activity.title
|
(activity as? LinkHandlerActivity)?.title = value
|
||||||
|
}
|
||||||
|
|
||||||
|
var Fragment.linkHandlerSubtitle: CharSequence?
|
||||||
|
get() = (activity as? LinkHandlerActivity)?.subtitle
|
||||||
|
set(value) {
|
||||||
|
(activity as? LinkHandlerActivity)?.subtitle = value
|
||||||
}
|
}
|
@ -11,7 +11,7 @@ import org.mariotaku.twidere.model.account.StatusNetAccountExtras
|
|||||||
import org.mariotaku.twidere.model.account.TwitterAccountExtras
|
import org.mariotaku.twidere.model.account.TwitterAccountExtras
|
||||||
import org.mariotaku.twidere.model.account.cred.Credentials
|
import org.mariotaku.twidere.model.account.cred.Credentials
|
||||||
import org.mariotaku.twidere.model.account.cred.OAuthCredentials
|
import org.mariotaku.twidere.model.account.cred.OAuthCredentials
|
||||||
import org.mariotaku.twidere.task.twitter.UpdateStatusTask
|
import org.mariotaku.twidere.task.status.UpdateStatusTask
|
||||||
import org.mariotaku.twidere.util.InternalTwitterContentUtils
|
import org.mariotaku.twidere.util.InternalTwitterContentUtils
|
||||||
|
|
||||||
fun AccountDetails.isOfficial(context: Context): Boolean {
|
fun AccountDetails.isOfficial(context: Context): Boolean {
|
||||||
|
@ -32,6 +32,7 @@ import org.mariotaku.twidere.adapter.AccountDetailsAdapter
|
|||||||
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT_KEY
|
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT_KEY
|
||||||
import org.mariotaku.twidere.constant.newDocumentApiKey
|
import org.mariotaku.twidere.constant.newDocumentApiKey
|
||||||
import org.mariotaku.twidere.extension.applyTheme
|
import org.mariotaku.twidere.extension.applyTheme
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.extension.model.getAccountKey
|
import org.mariotaku.twidere.extension.model.getAccountKey
|
||||||
import org.mariotaku.twidere.extension.model.setActivated
|
import org.mariotaku.twidere.extension.model.setActivated
|
||||||
import org.mariotaku.twidere.extension.model.setColor
|
import org.mariotaku.twidere.extension.model.setColor
|
||||||
@ -59,6 +60,7 @@ class AccountsManagerFragment : BaseFragment(), LoaderManager.LoaderCallbacks<Li
|
|||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
super.onActivityCreated(savedInstanceState)
|
super.onActivityCreated(savedInstanceState)
|
||||||
setHasOptionsMenu(true)
|
setHasOptionsMenu(true)
|
||||||
|
linkHandlerTitle = getString(R.string.title_accounts)
|
||||||
val am = AccountManager.get(context)
|
val am = AccountManager.get(context)
|
||||||
adapter = AccountDetailsAdapter(context, requestManager).apply {
|
adapter = AccountDetailsAdapter(context, requestManager).apply {
|
||||||
sortEnabled = true
|
sortEnabled = true
|
||||||
|
@ -46,7 +46,7 @@ import org.mariotaku.twidere.model.event.*
|
|||||||
import org.mariotaku.twidere.model.pagination.SinceMaxPagination
|
import org.mariotaku.twidere.model.pagination.SinceMaxPagination
|
||||||
import org.mariotaku.twidere.provider.TwidereDataStore.Activities
|
import org.mariotaku.twidere.provider.TwidereDataStore.Activities
|
||||||
import org.mariotaku.twidere.provider.TwidereDataStore.Filters
|
import org.mariotaku.twidere.provider.TwidereDataStore.Filters
|
||||||
import org.mariotaku.twidere.task.twitter.GetStatusesTask
|
import org.mariotaku.twidere.task.statuses.GetStatusesTask
|
||||||
import org.mariotaku.twidere.util.DataStoreUtils
|
import org.mariotaku.twidere.util.DataStoreUtils
|
||||||
import org.mariotaku.twidere.util.DataStoreUtils.getTableNameByUri
|
import org.mariotaku.twidere.util.DataStoreUtils.getTableNameByUri
|
||||||
import org.mariotaku.twidere.util.ErrorInfoStore
|
import org.mariotaku.twidere.util.ErrorInfoStore
|
||||||
|
@ -50,7 +50,7 @@ import org.mariotaku.twidere.model.event.*
|
|||||||
import org.mariotaku.twidere.model.pagination.SinceMaxPagination
|
import org.mariotaku.twidere.model.pagination.SinceMaxPagination
|
||||||
import org.mariotaku.twidere.provider.TwidereDataStore.Filters
|
import org.mariotaku.twidere.provider.TwidereDataStore.Filters
|
||||||
import org.mariotaku.twidere.provider.TwidereDataStore.Statuses
|
import org.mariotaku.twidere.provider.TwidereDataStore.Statuses
|
||||||
import org.mariotaku.twidere.task.twitter.GetStatusesTask
|
import org.mariotaku.twidere.task.statuses.GetStatusesTask
|
||||||
import org.mariotaku.twidere.util.DataStoreUtils
|
import org.mariotaku.twidere.util.DataStoreUtils
|
||||||
import org.mariotaku.twidere.util.ErrorInfoStore
|
import org.mariotaku.twidere.util.ErrorInfoStore
|
||||||
import org.mariotaku.twidere.util.Utils
|
import org.mariotaku.twidere.util.Utils
|
||||||
@ -256,6 +256,8 @@ abstract class CursorStatusesFragment : AbsStatusesFragment() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun clearNotifications() {
|
private fun clearNotifications() {
|
||||||
|
val notificationType = notificationType
|
||||||
|
if (notificationType <= 0) return
|
||||||
if (context != null && userVisibleHint) {
|
if (context != null && userVisibleHint) {
|
||||||
for (accountKey in accountKeys) {
|
for (accountKey in accountKeys) {
|
||||||
twitterWrapper.clearNotificationAsync(notificationType, accountKey)
|
twitterWrapper.clearNotificationAsync(notificationType, accountKey)
|
||||||
|
@ -77,7 +77,7 @@ class HomeTimelineFragment : CursorStatusesFragment() {
|
|||||||
override fun processWhere(where: Expression, whereArgs: Array<String>): ParameterizedExpression {
|
override fun processWhere(where: Expression, whereArgs: Array<String>): ParameterizedExpression {
|
||||||
val arguments = arguments
|
val arguments = arguments
|
||||||
if (arguments != null) {
|
if (arguments != null) {
|
||||||
val extras = arguments.getParcelable<HomeTabExtras>(EXTRA_EXTRAS)
|
val extras = arguments.getParcelable<HomeTabExtras?>(EXTRA_EXTRAS)
|
||||||
if (extras != null) {
|
if (extras != null) {
|
||||||
val expressions = ArrayList<Expression>()
|
val expressions = ArrayList<Expression>()
|
||||||
val expressionArgs = ArrayList<String>()
|
val expressionArgs = ArrayList<String>()
|
||||||
|
@ -20,14 +20,17 @@
|
|||||||
package org.mariotaku.twidere.fragment
|
package org.mariotaku.twidere.fragment
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.os.Bundle
|
||||||
import com.bumptech.glide.RequestManager
|
import com.bumptech.glide.RequestManager
|
||||||
import org.mariotaku.microblog.library.twitter.model.Activity
|
import org.mariotaku.microblog.library.twitter.model.Activity
|
||||||
import org.mariotaku.sqliteqb.library.Expression
|
import org.mariotaku.sqliteqb.library.Expression
|
||||||
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.TwidereConstants.NOTIFICATION_ID_INTERACTIONS_TIMELINE
|
import org.mariotaku.twidere.TwidereConstants.NOTIFICATION_ID_INTERACTIONS_TIMELINE
|
||||||
import org.mariotaku.twidere.adapter.ParcelableActivitiesAdapter
|
import org.mariotaku.twidere.adapter.ParcelableActivitiesAdapter
|
||||||
import org.mariotaku.twidere.annotation.FilterScope
|
import org.mariotaku.twidere.annotation.FilterScope
|
||||||
import org.mariotaku.twidere.annotation.ReadPositionTag
|
import org.mariotaku.twidere.annotation.ReadPositionTag
|
||||||
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_EXTRAS
|
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_EXTRAS
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.model.ParameterizedExpression
|
import org.mariotaku.twidere.model.ParameterizedExpression
|
||||||
import org.mariotaku.twidere.model.RefreshTaskParam
|
import org.mariotaku.twidere.model.RefreshTaskParam
|
||||||
import org.mariotaku.twidere.model.UserKey
|
import org.mariotaku.twidere.model.UserKey
|
||||||
@ -54,6 +57,11 @@ class InteractionsTimelineFragment : CursorActivitiesFragment() {
|
|||||||
override val filterScopes: Int
|
override val filterScopes: Int
|
||||||
get() = FilterScope.INTERACTIONS
|
get() = FilterScope.INTERACTIONS
|
||||||
|
|
||||||
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
linkHandlerTitle = getString(R.string.interactions)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreateAdapter(context: Context, requestManager: RequestManager): ParcelableActivitiesAdapter {
|
override fun onCreateAdapter(context: Context, requestManager: RequestManager): ParcelableActivitiesAdapter {
|
||||||
val adapter = ParcelableActivitiesAdapter(context, requestManager)
|
val adapter = ParcelableActivitiesAdapter(context, requestManager)
|
||||||
val extras: InteractionsTabExtras? = arguments.getParcelable(EXTRA_EXTRAS)
|
val extras: InteractionsTabExtras? = arguments.getParcelable(EXTRA_EXTRAS)
|
||||||
|
@ -31,8 +31,10 @@ import com.squareup.otto.Subscribe
|
|||||||
import kotlinx.android.synthetic.main.fragment_content_listview.*
|
import kotlinx.android.synthetic.main.fragment_content_listview.*
|
||||||
import org.mariotaku.microblog.library.twitter.model.ResponseList
|
import org.mariotaku.microblog.library.twitter.model.ResponseList
|
||||||
import org.mariotaku.microblog.library.twitter.model.SavedSearch
|
import org.mariotaku.microblog.library.twitter.model.SavedSearch
|
||||||
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.adapter.SavedSearchesAdapter
|
import org.mariotaku.twidere.adapter.SavedSearchesAdapter
|
||||||
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT_KEY
|
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT_KEY
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.loader.SavedSearchesLoader
|
import org.mariotaku.twidere.loader.SavedSearchesLoader
|
||||||
import org.mariotaku.twidere.model.UserKey
|
import org.mariotaku.twidere.model.UserKey
|
||||||
import org.mariotaku.twidere.model.event.SavedSearchDestroyedEvent
|
import org.mariotaku.twidere.model.event.SavedSearchDestroyedEvent
|
||||||
@ -54,6 +56,8 @@ class SavedSearchesListFragment : AbsContentListViewFragment<SavedSearchesAdapte
|
|||||||
|
|
||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
super.onActivityCreated(savedInstanceState)
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
linkHandlerTitle = getString(R.string.saved_searches)
|
||||||
|
|
||||||
listView.onItemClickListener = this
|
listView.onItemClickListener = this
|
||||||
listView.onItemLongClickListener = this
|
listView.onItemLongClickListener = this
|
||||||
loaderManager.initLoader(0, null, this)
|
loaderManager.initLoader(0, null, this)
|
||||||
|
@ -654,6 +654,7 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener,
|
|||||||
|
|
||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
super.onActivityCreated(savedInstanceState)
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
linkHandlerTitle = getString(R.string.title_user)
|
||||||
val activity = activity
|
val activity = activity
|
||||||
nameFirst = preferences[nameFirstKey]
|
nameFirst = preferences[nameFirstKey]
|
||||||
cardBackgroundColor = ThemeUtils.getCardBackgroundColor(activity,
|
cardBackgroundColor = ThemeUtils.getCardBackgroundColor(activity,
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
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.group.UserGroupsLoader
|
|
||||||
import org.mariotaku.twidere.model.ParcelableGroup
|
|
||||||
import org.mariotaku.twidere.model.UserKey
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by mariotaku on 16/3/9.
|
|
||||||
*/
|
|
||||||
class UserGroupsFragment : ParcelableGroupsFragment() {
|
|
||||||
override fun onCreateUserListsLoader(context: Context, args: Bundle, fromUser: Boolean): Loader<List<ParcelableGroup>?> {
|
|
||||||
val accountKey = args.getParcelable<UserKey>(EXTRA_ACCOUNT_KEY)
|
|
||||||
val userKey = args.getParcelable<UserKey>(EXTRA_USER_KEY)
|
|
||||||
val screenName = args.getString(EXTRA_SCREEN_NAME)
|
|
||||||
return UserGroupsLoader(context, accountKey, userKey, screenName, adapter.getData())
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -50,6 +50,8 @@ import org.mariotaku.twidere.TwidereConstants.*
|
|||||||
import org.mariotaku.twidere.activity.ColorPickerDialogActivity
|
import org.mariotaku.twidere.activity.ColorPickerDialogActivity
|
||||||
import org.mariotaku.twidere.activity.ThemedMediaPickerActivity
|
import org.mariotaku.twidere.activity.ThemedMediaPickerActivity
|
||||||
import org.mariotaku.twidere.annotation.AccountType
|
import org.mariotaku.twidere.annotation.AccountType
|
||||||
|
import org.mariotaku.twidere.annotation.ImageShapeStyle
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.extension.loadProfileBanner
|
import org.mariotaku.twidere.extension.loadProfileBanner
|
||||||
import org.mariotaku.twidere.extension.loadProfileImage
|
import org.mariotaku.twidere.extension.loadProfileImage
|
||||||
import org.mariotaku.twidere.extension.model.api.mastodon.toParcelable
|
import org.mariotaku.twidere.extension.model.api.mastodon.toParcelable
|
||||||
@ -77,6 +79,44 @@ class UserProfileEditorFragment : BaseFragment(), OnSizeChangedListener,
|
|||||||
private var userInfoLoaderInitialized: Boolean = false
|
private var userInfoLoaderInitialized: Boolean = false
|
||||||
private var getUserInfoCalled: Boolean = false
|
private var getUserInfoCalled: Boolean = false
|
||||||
|
|
||||||
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
setHasOptionsMenu(true)
|
||||||
|
linkHandlerTitle = getString(R.string.title_edit_profile)
|
||||||
|
if (!Utils.isMyAccount(activity, accountKey)) {
|
||||||
|
activity.finish()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
val lengthChecker = TwitterValidatorMETLengthChecker(Validator())
|
||||||
|
|
||||||
|
editDescription.setLengthChecker(lengthChecker)
|
||||||
|
|
||||||
|
profileImage.setOnClickListener(this)
|
||||||
|
profileBanner.setOnClickListener(this)
|
||||||
|
profileBackground.setOnClickListener(this)
|
||||||
|
|
||||||
|
editProfileImage.setOnClickListener(this)
|
||||||
|
editProfileBanner.setOnClickListener(this)
|
||||||
|
editProfileBackground.setOnClickListener(this)
|
||||||
|
|
||||||
|
setLinkColor.setOnClickListener(this)
|
||||||
|
setBackgroundColor.setOnClickListener(this)
|
||||||
|
|
||||||
|
val savedUser = savedInstanceState?.getParcelable<ParcelableUser?>(EXTRA_USER)
|
||||||
|
val savedAccount = savedInstanceState?.getParcelable<AccountDetails?>(EXTRA_ACCOUNT)
|
||||||
|
if (savedInstanceState != null && savedUser != null && savedAccount != null) {
|
||||||
|
displayUser(savedUser, savedAccount)
|
||||||
|
editName.setText(savedInstanceState.getString(EXTRA_NAME, savedUser.name))
|
||||||
|
editLocation.setText(savedInstanceState.getString(EXTRA_LOCATION, savedUser.location))
|
||||||
|
editDescription.setText(savedInstanceState.getString(EXTRA_DESCRIPTION,
|
||||||
|
ParcelableUserUtils.getExpandedDescription(savedUser)))
|
||||||
|
editUrl.setText(savedInstanceState.getString(EXTRA_URL, savedUser.url_expanded))
|
||||||
|
} else {
|
||||||
|
getUserInfo()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onClick(view: View) {
|
override fun onClick(view: View) {
|
||||||
val user = user ?: return
|
val user = user ?: return
|
||||||
val account = account ?: return
|
val account = account ?: return
|
||||||
@ -145,6 +185,7 @@ class UserProfileEditorFragment : BaseFragment(), OnSizeChangedListener,
|
|||||||
inflater.inflate(R.menu.menu_profile_editor, menu)
|
inflater.inflate(R.menu.menu_profile_editor, menu)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||||
when (item.itemId) {
|
when (item.itemId) {
|
||||||
R.id.save -> {
|
R.id.save -> {
|
||||||
@ -164,44 +205,6 @@ class UserProfileEditorFragment : BaseFragment(), OnSizeChangedListener,
|
|||||||
return super.onOptionsItemSelected(item)
|
return super.onOptionsItemSelected(item)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
|
||||||
super.onActivityCreated(savedInstanceState)
|
|
||||||
setHasOptionsMenu(true)
|
|
||||||
if (!Utils.isMyAccount(activity, accountKey)) {
|
|
||||||
activity.finish()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
val lengthChecker = TwitterValidatorMETLengthChecker(Validator())
|
|
||||||
|
|
||||||
editDescription.setLengthChecker(lengthChecker)
|
|
||||||
|
|
||||||
profileImage.setOnClickListener(this)
|
|
||||||
profileBanner.setOnClickListener(this)
|
|
||||||
profileBackground.setOnClickListener(this)
|
|
||||||
|
|
||||||
editProfileImage.setOnClickListener(this)
|
|
||||||
editProfileBanner.setOnClickListener(this)
|
|
||||||
editProfileBackground.setOnClickListener(this)
|
|
||||||
|
|
||||||
setLinkColor.setOnClickListener(this)
|
|
||||||
setBackgroundColor.setOnClickListener(this)
|
|
||||||
|
|
||||||
val savedUser = savedInstanceState?.getParcelable<ParcelableUser?>(EXTRA_USER)
|
|
||||||
val savedAccount = savedInstanceState?.getParcelable<AccountDetails?>(EXTRA_ACCOUNT)
|
|
||||||
if (savedInstanceState != null && savedUser != null && savedAccount != null) {
|
|
||||||
displayUser(savedUser, savedAccount)
|
|
||||||
editName.setText(savedInstanceState.getString(EXTRA_NAME, savedUser.name))
|
|
||||||
editLocation.setText(savedInstanceState.getString(EXTRA_LOCATION, savedUser.location))
|
|
||||||
editDescription.setText(savedInstanceState.getString(EXTRA_DESCRIPTION,
|
|
||||||
ParcelableUserUtils.getExpandedDescription(savedUser)))
|
|
||||||
editUrl.setText(savedInstanceState.getString(EXTRA_URL, savedUser.url_expanded))
|
|
||||||
} else {
|
|
||||||
getUserInfo()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onSaveInstanceState(outState: Bundle) {
|
override fun onSaveInstanceState(outState: Bundle) {
|
||||||
super.onSaveInstanceState(outState)
|
super.onSaveInstanceState(outState)
|
||||||
outState.putParcelable(EXTRA_USER, user)
|
outState.putParcelable(EXTRA_USER, user)
|
||||||
@ -277,7 +280,8 @@ class UserProfileEditorFragment : BaseFragment(), OnSizeChangedListener,
|
|||||||
editLocation.setText(user.location)
|
editLocation.setText(user.location)
|
||||||
editUrl.setText(if (isEmpty(user.url_expanded)) user.url else user.url_expanded)
|
editUrl.setText(if (isEmpty(user.url_expanded)) user.url else user.url_expanded)
|
||||||
|
|
||||||
requestManager.loadProfileImage(context, user, 0).into(profileImage)
|
requestManager.loadProfileImage(context, user,
|
||||||
|
ImageShapeStyle.SHAPE_RECTANGLE).into(profileImage)
|
||||||
requestManager.loadProfileBanner(context, user, resources.displayMetrics.widthPixels)
|
requestManager.loadProfileBanner(context, user, resources.displayMetrics.widthPixels)
|
||||||
.into(profileBanner)
|
.into(profileBanner)
|
||||||
requestManager.load(user.profile_background_url).into(profileBackground)
|
requestManager.load(user.profile_background_url).into(profileBackground)
|
||||||
|
@ -24,7 +24,7 @@ import org.mariotaku.ktextension.Bundle
|
|||||||
import org.mariotaku.twidere.R
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.adapter.SupportTabsAdapter
|
import org.mariotaku.twidere.adapter.SupportTabsAdapter
|
||||||
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACTIONS
|
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACTIONS
|
||||||
import org.mariotaku.twidere.extension.title
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.fragment.AbsToolbarTabPagesFragment
|
import org.mariotaku.twidere.fragment.AbsToolbarTabPagesFragment
|
||||||
import org.mariotaku.twidere.model.Draft
|
import org.mariotaku.twidere.model.Draft
|
||||||
|
|
||||||
@ -35,7 +35,7 @@ import org.mariotaku.twidere.model.Draft
|
|||||||
class DraftsFragment : AbsToolbarTabPagesFragment() {
|
class DraftsFragment : AbsToolbarTabPagesFragment() {
|
||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
super.onActivityCreated(savedInstanceState)
|
super.onActivityCreated(savedInstanceState)
|
||||||
title = getString(R.string.title_drafts)
|
linkHandlerTitle = getString(R.string.title_drafts)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun addTabs(adapter: SupportTabsAdapter) {
|
override fun addTabs(adapter: SupportTabsAdapter) {
|
||||||
|
@ -22,7 +22,7 @@ package org.mariotaku.twidere.fragment.filter
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import org.mariotaku.twidere.R
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.adapter.SupportTabsAdapter
|
import org.mariotaku.twidere.adapter.SupportTabsAdapter
|
||||||
import org.mariotaku.twidere.extension.title
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.fragment.AbsToolbarTabPagesFragment
|
import org.mariotaku.twidere.fragment.AbsToolbarTabPagesFragment
|
||||||
|
|
||||||
class FiltersFragment : AbsToolbarTabPagesFragment() {
|
class FiltersFragment : AbsToolbarTabPagesFragment() {
|
||||||
@ -30,7 +30,7 @@ class FiltersFragment : AbsToolbarTabPagesFragment() {
|
|||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
super.onActivityCreated(savedInstanceState)
|
super.onActivityCreated(savedInstanceState)
|
||||||
setHasOptionsMenu(true)
|
setHasOptionsMenu(true)
|
||||||
title = getString(R.string.title_filters)
|
linkHandlerTitle = getString(R.string.title_filters)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun addTabs(adapter: SupportTabsAdapter) {
|
override fun addTabs(adapter: SupportTabsAdapter) {
|
||||||
|
@ -2,8 +2,10 @@ package org.mariotaku.twidere.fragment.filter
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.constant.IntentConstants
|
import org.mariotaku.twidere.constant.IntentConstants
|
||||||
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_PAGINATION
|
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_PAGINATION
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.loader.users.AbsRequestUsersLoader
|
import org.mariotaku.twidere.loader.users.AbsRequestUsersLoader
|
||||||
import org.mariotaku.twidere.loader.users.UserBlocksLoader
|
import org.mariotaku.twidere.loader.users.UserBlocksLoader
|
||||||
import org.mariotaku.twidere.model.UserKey
|
import org.mariotaku.twidere.model.UserKey
|
||||||
@ -13,6 +15,10 @@ import org.mariotaku.twidere.model.UserKey
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
class FiltersImportBlocksFragment : BaseFiltersImportFragment() {
|
class FiltersImportBlocksFragment : BaseFiltersImportFragment() {
|
||||||
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
linkHandlerTitle = getString(R.string.title_select_users)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreateUsersLoader(context: Context, args: Bundle, fromUser: Boolean):
|
override fun onCreateUsersLoader(context: Context, args: Bundle, fromUser: Boolean):
|
||||||
AbsRequestUsersLoader {
|
AbsRequestUsersLoader {
|
||||||
|
@ -2,8 +2,10 @@ package org.mariotaku.twidere.fragment.filter
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.constant.IntentConstants
|
import org.mariotaku.twidere.constant.IntentConstants
|
||||||
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT_KEY
|
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT_KEY
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.loader.users.AbsRequestUsersLoader
|
import org.mariotaku.twidere.loader.users.AbsRequestUsersLoader
|
||||||
import org.mariotaku.twidere.loader.users.MutesUsersLoader
|
import org.mariotaku.twidere.loader.users.MutesUsersLoader
|
||||||
import org.mariotaku.twidere.model.UserKey
|
import org.mariotaku.twidere.model.UserKey
|
||||||
@ -13,6 +15,11 @@ import org.mariotaku.twidere.model.UserKey
|
|||||||
*/
|
*/
|
||||||
class FiltersImportMutesFragment : BaseFiltersImportFragment() {
|
class FiltersImportMutesFragment : BaseFiltersImportFragment() {
|
||||||
|
|
||||||
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
linkHandlerTitle = getString(R.string.title_select_users)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreateUsersLoader(context: Context, args: Bundle, fromUser: Boolean):
|
override fun onCreateUsersLoader(context: Context, args: Bundle, fromUser: Boolean):
|
||||||
AbsRequestUsersLoader {
|
AbsRequestUsersLoader {
|
||||||
val accountKey = args.getParcelable<UserKey>(EXTRA_ACCOUNT_KEY)
|
val accountKey = args.getParcelable<UserKey>(EXTRA_ACCOUNT_KEY)
|
||||||
|
@ -59,6 +59,7 @@ class FiltersSubscriptionsFragment : BaseFragment(), LoaderManager.LoaderCallbac
|
|||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
super.onActivityCreated(savedInstanceState)
|
super.onActivityCreated(savedInstanceState)
|
||||||
setHasOptionsMenu(true)
|
setHasOptionsMenu(true)
|
||||||
|
linkHandlerTitle = getString(R.string.title_manage_filter_subscriptions)
|
||||||
|
|
||||||
adapter = FilterSubscriptionsAdapter(context)
|
adapter = FilterSubscriptionsAdapter(context)
|
||||||
listView.adapter = adapter
|
listView.adapter = adapter
|
||||||
|
@ -1,4 +1,23 @@
|
|||||||
package org.mariotaku.twidere.fragment
|
/*
|
||||||
|
* Twidere - Twitter client for Android
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012-2017 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.group
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.nfc.NdefMessage
|
import android.nfc.NdefMessage
|
||||||
@ -13,6 +32,7 @@ import org.mariotaku.microblog.library.statusnet.model.Group
|
|||||||
import org.mariotaku.twidere.Constants.*
|
import org.mariotaku.twidere.Constants.*
|
||||||
import org.mariotaku.twidere.R
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.adapter.SupportTabsAdapter
|
import org.mariotaku.twidere.adapter.SupportTabsAdapter
|
||||||
|
import org.mariotaku.twidere.fragment.AbsToolbarTabPagesFragment
|
||||||
import org.mariotaku.twidere.fragment.statuses.GroupTimelineFragment
|
import org.mariotaku.twidere.fragment.statuses.GroupTimelineFragment
|
||||||
import org.mariotaku.twidere.fragment.users.GroupMembersFragment
|
import org.mariotaku.twidere.fragment.users.GroupMembersFragment
|
||||||
import org.mariotaku.twidere.model.ParcelableGroup
|
import org.mariotaku.twidere.model.ParcelableGroup
|
@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
* Twidere - Twitter client for Android
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012-2017 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.group
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.support.v4.content.Loader
|
||||||
|
import org.mariotaku.twidere.R
|
||||||
|
import org.mariotaku.twidere.constant.IntentConstants.*
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
|
import org.mariotaku.twidere.fragment.ParcelableGroupsFragment
|
||||||
|
import org.mariotaku.twidere.loader.group.UserGroupsLoader
|
||||||
|
import org.mariotaku.twidere.model.ParcelableGroup
|
||||||
|
import org.mariotaku.twidere.model.UserKey
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by mariotaku on 16/3/9.
|
||||||
|
*/
|
||||||
|
class UserGroupsFragment : ParcelableGroupsFragment() {
|
||||||
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
linkHandlerTitle = getString(R.string.groups)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCreateUserListsLoader(context: Context, args: Bundle, fromUser: Boolean): Loader<List<ParcelableGroup>?> {
|
||||||
|
val accountKey = args.getParcelable<UserKey>(EXTRA_ACCOUNT_KEY)
|
||||||
|
val userKey = args.getParcelable<UserKey>(EXTRA_USER_KEY)
|
||||||
|
val screenName = args.getString(EXTRA_SCREEN_NAME)
|
||||||
|
return UserGroupsLoader(context, accountKey, userKey, screenName, adapter.getData())
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -91,7 +91,7 @@ import org.mariotaku.twidere.model.ParcelableMessageConversation.ConversationTyp
|
|||||||
import org.mariotaku.twidere.model.ParcelableMessageConversation.ExtrasType
|
import org.mariotaku.twidere.model.ParcelableMessageConversation.ExtrasType
|
||||||
import org.mariotaku.twidere.model.util.AccountUtils
|
import org.mariotaku.twidere.model.util.AccountUtils
|
||||||
import org.mariotaku.twidere.provider.TwidereDataStore.Messages.Conversations
|
import org.mariotaku.twidere.provider.TwidereDataStore.Messages.Conversations
|
||||||
import org.mariotaku.twidere.task.twitter.UpdateStatusTask
|
import org.mariotaku.twidere.task.status.UpdateStatusTask
|
||||||
import org.mariotaku.twidere.task.twitter.message.AddParticipantsTask
|
import org.mariotaku.twidere.task.twitter.message.AddParticipantsTask
|
||||||
import org.mariotaku.twidere.task.twitter.message.ClearMessagesTask
|
import org.mariotaku.twidere.task.twitter.message.ClearMessagesTask
|
||||||
import org.mariotaku.twidere.task.twitter.message.DestroyConversationTask
|
import org.mariotaku.twidere.task.twitter.message.DestroyConversationTask
|
||||||
@ -122,6 +122,8 @@ class MessageConversationInfoFragment : BaseFragment(), IToolBarSupportFragment,
|
|||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
super.onActivityCreated(savedInstanceState)
|
super.onActivityCreated(savedInstanceState)
|
||||||
setHasOptionsMenu(true)
|
setHasOptionsMenu(true)
|
||||||
|
linkHandlerTitle = getString(R.string.title_direct_messages_conversation_info)
|
||||||
|
|
||||||
val activity = this.activity
|
val activity = this.activity
|
||||||
|
|
||||||
if (activity is AppCompatActivity) {
|
if (activity is AppCompatActivity) {
|
||||||
|
@ -44,6 +44,7 @@ import org.mariotaku.twidere.R
|
|||||||
import org.mariotaku.twidere.adapter.SelectableUsersAdapter
|
import org.mariotaku.twidere.adapter.SelectableUsersAdapter
|
||||||
import org.mariotaku.twidere.constant.IntentConstants.*
|
import org.mariotaku.twidere.constant.IntentConstants.*
|
||||||
import org.mariotaku.twidere.constant.nameFirstKey
|
import org.mariotaku.twidere.constant.nameFirstKey
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.extension.model.isOfficial
|
import org.mariotaku.twidere.extension.model.isOfficial
|
||||||
import org.mariotaku.twidere.extension.queryOne
|
import org.mariotaku.twidere.extension.queryOne
|
||||||
import org.mariotaku.twidere.extension.text.appendCompat
|
import org.mariotaku.twidere.extension.text.appendCompat
|
||||||
@ -98,6 +99,7 @@ class MessageNewConversationFragment : BaseFragment(), LoaderCallbacks<List<Parc
|
|||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
super.onActivityCreated(savedInstanceState)
|
super.onActivityCreated(savedInstanceState)
|
||||||
setHasOptionsMenu(true)
|
setHasOptionsMenu(true)
|
||||||
|
linkHandlerTitle = getString(R.string.title_direct_messages_conversation_new)
|
||||||
usersAdapter = SelectableUsersAdapter(context, requestManager)
|
usersAdapter = SelectableUsersAdapter(context, requestManager)
|
||||||
recyclerView.adapter = usersAdapter
|
recyclerView.adapter = usersAdapter
|
||||||
recyclerView.layoutManager = LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)
|
recyclerView.layoutManager = LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)
|
||||||
|
@ -64,6 +64,7 @@ import org.mariotaku.twidere.constant.IntentConstants.*
|
|||||||
import org.mariotaku.twidere.constant.nameFirstKey
|
import org.mariotaku.twidere.constant.nameFirstKey
|
||||||
import org.mariotaku.twidere.constant.newDocumentApiKey
|
import org.mariotaku.twidere.constant.newDocumentApiKey
|
||||||
import org.mariotaku.twidere.constant.profileImageStyleKey
|
import org.mariotaku.twidere.constant.profileImageStyleKey
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.extension.loadProfileImage
|
import org.mariotaku.twidere.extension.loadProfileImage
|
||||||
import org.mariotaku.twidere.extension.model.*
|
import org.mariotaku.twidere.extension.model.*
|
||||||
import org.mariotaku.twidere.fragment.AbsContentListRecyclerViewFragment
|
import org.mariotaku.twidere.fragment.AbsContentListRecyclerViewFragment
|
||||||
@ -126,6 +127,7 @@ class MessagesConversationFragment : AbsContentListRecyclerViewFragment<Messages
|
|||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
super.onActivityCreated(savedInstanceState)
|
super.onActivityCreated(savedInstanceState)
|
||||||
setHasOptionsMenu(true)
|
setHasOptionsMenu(true)
|
||||||
|
linkHandlerTitle = getString(R.string.title_direct_messages)
|
||||||
val account = this.account ?: run {
|
val account = this.account ?: run {
|
||||||
activity?.finish()
|
activity?.finish()
|
||||||
return
|
return
|
||||||
|
@ -49,6 +49,7 @@ import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT_KEY
|
|||||||
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT_TYPES
|
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT_TYPES
|
||||||
import org.mariotaku.twidere.constant.nameFirstKey
|
import org.mariotaku.twidere.constant.nameFirstKey
|
||||||
import org.mariotaku.twidere.constant.newDocumentApiKey
|
import org.mariotaku.twidere.constant.newDocumentApiKey
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.extension.model.getTitle
|
import org.mariotaku.twidere.extension.model.getTitle
|
||||||
import org.mariotaku.twidere.extension.model.user
|
import org.mariotaku.twidere.extension.model.user
|
||||||
import org.mariotaku.twidere.fragment.AbsContentListRecyclerViewFragment
|
import org.mariotaku.twidere.fragment.AbsContentListRecyclerViewFragment
|
||||||
@ -84,6 +85,7 @@ class MessagesEntriesFragment : AbsContentListRecyclerViewFragment<MessagesEntri
|
|||||||
|
|
||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
super.onActivityCreated(savedInstanceState)
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
linkHandlerTitle = getString(R.string.title_direct_messages)
|
||||||
adapter.listener = this
|
adapter.listener = this
|
||||||
adapter.loadMoreSupportedPosition = ILoadMoreSupportAdapter.END
|
adapter.loadMoreSupportedPosition = ILoadMoreSupportAdapter.END
|
||||||
loaderManager.initLoader(loaderId, null, this)
|
loaderManager.initLoader(loaderId, null, this)
|
||||||
|
@ -22,6 +22,9 @@ package org.mariotaku.twidere.fragment.search
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v4.content.Loader
|
import android.support.v4.content.Loader
|
||||||
import org.mariotaku.twidere.Constants.EXTRA_QUERY
|
import org.mariotaku.twidere.Constants.EXTRA_QUERY
|
||||||
|
import org.mariotaku.twidere.R
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerSubtitle
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.fragment.ItemsListFragment
|
import org.mariotaku.twidere.fragment.ItemsListFragment
|
||||||
import org.mariotaku.twidere.loader.MastodonSearchLoader
|
import org.mariotaku.twidere.loader.MastodonSearchLoader
|
||||||
|
|
||||||
@ -34,6 +37,12 @@ class MastodonSearchFragment : ItemsListFragment() {
|
|||||||
val query: String
|
val query: String
|
||||||
get() = arguments.getString(EXTRA_QUERY)
|
get() = arguments.getString(EXTRA_QUERY)
|
||||||
|
|
||||||
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
linkHandlerTitle = getString(R.string.title_search)
|
||||||
|
linkHandlerSubtitle = query
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreateLoader(id: Int, args: Bundle?): Loader<List<Any>?> {
|
override fun onCreateLoader(id: Int, args: Bundle?): Loader<List<Any>?> {
|
||||||
return MastodonSearchLoader(context, accountKey, query)
|
return MastodonSearchLoader(context, accountKey, query)
|
||||||
}
|
}
|
||||||
|
@ -41,6 +41,8 @@ import org.mariotaku.twidere.activity.QuickSearchBarActivity
|
|||||||
import org.mariotaku.twidere.activity.iface.IControlBarActivity.ControlBarOffsetListener
|
import org.mariotaku.twidere.activity.iface.IControlBarActivity.ControlBarOffsetListener
|
||||||
import org.mariotaku.twidere.adapter.SupportTabsAdapter
|
import org.mariotaku.twidere.adapter.SupportTabsAdapter
|
||||||
import org.mariotaku.twidere.annotation.AccountType
|
import org.mariotaku.twidere.annotation.AccountType
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerSubtitle
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.extension.model.getAccountType
|
import org.mariotaku.twidere.extension.model.getAccountType
|
||||||
import org.mariotaku.twidere.fragment.AbsToolbarTabPagesFragment
|
import org.mariotaku.twidere.fragment.AbsToolbarTabPagesFragment
|
||||||
import org.mariotaku.twidere.fragment.iface.IBaseFragment.SystemWindowInsetsCallback
|
import org.mariotaku.twidere.fragment.iface.IBaseFragment.SystemWindowInsetsCallback
|
||||||
@ -85,6 +87,9 @@ class SearchFragment : AbsToolbarTabPagesFragment(), RefreshScrollTopInterface,
|
|||||||
super.onActivityCreated(savedInstanceState)
|
super.onActivityCreated(savedInstanceState)
|
||||||
setHasOptionsMenu(true)
|
setHasOptionsMenu(true)
|
||||||
|
|
||||||
|
linkHandlerTitle = getString(R.string.title_search)
|
||||||
|
linkHandlerSubtitle = query
|
||||||
|
|
||||||
if (savedInstanceState == null && !TextUtils.isEmpty(query)) {
|
if (savedInstanceState == null && !TextUtils.isEmpty(query)) {
|
||||||
val suggestions = SearchRecentSuggestions(activity,
|
val suggestions = SearchRecentSuggestions(activity,
|
||||||
RecentSearchProvider.AUTHORITY, RecentSearchProvider.MODE)
|
RecentSearchProvider.AUTHORITY, RecentSearchProvider.MODE)
|
||||||
|
@ -232,6 +232,7 @@ class StatusFragment : BaseFragment(), LoaderCallbacks<SingleResponse<Parcelable
|
|||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
super.onActivityCreated(savedInstanceState)
|
super.onActivityCreated(savedInstanceState)
|
||||||
setHasOptionsMenu(true)
|
setHasOptionsMenu(true)
|
||||||
|
linkHandlerTitle = getString(R.string.title_status)
|
||||||
Utils.setNdefPushMessageCallback(activity, CreateNdefMessageCallback {
|
Utils.setNdefPushMessageCallback(activity, CreateNdefMessageCallback {
|
||||||
val status = status ?: return@CreateNdefMessageCallback null
|
val status = status ?: return@CreateNdefMessageCallback null
|
||||||
NdefMessage(arrayOf(NdefRecord.createUri(LinkCreator.getStatusWebLink(status))))
|
NdefMessage(arrayOf(NdefRecord.createUri(LinkCreator.getStatusWebLink(status))))
|
||||||
|
@ -19,45 +19,86 @@
|
|||||||
|
|
||||||
package org.mariotaku.twidere.fragment.statuses
|
package org.mariotaku.twidere.fragment.statuses
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v4.content.Loader
|
import org.mariotaku.abstask.library.TaskStarter
|
||||||
import org.mariotaku.twidere.TwidereConstants.*
|
import org.mariotaku.sqliteqb.library.Expression
|
||||||
import org.mariotaku.twidere.fragment.ParcelableStatusesFragment
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.loader.statuses.NetworkPublicTimelineLoader
|
import org.mariotaku.twidere.annotation.FilterScope
|
||||||
import org.mariotaku.twidere.model.ParcelableStatus
|
import org.mariotaku.twidere.annotation.ReadPositionTag
|
||||||
import org.mariotaku.twidere.util.Utils
|
import org.mariotaku.twidere.constant.IntentConstants
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
|
import org.mariotaku.twidere.fragment.CursorStatusesFragment
|
||||||
|
import org.mariotaku.twidere.model.ParameterizedExpression
|
||||||
|
import org.mariotaku.twidere.model.RefreshTaskParam
|
||||||
|
import org.mariotaku.twidere.model.UserKey
|
||||||
|
import org.mariotaku.twidere.model.tab.extra.HomeTabExtras
|
||||||
|
import org.mariotaku.twidere.provider.TwidereDataStore.Statuses
|
||||||
|
import org.mariotaku.twidere.task.statuses.GetNetworkPublicTimelineTask
|
||||||
|
import org.mariotaku.twidere.util.DataStoreUtils
|
||||||
|
import org.mariotaku.twidere.util.ErrorInfoStore
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by mariotaku on 14/12/2.
|
* Created by mariotaku on 14/12/2.
|
||||||
*/
|
*/
|
||||||
class NetworkPublicTimelineFragment : ParcelableStatusesFragment() {
|
class NetworkPublicTimelineFragment : CursorStatusesFragment() {
|
||||||
|
|
||||||
override val savedStatusesFileArgs: Array<String>?
|
override val errorInfoKey = ErrorInfoStore.KEY_NETWORK_PUBLIC_TIMELINE
|
||||||
get() {
|
|
||||||
val accountKey = Utils.getAccountKey(context, arguments)
|
override val contentUri = Statuses.NetworkPublic.CONTENT_URI
|
||||||
val result = ArrayList<String>()
|
|
||||||
result.add(AUTHORITY_NETWORK_PUBLIC_TIMELINE)
|
override val notificationType = 0
|
||||||
result.add("account=$accountKey")
|
|
||||||
return result.toTypedArray()
|
override val isFilterEnabled = true
|
||||||
|
|
||||||
|
override val readPositionTag = ReadPositionTag.PUBLIC_TIMELINE
|
||||||
|
|
||||||
|
override val timelineSyncTag: String?
|
||||||
|
get() = getTimelineSyncTag(accountKeys)
|
||||||
|
|
||||||
|
override val filterScopes: Int
|
||||||
|
get() = FilterScope.PUBLIC_TIMELINE
|
||||||
|
|
||||||
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
linkHandlerTitle = getString(R.string.title_network_public_timeline)
|
||||||
}
|
}
|
||||||
|
|
||||||
override val readPositionTagWithArguments: String?
|
override fun updateRefreshState() {
|
||||||
get() {
|
val twitter = twitterWrapper
|
||||||
val tabPosition = arguments.getInt(EXTRA_TAB_POSITION, -1)
|
refreshing = twitter.isStatusTimelineRefreshing(contentUri)
|
||||||
if (tabPosition < 0) return null
|
}
|
||||||
return "networkpublic_timeline"
|
|
||||||
|
override fun getStatuses(param: RefreshTaskParam): Boolean {
|
||||||
|
val task = GetNetworkPublicTimelineTask(context)
|
||||||
|
task.params = param
|
||||||
|
TaskStarter.execute(task)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun processWhere(where: Expression, whereArgs: Array<String>): ParameterizedExpression {
|
||||||
|
val arguments = arguments
|
||||||
|
if (arguments != null) {
|
||||||
|
val extras = arguments.getParcelable<HomeTabExtras?>(IntentConstants.EXTRA_EXTRAS)
|
||||||
|
if (extras != null) {
|
||||||
|
val expressions = ArrayList<Expression>()
|
||||||
|
val expressionArgs = ArrayList<String>()
|
||||||
|
Collections.addAll(expressionArgs, *whereArgs)
|
||||||
|
expressions.add(where)
|
||||||
|
DataStoreUtils.processTabExtras(expressions, expressionArgs, extras)
|
||||||
|
val expression = Expression.and(*expressions.toTypedArray())
|
||||||
|
return ParameterizedExpression(expression, expressionArgs.toTypedArray())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return super.processWhere(where, whereArgs)
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
|
||||||
|
fun getTimelineSyncTag(accountKeys: Array<UserKey>): String {
|
||||||
|
return "${ReadPositionTag.NETWORK_PUBLIC_TIMELINE}_${accountKeys.sorted().joinToString(",")}"
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateStatusesLoader(context: Context, args: Bundle,
|
|
||||||
fromUser: Boolean): Loader<List<ParcelableStatus>?> {
|
|
||||||
refreshing = true
|
|
||||||
val data = adapterData
|
|
||||||
val accountKey = Utils.getAccountKey(context, args)
|
|
||||||
val tabPosition = args.getInt(EXTRA_TAB_POSITION, -1)
|
|
||||||
val loadingMore = args.getBoolean(EXTRA_LOADING_MORE, false)
|
|
||||||
return NetworkPublicTimelineLoader(context, accountKey, data, savedStatusesFileArgs,
|
|
||||||
tabPosition, fromUser, loadingMore)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,45 +19,86 @@
|
|||||||
|
|
||||||
package org.mariotaku.twidere.fragment.statuses
|
package org.mariotaku.twidere.fragment.statuses
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v4.content.Loader
|
import org.mariotaku.abstask.library.TaskStarter
|
||||||
import org.mariotaku.twidere.TwidereConstants.*
|
import org.mariotaku.sqliteqb.library.Expression
|
||||||
import org.mariotaku.twidere.fragment.ParcelableStatusesFragment
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.loader.statuses.PublicTimelineLoader
|
import org.mariotaku.twidere.annotation.FilterScope
|
||||||
import org.mariotaku.twidere.model.ParcelableStatus
|
import org.mariotaku.twidere.annotation.ReadPositionTag
|
||||||
import org.mariotaku.twidere.util.Utils
|
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_EXTRAS
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
|
import org.mariotaku.twidere.fragment.CursorStatusesFragment
|
||||||
|
import org.mariotaku.twidere.model.ParameterizedExpression
|
||||||
|
import org.mariotaku.twidere.model.RefreshTaskParam
|
||||||
|
import org.mariotaku.twidere.model.UserKey
|
||||||
|
import org.mariotaku.twidere.model.tab.extra.HomeTabExtras
|
||||||
|
import org.mariotaku.twidere.provider.TwidereDataStore.Statuses
|
||||||
|
import org.mariotaku.twidere.task.statuses.GetPublicTimelineTask
|
||||||
|
import org.mariotaku.twidere.util.DataStoreUtils
|
||||||
|
import org.mariotaku.twidere.util.ErrorInfoStore
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by mariotaku on 14/12/2.
|
* Created by mariotaku on 14/12/2.
|
||||||
*/
|
*/
|
||||||
class PublicTimelineFragment : ParcelableStatusesFragment() {
|
class PublicTimelineFragment : CursorStatusesFragment() {
|
||||||
|
|
||||||
override val savedStatusesFileArgs: Array<String>?
|
override val errorInfoKey = ErrorInfoStore.KEY_PUBLIC_TIMELINE
|
||||||
get() {
|
|
||||||
val accountKey = Utils.getAccountKey(context, arguments)
|
override val contentUri = Statuses.Public.CONTENT_URI
|
||||||
val result = ArrayList<String>()
|
|
||||||
result.add(AUTHORITY_PUBLIC_TIMELINE)
|
override val notificationType = 0
|
||||||
result.add("account=$accountKey")
|
|
||||||
return result.toTypedArray()
|
override val isFilterEnabled = true
|
||||||
|
|
||||||
|
override val readPositionTag = ReadPositionTag.PUBLIC_TIMELINE
|
||||||
|
|
||||||
|
override val timelineSyncTag: String?
|
||||||
|
get() = getTimelineSyncTag(accountKeys)
|
||||||
|
|
||||||
|
override val filterScopes: Int
|
||||||
|
get() = FilterScope.PUBLIC_TIMELINE
|
||||||
|
|
||||||
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
linkHandlerTitle = getString(R.string.title_public_timeline)
|
||||||
}
|
}
|
||||||
|
|
||||||
override val readPositionTagWithArguments: String?
|
override fun updateRefreshState() {
|
||||||
get() {
|
val twitter = twitterWrapper
|
||||||
val tabPosition = arguments.getInt(EXTRA_TAB_POSITION, -1)
|
refreshing = twitter.isStatusTimelineRefreshing(contentUri)
|
||||||
if (tabPosition < 0) return null
|
}
|
||||||
return "public_timeline"
|
|
||||||
|
override fun getStatuses(param: RefreshTaskParam): Boolean {
|
||||||
|
val task = GetPublicTimelineTask(context)
|
||||||
|
task.params = param
|
||||||
|
TaskStarter.execute(task)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun processWhere(where: Expression, whereArgs: Array<String>): ParameterizedExpression {
|
||||||
|
val arguments = arguments
|
||||||
|
if (arguments != null) {
|
||||||
|
val extras = arguments.getParcelable<HomeTabExtras?>(EXTRA_EXTRAS)
|
||||||
|
if (extras != null) {
|
||||||
|
val expressions = ArrayList<Expression>()
|
||||||
|
val expressionArgs = ArrayList<String>()
|
||||||
|
Collections.addAll(expressionArgs, *whereArgs)
|
||||||
|
expressions.add(where)
|
||||||
|
DataStoreUtils.processTabExtras(expressions, expressionArgs, extras)
|
||||||
|
val expression = Expression.and(*expressions.toTypedArray())
|
||||||
|
return ParameterizedExpression(expression, expressionArgs.toTypedArray())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return super.processWhere(where, whereArgs)
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
|
||||||
|
fun getTimelineSyncTag(accountKeys: Array<UserKey>): String {
|
||||||
|
return "${ReadPositionTag.PUBLIC_TIMELINE}_${accountKeys.sorted().joinToString(",")}"
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateStatusesLoader(context: Context, args: Bundle,
|
|
||||||
fromUser: Boolean): Loader<List<ParcelableStatus>?> {
|
|
||||||
refreshing = true
|
|
||||||
val data = adapterData
|
|
||||||
val accountKey = Utils.getAccountKey(context, args)
|
|
||||||
val tabPosition = args.getInt(EXTRA_TAB_POSITION, -1)
|
|
||||||
val loadingMore = args.getBoolean(EXTRA_LOADING_MORE, false)
|
|
||||||
return PublicTimelineLoader(context, accountKey, data, savedStatusesFileArgs, tabPosition,
|
|
||||||
fromUser, loadingMore)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,7 +22,11 @@ package org.mariotaku.twidere.fragment.statuses
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v4.content.Loader
|
import android.support.v4.content.Loader
|
||||||
|
import org.mariotaku.kpreferences.get
|
||||||
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.TwidereConstants.*
|
import org.mariotaku.twidere.TwidereConstants.*
|
||||||
|
import org.mariotaku.twidere.constant.iWantMyStarsBackKey
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.fragment.ParcelableStatusesFragment
|
import org.mariotaku.twidere.fragment.ParcelableStatusesFragment
|
||||||
import org.mariotaku.twidere.loader.statuses.UserFavoritesLoader
|
import org.mariotaku.twidere.loader.statuses.UserFavoritesLoader
|
||||||
import org.mariotaku.twidere.model.ParcelableStatus
|
import org.mariotaku.twidere.model.ParcelableStatus
|
||||||
@ -72,6 +76,15 @@ class UserFavoritesFragment : ParcelableStatusesFragment() {
|
|||||||
return sb.toString()
|
return sb.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
linkHandlerTitle = if (preferences[iWantMyStarsBackKey]) {
|
||||||
|
getString(R.string.title_favorites)
|
||||||
|
} else {
|
||||||
|
getString(R.string.title_likes)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreateStatusesLoader(context: Context, args: Bundle, fromUser: Boolean):
|
override fun onCreateStatusesLoader(context: Context, args: Bundle, fromUser: Boolean):
|
||||||
Loader<List<ParcelableStatus>?> {
|
Loader<List<ParcelableStatus>?> {
|
||||||
refreshing = true
|
refreshing = true
|
||||||
|
@ -22,8 +22,10 @@ package org.mariotaku.twidere.fragment.statuses
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v4.content.Loader
|
import android.support.v4.content.Loader
|
||||||
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.TwidereConstants
|
import org.mariotaku.twidere.TwidereConstants
|
||||||
import org.mariotaku.twidere.constant.IntentConstants.*
|
import org.mariotaku.twidere.constant.IntentConstants.*
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.fragment.ParcelableStatusesFragment
|
import org.mariotaku.twidere.fragment.ParcelableStatusesFragment
|
||||||
import org.mariotaku.twidere.loader.statuses.UserListTimelineLoader
|
import org.mariotaku.twidere.loader.statuses.UserListTimelineLoader
|
||||||
import org.mariotaku.twidere.model.ParcelableStatus
|
import org.mariotaku.twidere.model.ParcelableStatus
|
||||||
@ -88,6 +90,11 @@ class UserListTimelineFragment : ParcelableStatusesFragment() {
|
|||||||
return sb.toString()
|
return sb.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
linkHandlerTitle = getString(R.string.list_timeline)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreateStatusesLoader(context: Context, args: Bundle, fromUser: Boolean):
|
override fun onCreateStatusesLoader(context: Context, args: Bundle, fromUser: Boolean):
|
||||||
Loader<List<ParcelableStatus>?> {
|
Loader<List<ParcelableStatus>?> {
|
||||||
refreshing = true
|
refreshing = true
|
||||||
|
@ -22,7 +22,9 @@ package org.mariotaku.twidere.fragment.statuses
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v4.content.Loader
|
import android.support.v4.content.Loader
|
||||||
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.constant.IntentConstants.*
|
import org.mariotaku.twidere.constant.IntentConstants.*
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.fragment.AbsMediaStatusesFragment
|
import org.mariotaku.twidere.fragment.AbsMediaStatusesFragment
|
||||||
import org.mariotaku.twidere.loader.statuses.MediaTimelineLoader
|
import org.mariotaku.twidere.loader.statuses.MediaTimelineLoader
|
||||||
import org.mariotaku.twidere.model.ParcelableStatus
|
import org.mariotaku.twidere.model.ParcelableStatus
|
||||||
@ -33,6 +35,11 @@ import org.mariotaku.twidere.model.UserKey
|
|||||||
*/
|
*/
|
||||||
class UserMediaTimelineFragment : AbsMediaStatusesFragment() {
|
class UserMediaTimelineFragment : AbsMediaStatusesFragment() {
|
||||||
|
|
||||||
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
linkHandlerTitle = getString(R.string.media)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreateStatusesLoader(context: Context, args: Bundle, fromUser: Boolean):
|
override fun onCreateStatusesLoader(context: Context, args: Bundle, fromUser: Boolean):
|
||||||
Loader<List<ParcelableStatus>?> {
|
Loader<List<ParcelableStatus>?> {
|
||||||
val accountKey = args.getParcelable<UserKey?>(EXTRA_ACCOUNT_KEY)
|
val accountKey = args.getParcelable<UserKey?>(EXTRA_ACCOUNT_KEY)
|
||||||
|
@ -22,7 +22,9 @@ package org.mariotaku.twidere.fragment.statuses
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v4.content.Loader
|
import android.support.v4.content.Loader
|
||||||
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.TwidereConstants.*
|
import org.mariotaku.twidere.TwidereConstants.*
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.loader.statuses.UserMentionsLoader
|
import org.mariotaku.twidere.loader.statuses.UserMentionsLoader
|
||||||
import org.mariotaku.twidere.model.ParcelableStatus
|
import org.mariotaku.twidere.model.ParcelableStatus
|
||||||
import org.mariotaku.twidere.model.UserKey
|
import org.mariotaku.twidere.model.UserKey
|
||||||
@ -42,6 +44,11 @@ class UserMentionsFragment : StatusesSearchFragment() {
|
|||||||
return result.toTypedArray()
|
return result.toTypedArray()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
linkHandlerTitle = getString(R.string.user_mentions)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreateStatusesLoader(context: Context,
|
override fun onCreateStatusesLoader(context: Context,
|
||||||
args: Bundle,
|
args: Bundle,
|
||||||
fromUser: Boolean): Loader<List<ParcelableStatus>?> {
|
fromUser: Boolean): Loader<List<ParcelableStatus>?> {
|
||||||
|
@ -31,6 +31,7 @@ import org.mariotaku.twidere.R
|
|||||||
import org.mariotaku.twidere.TwidereConstants.*
|
import org.mariotaku.twidere.TwidereConstants.*
|
||||||
import org.mariotaku.twidere.constant.userTimelineFilterKey
|
import org.mariotaku.twidere.constant.userTimelineFilterKey
|
||||||
import org.mariotaku.twidere.extension.applyTheme
|
import org.mariotaku.twidere.extension.applyTheme
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.extension.onShow
|
import org.mariotaku.twidere.extension.onShow
|
||||||
import org.mariotaku.twidere.fragment.BaseDialogFragment
|
import org.mariotaku.twidere.fragment.BaseDialogFragment
|
||||||
import org.mariotaku.twidere.fragment.ParcelableStatusesFragment
|
import org.mariotaku.twidere.fragment.ParcelableStatusesFragment
|
||||||
@ -100,6 +101,11 @@ class UserTimelineFragment : ParcelableStatusesFragment() {
|
|||||||
override val timelineFilter: TimelineFilter?
|
override val timelineFilter: TimelineFilter?
|
||||||
get() = if (enableTimelineFilter) preferences[userTimelineFilterKey] else null
|
get() = if (enableTimelineFilter) preferences[userTimelineFilterKey] else null
|
||||||
|
|
||||||
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
linkHandlerTitle = getString(R.string.title_statuses)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreateStatusesLoader(context: Context, args: Bundle, fromUser: Boolean):
|
override fun onCreateStatusesLoader(context: Context, args: Bundle, fromUser: Boolean):
|
||||||
Loader<List<ParcelableStatus>?> {
|
Loader<List<ParcelableStatus>?> {
|
||||||
refreshing = true
|
refreshing = true
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Twidere - Twitter client for Android
|
* Twidere - Twitter client for Android
|
||||||
*
|
*
|
||||||
* Copyright (C) 2012-2014 Mariotaku Lee <mariotaku.lee@gmail.com>
|
* Copyright (C) 2012-2017 Mariotaku Lee <mariotaku.lee@gmail.com>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -17,18 +17,21 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.mariotaku.twidere.fragment
|
package org.mariotaku.twidere.fragment.userlist
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
|
||||||
import org.mariotaku.twidere.R
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.adapter.SupportTabsAdapter
|
import org.mariotaku.twidere.adapter.SupportTabsAdapter
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
|
import org.mariotaku.twidere.fragment.AbsToolbarTabPagesFragment
|
||||||
|
|
||||||
class ListsFragment : AbsToolbarTabPagesFragment() {
|
class ListsFragment : AbsToolbarTabPagesFragment() {
|
||||||
|
|
||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
super.onActivityCreated(savedInstanceState)
|
super.onActivityCreated(savedInstanceState)
|
||||||
setHasOptionsMenu(true)
|
setHasOptionsMenu(true)
|
||||||
|
linkHandlerTitle = getString(R.string.user_lists)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun addTabs(adapter: SupportTabsAdapter) {
|
override fun addTabs(adapter: SupportTabsAdapter) {
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Twidere - Twitter client for Android
|
* Twidere - Twitter client for Android
|
||||||
*
|
*
|
||||||
* Copyright (C) 2012-2014 Mariotaku Lee <mariotaku.lee@gmail.com>
|
* Copyright (C) 2012-2017 Mariotaku Lee <mariotaku.lee@gmail.com>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -17,7 +17,7 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.mariotaku.twidere.fragment
|
package org.mariotaku.twidere.fragment.userlist
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.app.Dialog
|
import android.app.Dialog
|
||||||
@ -53,8 +53,10 @@ import org.mariotaku.twidere.adapter.SupportTabsAdapter
|
|||||||
import org.mariotaku.twidere.app.TwidereApplication
|
import org.mariotaku.twidere.app.TwidereApplication
|
||||||
import org.mariotaku.twidere.constant.newDocumentApiKey
|
import org.mariotaku.twidere.constant.newDocumentApiKey
|
||||||
import org.mariotaku.twidere.extension.applyTheme
|
import org.mariotaku.twidere.extension.applyTheme
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.extension.model.api.microblog.toParcelable
|
import org.mariotaku.twidere.extension.model.api.microblog.toParcelable
|
||||||
import org.mariotaku.twidere.extension.onShow
|
import org.mariotaku.twidere.extension.onShow
|
||||||
|
import org.mariotaku.twidere.fragment.*
|
||||||
import org.mariotaku.twidere.fragment.iface.IBaseFragment.SystemWindowInsetsCallback
|
import org.mariotaku.twidere.fragment.iface.IBaseFragment.SystemWindowInsetsCallback
|
||||||
import org.mariotaku.twidere.fragment.iface.SupportFragmentCallback
|
import org.mariotaku.twidere.fragment.iface.SupportFragmentCallback
|
||||||
import org.mariotaku.twidere.fragment.statuses.UserListTimelineFragment
|
import org.mariotaku.twidere.fragment.statuses.UserListTimelineFragment
|
||||||
@ -78,30 +80,34 @@ class UserListFragment : AbsToolbarTabPagesFragment(), OnClickListener,
|
|||||||
var userList: ParcelableUserList? = null
|
var userList: ParcelableUserList? = null
|
||||||
private set
|
private set
|
||||||
|
|
||||||
fun displayUserList(userList: ParcelableUserList?) {
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
val activity = activity ?: return
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
linkHandlerTitle = getString(R.string.title_user_list)
|
||||||
|
val activity = activity
|
||||||
|
setHasOptionsMenu(true)
|
||||||
|
|
||||||
|
Utils.setNdefPushMessageCallback(activity, CreateNdefMessageCallback {
|
||||||
|
val userList = userList ?: return@CreateNdefMessageCallback null
|
||||||
|
NdefMessage(arrayOf(NdefRecord.createUri(LinkCreator.getTwitterUserListLink(userList.user_screen_name, userList.name))))
|
||||||
|
})
|
||||||
|
|
||||||
|
getUserListInfo(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onStart() {
|
||||||
|
super.onStart()
|
||||||
|
bus.register(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onStop() {
|
||||||
|
bus.unregister(this)
|
||||||
|
super.onStop()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onDestroyView() {
|
||||||
|
userList = null
|
||||||
loaderManager.destroyLoader(0)
|
loaderManager.destroyLoader(0)
|
||||||
this.userList = userList
|
super.onDestroyView()
|
||||||
|
|
||||||
if (userList != null) {
|
|
||||||
activity.title = userList.name
|
|
||||||
} else {
|
|
||||||
activity.setTitle(R.string.title_user_list)
|
|
||||||
}
|
|
||||||
activity.invalidateOptionsMenu()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getUserListInfo(omitIntentExtra: Boolean) {
|
|
||||||
val lm = loaderManager
|
|
||||||
lm.destroyLoader(0)
|
|
||||||
val args = Bundle(arguments)
|
|
||||||
args.putBoolean(EXTRA_OMIT_INTENT_EXTRA, omitIntentExtra)
|
|
||||||
if (!userListLoaderInitialized) {
|
|
||||||
lm.initLoader(0, args, this)
|
|
||||||
userListLoaderInitialized = true
|
|
||||||
} else {
|
|
||||||
lm.restartLoader(0, args, this)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||||
@ -128,19 +134,6 @@ class UserListFragment : AbsToolbarTabPagesFragment(), OnClickListener,
|
|||||||
super.onActivityResult(requestCode, resultCode, data)
|
super.onActivityResult(requestCode, resultCode, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
|
||||||
super.onActivityCreated(savedInstanceState)
|
|
||||||
val activity = activity
|
|
||||||
setHasOptionsMenu(true)
|
|
||||||
|
|
||||||
Utils.setNdefPushMessageCallback(activity, CreateNdefMessageCallback {
|
|
||||||
val userList = userList ?: return@CreateNdefMessageCallback null
|
|
||||||
NdefMessage(arrayOf(NdefRecord.createUri(LinkCreator.getTwitterUserListLink(userList.user_screen_name, userList.name))))
|
|
||||||
})
|
|
||||||
|
|
||||||
getUserListInfo(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun addTabs(adapter: SupportTabsAdapter) {
|
override fun addTabs(adapter: SupportTabsAdapter) {
|
||||||
val args = arguments
|
val args = arguments
|
||||||
val tabArgs = Bundle()
|
val tabArgs = Bundle()
|
||||||
@ -163,22 +156,6 @@ class UserListFragment : AbsToolbarTabPagesFragment(), OnClickListener,
|
|||||||
adapter.add(cls = UserListSubscribersFragment::class.java, args = tabArgs, name = getString(R.string.title_userlist_subscribers))
|
adapter.add(cls = UserListSubscribersFragment::class.java, args = tabArgs, name = getString(R.string.title_userlist_subscribers))
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onStart() {
|
|
||||||
super.onStart()
|
|
||||||
bus.register(this)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onStop() {
|
|
||||||
bus.unregister(this)
|
|
||||||
super.onStop()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onDestroyView() {
|
|
||||||
userList = null
|
|
||||||
loaderManager.destroyLoader(0)
|
|
||||||
super.onDestroyView()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||||
inflater.inflate(R.menu.menu_user_list, menu)
|
inflater.inflate(R.menu.menu_user_list, menu)
|
||||||
}
|
}
|
||||||
@ -339,6 +316,32 @@ class UserListFragment : AbsToolbarTabPagesFragment(), OnClickListener,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun displayUserList(userList: ParcelableUserList?) {
|
||||||
|
val activity = activity ?: return
|
||||||
|
loaderManager.destroyLoader(0)
|
||||||
|
this.userList = userList
|
||||||
|
|
||||||
|
if (userList != null) {
|
||||||
|
linkHandlerTitle = userList.name
|
||||||
|
} else {
|
||||||
|
linkHandlerTitle = getString(R.string.title_user_list)
|
||||||
|
}
|
||||||
|
activity.invalidateOptionsMenu()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getUserListInfo(omitIntentExtra: Boolean) {
|
||||||
|
val lm = loaderManager
|
||||||
|
lm.destroyLoader(0)
|
||||||
|
val args = Bundle(arguments)
|
||||||
|
args.putBoolean(EXTRA_OMIT_INTENT_EXTRA, omitIntentExtra)
|
||||||
|
if (!userListLoaderInitialized) {
|
||||||
|
lm.initLoader(0, args, this)
|
||||||
|
userListLoaderInitialized = true
|
||||||
|
} else {
|
||||||
|
lm.restartLoader(0, args, this)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
internal class ParcelableUserListLoader(
|
internal class ParcelableUserListLoader(
|
||||||
context: Context,
|
context: Context,
|
||||||
private val omitIntentExtra: Boolean,
|
private val omitIntentExtra: Boolean,
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Twidere - Twitter client for Android
|
* Twidere - Twitter client for Android
|
||||||
*
|
*
|
||||||
* Copyright (C) 2012-2014 Mariotaku Lee <mariotaku.lee@gmail.com>
|
* Copyright (C) 2012-2017 Mariotaku Lee <mariotaku.lee@gmail.com>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -17,18 +17,26 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.mariotaku.twidere.fragment
|
package org.mariotaku.twidere.fragment.userlist
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v4.content.Loader
|
import android.support.v4.content.Loader
|
||||||
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.constant.IntentConstants.*
|
import org.mariotaku.twidere.constant.IntentConstants.*
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
|
import org.mariotaku.twidere.fragment.ParcelableUserListsFragment
|
||||||
import org.mariotaku.twidere.loader.userlists.UserListMembershipsLoader
|
import org.mariotaku.twidere.loader.userlists.UserListMembershipsLoader
|
||||||
import org.mariotaku.twidere.model.ParcelableUserList
|
import org.mariotaku.twidere.model.ParcelableUserList
|
||||||
import org.mariotaku.twidere.model.UserKey
|
import org.mariotaku.twidere.model.UserKey
|
||||||
|
|
||||||
class UserListMembershipsFragment : ParcelableUserListsFragment() {
|
class UserListMembershipsFragment : ParcelableUserListsFragment() {
|
||||||
|
|
||||||
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
linkHandlerTitle = getString(R.string.lists_following_user)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreateUserListsLoader(context: Context,
|
override fun onCreateUserListsLoader(context: Context,
|
||||||
args: Bundle, fromUser: Boolean): Loader<List<ParcelableUserList>> {
|
args: Bundle, fromUser: Boolean): Loader<List<ParcelableUserList>> {
|
||||||
val accountKey = args.getParcelable<UserKey?>(EXTRA_ACCOUNT_KEY)
|
val accountKey = args.getParcelable<UserKey?>(EXTRA_ACCOUNT_KEY)
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Twidere - Twitter client for Android
|
* Twidere - Twitter client for Android
|
||||||
*
|
*
|
||||||
* Copyright (C) 2012-2014 Mariotaku Lee <mariotaku.lee@gmail.com>
|
* Copyright (C) 2012-2017 Mariotaku Lee <mariotaku.lee@gmail.com>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -17,12 +17,13 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.mariotaku.twidere.fragment
|
package org.mariotaku.twidere.fragment.userlist
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v4.content.Loader
|
import android.support.v4.content.Loader
|
||||||
import org.mariotaku.twidere.constant.IntentConstants.*
|
import org.mariotaku.twidere.constant.IntentConstants.*
|
||||||
|
import org.mariotaku.twidere.fragment.ParcelableUserListsFragment
|
||||||
import org.mariotaku.twidere.loader.userlists.UserListSubscriptionsLoader
|
import org.mariotaku.twidere.loader.userlists.UserListSubscriptionsLoader
|
||||||
import org.mariotaku.twidere.model.ParcelableUserList
|
import org.mariotaku.twidere.model.ParcelableUserList
|
||||||
import org.mariotaku.twidere.model.UserKey
|
import org.mariotaku.twidere.model.UserKey
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Twidere - Twitter client for Android
|
* Twidere - Twitter client for Android
|
||||||
*
|
*
|
||||||
* Copyright (C) 2012-2014 Mariotaku Lee <mariotaku.lee@gmail.com>
|
* Copyright (C) 2012-2017 Mariotaku Lee <mariotaku.lee@gmail.com>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -17,7 +17,7 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.mariotaku.twidere.fragment
|
package org.mariotaku.twidere.fragment.userlist
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
@ -29,6 +29,8 @@ import com.squareup.otto.Subscribe
|
|||||||
import org.mariotaku.ktextension.setItemAvailability
|
import org.mariotaku.ktextension.setItemAvailability
|
||||||
import org.mariotaku.twidere.R
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.constant.IntentConstants.*
|
import org.mariotaku.twidere.constant.IntentConstants.*
|
||||||
|
import org.mariotaku.twidere.fragment.CreateUserListDialogFragment
|
||||||
|
import org.mariotaku.twidere.fragment.ParcelableUserListsFragment
|
||||||
import org.mariotaku.twidere.loader.userlists.UserListOwnershipsLoader
|
import org.mariotaku.twidere.loader.userlists.UserListOwnershipsLoader
|
||||||
import org.mariotaku.twidere.model.ParcelableUserList
|
import org.mariotaku.twidere.model.ParcelableUserList
|
||||||
import org.mariotaku.twidere.model.UserKey
|
import org.mariotaku.twidere.model.UserKey
|
@ -23,10 +23,12 @@ import android.annotation.SuppressLint
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import com.bumptech.glide.RequestManager
|
import com.bumptech.glide.RequestManager
|
||||||
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.TwidereConstants.USER_TYPE_FANFOU_COM
|
import org.mariotaku.twidere.TwidereConstants.USER_TYPE_FANFOU_COM
|
||||||
import org.mariotaku.twidere.adapter.ParcelableUsersAdapter
|
import org.mariotaku.twidere.adapter.ParcelableUsersAdapter
|
||||||
import org.mariotaku.twidere.adapter.iface.IUsersAdapter
|
import org.mariotaku.twidere.adapter.iface.IUsersAdapter
|
||||||
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT_KEY
|
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT_KEY
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.fragment.ParcelableUsersFragment
|
import org.mariotaku.twidere.fragment.ParcelableUsersFragment
|
||||||
import org.mariotaku.twidere.loader.users.AbsRequestUsersLoader
|
import org.mariotaku.twidere.loader.users.AbsRequestUsersLoader
|
||||||
import org.mariotaku.twidere.loader.users.IncomingFriendshipsLoader
|
import org.mariotaku.twidere.loader.users.IncomingFriendshipsLoader
|
||||||
@ -38,6 +40,11 @@ import org.mariotaku.twidere.view.holder.UserViewHolder
|
|||||||
class IncomingFriendshipsFragment : ParcelableUsersFragment(), IUsersAdapter.RequestClickListener {
|
class IncomingFriendshipsFragment : ParcelableUsersFragment(), IUsersAdapter.RequestClickListener {
|
||||||
override val showFollow: Boolean = false
|
override val showFollow: Boolean = false
|
||||||
|
|
||||||
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
linkHandlerTitle = getString(R.string.incoming_friendships)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreateUsersLoader(context: Context, args: Bundle, fromUser: Boolean):
|
override fun onCreateUsersLoader(context: Context, args: Bundle, fromUser: Boolean):
|
||||||
AbsRequestUsersLoader {
|
AbsRequestUsersLoader {
|
||||||
val accountKey = args.getParcelable<UserKey?>(EXTRA_ACCOUNT_KEY)
|
val accountKey = args.getParcelable<UserKey?>(EXTRA_ACCOUNT_KEY)
|
||||||
|
@ -21,7 +21,9 @@ package org.mariotaku.twidere.fragment.users
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT_KEY
|
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT_KEY
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.fragment.ParcelableUsersFragment
|
import org.mariotaku.twidere.fragment.ParcelableUsersFragment
|
||||||
import org.mariotaku.twidere.loader.users.AbsRequestUsersLoader
|
import org.mariotaku.twidere.loader.users.AbsRequestUsersLoader
|
||||||
import org.mariotaku.twidere.loader.users.MutesUsersLoader
|
import org.mariotaku.twidere.loader.users.MutesUsersLoader
|
||||||
@ -30,6 +32,11 @@ import org.mariotaku.twidere.model.event.FriendshipTaskEvent
|
|||||||
|
|
||||||
class MutesUsersListFragment : ParcelableUsersFragment() {
|
class MutesUsersListFragment : ParcelableUsersFragment() {
|
||||||
|
|
||||||
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
linkHandlerTitle = getString(R.string.action_twitter_muted_users)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreateUsersLoader(context: Context, args: Bundle, fromUser: Boolean):
|
override fun onCreateUsersLoader(context: Context, args: Bundle, fromUser: Boolean):
|
||||||
AbsRequestUsersLoader {
|
AbsRequestUsersLoader {
|
||||||
val accountKey = args.getParcelable<UserKey?>(EXTRA_ACCOUNT_KEY)
|
val accountKey = args.getParcelable<UserKey?>(EXTRA_ACCOUNT_KEY)
|
||||||
|
@ -22,16 +22,28 @@ package org.mariotaku.twidere.fragment.users
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import com.bumptech.glide.RequestManager
|
import com.bumptech.glide.RequestManager
|
||||||
|
import org.mariotaku.kpreferences.get
|
||||||
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.adapter.ParcelableUsersAdapter
|
import org.mariotaku.twidere.adapter.ParcelableUsersAdapter
|
||||||
import org.mariotaku.twidere.adapter.iface.ILoadMoreSupportAdapter
|
import org.mariotaku.twidere.adapter.iface.ILoadMoreSupportAdapter
|
||||||
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT_KEY
|
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT_KEY
|
||||||
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_STATUS_ID
|
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_STATUS_ID
|
||||||
|
import org.mariotaku.twidere.constant.iWantMyStarsBackKey
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.fragment.ParcelableUsersFragment
|
import org.mariotaku.twidere.fragment.ParcelableUsersFragment
|
||||||
import org.mariotaku.twidere.loader.users.AbsRequestUsersLoader
|
import org.mariotaku.twidere.loader.users.AbsRequestUsersLoader
|
||||||
import org.mariotaku.twidere.loader.users.StatusFavoritersLoader
|
import org.mariotaku.twidere.loader.users.StatusFavoritersLoader
|
||||||
import org.mariotaku.twidere.model.UserKey
|
import org.mariotaku.twidere.model.UserKey
|
||||||
|
|
||||||
class StatusFavoritersListFragment : ParcelableUsersFragment() {
|
class StatusFavoritersListFragment : ParcelableUsersFragment() {
|
||||||
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
linkHandlerTitle = if (preferences[iWantMyStarsBackKey]) {
|
||||||
|
getString(R.string.title_users_favorited_this)
|
||||||
|
} else {
|
||||||
|
getString(R.string.title_users_liked_this)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreateUsersLoader(context: Context, args: Bundle, fromUser: Boolean):
|
override fun onCreateUsersLoader(context: Context, args: Bundle, fromUser: Boolean):
|
||||||
AbsRequestUsersLoader {
|
AbsRequestUsersLoader {
|
||||||
|
@ -21,8 +21,10 @@ package org.mariotaku.twidere.fragment.users
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT_KEY
|
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT_KEY
|
||||||
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_STATUS_ID
|
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_STATUS_ID
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.fragment.ParcelableUsersFragment
|
import org.mariotaku.twidere.fragment.ParcelableUsersFragment
|
||||||
import org.mariotaku.twidere.loader.users.AbsRequestUsersLoader
|
import org.mariotaku.twidere.loader.users.AbsRequestUsersLoader
|
||||||
import org.mariotaku.twidere.loader.users.StatusRetweetersLoader
|
import org.mariotaku.twidere.loader.users.StatusRetweetersLoader
|
||||||
@ -30,6 +32,11 @@ import org.mariotaku.twidere.model.UserKey
|
|||||||
|
|
||||||
class StatusRetweetersListFragment : ParcelableUsersFragment() {
|
class StatusRetweetersListFragment : ParcelableUsersFragment() {
|
||||||
|
|
||||||
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
linkHandlerTitle = getString(R.string.title_users_retweeted_this)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreateUsersLoader(context: Context, args: Bundle, fromUser: Boolean):
|
override fun onCreateUsersLoader(context: Context, args: Bundle, fromUser: Boolean):
|
||||||
AbsRequestUsersLoader {
|
AbsRequestUsersLoader {
|
||||||
val accountKey = args.getParcelable<UserKey?>(EXTRA_ACCOUNT_KEY)
|
val accountKey = args.getParcelable<UserKey?>(EXTRA_ACCOUNT_KEY)
|
||||||
|
@ -21,7 +21,9 @@ package org.mariotaku.twidere.fragment.users
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT_KEY
|
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT_KEY
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.fragment.ParcelableUsersFragment
|
import org.mariotaku.twidere.fragment.ParcelableUsersFragment
|
||||||
import org.mariotaku.twidere.loader.users.AbsRequestUsersLoader
|
import org.mariotaku.twidere.loader.users.AbsRequestUsersLoader
|
||||||
import org.mariotaku.twidere.loader.users.UserBlocksLoader
|
import org.mariotaku.twidere.loader.users.UserBlocksLoader
|
||||||
@ -30,6 +32,11 @@ import org.mariotaku.twidere.model.event.FriendshipTaskEvent
|
|||||||
|
|
||||||
class UserBlocksListFragment : ParcelableUsersFragment() {
|
class UserBlocksListFragment : ParcelableUsersFragment() {
|
||||||
|
|
||||||
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
linkHandlerTitle = getString(R.string.title_blocked_users)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreateUsersLoader(context: Context, args: Bundle, fromUser: Boolean):
|
override fun onCreateUsersLoader(context: Context, args: Bundle, fromUser: Boolean):
|
||||||
AbsRequestUsersLoader {
|
AbsRequestUsersLoader {
|
||||||
val accountKey = args.getParcelable<UserKey?>(EXTRA_ACCOUNT_KEY)
|
val accountKey = args.getParcelable<UserKey?>(EXTRA_ACCOUNT_KEY)
|
||||||
|
@ -21,7 +21,9 @@ package org.mariotaku.twidere.fragment.users
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.constant.IntentConstants.*
|
import org.mariotaku.twidere.constant.IntentConstants.*
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.fragment.ParcelableUsersFragment
|
import org.mariotaku.twidere.fragment.ParcelableUsersFragment
|
||||||
import org.mariotaku.twidere.loader.users.AbsRequestUsersLoader
|
import org.mariotaku.twidere.loader.users.AbsRequestUsersLoader
|
||||||
import org.mariotaku.twidere.loader.users.UserFollowersLoader
|
import org.mariotaku.twidere.loader.users.UserFollowersLoader
|
||||||
@ -30,6 +32,11 @@ import org.mariotaku.twidere.model.event.FriendshipTaskEvent
|
|||||||
|
|
||||||
class UserFollowersFragment : ParcelableUsersFragment() {
|
class UserFollowersFragment : ParcelableUsersFragment() {
|
||||||
|
|
||||||
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
linkHandlerTitle = getString(R.string.title_followers)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreateUsersLoader(context: Context, args: Bundle, fromUser: Boolean):
|
override fun onCreateUsersLoader(context: Context, args: Bundle, fromUser: Boolean):
|
||||||
AbsRequestUsersLoader {
|
AbsRequestUsersLoader {
|
||||||
val accountKey = args.getParcelable<UserKey?>(EXTRA_ACCOUNT_KEY)
|
val accountKey = args.getParcelable<UserKey?>(EXTRA_ACCOUNT_KEY)
|
||||||
|
@ -21,7 +21,9 @@ package org.mariotaku.twidere.fragment.users
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.constant.IntentConstants.*
|
import org.mariotaku.twidere.constant.IntentConstants.*
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.fragment.ParcelableUsersFragment
|
import org.mariotaku.twidere.fragment.ParcelableUsersFragment
|
||||||
import org.mariotaku.twidere.loader.users.AbsRequestUsersLoader
|
import org.mariotaku.twidere.loader.users.AbsRequestUsersLoader
|
||||||
import org.mariotaku.twidere.loader.users.UserFriendsLoader
|
import org.mariotaku.twidere.loader.users.UserFriendsLoader
|
||||||
@ -30,6 +32,11 @@ import org.mariotaku.twidere.model.event.FriendshipTaskEvent
|
|||||||
|
|
||||||
class UserFriendsFragment : ParcelableUsersFragment() {
|
class UserFriendsFragment : ParcelableUsersFragment() {
|
||||||
|
|
||||||
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
linkHandlerTitle = getString(R.string.title_following)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreateUsersLoader(context: Context, args: Bundle, fromUser: Boolean):
|
override fun onCreateUsersLoader(context: Context, args: Bundle, fromUser: Boolean):
|
||||||
AbsRequestUsersLoader {
|
AbsRequestUsersLoader {
|
||||||
val accountKey = args.getParcelable<UserKey?>(EXTRA_ACCOUNT_KEY)
|
val accountKey = args.getParcelable<UserKey?>(EXTRA_ACCOUNT_KEY)
|
||||||
|
@ -31,9 +31,10 @@ import org.mariotaku.kpreferences.get
|
|||||||
import org.mariotaku.twidere.R
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.constant.IntentConstants.*
|
import org.mariotaku.twidere.constant.IntentConstants.*
|
||||||
import org.mariotaku.twidere.constant.nameFirstKey
|
import org.mariotaku.twidere.constant.nameFirstKey
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.fragment.DeleteUserListMembersDialogFragment
|
import org.mariotaku.twidere.fragment.DeleteUserListMembersDialogFragment
|
||||||
import org.mariotaku.twidere.fragment.ParcelableUsersFragment
|
import org.mariotaku.twidere.fragment.ParcelableUsersFragment
|
||||||
import org.mariotaku.twidere.fragment.UserListFragment
|
import org.mariotaku.twidere.fragment.userlist.UserListFragment
|
||||||
import org.mariotaku.twidere.loader.users.AbsRequestUsersLoader
|
import org.mariotaku.twidere.loader.users.AbsRequestUsersLoader
|
||||||
import org.mariotaku.twidere.loader.users.UserListMembersLoader
|
import org.mariotaku.twidere.loader.users.UserListMembersLoader
|
||||||
import org.mariotaku.twidere.model.ParcelableUserList
|
import org.mariotaku.twidere.model.ParcelableUserList
|
||||||
@ -57,6 +58,7 @@ class UserListMembersFragment : ParcelableUsersFragment() {
|
|||||||
|
|
||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
super.onActivityCreated(savedInstanceState)
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
linkHandlerTitle = getString(R.string.list_members)
|
||||||
registerForContextMenu(recyclerView)
|
registerForContextMenu(recyclerView)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,7 +21,9 @@ package org.mariotaku.twidere.fragment.users
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.constant.IntentConstants.*
|
import org.mariotaku.twidere.constant.IntentConstants.*
|
||||||
|
import org.mariotaku.twidere.extension.linkHandlerTitle
|
||||||
import org.mariotaku.twidere.fragment.ParcelableUsersFragment
|
import org.mariotaku.twidere.fragment.ParcelableUsersFragment
|
||||||
import org.mariotaku.twidere.loader.users.AbsRequestUsersLoader
|
import org.mariotaku.twidere.loader.users.AbsRequestUsersLoader
|
||||||
import org.mariotaku.twidere.loader.users.UserListSubscribersLoader
|
import org.mariotaku.twidere.loader.users.UserListSubscribersLoader
|
||||||
@ -29,6 +31,11 @@ import org.mariotaku.twidere.model.UserKey
|
|||||||
|
|
||||||
class UserListSubscribersFragment : ParcelableUsersFragment() {
|
class UserListSubscribersFragment : ParcelableUsersFragment() {
|
||||||
|
|
||||||
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
|
super.onActivityCreated(savedInstanceState)
|
||||||
|
linkHandlerTitle = getString(R.string.list_subscribers)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreateUsersLoader(context: Context, args: Bundle, fromUser: Boolean):
|
override fun onCreateUsersLoader(context: Context, args: Bundle, fromUser: Boolean):
|
||||||
AbsRequestUsersLoader {
|
AbsRequestUsersLoader {
|
||||||
val listId = args.getString(EXTRA_LIST_ID)
|
val listId = args.getString(EXTRA_LIST_ID)
|
||||||
|
@ -41,7 +41,7 @@ import org.mariotaku.twidere.model.pagination.PaginatedList
|
|||||||
import org.mariotaku.twidere.model.pagination.Pagination
|
import org.mariotaku.twidere.model.pagination.Pagination
|
||||||
import org.mariotaku.twidere.model.pagination.SinceMaxPagination
|
import org.mariotaku.twidere.model.pagination.SinceMaxPagination
|
||||||
import org.mariotaku.twidere.model.util.AccountUtils
|
import org.mariotaku.twidere.model.util.AccountUtils
|
||||||
import org.mariotaku.twidere.task.twitter.GetStatusesTask
|
import org.mariotaku.twidere.task.statuses.GetStatusesTask
|
||||||
import org.mariotaku.twidere.util.DebugLog
|
import org.mariotaku.twidere.util.DebugLog
|
||||||
import org.mariotaku.twidere.util.UserColorNameManager
|
import org.mariotaku.twidere.util.UserColorNameManager
|
||||||
import org.mariotaku.twidere.util.cache.JsonCache
|
import org.mariotaku.twidere.util.cache.JsonCache
|
||||||
|
@ -6,7 +6,7 @@ import org.mariotaku.twidere.extension.model.draftActionTypeString
|
|||||||
import org.mariotaku.twidere.extension.model.parcelableMediaTypeString
|
import org.mariotaku.twidere.extension.model.parcelableMediaTypeString
|
||||||
import org.mariotaku.twidere.model.Draft
|
import org.mariotaku.twidere.model.Draft
|
||||||
import org.mariotaku.twidere.model.ParcelableMedia
|
import org.mariotaku.twidere.model.ParcelableMedia
|
||||||
import org.mariotaku.twidere.task.twitter.UpdateStatusTask
|
import org.mariotaku.twidere.task.status.UpdateStatusTask
|
||||||
import org.mariotaku.twidere.util.Analyzer
|
import org.mariotaku.twidere.util.Analyzer
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ import org.mariotaku.twidere.model.util.ParcelableStatusUpdateUtils
|
|||||||
import org.mariotaku.twidere.provider.TwidereDataStore.Drafts
|
import org.mariotaku.twidere.provider.TwidereDataStore.Drafts
|
||||||
import org.mariotaku.twidere.task.CreateFavoriteTask
|
import org.mariotaku.twidere.task.CreateFavoriteTask
|
||||||
import org.mariotaku.twidere.task.RetweetStatusTask
|
import org.mariotaku.twidere.task.RetweetStatusTask
|
||||||
import org.mariotaku.twidere.task.twitter.UpdateStatusTask
|
import org.mariotaku.twidere.task.status.UpdateStatusTask
|
||||||
import org.mariotaku.twidere.task.twitter.message.SendMessageTask
|
import org.mariotaku.twidere.task.twitter.message.SendMessageTask
|
||||||
import org.mariotaku.twidere.util.deleteDrafts
|
import org.mariotaku.twidere.util.deleteDrafts
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
|
@ -287,10 +287,9 @@ class StreamingService : BaseService() {
|
|||||||
} else {
|
} else {
|
||||||
parcelableStatus.position_key = parcelableStatus.timestamp
|
parcelableStatus.position_key = parcelableStatus.timestamp
|
||||||
}
|
}
|
||||||
parcelableStatus.inserted_date = currentTimeMillis
|
|
||||||
|
|
||||||
lastStatusTimestamps[0] = parcelableStatus.position_key
|
lastStatusTimestamps[0] = parcelableStatus.position_key
|
||||||
lastStatusTimestamps[1] = parcelableStatus.inserted_date
|
lastStatusTimestamps[1] = currentTimeMillis
|
||||||
|
|
||||||
val values = ObjectCursor.valuesCreatorFrom(ParcelableStatus::class.java)
|
val values = ObjectCursor.valuesCreatorFrom(ParcelableStatus::class.java)
|
||||||
.create(parcelableStatus)
|
.create(parcelableStatus)
|
||||||
|
@ -32,7 +32,7 @@ import org.mariotaku.twidere.model.Draft
|
|||||||
import org.mariotaku.twidere.model.UserKey
|
import org.mariotaku.twidere.model.UserKey
|
||||||
import org.mariotaku.twidere.model.util.AccountUtils
|
import org.mariotaku.twidere.model.util.AccountUtils
|
||||||
import org.mariotaku.twidere.provider.TwidereDataStore.Drafts
|
import org.mariotaku.twidere.provider.TwidereDataStore.Drafts
|
||||||
import org.mariotaku.twidere.task.twitter.UpdateStatusTask
|
import org.mariotaku.twidere.task.status.UpdateStatusTask
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by mariotaku on 2017/4/20.
|
* Created by mariotaku on 2017/4/20.
|
||||||
|
@ -22,7 +22,7 @@ import org.mariotaku.twidere.model.draft.StatusObjectActionExtras
|
|||||||
import org.mariotaku.twidere.model.event.FavoriteTaskEvent
|
import org.mariotaku.twidere.model.event.FavoriteTaskEvent
|
||||||
import org.mariotaku.twidere.model.event.StatusListChangedEvent
|
import org.mariotaku.twidere.model.event.StatusListChangedEvent
|
||||||
import org.mariotaku.twidere.provider.TwidereDataStore.Statuses
|
import org.mariotaku.twidere.provider.TwidereDataStore.Statuses
|
||||||
import org.mariotaku.twidere.task.twitter.UpdateStatusTask
|
import org.mariotaku.twidere.task.status.UpdateStatusTask
|
||||||
import org.mariotaku.twidere.util.AsyncTwitterWrapper.Companion.calculateHashCode
|
import org.mariotaku.twidere.util.AsyncTwitterWrapper.Companion.calculateHashCode
|
||||||
import org.mariotaku.twidere.util.DataStoreUtils
|
import org.mariotaku.twidere.util.DataStoreUtils
|
||||||
import org.mariotaku.twidere.util.Utils
|
import org.mariotaku.twidere.util.Utils
|
||||||
|
@ -22,7 +22,7 @@ import org.mariotaku.twidere.model.draft.StatusObjectActionExtras
|
|||||||
import org.mariotaku.twidere.model.event.StatusListChangedEvent
|
import org.mariotaku.twidere.model.event.StatusListChangedEvent
|
||||||
import org.mariotaku.twidere.model.event.StatusRetweetedEvent
|
import org.mariotaku.twidere.model.event.StatusRetweetedEvent
|
||||||
import org.mariotaku.twidere.provider.TwidereDataStore.Statuses
|
import org.mariotaku.twidere.provider.TwidereDataStore.Statuses
|
||||||
import org.mariotaku.twidere.task.twitter.UpdateStatusTask
|
import org.mariotaku.twidere.task.status.UpdateStatusTask
|
||||||
import org.mariotaku.twidere.util.AsyncTwitterWrapper
|
import org.mariotaku.twidere.util.AsyncTwitterWrapper
|
||||||
import org.mariotaku.twidere.util.DataStoreUtils
|
import org.mariotaku.twidere.util.DataStoreUtils
|
||||||
import org.mariotaku.twidere.util.Utils
|
import org.mariotaku.twidere.util.Utils
|
||||||
|
@ -14,7 +14,7 @@ import org.mariotaku.twidere.model.ParcelableMedia
|
|||||||
import org.mariotaku.twidere.model.ParcelableUser
|
import org.mariotaku.twidere.model.ParcelableUser
|
||||||
import org.mariotaku.twidere.model.UserKey
|
import org.mariotaku.twidere.model.UserKey
|
||||||
import org.mariotaku.twidere.model.event.ProfileUpdatedEvent
|
import org.mariotaku.twidere.model.event.ProfileUpdatedEvent
|
||||||
import org.mariotaku.twidere.task.twitter.UpdateStatusTask
|
import org.mariotaku.twidere.task.status.UpdateStatusTask
|
||||||
import org.mariotaku.twidere.util.DebugLog
|
import org.mariotaku.twidere.util.DebugLog
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ import org.mariotaku.twidere.model.ParcelableMedia
|
|||||||
import org.mariotaku.twidere.model.ParcelableUser
|
import org.mariotaku.twidere.model.ParcelableUser
|
||||||
import org.mariotaku.twidere.model.UserKey
|
import org.mariotaku.twidere.model.UserKey
|
||||||
import org.mariotaku.twidere.model.event.ProfileUpdatedEvent
|
import org.mariotaku.twidere.model.event.ProfileUpdatedEvent
|
||||||
import org.mariotaku.twidere.task.twitter.UpdateStatusTask
|
import org.mariotaku.twidere.task.status.UpdateStatusTask
|
||||||
import org.mariotaku.twidere.util.DebugLog
|
import org.mariotaku.twidere.util.DebugLog
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ import org.mariotaku.twidere.model.ParcelableMedia
|
|||||||
import org.mariotaku.twidere.model.ParcelableUser
|
import org.mariotaku.twidere.model.ParcelableUser
|
||||||
import org.mariotaku.twidere.model.UserKey
|
import org.mariotaku.twidere.model.UserKey
|
||||||
import org.mariotaku.twidere.model.event.ProfileUpdatedEvent
|
import org.mariotaku.twidere.model.event.ProfileUpdatedEvent
|
||||||
import org.mariotaku.twidere.task.twitter.UpdateStatusTask
|
import org.mariotaku.twidere.task.status.UpdateStatusTask
|
||||||
import org.mariotaku.twidere.util.DebugLog
|
import org.mariotaku.twidere.util.DebugLog
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
|
|
||||||
|
@ -1,4 +1,23 @@
|
|||||||
package org.mariotaku.twidere.task.twitter
|
/*
|
||||||
|
* Twidere - Twitter client for Android
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012-2017 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.task.status
|
||||||
|
|
||||||
import android.content.ContentResolver
|
import android.content.ContentResolver
|
||||||
import android.content.ContentValues
|
import android.content.ContentValues
|
||||||
@ -69,7 +88,7 @@ import java.util.concurrent.TimeUnit
|
|||||||
*/
|
*/
|
||||||
class UpdateStatusTask(
|
class UpdateStatusTask(
|
||||||
context: Context,
|
context: Context,
|
||||||
internal val stateCallback: UpdateStatusTask.StateCallback
|
internal val stateCallback: StateCallback
|
||||||
) : BaseAbstractTask<Pair<ParcelableStatusUpdate, ScheduleInfo?>, UpdateStatusTask.UpdateStatusResult, Any?>(context) {
|
) : BaseAbstractTask<Pair<ParcelableStatusUpdate, ScheduleInfo?>, UpdateStatusTask.UpdateStatusResult, Any?>(context) {
|
||||||
|
|
||||||
override fun doLongOperation(params: Pair<ParcelableStatusUpdate, ScheduleInfo?>): UpdateStatusResult {
|
override fun doLongOperation(params: Pair<ParcelableStatusUpdate, ScheduleInfo?>): UpdateStatusResult {
|
@ -0,0 +1,69 @@
|
|||||||
|
/*
|
||||||
|
* Twidere - Twitter client for Android
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012-2017 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.task.statuses
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.net.Uri
|
||||||
|
import org.mariotaku.microblog.library.MicroBlog
|
||||||
|
import org.mariotaku.microblog.library.mastodon.Mastodon
|
||||||
|
import org.mariotaku.microblog.library.twitter.model.Paging
|
||||||
|
import org.mariotaku.microblog.library.twitter.model.Status
|
||||||
|
import org.mariotaku.twidere.alias.MastodonStatus
|
||||||
|
import org.mariotaku.twidere.annotation.FilterScope
|
||||||
|
import org.mariotaku.twidere.annotation.ReadPositionTag
|
||||||
|
import org.mariotaku.twidere.fragment.HomeTimelineFragment
|
||||||
|
import org.mariotaku.twidere.model.AccountDetails
|
||||||
|
import org.mariotaku.twidere.model.UserKey
|
||||||
|
import org.mariotaku.twidere.provider.TwidereDataStore.Statuses
|
||||||
|
import org.mariotaku.twidere.util.ErrorInfoStore
|
||||||
|
import org.mariotaku.twidere.util.sync.TimelineSyncManager
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by mariotaku on 16/2/11.
|
||||||
|
*/
|
||||||
|
class GetHomeTimelineTask(context: Context) : GetStatusesTask(context) {
|
||||||
|
|
||||||
|
override val contentUri: Uri = Statuses.CONTENT_URI
|
||||||
|
|
||||||
|
override val filterScopes: Int = FilterScope.HOME
|
||||||
|
|
||||||
|
override val errorInfoKey: String = ErrorInfoStore.KEY_HOME_TIMELINE
|
||||||
|
|
||||||
|
override fun getTwitterStatuses(account: AccountDetails, twitter: MicroBlog, paging: Paging): List<Status> {
|
||||||
|
return twitter.getHomeTimeline(paging)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getStatusNetStatuses(account: AccountDetails, statusNet: MicroBlog, paging: Paging): List<Status> {
|
||||||
|
return statusNet.getHomeTimeline(paging)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getFanfouStatuses(account: AccountDetails, fanfou: MicroBlog, paging: Paging): List<Status> {
|
||||||
|
return fanfou.getHomeTimeline(paging)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getMastodonStatuses(account: AccountDetails, mastodon: Mastodon, paging: Paging): List<MastodonStatus> {
|
||||||
|
return mastodon.getHomeTimeline(paging)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun syncFetchReadPosition(manager: TimelineSyncManager, accountKeys: Array<UserKey>) {
|
||||||
|
val tag = HomeTimelineFragment.getTimelineSyncTag(accountKeys)
|
||||||
|
manager.fetchSingle(ReadPositionTag.HOME_TIMELINE, tag)
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,70 @@
|
|||||||
|
/*
|
||||||
|
* Twidere - Twitter client for Android
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012-2017 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.task.statuses
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.net.Uri
|
||||||
|
import org.mariotaku.microblog.library.MicroBlog
|
||||||
|
import org.mariotaku.microblog.library.MicroBlogException
|
||||||
|
import org.mariotaku.microblog.library.mastodon.Mastodon
|
||||||
|
import org.mariotaku.microblog.library.twitter.model.Paging
|
||||||
|
import org.mariotaku.microblog.library.twitter.model.Status
|
||||||
|
import org.mariotaku.twidere.alias.MastodonStatus
|
||||||
|
import org.mariotaku.twidere.annotation.FilterScope
|
||||||
|
import org.mariotaku.twidere.annotation.ReadPositionTag
|
||||||
|
import org.mariotaku.twidere.fragment.statuses.NetworkPublicTimelineFragment
|
||||||
|
import org.mariotaku.twidere.model.AccountDetails
|
||||||
|
import org.mariotaku.twidere.model.UserKey
|
||||||
|
import org.mariotaku.twidere.provider.TwidereDataStore.Statuses
|
||||||
|
import org.mariotaku.twidere.util.ErrorInfoStore
|
||||||
|
import org.mariotaku.twidere.util.sync.TimelineSyncManager
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by mariotaku on 16/2/11.
|
||||||
|
*/
|
||||||
|
class GetNetworkPublicTimelineTask(context: Context) : GetStatusesTask(context) {
|
||||||
|
|
||||||
|
override val contentUri: Uri = Statuses.NetworkPublic.CONTENT_URI
|
||||||
|
|
||||||
|
override val filterScopes: Int = FilterScope.PUBLIC_TIMELINE
|
||||||
|
|
||||||
|
override val errorInfoKey: String = ErrorInfoStore.KEY_NETWORK_PUBLIC_TIMELINE
|
||||||
|
|
||||||
|
override fun getTwitterStatuses(account: AccountDetails, twitter: MicroBlog, paging: Paging): List<Status> {
|
||||||
|
throw MicroBlogException("Network public timeline unsupported")
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getStatusNetStatuses(account: AccountDetails, statusNet: MicroBlog, paging: Paging): List<Status> {
|
||||||
|
return statusNet.getNetworkPublicTimeline(paging)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getFanfouStatuses(account: AccountDetails, fanfou: MicroBlog, paging: Paging): List<Status> {
|
||||||
|
throw MicroBlogException("Network public timeline unsupported")
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getMastodonStatuses(account: AccountDetails, mastodon: Mastodon, paging: Paging): List<MastodonStatus> {
|
||||||
|
return mastodon.getPublicTimeline(paging, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun syncFetchReadPosition(manager: TimelineSyncManager, accountKeys: Array<UserKey>) {
|
||||||
|
val tag = NetworkPublicTimelineFragment.getTimelineSyncTag(accountKeys)
|
||||||
|
manager.fetchSingle(ReadPositionTag.NETWORK_PUBLIC_TIMELINE, tag)
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,69 @@
|
|||||||
|
/*
|
||||||
|
* Twidere - Twitter client for Android
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012-2017 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.task.statuses
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.net.Uri
|
||||||
|
import org.mariotaku.microblog.library.MicroBlog
|
||||||
|
import org.mariotaku.microblog.library.mastodon.Mastodon
|
||||||
|
import org.mariotaku.microblog.library.twitter.model.Paging
|
||||||
|
import org.mariotaku.microblog.library.twitter.model.Status
|
||||||
|
import org.mariotaku.twidere.alias.MastodonStatus
|
||||||
|
import org.mariotaku.twidere.annotation.FilterScope
|
||||||
|
import org.mariotaku.twidere.annotation.ReadPositionTag
|
||||||
|
import org.mariotaku.twidere.fragment.statuses.PublicTimelineFragment
|
||||||
|
import org.mariotaku.twidere.model.AccountDetails
|
||||||
|
import org.mariotaku.twidere.model.UserKey
|
||||||
|
import org.mariotaku.twidere.provider.TwidereDataStore.Statuses
|
||||||
|
import org.mariotaku.twidere.util.ErrorInfoStore
|
||||||
|
import org.mariotaku.twidere.util.sync.TimelineSyncManager
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by mariotaku on 16/2/11.
|
||||||
|
*/
|
||||||
|
class GetPublicTimelineTask(context: Context) : GetStatusesTask(context) {
|
||||||
|
|
||||||
|
override val contentUri: Uri = Statuses.Public.CONTENT_URI
|
||||||
|
|
||||||
|
override val filterScopes: Int = FilterScope.PUBLIC_TIMELINE
|
||||||
|
|
||||||
|
override val errorInfoKey: String = ErrorInfoStore.KEY_PUBLIC_TIMELINE
|
||||||
|
|
||||||
|
override fun getTwitterStatuses(account: AccountDetails, twitter: MicroBlog, paging: Paging): List<Status> {
|
||||||
|
return twitter.getPublicTimeline(paging)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getStatusNetStatuses(account: AccountDetails, statusNet: MicroBlog, paging: Paging): List<Status> {
|
||||||
|
return statusNet.getPublicTimeline(paging)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getFanfouStatuses(account: AccountDetails, fanfou: MicroBlog, paging: Paging): List<Status> {
|
||||||
|
return fanfou.getPublicTimeline(paging)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getMastodonStatuses(account: AccountDetails, mastodon: Mastodon, paging: Paging): List<MastodonStatus> {
|
||||||
|
return mastodon.getPublicTimeline(paging, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun syncFetchReadPosition(manager: TimelineSyncManager, accountKeys: Array<UserKey>) {
|
||||||
|
val tag = PublicTimelineFragment.getTimelineSyncTag(accountKeys)
|
||||||
|
manager.fetchSingle(ReadPositionTag.PUBLIC_TIMELINE, tag)
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,23 @@
|
|||||||
package org.mariotaku.twidere.task.twitter
|
/*
|
||||||
|
* Twidere - Twitter client for Android
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012-2017 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.task.statuses
|
||||||
|
|
||||||
import android.accounts.AccountManager
|
import android.accounts.AccountManager
|
||||||
import android.content.ContentValues
|
import android.content.ContentValues
|
||||||
@ -6,25 +25,29 @@ import android.content.Context
|
|||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import org.mariotaku.abstask.library.TaskStarter
|
import org.mariotaku.abstask.library.TaskStarter
|
||||||
import org.mariotaku.kpreferences.get
|
import org.mariotaku.kpreferences.get
|
||||||
|
import org.mariotaku.ktextension.addTo
|
||||||
import org.mariotaku.ktextension.toLongOr
|
import org.mariotaku.ktextension.toLongOr
|
||||||
import org.mariotaku.library.objectcursor.ObjectCursor
|
import org.mariotaku.library.objectcursor.ObjectCursor
|
||||||
|
import org.mariotaku.microblog.library.MicroBlog
|
||||||
import org.mariotaku.microblog.library.MicroBlogException
|
import org.mariotaku.microblog.library.MicroBlogException
|
||||||
|
import org.mariotaku.microblog.library.mastodon.Mastodon
|
||||||
import org.mariotaku.microblog.library.twitter.model.Paging
|
import org.mariotaku.microblog.library.twitter.model.Paging
|
||||||
|
import org.mariotaku.microblog.library.twitter.model.Status
|
||||||
import org.mariotaku.sqliteqb.library.Columns
|
import org.mariotaku.sqliteqb.library.Columns
|
||||||
import org.mariotaku.sqliteqb.library.Expression
|
import org.mariotaku.sqliteqb.library.Expression
|
||||||
import org.mariotaku.twidere.R
|
import org.mariotaku.twidere.R
|
||||||
import org.mariotaku.twidere.TwidereConstants.LOGTAG
|
import org.mariotaku.twidere.TwidereConstants.LOGTAG
|
||||||
import org.mariotaku.twidere.TwidereConstants.QUERY_PARAM_NOTIFY_CHANGE
|
import org.mariotaku.twidere.TwidereConstants.QUERY_PARAM_NOTIFY_CHANGE
|
||||||
|
import org.mariotaku.twidere.alias.MastodonStatus
|
||||||
import org.mariotaku.twidere.annotation.AccountType
|
import org.mariotaku.twidere.annotation.AccountType
|
||||||
import org.mariotaku.twidere.annotation.FilterScope
|
import org.mariotaku.twidere.annotation.FilterScope
|
||||||
import org.mariotaku.twidere.constant.loadItemLimitKey
|
import org.mariotaku.twidere.constant.loadItemLimitKey
|
||||||
import org.mariotaku.twidere.exception.AccountNotFoundException
|
import org.mariotaku.twidere.exception.AccountNotFoundException
|
||||||
import org.mariotaku.twidere.extension.model.*
|
import org.mariotaku.twidere.extension.model.*
|
||||||
import org.mariotaku.twidere.extension.model.api.applyLoadLimit
|
import org.mariotaku.twidere.extension.model.api.applyLoadLimit
|
||||||
import org.mariotaku.twidere.model.AccountDetails
|
import org.mariotaku.twidere.extension.model.api.mastodon.toParcelable
|
||||||
import org.mariotaku.twidere.model.ParcelableStatus
|
import org.mariotaku.twidere.extension.model.api.toParcelable
|
||||||
import org.mariotaku.twidere.model.RefreshTaskParam
|
import org.mariotaku.twidere.model.*
|
||||||
import org.mariotaku.twidere.model.UserKey
|
|
||||||
import org.mariotaku.twidere.model.event.GetStatusesTaskEvent
|
import org.mariotaku.twidere.model.event.GetStatusesTaskEvent
|
||||||
import org.mariotaku.twidere.model.task.GetTimelineResult
|
import org.mariotaku.twidere.model.task.GetTimelineResult
|
||||||
import org.mariotaku.twidere.model.util.AccountUtils
|
import org.mariotaku.twidere.model.util.AccountUtils
|
||||||
@ -48,6 +71,8 @@ abstract class GetStatusesTask(
|
|||||||
) : BaseAbstractTask<RefreshTaskParam, List<Pair<GetTimelineResult<ParcelableStatus>?, Exception?>>,
|
) : BaseAbstractTask<RefreshTaskParam, List<Pair<GetTimelineResult<ParcelableStatus>?, Exception?>>,
|
||||||
(Boolean) -> Unit>(context) {
|
(Boolean) -> Unit>(context) {
|
||||||
|
|
||||||
|
private val profileImageSize = context.getString(R.string.profile_image_size)
|
||||||
|
|
||||||
protected abstract val contentUri: Uri
|
protected abstract val contentUri: Uri
|
||||||
|
|
||||||
@FilterScope
|
@FilterScope
|
||||||
@ -129,10 +154,77 @@ abstract class GetStatusesTask(
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Throws(MicroBlogException::class)
|
@Throws(MicroBlogException::class)
|
||||||
protected abstract fun getStatuses(account: AccountDetails, paging: Paging): GetTimelineResult<ParcelableStatus>
|
protected fun getStatuses(account: AccountDetails, paging: Paging): GetTimelineResult<ParcelableStatus> {
|
||||||
|
when (account.type) {
|
||||||
|
AccountType.TWITTER -> {
|
||||||
|
val twitter = account.newMicroBlogInstance(context, MicroBlog::class.java)
|
||||||
|
val timeline = getTwitterStatuses(account, twitter, paging)
|
||||||
|
val statuses = timeline.map {
|
||||||
|
it.toParcelable(account, profileImageSize)
|
||||||
|
}
|
||||||
|
val hashtags = timeline.flatMap { status ->
|
||||||
|
status.entities?.hashtags?.map { it.text }.orEmpty()
|
||||||
|
}
|
||||||
|
return GetTimelineResult(account, statuses, extractMicroBlogUsers(timeline, account), hashtags)
|
||||||
|
}
|
||||||
|
AccountType.STATUSNET -> {
|
||||||
|
val statusnet = account.newMicroBlogInstance(context, MicroBlog::class.java)
|
||||||
|
val timeline = getStatusNetStatuses(account, statusnet, paging)
|
||||||
|
val statuses = timeline.map {
|
||||||
|
it.toParcelable(account, profileImageSize)
|
||||||
|
}
|
||||||
|
val hashtags = timeline.flatMap { status ->
|
||||||
|
status.entities?.hashtags?.map { it.text }.orEmpty()
|
||||||
|
}
|
||||||
|
return GetTimelineResult(account, statuses, extractMicroBlogUsers(timeline, account), hashtags)
|
||||||
|
}
|
||||||
|
AccountType.FANFOU -> {
|
||||||
|
val fanfou = account.newMicroBlogInstance(context, MicroBlog::class.java)
|
||||||
|
val timeline = getFanfouStatuses(account, fanfou, paging)
|
||||||
|
val statuses = timeline.map {
|
||||||
|
it.toParcelable(account, profileImageSize)
|
||||||
|
}
|
||||||
|
val hashtags = statuses.flatMap { status ->
|
||||||
|
return@flatMap status.extractFanfouHashtags()
|
||||||
|
}
|
||||||
|
return GetTimelineResult(account, statuses, extractMicroBlogUsers(timeline, account), hashtags)
|
||||||
|
}
|
||||||
|
AccountType.MASTODON -> {
|
||||||
|
val mastodon = account.newMicroBlogInstance(context, Mastodon::class.java)
|
||||||
|
val timeline = getMastodonStatuses(account, mastodon, paging)
|
||||||
|
return GetTimelineResult(account, timeline.map {
|
||||||
|
it.toParcelable(account)
|
||||||
|
}, timeline.flatMap { status ->
|
||||||
|
val mapResult = mutableListOf(status.account.toParcelable(account))
|
||||||
|
status.reblog?.account?.toParcelable(account)?.addTo(mapResult)
|
||||||
|
return@flatMap mapResult
|
||||||
|
}, timeline.flatMap { status ->
|
||||||
|
status.tags?.map { it.name }.orEmpty()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else -> throw UnsupportedOperationException()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract fun getTwitterStatuses(account: AccountDetails, twitter: MicroBlog, paging: Paging): List<Status>
|
||||||
|
protected abstract fun getStatusNetStatuses(account: AccountDetails, statusNet: MicroBlog, paging: Paging): List<Status>
|
||||||
|
protected abstract fun getFanfouStatuses(account: AccountDetails, fanfou: MicroBlog, paging: Paging): List<Status>
|
||||||
|
protected abstract fun getMastodonStatuses(account: AccountDetails, mastodon: Mastodon, paging: Paging): List<MastodonStatus>
|
||||||
|
|
||||||
protected abstract fun syncFetchReadPosition(manager: TimelineSyncManager, accountKeys: Array<UserKey>)
|
protected abstract fun syncFetchReadPosition(manager: TimelineSyncManager, accountKeys: Array<UserKey>)
|
||||||
|
|
||||||
|
private fun extractMicroBlogUsers(timeline: List<Status>, account: AccountDetails): List<ParcelableUser> {
|
||||||
|
return timeline.flatMap { status ->
|
||||||
|
val mapResult = mutableListOf(status.user.toParcelable(account,
|
||||||
|
profileImageSize = profileImageSize))
|
||||||
|
status.retweetedStatus?.user?.toParcelable(account,
|
||||||
|
profileImageSize = profileImageSize)?.addTo(mapResult)
|
||||||
|
status.quotedStatus?.user?.toParcelable(account,
|
||||||
|
profileImageSize = profileImageSize)?.addTo(mapResult)
|
||||||
|
return@flatMap mapResult
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun storeStatus(account: AccountDetails, statuses: List<ParcelableStatus>,
|
private fun storeStatus(account: AccountDetails, statuses: List<ParcelableStatus>,
|
||||||
sinceId: String?, maxId: String?, sinceSortId: Long, maxSortId: Long,
|
sinceId: String?, maxId: String?, sinceSortId: Long, maxSortId: Long,
|
||||||
loadItemLimit: Int, notify: Boolean): Int {
|
loadItemLimit: Int, notify: Boolean): Int {
|
||||||
@ -156,7 +248,6 @@ abstract class GetStatusesTask(
|
|||||||
statuses.forEachIndexed { i, status ->
|
statuses.forEachIndexed { i, status ->
|
||||||
status.position_key = getPositionKey(status.timestamp, status.sort_id, lastSortId,
|
status.position_key = getPositionKey(status.timestamp, status.sort_id, lastSortId,
|
||||||
sortDiff, i, statuses.size)
|
sortDiff, i, statuses.size)
|
||||||
status.inserted_date = System.currentTimeMillis()
|
|
||||||
mediaPreloader.preloadStatus(status)
|
mediaPreloader.preloadStatus(status)
|
||||||
values[i] = creator.create(status)
|
values[i] = creator.create(status)
|
||||||
if (minIdx == -1 || status < statuses[minIdx]) {
|
if (minIdx == -1 || status < statuses[minIdx]) {
|
@ -27,6 +27,7 @@ import org.mariotaku.twidere.model.task.GetTimelineResult
|
|||||||
import org.mariotaku.twidere.model.util.AccountUtils
|
import org.mariotaku.twidere.model.util.AccountUtils
|
||||||
import org.mariotaku.twidere.provider.TwidereDataStore.Activities
|
import org.mariotaku.twidere.provider.TwidereDataStore.Activities
|
||||||
import org.mariotaku.twidere.task.BaseAbstractTask
|
import org.mariotaku.twidere.task.BaseAbstractTask
|
||||||
|
import org.mariotaku.twidere.task.statuses.GetStatusesTask
|
||||||
import org.mariotaku.twidere.util.DataStoreUtils
|
import org.mariotaku.twidere.util.DataStoreUtils
|
||||||
import org.mariotaku.twidere.util.DebugLog
|
import org.mariotaku.twidere.util.DebugLog
|
||||||
import org.mariotaku.twidere.util.ErrorInfoStore
|
import org.mariotaku.twidere.util.ErrorInfoStore
|
||||||
@ -154,7 +155,6 @@ abstract class GetActivitiesTask(
|
|||||||
minPositionKey = activity.position_key
|
minPositionKey = activity.position_key
|
||||||
}
|
}
|
||||||
|
|
||||||
activity.inserted_date = System.currentTimeMillis()
|
|
||||||
valuesList.add(ObjectCursor.valuesCreatorFrom(ParcelableActivity::class.java)
|
valuesList.add(ObjectCursor.valuesCreatorFrom(ParcelableActivity::class.java)
|
||||||
.create(activity))
|
.create(activity))
|
||||||
}
|
}
|
||||||
|
@ -1,103 +0,0 @@
|
|||||||
/*
|
|
||||||
* Twidere - Twitter client for Android
|
|
||||||
*
|
|
||||||
* Copyright (C) 2012-2017 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.task.twitter
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.net.Uri
|
|
||||||
import org.mariotaku.ktextension.addTo
|
|
||||||
import org.mariotaku.microblog.library.MicroBlog
|
|
||||||
import org.mariotaku.microblog.library.MicroBlogException
|
|
||||||
import org.mariotaku.microblog.library.mastodon.Mastodon
|
|
||||||
import org.mariotaku.microblog.library.twitter.model.Paging
|
|
||||||
import org.mariotaku.twidere.R
|
|
||||||
import org.mariotaku.twidere.annotation.AccountType
|
|
||||||
import org.mariotaku.twidere.annotation.FilterScope
|
|
||||||
import org.mariotaku.twidere.annotation.ReadPositionTag
|
|
||||||
import org.mariotaku.twidere.extension.model.api.mastodon.toParcelable
|
|
||||||
import org.mariotaku.twidere.extension.model.api.toParcelable
|
|
||||||
import org.mariotaku.twidere.extension.model.extractFanfouHashtags
|
|
||||||
import org.mariotaku.twidere.extension.model.newMicroBlogInstance
|
|
||||||
import org.mariotaku.twidere.fragment.HomeTimelineFragment
|
|
||||||
import org.mariotaku.twidere.model.AccountDetails
|
|
||||||
import org.mariotaku.twidere.model.ParcelableStatus
|
|
||||||
import org.mariotaku.twidere.model.UserKey
|
|
||||||
import org.mariotaku.twidere.model.task.GetTimelineResult
|
|
||||||
import org.mariotaku.twidere.provider.TwidereDataStore.Statuses
|
|
||||||
import org.mariotaku.twidere.util.ErrorInfoStore
|
|
||||||
import org.mariotaku.twidere.util.sync.TimelineSyncManager
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by mariotaku on 16/2/11.
|
|
||||||
*/
|
|
||||||
class GetHomeTimelineTask(context: Context) : GetStatusesTask(context) {
|
|
||||||
|
|
||||||
override val contentUri: Uri = Statuses.CONTENT_URI
|
|
||||||
|
|
||||||
override val filterScopes: Int = FilterScope.HOME
|
|
||||||
|
|
||||||
override val errorInfoKey: String = ErrorInfoStore.KEY_HOME_TIMELINE
|
|
||||||
|
|
||||||
private val profileImageSize = context.getString(R.string.profile_image_size)
|
|
||||||
|
|
||||||
@Throws(MicroBlogException::class)
|
|
||||||
override fun getStatuses(account: AccountDetails, paging: Paging): GetTimelineResult<ParcelableStatus> {
|
|
||||||
when (account.type) {
|
|
||||||
AccountType.MASTODON -> {
|
|
||||||
val mastodon = account.newMicroBlogInstance(context, Mastodon::class.java)
|
|
||||||
val timeline = mastodon.getHomeTimeline(paging)
|
|
||||||
return GetTimelineResult(account, timeline.map {
|
|
||||||
it.toParcelable(account)
|
|
||||||
}, timeline.flatMap { status ->
|
|
||||||
val mapResult = mutableListOf(status.account.toParcelable(account))
|
|
||||||
status.reblog?.account?.toParcelable(account)?.addTo(mapResult)
|
|
||||||
return@flatMap mapResult
|
|
||||||
}, timeline.flatMap { status ->
|
|
||||||
status.tags?.map { it.name }.orEmpty()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
else -> {
|
|
||||||
val microBlog = account.newMicroBlogInstance(context, MicroBlog::class.java)
|
|
||||||
val timeline = microBlog.getHomeTimeline(paging)
|
|
||||||
val statuses = timeline.map {
|
|
||||||
it.toParcelable(account, profileImageSize)
|
|
||||||
}
|
|
||||||
val hashtags = if (account.type == AccountType.FANFOU) statuses.flatMap { status ->
|
|
||||||
return@flatMap status.extractFanfouHashtags()
|
|
||||||
} else timeline.flatMap { status ->
|
|
||||||
status.entities?.hashtags?.map { it.text }.orEmpty()
|
|
||||||
}
|
|
||||||
return GetTimelineResult(account, statuses, timeline.flatMap { status ->
|
|
||||||
val mapResult = mutableListOf(status.user.toParcelable(account,
|
|
||||||
profileImageSize = profileImageSize))
|
|
||||||
status.retweetedStatus?.user?.toParcelable(account,
|
|
||||||
profileImageSize = profileImageSize)?.addTo(mapResult)
|
|
||||||
status.quotedStatus?.user?.toParcelable(account,
|
|
||||||
profileImageSize = profileImageSize)?.addTo(mapResult)
|
|
||||||
return@flatMap mapResult
|
|
||||||
}, hashtags)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun syncFetchReadPosition(manager: TimelineSyncManager, accountKeys: Array<UserKey>) {
|
|
||||||
val tag = HomeTimelineFragment.getTimelineSyncTag(accountKeys)
|
|
||||||
manager.fetchSingle(ReadPositionTag.HOME_TIMELINE, tag)
|
|
||||||
}
|
|
||||||
}
|
|
@ -41,8 +41,7 @@ import org.mariotaku.twidere.model.event.SendMessageTaskEvent
|
|||||||
import org.mariotaku.twidere.model.util.ParcelableMessageUtils
|
import org.mariotaku.twidere.model.util.ParcelableMessageUtils
|
||||||
import org.mariotaku.twidere.provider.TwidereDataStore.Messages.Conversations
|
import org.mariotaku.twidere.provider.TwidereDataStore.Messages.Conversations
|
||||||
import org.mariotaku.twidere.task.ExceptionHandlingAbstractTask
|
import org.mariotaku.twidere.task.ExceptionHandlingAbstractTask
|
||||||
import org.mariotaku.twidere.task.twitter.UpdateStatusTask
|
import org.mariotaku.twidere.task.status.UpdateStatusTask
|
||||||
import org.mariotaku.twidere.task.twitter.message.GetMessagesTask
|
|
||||||
import org.mariotaku.twidere.task.twitter.message.GetMessagesTask.Companion.addConversation
|
import org.mariotaku.twidere.task.twitter.message.GetMessagesTask.Companion.addConversation
|
||||||
import org.mariotaku.twidere.task.twitter.message.GetMessagesTask.Companion.addLocalConversations
|
import org.mariotaku.twidere.task.twitter.message.GetMessagesTask.Companion.addLocalConversations
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ import org.mariotaku.twidere.model.util.ParcelableRelationshipUtils
|
|||||||
import org.mariotaku.twidere.provider.TwidereDataStore.*
|
import org.mariotaku.twidere.provider.TwidereDataStore.*
|
||||||
import org.mariotaku.twidere.task.*
|
import org.mariotaku.twidere.task.*
|
||||||
import org.mariotaku.twidere.task.twitter.GetActivitiesAboutMeTask
|
import org.mariotaku.twidere.task.twitter.GetActivitiesAboutMeTask
|
||||||
import org.mariotaku.twidere.task.twitter.GetHomeTimelineTask
|
import org.mariotaku.twidere.task.statuses.GetHomeTimelineTask
|
||||||
import org.mariotaku.twidere.task.twitter.GetSavedSearchesTask
|
import org.mariotaku.twidere.task.twitter.GetSavedSearchesTask
|
||||||
import org.mariotaku.twidere.task.twitter.GetTrendsTask
|
import org.mariotaku.twidere.task.twitter.GetTrendsTask
|
||||||
import org.mariotaku.twidere.task.twitter.message.GetMessagesTask
|
import org.mariotaku.twidere.task.twitter.message.GetMessagesTask
|
||||||
|
@ -113,6 +113,10 @@ object DataStoreUtils {
|
|||||||
TABLE_ID_CACHED_HASHTAGS)
|
TABLE_ID_CACHED_HASHTAGS)
|
||||||
CONTENT_PROVIDER_URI_MATCHER.addURI(TwidereDataStore.AUTHORITY, CachedRelationships.CONTENT_PATH,
|
CONTENT_PROVIDER_URI_MATCHER.addURI(TwidereDataStore.AUTHORITY, CachedRelationships.CONTENT_PATH,
|
||||||
TABLE_ID_CACHED_RELATIONSHIPS)
|
TABLE_ID_CACHED_RELATIONSHIPS)
|
||||||
|
CONTENT_PROVIDER_URI_MATCHER.addURI(TwidereDataStore.AUTHORITY, Statuses.Public.CONTENT_PATH,
|
||||||
|
TABLE_ID_PUBLIC_TIMELINE)
|
||||||
|
CONTENT_PROVIDER_URI_MATCHER.addURI(TwidereDataStore.AUTHORITY, Statuses.NetworkPublic.CONTENT_PATH,
|
||||||
|
TABLE_ID_NETWORK_PUBLIC_TIMELINE)
|
||||||
CONTENT_PROVIDER_URI_MATCHER.addURI(TwidereDataStore.AUTHORITY, SavedSearches.CONTENT_PATH,
|
CONTENT_PROVIDER_URI_MATCHER.addURI(TwidereDataStore.AUTHORITY, SavedSearches.CONTENT_PATH,
|
||||||
TABLE_ID_SAVED_SEARCHES)
|
TABLE_ID_SAVED_SEARCHES)
|
||||||
CONTENT_PROVIDER_URI_MATCHER.addURI(TwidereDataStore.AUTHORITY, SearchHistory.CONTENT_PATH,
|
CONTENT_PROVIDER_URI_MATCHER.addURI(TwidereDataStore.AUTHORITY, SearchHistory.CONTENT_PATH,
|
||||||
@ -453,6 +457,8 @@ object DataStoreUtils {
|
|||||||
fun getTableNameById(id: Int): String? {
|
fun getTableNameById(id: Int): String? {
|
||||||
when (id) {
|
when (id) {
|
||||||
TABLE_ID_STATUSES -> return Statuses.TABLE_NAME
|
TABLE_ID_STATUSES -> return Statuses.TABLE_NAME
|
||||||
|
TABLE_ID_PUBLIC_TIMELINE -> return Statuses.Public.TABLE_NAME
|
||||||
|
TABLE_ID_NETWORK_PUBLIC_TIMELINE -> return Statuses.NetworkPublic.TABLE_NAME
|
||||||
TABLE_ID_ACTIVITIES_ABOUT_ME -> return Activities.AboutMe.TABLE_NAME
|
TABLE_ID_ACTIVITIES_ABOUT_ME -> return Activities.AboutMe.TABLE_NAME
|
||||||
TABLE_ID_DRAFTS -> return Drafts.TABLE_NAME
|
TABLE_ID_DRAFTS -> return Drafts.TABLE_NAME
|
||||||
TABLE_ID_FILTERED_USERS -> return Filters.Users.TABLE_NAME
|
TABLE_ID_FILTERED_USERS -> return Filters.Users.TABLE_NAME
|
||||||
|
@ -84,6 +84,8 @@ class ErrorInfoStore(application: Context) {
|
|||||||
val KEY_DIRECT_MESSAGES = "direct_messages"
|
val KEY_DIRECT_MESSAGES = "direct_messages"
|
||||||
val KEY_INTERACTIONS = "interactions"
|
val KEY_INTERACTIONS = "interactions"
|
||||||
val KEY_HOME_TIMELINE = "home_timeline"
|
val KEY_HOME_TIMELINE = "home_timeline"
|
||||||
|
val KEY_PUBLIC_TIMELINE = "public_timeline"
|
||||||
|
val KEY_NETWORK_PUBLIC_TIMELINE = "network_public_timeline"
|
||||||
val KEY_ACTIVITIES_BY_FRIENDS = "activities_by_friends"
|
val KEY_ACTIVITIES_BY_FRIENDS = "activities_by_friends"
|
||||||
|
|
||||||
val CODE_NO_DM_PERMISSION = 1
|
val CODE_NO_DM_PERMISSION = 1
|
||||||
|
@ -24,7 +24,7 @@ import org.mariotaku.twidere.provider.TwidereDataStore.Statuses
|
|||||||
import org.mariotaku.twidere.task.filter.RefreshFiltersSubscriptionsTask
|
import org.mariotaku.twidere.task.filter.RefreshFiltersSubscriptionsTask
|
||||||
import org.mariotaku.twidere.task.filter.RefreshLaunchPresentationsTask
|
import org.mariotaku.twidere.task.filter.RefreshLaunchPresentationsTask
|
||||||
import org.mariotaku.twidere.task.twitter.GetActivitiesAboutMeTask
|
import org.mariotaku.twidere.task.twitter.GetActivitiesAboutMeTask
|
||||||
import org.mariotaku.twidere.task.twitter.GetHomeTimelineTask
|
import org.mariotaku.twidere.task.statuses.GetHomeTimelineTask
|
||||||
import org.mariotaku.twidere.task.twitter.message.GetMessagesTask
|
import org.mariotaku.twidere.task.twitter.message.GetMessagesTask
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -49,8 +49,9 @@ class TwidereSQLiteOpenHelper(
|
|||||||
) : SQLiteOpenHelper(context, name, null, version) {
|
) : SQLiteOpenHelper(context, name, null, version) {
|
||||||
|
|
||||||
override fun onCreate(db: SQLiteDatabase) {
|
override fun onCreate(db: SQLiteDatabase) {
|
||||||
|
createStatusesTables(db)
|
||||||
|
|
||||||
db.beginTransaction()
|
db.beginTransaction()
|
||||||
db.execSQL(createTable(Statuses.TABLE_NAME, Statuses.COLUMNS, Statuses.TYPES, true))
|
|
||||||
db.execSQL(createTable(Activities.AboutMe.TABLE_NAME, Activities.AboutMe.COLUMNS, Activities.AboutMe.TYPES, true))
|
db.execSQL(createTable(Activities.AboutMe.TABLE_NAME, Activities.AboutMe.COLUMNS, Activities.AboutMe.TYPES, true))
|
||||||
db.execSQL(createTable(Drafts.TABLE_NAME, Drafts.COLUMNS, Drafts.TYPES, true))
|
db.execSQL(createTable(Drafts.TABLE_NAME, Drafts.COLUMNS, Drafts.TYPES, true))
|
||||||
db.setTransactionSuccessful()
|
db.setTransactionSuccessful()
|
||||||
@ -102,6 +103,16 @@ class TwidereSQLiteOpenHelper(
|
|||||||
setupDefaultTabs(db)
|
setupDefaultTabs(db)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun createStatusesTables(db: SQLiteDatabase) {
|
||||||
|
db.beginTransaction()
|
||||||
|
val tableNames = arrayOf(Statuses.TABLE_NAME, Statuses.Public.TABLE_NAME)
|
||||||
|
tableNames.forEach {
|
||||||
|
db.execSQL(createTable(it, Statuses.COLUMNS, Statuses.TYPES, true))
|
||||||
|
}
|
||||||
|
db.setTransactionSuccessful()
|
||||||
|
db.endTransaction()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private fun setupDefaultTabs(db: SQLiteDatabase) {
|
private fun setupDefaultTabs(db: SQLiteDatabase) {
|
||||||
val creator = ObjectCursor.valuesCreatorFrom(Tab::class.java)
|
val creator = ObjectCursor.valuesCreatorFrom(Tab::class.java)
|
||||||
@ -225,8 +236,7 @@ class TwidereSQLiteOpenHelper(
|
|||||||
db.execSQL(SQLQueryBuilder.dropIndex(true, "messages_inbox_index").sql)
|
db.execSQL(SQLQueryBuilder.dropIndex(true, "messages_inbox_index").sql)
|
||||||
db.execSQL(SQLQueryBuilder.dropIndex(true, "messages_outbox_index").sql)
|
db.execSQL(SQLQueryBuilder.dropIndex(true, "messages_outbox_index").sql)
|
||||||
}
|
}
|
||||||
|
upgradeStatuses(db)
|
||||||
safeUpgrade(db, Statuses.TABLE_NAME, Statuses.COLUMNS, Statuses.TYPES, true, null)
|
|
||||||
safeUpgrade(db, Activities.AboutMe.TABLE_NAME, Activities.AboutMe.COLUMNS,
|
safeUpgrade(db, Activities.AboutMe.TABLE_NAME, Activities.AboutMe.COLUMNS,
|
||||||
Activities.AboutMe.TYPES, true, null)
|
Activities.AboutMe.TYPES, true, null)
|
||||||
migrateDrafts(db)
|
migrateDrafts(db)
|
||||||
@ -263,6 +273,11 @@ class TwidereSQLiteOpenHelper(
|
|||||||
db.endTransaction()
|
db.endTransaction()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun upgradeStatuses(db: SQLiteDatabase) {
|
||||||
|
safeUpgrade(db, Statuses.TABLE_NAME, Statuses.COLUMNS, Statuses.TYPES, true, null)
|
||||||
|
safeUpgrade(db, Statuses.Public.TABLE_NAME, Statuses.COLUMNS, Statuses.TYPES, true, null)
|
||||||
|
}
|
||||||
|
|
||||||
private fun migrateDrafts(db: SQLiteDatabase) {
|
private fun migrateDrafts(db: SQLiteDatabase) {
|
||||||
val draftsAlias = HashMap<String, String>()
|
val draftsAlias = HashMap<String, String>()
|
||||||
draftsAlias.put(Drafts.MEDIA, "medias")
|
draftsAlias.put(Drafts.MEDIA, "medias")
|
||||||
|
@ -24,8 +24,8 @@ import android.content.Intent
|
|||||||
import android.support.annotation.WorkerThread
|
import android.support.annotation.WorkerThread
|
||||||
import org.mariotaku.twidere.model.ParcelableStatusUpdate
|
import org.mariotaku.twidere.model.ParcelableStatusUpdate
|
||||||
import org.mariotaku.twidere.model.schedule.ScheduleInfo
|
import org.mariotaku.twidere.model.schedule.ScheduleInfo
|
||||||
import org.mariotaku.twidere.task.twitter.UpdateStatusTask
|
import org.mariotaku.twidere.task.status.UpdateStatusTask
|
||||||
import org.mariotaku.twidere.task.twitter.UpdateStatusTask.PendingStatusUpdate
|
import org.mariotaku.twidere.task.status.UpdateStatusTask.PendingStatusUpdate
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user