From 444588af195b14a58ff7166fedc32ae79aad25da Mon Sep 17 00:00:00 2001 From: Mariotaku Lee Date: Sat, 2 Apr 2016 00:00:07 +0800 Subject: [PATCH] fixed settings wizard --- .../twidere/api/twitter/model/ErrorInfo.java | 3 +- .../twidere/constant/IntentConstants.java | 1 - .../twidere/activity/SettingsActivity.java | 68 ++++++++++++------- .../activity/SettingsWizardActivity.java | 25 ++++--- .../twidere/api/twitter/TwitterErrorCode.java | 8 --- .../twidere/app/TwidereApplication.java | 12 ++-- .../fragment/SettingsDetailsFragment.java | 5 +- .../loader/ParcelableStatusLoader.java | 8 ++- .../preference/ColorPickerPreference.java | 1 + .../NotificationTypePreference.java | 1 + .../preference/SeekBarDialogPreference.java | 1 + .../preference/ThemeBackgroundPreference.java | 2 +- .../twidere/task/GetDirectMessagesTask.java | 4 +- .../twidere/util/AsyncTwitterWrapper.java | 14 +--- .../twidere/util/DataStoreUtils.java | 44 ++++++++++++ .../settings_layout_wizard_page_nav.xml | 1 + .../src/main/res/xml/preferences_theme.xml | 2 +- 17 files changed, 129 insertions(+), 71 deletions(-) delete mode 100644 twidere/src/main/java/org/mariotaku/twidere/api/twitter/TwitterErrorCode.java diff --git a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/model/ErrorInfo.java b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/model/ErrorInfo.java index 3bebfde4f..4b4e68b4c 100644 --- a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/model/ErrorInfo.java +++ b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/model/ErrorInfo.java @@ -30,9 +30,10 @@ public class ErrorInfo { public static final int PAGE_NOT_FOUND = 34; public static final int RATE_LIMIT_EXCEEDED = 88; + public static final int NO_DIRECT_MESSAGE_PERMISSION = 93; public static final int NOT_AUTHORIZED = 179; public static final int STATUS_IS_DUPLICATE = 187; - public static final int NO_DIRECT_MESSAGE_PERMISSION = 93; + public static final int STATUS_NOT_FOUND = 144; @JsonField(name = "code") int code; diff --git a/twidere.component.common/src/main/java/org/mariotaku/twidere/constant/IntentConstants.java b/twidere.component.common/src/main/java/org/mariotaku/twidere/constant/IntentConstants.java index 44a3cd8b8..dec6b85f2 100644 --- a/twidere.component.common/src/main/java/org/mariotaku/twidere/constant/IntentConstants.java +++ b/twidere.component.common/src/main/java/org/mariotaku/twidere/constant/IntentConstants.java @@ -195,7 +195,6 @@ public interface IntentConstants { String EXTRA_CHANGED = "changed"; String EXTRA_NOTIFY_CHANGE = "notify_change"; String EXTRA_RESTART_ACTIVITY = "restart_activity"; - String EXTRA_RECREATE_ACTIVITY = "recreate_activity"; String EXTRA_FROM_USER = "from_user"; String EXTRA_SHOW_MEDIA_PREVIEW = "show_media_preview"; String EXTRA_SHOW_EXTRA_TYPE = "show_extra_type"; diff --git a/twidere/src/main/java/org/mariotaku/twidere/activity/SettingsActivity.java b/twidere/src/main/java/org/mariotaku/twidere/activity/SettingsActivity.java index 992b85c44..850dedb9c 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/activity/SettingsActivity.java +++ b/twidere/src/main/java/org/mariotaku/twidere/activity/SettingsActivity.java @@ -37,6 +37,7 @@ import android.support.v7.app.AlertDialog; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceFragmentCompat; import android.support.v7.preference.PreferenceFragmentCompat.OnPreferenceStartFragmentCallback; +import android.text.TextUtils; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; @@ -64,6 +65,8 @@ import java.util.List; public class SettingsActivity extends BaseActivity implements OnItemClickListener, OnPreferenceStartFragmentCallback { + public static final String EXTRA_INITIAL_TAG = "initial_tag"; + private static final int RESULT_SETTINGS_CHANGED = 10; private ListView mEntriesListView; @@ -106,49 +109,63 @@ public class SettingsActivity extends BaseActivity implements OnItemClickListene mEntriesListView.setOnItemClickListener(this); if (savedInstanceState == null) { + String initialTag = getIntent().getStringExtra(EXTRA_INITIAL_TAG); + int initialItem = -1, firstEntry = -1; for (int i = 0, j = mEntriesAdapter.getCount(); i < j; i++) { - if (mEntriesAdapter.getItemViewType(i) == EntriesAdapter.VIEW_TYPE_PREFERENCE_ENTRY) { - openDetails(i); - mEntriesListView.setItemChecked(i, true); - break; + Entry entry = mEntriesAdapter.getItem(i); + if (entry instanceof PreferenceEntry) { + if (firstEntry == -1) { + firstEntry = i; + } + if (TextUtils.equals(initialTag, ((PreferenceEntry) entry).tag)) { + initialItem = i; + break; + } } } + if (initialItem == -1) { + initialItem = firstEntry; + } + if (initialItem != -1) { + openDetails(initialItem); + mEntriesListView.setItemChecked(initialItem, true); + } } } private void initEntries() { mEntriesAdapter.addHeader(getString(R.string.appearance)); - mEntriesAdapter.addPreference(R.drawable.ic_action_color_palette, getString(R.string.theme), + mEntriesAdapter.addPreference("theme", R.drawable.ic_action_color_palette, getString(R.string.theme), R.xml.preferences_theme); - mEntriesAdapter.addPreference(R.drawable.ic_action_card, getString(R.string.cards), + mEntriesAdapter.addPreference("cards", R.drawable.ic_action_card, getString(R.string.cards), R.xml.preferences_cards); mEntriesAdapter.addHeader(getString(R.string.function)); - mEntriesAdapter.addPreference(R.drawable.ic_action_tab, getString(R.string.tabs), + mEntriesAdapter.addPreference("tabs", R.drawable.ic_action_tab, getString(R.string.tabs), CustomTabsFragment.class); - mEntriesAdapter.addPreference(R.drawable.ic_action_extension, getString(R.string.extensions), + mEntriesAdapter.addPreference("extension", R.drawable.ic_action_extension, getString(R.string.extensions), ExtensionsListFragment.class); - mEntriesAdapter.addPreference(R.drawable.ic_action_refresh, getString(R.string.refresh), + mEntriesAdapter.addPreference("refresh", R.drawable.ic_action_refresh, getString(R.string.refresh), R.xml.preferences_refresh); - mEntriesAdapter.addPreference(R.drawable.ic_action_notification, getString(R.string.notifications), + mEntriesAdapter.addPreference("notifications", R.drawable.ic_action_notification, getString(R.string.notifications), R.xml.preferences_notifications); - mEntriesAdapter.addPreference(R.drawable.ic_action_web, getString(R.string.network), + mEntriesAdapter.addPreference("network", R.drawable.ic_action_web, getString(R.string.network), R.xml.preferences_network); - mEntriesAdapter.addPreference(R.drawable.ic_action_status_compose, getString(R.string.compose), + mEntriesAdapter.addPreference("compose", R.drawable.ic_action_status_compose, getString(R.string.compose), R.xml.preferences_compose); - mEntriesAdapter.addPreference(R.drawable.ic_action_twidere_square, getString(R.string.content), + mEntriesAdapter.addPreference("content", R.drawable.ic_action_twidere_square, getString(R.string.content), R.xml.preferences_content); - mEntriesAdapter.addPreference(R.drawable.ic_action_storage, getString(R.string.storage), + mEntriesAdapter.addPreference("storage", R.drawable.ic_action_storage, getString(R.string.storage), R.xml.preferences_storage); - mEntriesAdapter.addPreference(R.drawable.ic_action_more_horizontal, getString(R.string.other_settings), + mEntriesAdapter.addPreference("other", R.drawable.ic_action_more_horizontal, getString(R.string.other_settings), R.xml.preferences_other); mEntriesAdapter.addHeader(getString(R.string.about)); - mEntriesAdapter.addPreference(R.drawable.ic_action_info, getString(R.string.about), + mEntriesAdapter.addPreference("about", R.drawable.ic_action_info, getString(R.string.about), R.xml.preferences_about); final Bundle browserArgs = new Bundle(); browserArgs.putString(EXTRA_URI, "file:///android_asset/gpl-3.0-standalone.html"); - mEntriesAdapter.addPreference(R.drawable.ic_action_open_source, getString(R.string.open_source_license), + mEntriesAdapter.addPreference("license", R.drawable.ic_action_open_source, getString(R.string.open_source_license), SupportBrowserFragment.class, browserArgs); } @@ -275,19 +292,19 @@ public class SettingsActivity extends BaseActivity implements OnItemClickListene mEntries = new ArrayList<>(); } - public void addPreference(@DrawableRes int icon, String title, @XmlRes int preference) { - mEntries.add(new PreferenceEntry(icon, title, preference, null, null)); + public void addPreference(String tag, @DrawableRes int icon, String title, @XmlRes int preference) { + mEntries.add(new PreferenceEntry(tag, icon, title, preference, null, null)); notifyDataSetChanged(); } - public void addPreference(@DrawableRes int icon, String title, Class cls) { - addPreference(icon, title, cls, null); + public void addPreference(String tag, @DrawableRes int icon, String title, Class cls) { + addPreference(tag, icon, title, cls, null); } - public void addPreference(@DrawableRes int icon, String title, Class cls, + public void addPreference(String tag, @DrawableRes int icon, String title, Class cls, @Nullable Bundle args) { - mEntries.add(new PreferenceEntry(icon, title, 0, cls.getName(), args)); + mEntries.add(new PreferenceEntry(tag, icon, title, 0, cls.getName(), args)); notifyDataSetChanged(); } @@ -365,6 +382,8 @@ public class SettingsActivity extends BaseActivity implements OnItemClickListene } static class PreferenceEntry extends Entry { + @NonNull + private final String tag; private final int icon; private final String title; private final int preference; @@ -372,7 +391,8 @@ public class SettingsActivity extends BaseActivity implements OnItemClickListene private final Bundle args; - public PreferenceEntry(int icon, String title, int preference, String fragment, Bundle args) { + public PreferenceEntry(@NonNull String tag, int icon, String title, int preference, String fragment, Bundle args) { + this.tag = tag; this.icon = icon; this.title = title; this.preference = preference; diff --git a/twidere/src/main/java/org/mariotaku/twidere/activity/SettingsWizardActivity.java b/twidere/src/main/java/org/mariotaku/twidere/activity/SettingsWizardActivity.java index f379f47c5..ab116b9d6 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/activity/SettingsWizardActivity.java +++ b/twidere/src/main/java/org/mariotaku/twidere/activity/SettingsWizardActivity.java @@ -28,6 +28,7 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; +import android.graphics.Color; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; @@ -36,6 +37,7 @@ import android.support.v4.app.DialogFragment; import android.support.v4.app.FragmentManager; import android.support.v4.view.ViewPager; import android.support.v7.preference.Preference; +import android.support.v7.preference.PreferenceManager; import android.support.v7.preference.PreferenceScreen; import android.view.LayoutInflater; import android.view.View; @@ -43,6 +45,7 @@ import android.view.View.OnClickListener; import android.view.ViewGroup; import com.afollestad.appthemeengine.Config; +import com.afollestad.appthemeengine.util.ATEUtil; import com.afollestad.materialdialogs.AlertDialogWrapper; import org.mariotaku.twidere.Constants; @@ -142,6 +145,12 @@ public class SettingsWizardActivity extends BaseActivity implements Constants { mIndicator = (LinePageIndicator) findViewById(R.id.indicator); } + @Override + public int getStatusBarColor() { + if (VALUE_THEME_NAME_DARK.equals(getATEKey())) return Color.BLACK; + return ATEUtil.darkenColor(ThemeUtils.getColorBackground(this)); + } + @Override protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) { switch (requestCode) { @@ -222,6 +231,8 @@ public class SettingsWizardActivity extends BaseActivity implements Constants { @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { + final PreferenceManager preferenceManager = getPreferenceManager(); + preferenceManager.setSharedPreferencesName(SHARED_PREFERENCES_NAME); addPreferencesFromResource(getPreferenceResource()); final Context context = getActivity(); @@ -259,13 +270,6 @@ public class SettingsWizardActivity extends BaseActivity implements Constants { } } - @Override - public void onActivityCreated(final Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - - - } - @Override public boolean onPreferenceClick(final Preference preference) { if (WIZARD_PREFERENCE_KEY_NEXT_PAGE.equals(preference.getKey())) { @@ -435,10 +439,9 @@ public class SettingsWizardActivity extends BaseActivity implements Constants { public boolean onPreferenceClick(final Preference preference) { final String key = preference.getKey(); if (WIZARD_PREFERENCE_KEY_EDIT_CUSTOM_TABS.equals(key)) { -// final Intent intent = new Intent(getActivity(), SettingsActivity.class); -// intent.putExtra(PreferenceActivity.EXTRA_SHOW_FRAGMENT, CustomTabsFragment.class.getName()); -// intent.putExtra(PreferenceActivity.EXTRA_SHOW_FRAGMENT_TITLE, R.string.tabs); -// startActivityForResult(intent, REQUEST_CUSTOM_TABS); + final Intent intent = new Intent(getActivity(), SettingsActivity.class); + intent.putExtra(SettingsActivity.EXTRA_INITIAL_TAG, "tabs"); + startActivityForResult(intent, REQUEST_CUSTOM_TABS); } else if (WIZARD_PREFERENCE_KEY_USE_DEFAULTS.equals(key)) { applyInitialTabSettings(); } diff --git a/twidere/src/main/java/org/mariotaku/twidere/api/twitter/TwitterErrorCode.java b/twidere/src/main/java/org/mariotaku/twidere/api/twitter/TwitterErrorCode.java deleted file mode 100644 index ff8d782ea..000000000 --- a/twidere/src/main/java/org/mariotaku/twidere/api/twitter/TwitterErrorCode.java +++ /dev/null @@ -1,8 +0,0 @@ -package org.mariotaku.twidere.api.twitter; - -/** - * Created by mariotaku on 16/2/13. - */ -public interface TwitterErrorCode { - int NO_DM_PERMISSION = 93; -} diff --git a/twidere/src/main/java/org/mariotaku/twidere/app/TwidereApplication.java b/twidere/src/main/java/org/mariotaku/twidere/app/TwidereApplication.java index 14a4b14ea..61be6f5ba 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/app/TwidereApplication.java +++ b/twidere/src/main/java/org/mariotaku/twidere/app/TwidereApplication.java @@ -178,14 +178,14 @@ public class TwidereApplication extends Application implements Constants, //noinspection WrongConstant ATE.config(this, VALUE_THEME_NAME_LIGHT) .primaryColor(themeColor) - .accentColor(ThemeUtils.getOptimalAccentColor(themeColor)) + .accentColor(ThemeUtils.getOptimalAccentColor(themeColor, Color.BLACK)) .coloredActionBar(true) .coloredStatusBar(true) .commit(); } if (!ATE.config(this, VALUE_THEME_NAME_DARK).isConfigured()) { ATE.config(this, VALUE_THEME_NAME_DARK) - .accentColor(ThemeUtils.getOptimalAccentColor(themeColor)) + .accentColor(ThemeUtils.getOptimalAccentColor(themeColor, Color.WHITE)) .coloredActionBar(false) .coloredStatusBar(true) .statusBarColor(Color.BLACK) @@ -193,7 +193,7 @@ public class TwidereApplication extends Application implements Constants, } if (!ATE.config(this, null).isConfigured()) { ATE.config(this, null) - .accentColor(ThemeUtils.getOptimalAccentColor(themeColor)) + .accentColor(ThemeUtils.getOptimalAccentColor(themeColor, Color.WHITE)) .coloredActionBar(false) .coloredStatusBar(false) .commit(); @@ -360,18 +360,18 @@ public class TwidereApplication extends Application implements Constants, //noinspection WrongConstant ATE.config(this, VALUE_THEME_NAME_LIGHT) .primaryColor(themeColor) - .accentColor(ThemeUtils.getOptimalAccentColor(themeColor)) + .accentColor(ThemeUtils.getOptimalAccentColor(themeColor, Color.BLACK)) .coloredActionBar(true) .coloredStatusBar(true) .commit(); ATE.config(this, VALUE_THEME_NAME_DARK) - .accentColor(ThemeUtils.getOptimalAccentColor(themeColor)) + .accentColor(ThemeUtils.getOptimalAccentColor(themeColor, Color.WHITE)) .coloredActionBar(false) .coloredStatusBar(true) .statusBarColor(Color.BLACK) .commit(); ATE.config(this, null) - .accentColor(ThemeUtils.getOptimalAccentColor(themeColor)) + .accentColor(ThemeUtils.getOptimalAccentColor(themeColor, Color.BLACK)) .coloredActionBar(false) .coloredStatusBar(false) .commit(); diff --git a/twidere/src/main/java/org/mariotaku/twidere/fragment/SettingsDetailsFragment.java b/twidere/src/main/java/org/mariotaku/twidere/fragment/SettingsDetailsFragment.java index 68c0c892a..3ab591a96 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/fragment/SettingsDetailsFragment.java +++ b/twidere/src/main/java/org/mariotaku/twidere/fragment/SettingsDetailsFragment.java @@ -24,7 +24,6 @@ import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.os.Bundle; import android.support.v7.preference.Preference; -import android.support.v7.preference.PreferenceFragmentCompat; import android.support.v7.preference.PreferenceManager; import android.support.v7.preference.PreferenceScreen; @@ -32,7 +31,7 @@ import org.mariotaku.twidere.Constants; import org.mariotaku.twidere.activity.SettingsActivity; import org.mariotaku.twidere.util.Utils; -public class SettingsDetailsFragment extends PreferenceFragmentCompat implements Constants, +public class SettingsDetailsFragment extends BasePreferenceFragment implements Constants, OnSharedPreferenceChangeListener { @Override @@ -110,8 +109,6 @@ public class SettingsDetailsFragment extends PreferenceFragmentCompat implements } if (extras.containsKey(EXTRA_RESTART_ACTIVITY)) { activity.recreate(); - } else if (extras.containsKey(EXTRA_RECREATE_ACTIVITY)) { - activity.recreate(); } } } diff --git a/twidere/src/main/java/org/mariotaku/twidere/loader/ParcelableStatusLoader.java b/twidere/src/main/java/org/mariotaku/twidere/loader/ParcelableStatusLoader.java index 8f43df82d..e1ad262c7 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/loader/ParcelableStatusLoader.java +++ b/twidere/src/main/java/org/mariotaku/twidere/loader/ParcelableStatusLoader.java @@ -24,6 +24,7 @@ import android.os.Bundle; import android.support.v4.content.AsyncTaskLoader; import org.mariotaku.twidere.api.twitter.TwitterException; +import org.mariotaku.twidere.api.twitter.model.ErrorInfo; import org.mariotaku.twidere.constant.IntentConstants; import org.mariotaku.twidere.model.ParcelableCredentials; import org.mariotaku.twidere.model.ParcelableStatus; @@ -31,13 +32,13 @@ import org.mariotaku.twidere.model.SingleResponse; import org.mariotaku.twidere.model.UserKey; import org.mariotaku.twidere.model.util.ParcelableCredentialsUtils; import org.mariotaku.twidere.model.util.ParcelableStatusUtils; +import org.mariotaku.twidere.util.DataStoreUtils; import org.mariotaku.twidere.util.UserColorNameManager; import org.mariotaku.twidere.util.dagger.GeneralComponentHelper; import javax.inject.Inject; import static org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT; -import static org.mariotaku.twidere.constant.IntentConstants.EXTRA_STATUS; import static org.mariotaku.twidere.util.Utils.findStatus; /** @@ -84,6 +85,11 @@ public class ParcelableStatusLoader extends AsyncTaskLoader doLongOperation(final Object params) { + protected SingleResponse doLongOperation(final Object params) { try { final Twitter twitter = TwitterAPIFactory.getTwitterInstance(mContext, mAccountKey, true); TwitterWrapper.updateProfileImage(mContext, twitter, mImageUri, mDeleteImage); @@ -1304,16 +1304,8 @@ public class AsyncTwitterWrapper extends TwitterWrapper { } catch (final TwitterException e) { exception = e; } - if (status != null || (exception != null && exception.getErrorCode() == HttpResponseCode.NOT_FOUND)) { - final ContentValues values = new ContentValues(); - values.put(Statuses.MY_RETWEET_ID, -1); - if (status != null) { - values.put(Statuses.RETWEET_COUNT, status.retweet_count - 1); - } - for (final Uri uri : TwidereDataStore.STATUSES_URIS) { - mResolver.delete(uri, Expression.equalsArgs(Statuses.STATUS_ID).getSQL(), new String[]{mStatusId}); - mResolver.update(uri, values, Expression.equalsArgs(Statuses.MY_RETWEET_ID).getSQL(), new String[]{mStatusId}); - } + if (status != null || (exception != null && exception.getErrorCode() == ErrorInfo.STATUS_NOT_FOUND)) { + DataStoreUtils.deleteStatus(mResolver, mAccountKey, mStatusId, status); } return SingleResponse.getInstance(status, exception); } diff --git a/twidere/src/main/java/org/mariotaku/twidere/util/DataStoreUtils.java b/twidere/src/main/java/org/mariotaku/twidere/util/DataStoreUtils.java index 14729da10..d6e9d3f3b 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/util/DataStoreUtils.java +++ b/twidere/src/main/java/org/mariotaku/twidere/util/DataStoreUtils.java @@ -20,6 +20,7 @@ package org.mariotaku.twidere.util; import android.content.ContentResolver; +import android.content.ContentValues; import android.content.Context; import android.content.UriMatcher; import android.database.Cursor; @@ -50,6 +51,7 @@ import org.mariotaku.twidere.api.twitter.model.Activity; import org.mariotaku.twidere.model.ParcelableAccount; import org.mariotaku.twidere.model.ParcelableCredentials; import org.mariotaku.twidere.model.ParcelableCredentialsCursorIndices; +import org.mariotaku.twidere.model.ParcelableStatus; import org.mariotaku.twidere.model.UserFollowState; import org.mariotaku.twidere.model.UserKey; import org.mariotaku.twidere.model.tab.extra.InteractionsTabExtras; @@ -905,6 +907,48 @@ public class DataStoreUtils implements Constants { } } + public static void deleteStatus(@NonNull ContentResolver cr, @NonNull UserKey accountKey, + @NonNull String statusId, @Nullable ParcelableStatus status) { + + final String host = accountKey.getHost(); + if (host != null) { + for (final Uri uri : STATUSES_URIS) { + final String deleteWhere = Expression.and( + Expression.likeRaw(new Column(Statuses.ACCOUNT_KEY), "%@?"), + Expression.or( + Expression.equalsArgs(Statuses.STATUS_ID), + Expression.equalsArgs(Statuses.RETWEET_ID) + )).getSQL(); + cr.delete(uri, deleteWhere, new String[]{host, statusId, statusId}); + final String updateWhere = Expression.and( + Expression.likeRaw(new Column(Statuses.ACCOUNT_KEY), "%@?"), + Expression.equalsArgs(Statuses.MY_RETWEET_ID) + ).getSQL(); + if (status != null) { + final ContentValues values = new ContentValues(); + values.put(Statuses.MY_RETWEET_ID, -1); + values.put(Statuses.RETWEET_COUNT, status.retweet_count - 1); + cr.update(uri, values, updateWhere, new String[]{host, statusId}); + } + } + } else { + for (final Uri uri : STATUSES_URIS) { + final String deleteWhere = Expression.or( + Expression.equalsArgs(Statuses.STATUS_ID), + Expression.equalsArgs(Statuses.RETWEET_ID) + ).getSQL(); + cr.delete(uri, deleteWhere, new String[]{statusId, statusId}); + final String updateWhere = Expression.equalsArgs(Statuses.MY_RETWEET_ID).getSQL(); + if (status != null) { + final ContentValues values = new ContentValues(); + values.put(Statuses.MY_RETWEET_ID, -1); + values.put(Statuses.RETWEET_COUNT, status.retweet_count - 1); + cr.update(uri, values, updateWhere, new String[]{statusId}); + } + } + } + } + interface FieldArrayCreator { T newArray(int size); diff --git a/twidere/src/main/res/layout/settings_layout_wizard_page_nav.xml b/twidere/src/main/res/layout/settings_layout_wizard_page_nav.xml index b4ec6575b..7e80f439f 100644 --- a/twidere/src/main/res/layout/settings_layout_wizard_page_nav.xml +++ b/twidere/src/main/res/layout/settings_layout_wizard_page_nav.xml @@ -22,6 +22,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" + android:background="?selectableItemBackground" android:padding="@dimen/element_spacing_large">