this commit may fix wrong profile image bug

This commit is contained in:
Mariotaku Lee 2014-08-08 01:58:42 +08:00
parent 059360a942
commit 9c7bace28e
63 changed files with 2853 additions and 2652 deletions

View File

@ -1,8 +1,8 @@
package org.mariotaku.twidere.activity;
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.support.v4.app.FragmentActivity;
import com.negusoft.holoaccent.AccentHelper;
import com.negusoft.holoaccent.AccentResources;
@ -15,8 +15,14 @@ import com.negusoft.holoaccent.AccentResources;
*/
public class AccentActivity extends Activity {
private final AccentHelper mAccentHelper = new AccentHelper(getOverrideAccentColor(),
private AccentHelper mAccentHelper;
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(newBase);
mAccentHelper = new AccentHelper(getOverrideAccentColor(),
getOverrideAccentColorDark(), getOverrideAccentColorActionBar(), new MyInitListener());
}
@Override
public Resources getResources() {

View File

@ -39,7 +39,7 @@ public class BaseActivity extends BaseThemedActivity implements Constants {
}
@Override
public int getThemeColor() {
public int getOverrideAccentColor() {
return ThemeUtils.getUserThemeColor(this);
}

View File

@ -99,7 +99,7 @@ public abstract class BasePreferenceActivity extends PreferenceActivity implemen
}
@Override
public int getThemeColor() {
public int getOverrideAccentColor() {
return 0;
}

View File

@ -93,7 +93,7 @@ public abstract class BaseThemedActivity extends AccentActivity implements IThem
}
@Override
public abstract int getThemeColor();
public abstract int getOverrideAccentColor();
@Override
public String getThemeFontFamily() {
@ -134,7 +134,7 @@ public abstract class BaseThemedActivity extends AccentActivity implements IThem
}
protected final boolean isThemeChanged() {
return getThemeResourceId() != mCurrentThemeResource || getThemeColor() != mCurrentThemeColor
return getThemeResourceId() != mCurrentThemeResource || getOverrideAccentColor() != mCurrentThemeColor
|| !CompareUtils.objectEquals(getThemeFontFamily(), mCurrentThemeFontFamily)
|| getThemeBackgroundAlpha() != mCurrentThemeBackgroundAlpha;
}
@ -178,7 +178,7 @@ public abstract class BaseThemedActivity extends AccentActivity implements IThem
private final void setTheme() {
mCurrentThemeResource = getThemeResourceId();
mCurrentThemeColor = getThemeColor();
mCurrentThemeColor = getOverrideAccentColor();
mCurrentThemeFontFamily = getThemeFontFamily();
mCurrentThemeBackgroundAlpha = getThemeBackgroundAlpha();
ThemeUtils.notifyStatusBarColorChanged(this, mCurrentThemeResource, mCurrentThemeColor,

View File

@ -179,7 +179,7 @@ public class SettingsActivity extends BasePreferenceActivity {
mPreferences = getSharedPreferences(SHARED_PREFERENCES_NAME, MODE_PRIVATE);
mCompactCards = mPreferences.getBoolean(KEY_COMPACT_CARDS, false);
mPlainListStyle = mPreferences.getBoolean(KEY_PLAIN_LIST_STYLE, false);
mCurrentThemeColor = getThemeColor();
mCurrentThemeColor = getOverrideAccentColor();
mCurrentThemeFontFamily = getThemeFontFamily();
mCurrentThemeBackgroundAlpha = getThemeBackgroundAlpha();
mCurrentIsDarkDrawerEnabled = isDarkDrawerEnabled();
@ -195,7 +195,8 @@ public class SettingsActivity extends BasePreferenceActivity {
private boolean shouldNotifyThemeChange() {
return mCompactCards != mPreferences.getBoolean(KEY_COMPACT_CARDS, false)
|| mPlainListStyle != mPreferences.getBoolean(KEY_PLAIN_LIST_STYLE, false)
|| getThemeResourceId() != getCurrentThemeResourceId() || getThemeColor() != mCurrentThemeColor
|| getThemeResourceId() != getCurrentThemeResourceId()
|| ThemeUtils.getUserThemeColor(this) != mCurrentThemeColor
|| !CompareUtils.objectEquals(getThemeFontFamily(), mCurrentThemeFontFamily)
|| getThemeBackgroundAlpha() != mCurrentThemeBackgroundAlpha
|| isDarkDrawerEnabled() != mCurrentIsDarkDrawerEnabled;

View File

@ -1,7 +1,5 @@
package org.mariotaku.twidere.activity;
import static org.mariotaku.twidere.util.Utils.getDefaultAccountId;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
@ -20,6 +18,8 @@ import org.mariotaku.twidere.util.Utils;
import java.util.List;
import static org.mariotaku.twidere.util.Utils.getDefaultAccountId;
public class TwitterLinkHandlerActivity extends Activity implements Constants {
public static final String[] TWITTER_RESERVED_PATHS = {"about", "account", "accounts", "activity", "all",
@ -43,9 +43,13 @@ public class TwitterLinkHandlerActivity extends Activity implements Constants {
private static final int URI_CODE_TWITTER_USER_FOLLOWING = 11;
private static final int URI_CODE_TWITTER_USER_FOLLOWERS = 12;
private static final int URI_CODE_TWITTER_USER_FAVORITES = 13;
private static final int URI_CODE_TWITTER_USER_LIST = 14;
private static final int URI_CODE_TWITTER_USER_LIST_MEMBERS = 41;
private static final int URI_CODE_TWITTER_USER_LIST_SUBSCRIBERS = 42;
private static final int URI_CODE_TWITTER_INTENT_TWEET = 101;
private static final int URI_CODE_TWITTER_REDIRECT = 201;
static {
URI_MATCHER.addURI(AUTHORITY_TWITTER_COM, "/i/redirect", URI_CODE_TWITTER_REDIRECT);
URI_MATCHER.addURI(AUTHORITY_TWITTER_COM, "/intent/tweet", URI_CODE_TWITTER_INTENT_TWEET);
@ -55,6 +59,9 @@ public class TwitterLinkHandlerActivity extends Activity implements Constants {
URI_MATCHER.addURI(AUTHORITY_TWITTER_COM, "/*/following", URI_CODE_TWITTER_USER_FOLLOWING);
URI_MATCHER.addURI(AUTHORITY_TWITTER_COM, "/*/followers", URI_CODE_TWITTER_USER_FOLLOWERS);
URI_MATCHER.addURI(AUTHORITY_TWITTER_COM, "/*/favorites", URI_CODE_TWITTER_USER_FAVORITES);
URI_MATCHER.addURI(AUTHORITY_TWITTER_COM, "/*/*", URI_CODE_TWITTER_USER_LIST);
URI_MATCHER.addURI(AUTHORITY_TWITTER_COM, "/*/*/members", URI_CODE_TWITTER_USER_LIST_MEMBERS);
URI_MATCHER.addURI(AUTHORITY_TWITTER_COM, "/*/*/subscribers", URI_CODE_TWITTER_USER_LIST_MEMBERS);
}
private SharedPreferences mPreferences;
@ -186,6 +193,42 @@ public class TwitterLinkHandlerActivity extends Activity implements Constants {
builder.appendQueryParameter(QUERY_PARAM_SCREEN_NAME, pathSegments.get(0));
return new Intent(Intent.ACTION_VIEW, builder.build());
}
case URI_CODE_TWITTER_USER_LIST: {
final String firstSegment = pathSegments.get(0);
if (ArrayUtils.contains(TWITTER_RESERVED_PATHS, firstSegment)) {
return null;
}
final Uri.Builder builder = new Uri.Builder();
builder.scheme(SCHEME_TWIDERE);
builder.authority(AUTHORITY_USER_LIST);
builder.appendQueryParameter(QUERY_PARAM_SCREEN_NAME, firstSegment);
builder.appendQueryParameter(QUERY_PARAM_LIST_NAME, pathSegments.get(1));
return new Intent(Intent.ACTION_VIEW, builder.build());
}
case URI_CODE_TWITTER_USER_LIST_MEMBERS: {
final String firstSegment = pathSegments.get(0);
if (ArrayUtils.contains(TWITTER_RESERVED_PATHS, firstSegment)) {
return null;
}
final Uri.Builder builder = new Uri.Builder();
builder.scheme(SCHEME_TWIDERE);
builder.authority(AUTHORITY_USER_LIST_MEMBERS);
builder.appendQueryParameter(QUERY_PARAM_SCREEN_NAME, firstSegment);
builder.appendQueryParameter(QUERY_PARAM_LIST_NAME, pathSegments.get(1));
return new Intent(Intent.ACTION_VIEW, builder.build());
}
case URI_CODE_TWITTER_USER_LIST_SUBSCRIBERS: {
final String firstSegment = pathSegments.get(0);
if (ArrayUtils.contains(TWITTER_RESERVED_PATHS, firstSegment)) {
return null;
}
final Uri.Builder builder = new Uri.Builder();
builder.scheme(SCHEME_TWIDERE);
builder.authority(AUTHORITY_USER_LIST_SUBSCRIBERS);
builder.appendQueryParameter(QUERY_PARAM_SCREEN_NAME, firstSegment);
builder.appendQueryParameter(QUERY_PARAM_LIST_NAME, pathSegments.get(1));
return new Intent(Intent.ACTION_VIEW, builder.build());
}
}
return null;
}

View File

@ -33,7 +33,7 @@ public interface IThemedActivity extends ITwidereContextWrapper {
public int getThemeBackgroundAlpha();
public int getThemeColor();
public int getOverrideAccentColor();
public TwidereMenuInflater getTwidereMenuInflater();

View File

@ -1,5 +1,6 @@
package org.mariotaku.twidere.activity.support;
import android.content.Context;
import android.content.res.Resources;
import android.support.v4.app.FragmentActivity;
@ -14,11 +15,20 @@ import com.negusoft.holoaccent.AccentResources;
*/
public class AccentFragmentActivity extends FragmentActivity {
private final AccentHelper mAccentHelper = new AccentHelper(getOverrideAccentColor(),
private AccentHelper mAccentHelper;
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(newBase);
mAccentHelper = new AccentHelper(getOverrideAccentColor(),
getOverrideAccentColorDark(), getOverrideAccentColorActionBar(), new MyInitListener());
}
@Override
public Resources getResources() {
if (mAccentHelper == null) {
return super.getResources();
}
return mAccentHelper.getResources(this, super.getResources());
}

View File

@ -41,8 +41,8 @@ public class BaseSupportActivity extends BaseSupportThemedActivity implements Co
}
@Override
public int getThemeColor() {
return ThemeUtils.getUserThemeColor(this);
public int getOverrideAccentColor() {
return ThemeUtils.getUserThemeColor(this, getThemeResourceId());
}
@Override

View File

@ -45,8 +45,8 @@ public class BaseSupportDialogActivity extends BaseSupportThemedActivity impleme
}
@Override
public int getThemeColor() {
return ThemeUtils.getThemeColor(this);
public int getOverrideAccentColor() {
return ThemeUtils.getThemeColor(this, getThemeResourceId());
}
@Override

View File

@ -77,7 +77,7 @@ public abstract class BaseSupportThemedActivity extends AccentFragmentActivity i
}
@Override
public abstract int getThemeColor();
public abstract int getOverrideAccentColor();
@Override
@ -156,7 +156,7 @@ public abstract class BaseSupportThemedActivity extends AccentFragmentActivity i
private final void setTheme() {
mCurrentThemeResource = getThemeResourceId();
mCurrentThemeColor = getThemeColor();
mCurrentThemeColor = getOverrideAccentColor();
mCurrentThemeBackgroundAlpha = getThemeBackgroundAlpha();
ThemeUtils.notifyStatusBarColorChanged(this, mCurrentThemeResource, mCurrentThemeColor,
mCurrentThemeBackgroundAlpha);

View File

@ -212,7 +212,7 @@ public class ComposeActivity extends BaseSupportDialogActivity implements TextWa
}
@Override
public int getThemeColor() {
public int getOverrideAccentColor() {
return ThemeUtils.getUserThemeColor(this);
}
@ -240,7 +240,7 @@ public class ComposeActivity extends BaseSupportDialogActivity implements TextWa
} else {
mLocationManager.removeUpdates(this);
}
mPreferences.edit().putBoolean(KEY_ATTACH_LOCATION, !attachLocation).commit();
mPreferences.edit().putBoolean(KEY_ATTACH_LOCATION, !attachLocation).apply();
setMenu();
updateTextCount();
break;

View File

@ -45,7 +45,7 @@ public class ImagePickerActivity extends BaseSupportThemedActivity {
private Runnable mImageSelectedRunnable;
@Override
public int getThemeColor() {
public int getOverrideAccentColor() {
return 0;
}

View File

@ -19,6 +19,7 @@ import org.mariotaku.menucomponent.internal.menu.MenuAdapter;
import org.mariotaku.menucomponent.internal.menu.MenuUtils;
import org.mariotaku.twidere.activity.iface.IThemedActivity;
import org.mariotaku.twidere.fragment.support.BaseSupportDialogFragment;
import org.mariotaku.twidere.menu.TwidereMenuInflater;
import org.mariotaku.twidere.util.ThemeUtils;
public abstract class MenuDialogFragment extends BaseSupportDialogFragment implements OnItemClickListener {
@ -31,7 +32,7 @@ public abstract class MenuDialogFragment extends BaseSupportDialogFragment imple
final int themeRes, accentColor;
if (activity instanceof IThemedActivity) {
themeRes = ((IThemedActivity) activity).getThemeResourceId();
accentColor = ((IThemedActivity) activity).getThemeColor();
accentColor = ((IThemedActivity) activity).getOverrideAccentColor();
} else {
themeRes = ThemeUtils.getSettingsThemeResource(activity);
accentColor = ThemeUtils.getUserThemeColor(activity);
@ -49,7 +50,7 @@ public abstract class MenuDialogFragment extends BaseSupportDialogFragment imple
listView.setOnItemClickListener(this);
builder.setView(listView);
final Menu menu = MenuUtils.createMenu(context);
onCreateMenu(new MenuInflater(context), menu);
onCreateMenu(new TwidereMenuInflater(context), menu);
adapter.setMenu(menu);
return builder.create();
}
@ -66,6 +67,6 @@ public abstract class MenuDialogFragment extends BaseSupportDialogFragment imple
}
}
protected abstract void onCreateMenu(MenuInflater inflater, Menu menu);
protected abstract void onCreateMenu(TwidereMenuInflater inflater, Menu menu);
}

View File

@ -63,6 +63,7 @@ public class AccountsAdapter extends SimpleCursorAdapter implements Constants {
if (mDisplayProfileImage) {
mImageLoader.displayProfileImage(holder.profile_image, cursor.getString(mProfileImageIdx));
} else {
mImageLoader.cancelDisplayTask(holder.profile_image);
holder.profile_image.setImageResource(R.drawable.ic_profile_image_default);
}
final boolean isMultipleChoice = mChoiceMode == ListView.CHOICE_MODE_MULTIPLE

View File

@ -77,6 +77,7 @@ public class AccountsSpinnerAdapter extends ArrayAdapter<Account> {
if (mDisplayProfileImage) {
mImageLoader.displayProfileImage(icon, item.profile_image_url);
} else {
mImageLoader.cancelDisplayTask(icon);
icon.setImageResource(R.drawable.ic_profile_image_default);
}
} else {

View File

@ -217,6 +217,7 @@ public abstract class BaseParcelableActivitiesAdapter extends BaseArrayAdapter<P
view.setVisibility(View.VISIBLE);
mImageLoader.displayProfileImage(view, urls[i]);
} else {
mImageLoader.cancelDisplayTask(view);
view.setVisibility(View.GONE);
}
}

View File

@ -19,17 +19,6 @@
package org.mariotaku.twidere.adapter;
import static org.mariotaku.twidere.util.UserColorNicknameUtils.getUserColor;
import static org.mariotaku.twidere.util.UserColorNicknameUtils.getUserNickname;
import static org.mariotaku.twidere.util.Utils.configBaseCardAdapter;
import static org.mariotaku.twidere.util.Utils.findStatusInDatabases;
import static org.mariotaku.twidere.util.Utils.getAccountColor;
import static org.mariotaku.twidere.util.Utils.getCardHighlightColor;
import static org.mariotaku.twidere.util.Utils.getCardHighlightOptionInt;
import static org.mariotaku.twidere.util.Utils.isFiltered;
import static org.mariotaku.twidere.util.Utils.openImage;
import static org.mariotaku.twidere.util.Utils.openUserProfile;
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
@ -59,6 +48,17 @@ import org.mariotaku.twidere.view.iface.ICardItemView.OnOverflowIconClickListene
import java.util.Locale;
import static org.mariotaku.twidere.util.UserColorNicknameUtils.getUserColor;
import static org.mariotaku.twidere.util.UserColorNicknameUtils.getUserNickname;
import static org.mariotaku.twidere.util.Utils.configBaseCardAdapter;
import static org.mariotaku.twidere.util.Utils.findStatusInDatabases;
import static org.mariotaku.twidere.util.Utils.getAccountColor;
import static org.mariotaku.twidere.util.Utils.getCardHighlightColor;
import static org.mariotaku.twidere.util.Utils.getCardHighlightOptionInt;
import static org.mariotaku.twidere.util.Utils.isFiltered;
import static org.mariotaku.twidere.util.Utils.openImage;
import static org.mariotaku.twidere.util.Utils.openUserProfile;
public class CursorStatusesAdapter extends BaseCursorAdapter implements IStatusesAdapter<Cursor>, OnClickListener,
OnOverflowIconClickListener {
@ -118,9 +118,6 @@ public class CursorStatusesAdapter extends BaseCursorAdapter implements IStatuse
if (!showGap) {
// Clear images in prder to prevent images in recycled view shown.
holder.profile_image.setImageDrawable(null);
holder.my_profile_image.setImageDrawable(null);
holder.image_preview.setImageDrawable(null);
final TwidereLinkify linkify = getLinkify();
final boolean showAccountColor = isShowAccountColor();
@ -214,6 +211,8 @@ public class CursorStatusesAdapter extends BaseCursorAdapter implements IStatuse
holder.profile_image.setTag(position);
holder.my_profile_image.setTag(position);
} else {
mImageLoader.cancelDisplayTask(holder.profile_image);
mImageLoader.cancelDisplayTask(holder.my_profile_image);
holder.profile_image.setVisibility(View.GONE);
holder.my_profile_image.setVisibility(View.GONE);
}
@ -235,7 +234,13 @@ public class CursorStatusesAdapter extends BaseCursorAdapter implements IStatuse
final int count = medias.length;
holder.image_preview_count.setText(res.getQuantityString(R.plurals.N_medias, count, count));
holder.image_preview.setTag(position);
} else {
mImageLoader.cancelDisplayTask(holder.image_preview);
}
} else {
mImageLoader.cancelDisplayTask(holder.profile_image);
mImageLoader.cancelDisplayTask(holder.my_profile_image);
mImageLoader.cancelDisplayTask(holder.image_preview);
}
}

View File

@ -52,7 +52,7 @@ import org.mariotaku.twidere.view.holder.DirectMessageEntryViewHolder;
public class DirectMessageConversationEntriesAdapter extends BaseCursorAdapter implements IBaseCardAdapter,
OnClickListener {
private final ImageLoaderWrapper mLazyImageLoader;
private final ImageLoaderWrapper mImageLoader;
private final MultiSelectManager mMultiSelectManager;
private boolean mAnimationEnabled;
@ -70,7 +70,7 @@ public class DirectMessageConversationEntriesAdapter extends BaseCursorAdapter i
mPlainList = plainList;
final TwidereApplication app = TwidereApplication.getInstance(context);
mMultiSelectManager = app.getMultiSelectManager();
mLazyImageLoader = app.getImageLoaderWrapper();
mImageLoader = app.getImageLoaderWrapper();
configBaseCardAdapter(context, this);
}
@ -94,9 +94,6 @@ public class DirectMessageConversationEntriesAdapter extends BaseCursorAdapter i
holder.setAccountColor(getAccountColor(mContext, accountId));
}
// Clear images in prder to prevent images in recycled view shown.
holder.profile_image.setImageDrawable(null);
holder.setUserColor(getUserColor(mContext, conversationId));
holder.setTextSize(getTextSize());
@ -113,7 +110,9 @@ public class DirectMessageConversationEntriesAdapter extends BaseCursorAdapter i
if (displayProfileImage) {
holder.profile_image.setTag(position);
final String profile_image_url_string = cursor.getString(IDX_PROFILE_IMAGE_URL);
mLazyImageLoader.displayProfileImage(holder.profile_image, profile_image_url_string);
mImageLoader.displayProfileImage(holder.profile_image, profile_image_url_string);
} else {
mImageLoader.cancelDisplayTask(holder.profile_image);
}
if (position > mMaxAnimationPosition) {
if (mAnimationEnabled) {

View File

@ -19,12 +19,6 @@
package org.mariotaku.twidere.adapter;
import static org.mariotaku.twidere.util.Utils.configBaseCardAdapter;
import static org.mariotaku.twidere.util.Utils.findDirectMessageInDatabases;
import static org.mariotaku.twidere.util.Utils.formatToLongTimeString;
import static org.mariotaku.twidere.util.Utils.openImage;
import static org.mariotaku.twidere.util.Utils.openUserProfile;
import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
@ -45,6 +39,12 @@ import org.mariotaku.twidere.view.holder.DirectMessageConversationViewHolder;
import java.util.Locale;
import static org.mariotaku.twidere.util.Utils.configBaseCardAdapter;
import static org.mariotaku.twidere.util.Utils.findDirectMessageInDatabases;
import static org.mariotaku.twidere.util.Utils.formatToLongTimeString;
import static org.mariotaku.twidere.util.Utils.openImage;
import static org.mariotaku.twidere.util.Utils.openUserProfile;
public class DirectMessagesConversationAdapter extends BaseCursorAdapter implements IDirectMessagesAdapter,
OnClickListener {
private ScaleType mImagePreviewScaleType;
@ -83,10 +83,6 @@ public class DirectMessagesConversationAdapter extends BaseCursorAdapter impleme
final long timestamp = cursor.getLong(mIndices.message_timestamp);
final boolean is_outgoing = cursor.getInt(mIndices.is_outgoing) == 1;
// Clear images in prder to prevent images in recycled view shown.
holder.incoming_profile_image.setImageDrawable(null);
holder.outgoing_profile_image.setImageDrawable(null);
holder.incoming_message_container.setVisibility(is_outgoing ? View.GONE : View.VISIBLE);
holder.outgoing_message_container.setVisibility(is_outgoing ? View.VISIBLE : View.GONE);
holder.setTextSize(getTextSize());
@ -106,6 +102,9 @@ public class DirectMessagesConversationAdapter extends BaseCursorAdapter impleme
mImageLoader.displayProfileImage(holder.outgoing_profile_image, profile_image_url_string);
holder.incoming_profile_image.setTag(position);
holder.outgoing_profile_image.setTag(position);
} else {
mImageLoader.cancelDisplayTask(holder.incoming_profile_image);
mImageLoader.cancelDisplayTask(holder.outgoing_profile_image);
}
if (position > mMaxAnimationPosition) {
if (mAnimationEnabled) {
@ -117,9 +116,12 @@ public class DirectMessagesConversationAdapter extends BaseCursorAdapter impleme
holder.outgoing_item_menu.setTag(position);
if (firstMedia == null) {
mImageLoader.cancelDisplayTask(holder.incoming_image_preview);
mImageLoader.cancelDisplayTask(holder.outgoing_image_preview);
holder.outgoing_image_preview_container.setVisibility(View.GONE);
holder.incoming_image_preview_container.setVisibility(View.GONE);
} else if (is_outgoing) {
mImageLoader.cancelDisplayTask(holder.incoming_image_preview);
holder.outgoing_image_preview_container.setVisibility(View.VISIBLE);
holder.incoming_image_preview_container.setVisibility(View.GONE);
if (mImagePreviewScaleType != null) {
@ -132,6 +134,7 @@ public class DirectMessagesConversationAdapter extends BaseCursorAdapter impleme
}
holder.outgoing_image_preview.setTag(position);
} else {
mImageLoader.cancelDisplayTask(holder.outgoing_image_preview);
holder.outgoing_image_preview_container.setVisibility(View.GONE);
holder.incoming_image_preview_container.setVisibility(View.VISIBLE);
if (mImagePreviewScaleType != null) {

View File

@ -68,8 +68,11 @@ public class DraftsAdapter extends SimpleCursorAdapter {
holder.image_preview_container.setVisibility(TextUtils.isEmpty(mediaUri) ? View.GONE : View.VISIBLE);
if (mediaUri != null && !mediaUri.equals(mImageLoadingHandler.getLoadingUri(holder.image_preview))) {
mImageLoader.displayPreviewImage(holder.image_preview, mediaUri, mImageLoadingHandler);
}else {
mImageLoader.cancelDisplayTask(holder.image_preview);
}
} else {
mImageLoader.cancelDisplayTask(holder.image_preview);
holder.image_preview_container.setVisibility(View.GONE);
}
holder.content.drawEnd(getAccountColors(context, accountIds));

View File

@ -62,6 +62,7 @@ public class MediaPreviewAdapter extends ArrayAdapter<String> implements Constan
if (mIsPossiblySensitive && !mPreferences.getBoolean(KEY_DISPLAY_SENSITIVE_CONTENTS, false)) {
view.findViewById(R.id.image_preview_progress).setVisibility(View.GONE);
image_view.setBackgroundResource(R.drawable.image_preview_nsfw);
mImageLoader.cancelDisplayTask(image_view);
} else if (!link.equals(mImageLoadingHandler.getLoadingUri(image_view))) {
image_view.setBackgroundResource(0);
mImageLoader.displayPreviewImage(image_view, link, mImageLoadingHandler);

View File

@ -184,17 +184,12 @@ public class ParcelableStatusesAdapter extends BaseArrayAdapter<ParcelableStatus
holder.setDisplayProfileImage(isDisplayProfileImage());
holder.setCardHighlightOption(mCardHighlightOption);
final ImageLoaderWrapper loader = getImageLoader();
if (!showGap) {
final TwidereLinkify linkify = getLinkify();
final ImageLoaderWrapper loader = getImageLoader();
final int highlightOption = getLinkHighlightOption();
final boolean mShowAccountColor = isShowAccountColor();
// Clear images in prder to prevent images in recycled view shown.
holder.profile_image.setImageDrawable(null);
holder.my_profile_image.setImageDrawable(null);
holder.image_preview.setImageDrawable(null);
holder.setAccountColorEnabled(mShowAccountColor);
if (highlightOption != VALUE_LINK_HIGHLIGHT_OPTION_CODE_NONE) {
@ -259,6 +254,8 @@ public class ParcelableStatusesAdapter extends BaseArrayAdapter<ParcelableStatus
holder.profile_image.setTag(position);
holder.my_profile_image.setTag(position);
} else {
loader.cancelDisplayTask(holder.profile_image);
loader.cancelDisplayTask(holder.my_profile_image);
holder.profile_image.setVisibility(View.GONE);
holder.my_profile_image.setVisibility(View.GONE);
}
@ -280,7 +277,13 @@ public class ParcelableStatusesAdapter extends BaseArrayAdapter<ParcelableStatus
final int count = status.medias.length;
holder.image_preview_count.setText(res.getQuantityString(R.plurals.N_medias, count, count));
holder.image_preview.setTag(position);
} else {
loader.cancelDisplayTask(holder.image_preview);
}
} else {
loader.cancelDisplayTask(holder.profile_image);
loader.cancelDisplayTask(holder.my_profile_image);
loader.cancelDisplayTask(holder.image_preview);
}
if (position > mMaxAnimationPosition) {
if (mAnimationEnabled) {

View File

@ -19,11 +19,6 @@
package org.mariotaku.twidere.adapter;
import static org.mariotaku.twidere.util.Utils.configBaseCardAdapter;
import static org.mariotaku.twidere.util.Utils.getDisplayName;
import static org.mariotaku.twidere.util.Utils.getLocalizedNumber;
import static org.mariotaku.twidere.util.Utils.openUserProfile;
import android.app.Activity;
import android.content.Context;
import android.text.TextUtils;
@ -44,11 +39,16 @@ import org.mariotaku.twidere.view.iface.ICardItemView.OnOverflowIconClickListene
import java.util.List;
import java.util.Locale;
import static org.mariotaku.twidere.util.Utils.configBaseCardAdapter;
import static org.mariotaku.twidere.util.Utils.getDisplayName;
import static org.mariotaku.twidere.util.Utils.getLocalizedNumber;
import static org.mariotaku.twidere.util.Utils.openUserProfile;
public class ParcelableUserListsAdapter extends BaseArrayAdapter<ParcelableUserList> implements IBaseCardAdapter,
OnClickListener, OnOverflowIconClickListener {
private final Context mContext;
private final ImageLoaderWrapper mProfileImageLoader;
private final ImageLoaderWrapper mImageLoader;
private final MultiSelectManager mMultiSelectManager;
private final Locale mLocale;
@ -68,7 +68,7 @@ public class ParcelableUserListsAdapter extends BaseArrayAdapter<ParcelableUserL
mContext = context;
mLocale = context.getResources().getConfiguration().locale;
final TwidereApplication app = TwidereApplication.getInstance(context);
mProfileImageLoader = app.getImageLoaderWrapper();
mImageLoader = app.getImageLoaderWrapper();
mMultiSelectManager = app.getMultiSelectManager();
configBaseCardAdapter(context, this);
}
@ -101,8 +101,6 @@ public class ParcelableUserListsAdapter extends BaseArrayAdapter<ParcelableUserL
}
holder.position = position;
// Clear images in prder to prevent images in recycled view shown.
holder.profile_image.setImageDrawable(null);
final ParcelableUserList user_list = getItem(position);
final String display_name = getDisplayName(mContext, user_list.user_id, user_list.user_name,
@ -116,7 +114,9 @@ public class ParcelableUserListsAdapter extends BaseArrayAdapter<ParcelableUserL
holder.subscribers_count.setText(getLocalizedNumber(mLocale, user_list.subscribers_count));
holder.profile_image.setVisibility(isDisplayProfileImage() ? View.VISIBLE : View.GONE);
if (isDisplayProfileImage()) {
mProfileImageLoader.displayProfileImage(holder.profile_image, user_list.user_profile_image_url);
mImageLoader.displayProfileImage(holder.profile_image, user_list.user_profile_image_url);
} else {
mImageLoader.cancelDisplayTask(holder.profile_image);
}
holder.profile_image.setTag(position);
if (position > mMaxAnimationPosition) {

View File

@ -19,13 +19,6 @@
package org.mariotaku.twidere.adapter;
import static org.mariotaku.twidere.util.UserColorNicknameUtils.getUserColor;
import static org.mariotaku.twidere.util.UserColorNicknameUtils.getUserNickname;
import static org.mariotaku.twidere.util.Utils.configBaseCardAdapter;
import static org.mariotaku.twidere.util.Utils.getAccountColor;
import static org.mariotaku.twidere.util.Utils.getLocalizedNumber;
import static org.mariotaku.twidere.util.Utils.getUserTypeIconRes;
import android.content.Context;
import android.text.TextUtils;
import android.view.View;
@ -44,6 +37,13 @@ import org.mariotaku.twidere.view.iface.ICardItemView.OnOverflowIconClickListene
import java.util.List;
import java.util.Locale;
import static org.mariotaku.twidere.util.UserColorNicknameUtils.getUserColor;
import static org.mariotaku.twidere.util.UserColorNicknameUtils.getUserNickname;
import static org.mariotaku.twidere.util.Utils.configBaseCardAdapter;
import static org.mariotaku.twidere.util.Utils.getAccountColor;
import static org.mariotaku.twidere.util.Utils.getLocalizedNumber;
import static org.mariotaku.twidere.util.Utils.getUserTypeIconRes;
public class ParcelableUsersAdapter extends BaseArrayAdapter<ParcelableUser> implements IBaseCardAdapter,
OnOverflowIconClickListener {
@ -82,7 +82,7 @@ public class ParcelableUsersAdapter extends BaseArrayAdapter<ParcelableUser> imp
public View getView(final int position, final View convertView, final ViewGroup parent) {
final View view = super.getView(position, convertView, parent);
final Object tag = view.getTag();
UserViewHolder holder = null;
final UserViewHolder holder;
if (tag instanceof UserViewHolder) {
holder = (UserViewHolder) tag;
} else {
@ -95,8 +95,6 @@ public class ParcelableUsersAdapter extends BaseArrayAdapter<ParcelableUser> imp
view.setTag(holder);
}
// Clear images in prder to prevent images in recycled view shown.
holder.profile_image.setImageDrawable(null);
holder.position = position;
final ParcelableUser user = getItem(position);

View File

@ -19,9 +19,6 @@
package org.mariotaku.twidere.adapter;
import static org.mariotaku.twidere.util.Utils.configBaseAdapter;
import static org.mariotaku.twidere.util.Utils.getDisplayName;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
@ -35,16 +32,19 @@ import org.mariotaku.twidere.view.holder.TwoLineWithIconViewHolder;
import java.util.List;
import static org.mariotaku.twidere.util.Utils.configBaseAdapter;
import static org.mariotaku.twidere.util.Utils.getDisplayName;
public class SimpleParcelableUserListsAdapter extends BaseArrayAdapter<ParcelableUserList> implements IBaseAdapter {
private final Context mContext;
private final ImageLoaderWrapper mProfileImageLoader;
private final ImageLoaderWrapper mImageLoader;
public SimpleParcelableUserListsAdapter(final Context context) {
super(context, R.layout.list_item_two_line);
mContext = context;
final TwidereApplication app = TwidereApplication.getInstance(context);
mProfileImageLoader = app.getImageLoaderWrapper();
mImageLoader = app.getImageLoaderWrapper();
configBaseAdapter(context, this);
}
@ -79,7 +79,9 @@ public class SimpleParcelableUserListsAdapter extends BaseArrayAdapter<Parcelabl
holder.text2.setText(mContext.getString(R.string.created_by, display_name));
holder.icon.setVisibility(isDisplayProfileImage() ? View.VISIBLE : View.GONE);
if (isDisplayProfileImage()) {
mProfileImageLoader.displayProfileImage(holder.icon, user_list.user_profile_image_url);
mImageLoader.displayProfileImage(holder.icon, user_list.user_profile_image_url);
} else {
mImageLoader.cancelDisplayTask(holder.icon);
}
return view;
}

View File

@ -19,10 +19,6 @@
package org.mariotaku.twidere.adapter;
import static org.mariotaku.twidere.util.UserColorNicknameUtils.getUserNickname;
import static org.mariotaku.twidere.util.Utils.configBaseAdapter;
import static org.mariotaku.twidere.util.Utils.getUserTypeIconRes;
import android.content.Context;
import android.text.TextUtils;
import android.view.View;
@ -37,16 +33,20 @@ import org.mariotaku.twidere.view.holder.TwoLineWithIconViewHolder;
import java.util.List;
import static org.mariotaku.twidere.util.UserColorNicknameUtils.getUserNickname;
import static org.mariotaku.twidere.util.Utils.configBaseAdapter;
import static org.mariotaku.twidere.util.Utils.getUserTypeIconRes;
public class SimpleParcelableUsersAdapter extends BaseArrayAdapter<ParcelableUser> implements IBaseAdapter {
private final ImageLoaderWrapper mProfileImageLoader;
private final ImageLoaderWrapper mImageLoader;
private final Context mContext;
public SimpleParcelableUsersAdapter(final Context context) {
super(context, R.layout.list_item_two_line);
mContext = context;
final TwidereApplication app = TwidereApplication.getInstance(context);
mProfileImageLoader = app.getImageLoaderWrapper();
mImageLoader = app.getImageLoaderWrapper();
configBaseAdapter(context, this);
}
@ -67,9 +67,6 @@ public class SimpleParcelableUsersAdapter extends BaseArrayAdapter<ParcelableUse
view.setTag(holder);
}
// Clear images in prder to prevent images in recycled view shown.
holder.icon.setImageDrawable(null);
final ParcelableUser user = getItem(position);
holder.text1.setCompoundDrawablesWithIntrinsicBounds(0, 0,
@ -80,7 +77,9 @@ public class SimpleParcelableUsersAdapter extends BaseArrayAdapter<ParcelableUse
holder.text2.setText("@" + user.screen_name);
holder.icon.setVisibility(isDisplayProfileImage() ? View.VISIBLE : View.GONE);
if (isDisplayProfileImage()) {
mProfileImageLoader.displayProfileImage(holder.icon, user.profile_image_url);
mImageLoader.displayProfileImage(holder.icon, user.profile_image_url);
} else {
mImageLoader.cancelDisplayTask(holder.icon);
}
return view;
}

View File

@ -95,7 +95,7 @@ public class UserHashtagAutoCompleteAdapter extends SimpleCursorAdapter implemen
final int themeRes, accentColor;
if (context instanceof IThemedActivity) {
themeRes = ((IThemedActivity) context).getThemeResourceId();
accentColor = ((IThemedActivity) context).getThemeColor();
accentColor = ((IThemedActivity) context).getOverrideAccentColor();
} else {
themeRes = ThemeUtils.getThemeResource(context);
accentColor = ThemeUtils.getUserThemeColor(context);

View File

@ -19,14 +19,6 @@
package org.mariotaku.twidere.fragment;
import static org.mariotaku.twidere.util.CustomTabUtils.getConfiguraionMap;
import static org.mariotaku.twidere.util.CustomTabUtils.getTabIconDrawable;
import static org.mariotaku.twidere.util.CustomTabUtils.getTabIconObject;
import static org.mariotaku.twidere.util.CustomTabUtils.getTabTypeName;
import static org.mariotaku.twidere.util.CustomTabUtils.isTabAdded;
import static org.mariotaku.twidere.util.CustomTabUtils.isTabTypeValid;
import static org.mariotaku.twidere.util.Utils.getAccountIds;
import android.app.Activity;
import android.app.LoaderManager.LoaderCallbacks;
import android.content.ContentResolver;
@ -44,7 +36,6 @@ import android.text.TextUtils;
import android.view.ActionMode;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
@ -80,6 +71,14 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map.Entry;
import static org.mariotaku.twidere.util.CustomTabUtils.getConfiguraionMap;
import static org.mariotaku.twidere.util.CustomTabUtils.getTabIconDrawable;
import static org.mariotaku.twidere.util.CustomTabUtils.getTabIconObject;
import static org.mariotaku.twidere.util.CustomTabUtils.getTabTypeName;
import static org.mariotaku.twidere.util.CustomTabUtils.isTabAdded;
import static org.mariotaku.twidere.util.CustomTabUtils.isTabTypeValid;
import static org.mariotaku.twidere.util.Utils.getAccountIds;
public class CustomTabsFragment extends BaseListFragment implements LoaderCallbacks<Cursor>, Panes.Right,
MultiChoiceModeListener, DropListener {
@ -167,7 +166,7 @@ public class CustomTabsFragment extends BaseListFragment implements LoaderCallba
@Override
public boolean onCreateActionMode(final ActionMode mode, final Menu menu) {
new MenuInflater(getActivity()).inflate(R.menu.action_multi_select_items, menu);
new TwidereMenuInflater(getActivity()).inflate(R.menu.action_multi_select_items, menu);
return true;
}

View File

@ -36,7 +36,6 @@ import android.util.SparseBooleanArray;
import android.view.ActionMode;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
@ -104,7 +103,7 @@ public class HostMappingsListFragment extends BaseListFragment implements MultiC
@Override
public boolean onCreateActionMode(final ActionMode mode, final Menu menu) {
new MenuInflater(getActivity()).inflate(R.menu.action_multi_select_items, menu);
new TwidereMenuInflater(getActivity()).inflate(R.menu.action_multi_select_items, menu);
return true;
}

View File

@ -243,7 +243,7 @@ public class AccountsDrawerFragment extends BaseSupportListFragment implements L
break;
}
case MENU_SET_AS_DEFAULT: {
mPreferences.edit().putLong(KEY_DEFAULT_ACCOUNT_ID, account.account_id).commit();
mPreferences.edit().putLong(KEY_DEFAULT_ACCOUNT_ID, account.account_id).apply();
break;
}
case MENU_DELETE: {

View File

@ -2,9 +2,9 @@ package org.mariotaku.twidere.fragment.support;
import android.content.Context;
import android.view.Menu;
import android.view.MenuInflater;
import org.mariotaku.twidere.R;
import org.mariotaku.twidere.menu.TwidereMenuInflater;
import org.mariotaku.twidere.model.Account;
import org.mariotaku.twidere.model.Account.AccountWithCredentials;
import org.mariotaku.twidere.model.ParcelableUser;
@ -16,7 +16,7 @@ public class IncomingFriendshipsMenuDialogFragment extends UserMenuDialogFragmen
final Context context = getThemedContext();
final AccountWithCredentials account = Account.getAccountWithCredentials(context, user.account_id);
if (AccountWithCredentials.isOfficialCredentials(context, account)) {
final MenuInflater inflater = new MenuInflater(context);
final TwidereMenuInflater inflater = new TwidereMenuInflater(context);
inflater.inflate(R.menu.action_incoming_friendship, menu);
}
}

View File

@ -1,22 +1,22 @@
package org.mariotaku.twidere.fragment.support;
import static org.mariotaku.twidere.util.Utils.setMenuForStatus;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import org.mariotaku.twidere.R;
import org.mariotaku.twidere.activity.support.MenuDialogFragment;
import org.mariotaku.twidere.menu.TwidereMenuInflater;
import org.mariotaku.twidere.model.ParcelableStatus;
import org.mariotaku.twidere.util.Utils;
import static org.mariotaku.twidere.util.Utils.setMenuForStatus;
public class StatusMenuDialogFragment extends MenuDialogFragment {
@Override
protected void onCreateMenu(final MenuInflater inflater, final Menu menu) {
protected void onCreateMenu(final TwidereMenuInflater inflater, final Menu menu) {
inflater.inflate(R.menu.action_status, menu);
final SharedPreferences prefs = getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
final Bundle args = getArguments();

View File

@ -1,23 +1,23 @@
package org.mariotaku.twidere.fragment.support;
import static org.mariotaku.twidere.util.Utils.addIntentToMenu;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import org.mariotaku.twidere.R;
import org.mariotaku.twidere.activity.support.MenuDialogFragment;
import org.mariotaku.twidere.menu.TwidereMenuInflater;
import org.mariotaku.twidere.model.ParcelableUserList;
import org.mariotaku.twidere.util.Utils;
import static org.mariotaku.twidere.util.Utils.addIntentToMenu;
public class UserListMenuDialogFragment extends MenuDialogFragment {
@Override
protected void onCreateMenu(final MenuInflater inflater, final Menu menu) {
protected void onCreateMenu(final TwidereMenuInflater inflater, final Menu menu) {
final SharedPreferences prefs = getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
final Bundle args = getArguments();
final ParcelableUserList user = args.getParcelable(EXTRA_USER_LIST);

View File

@ -1,22 +1,22 @@
package org.mariotaku.twidere.fragment.support;
import static org.mariotaku.twidere.util.Utils.addIntentToMenu;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import org.mariotaku.twidere.activity.support.MenuDialogFragment;
import org.mariotaku.twidere.menu.TwidereMenuInflater;
import org.mariotaku.twidere.model.ParcelableUser;
import org.mariotaku.twidere.util.Utils;
import static org.mariotaku.twidere.util.Utils.addIntentToMenu;
public class UserMenuDialogFragment extends MenuDialogFragment {
@Override
protected void onCreateMenu(final MenuInflater inflater, final Menu menu) {
protected void onCreateMenu(final TwidereMenuInflater inflater, final Menu menu) {
final SharedPreferences prefs = getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
final Bundle args = getArguments();
final ParcelableUser user = args.getParcelable(EXTRA_USER);

View File

@ -27,6 +27,7 @@ import android.util.Xml;
import android.view.ActionProvider;
import android.view.InflateException;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
@ -48,7 +49,7 @@ import java.lang.reflect.Method;
* it only works with an XmlPullParser returned from a compiled resource (R.
* <em>something</em> file.)
*/
public class TwidereMenuInflater {
public class TwidereMenuInflater extends MenuInflater {
private static final String LOG_TAG = "MenuInflater";
/**
@ -96,6 +97,7 @@ public class TwidereMenuInflater {
* @see Activity#getMenuInflater()
*/
public TwidereMenuInflater(Context context, Object realOwner) {
super(context);
mContext = context;
mResources = context.getResources();
mRealOwner = realOwner;
@ -112,6 +114,7 @@ public class TwidereMenuInflater {
* @param menu The Menu to inflate into. The items and submenus will be
* added to this Menu.
*/
@Override
public void inflate(int menuRes, Menu menu) {
XmlResourceParser parser = null;
try {

View File

@ -107,7 +107,7 @@ public class AsyncTaskManager {
return false;
}
public boolean isExcuting(final int hashCode) {
public boolean isExecuting(final int hashCode) {
final ManagedAsyncTask<?, ?, ?> task = findTask(hashCode);
if (task != null && task.getStatus() == AsyncTask.Status.RUNNING) return true;
return false;

View File

@ -19,8 +19,6 @@
package org.mariotaku.twidere.util;
import static org.mariotaku.twidere.util.Utils.getBestBannerType;
import android.graphics.Bitmap;
import android.text.TextUtils;
import android.widget.ImageView;
@ -33,6 +31,8 @@ import org.mariotaku.twidere.Constants;
import org.mariotaku.twidere.R;
import org.mariotaku.twidere.util.imageloader.AccountExtra;
import static org.mariotaku.twidere.util.Utils.getBestBannerType;
public class ImageLoaderWrapper implements Constants {
private final ImageLoader mImageLoader;
@ -101,4 +101,8 @@ public class ImageLoaderWrapper implements Constants {
public void loadProfileImage(final String url, final ImageLoadingListener listener) {
mImageLoader.loadImage(url, mProfileImageDisplayOptions, listener);
}
public void cancelDisplayTask(ImageView imageView) {
mImageLoader.cancelDisplayTask(imageView);
}
}

View File

@ -19,11 +19,6 @@
package org.mariotaku.twidere.util;
import static org.mariotaku.twidere.util.ContentValuesCreator.makeFilterdUserContentValues;
import static org.mariotaku.twidere.util.Utils.getAccountScreenNames;
import static org.mariotaku.twidere.util.content.ContentResolverUtils.bulkDelete;
import static org.mariotaku.twidere.util.content.ContentResolverUtils.bulkInsert;
import android.annotation.SuppressLint;
import android.content.ContentResolver;
import android.content.ContentValues;
@ -31,19 +26,16 @@ import android.content.Intent;
import android.os.Bundle;
import android.view.ActionMode;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import com.twitter.Extractor;
import de.keyboardsurfer.android.widget.crouton.Crouton;
import de.keyboardsurfer.android.widget.crouton.CroutonStyle;
import org.mariotaku.twidere.Constants;
import org.mariotaku.twidere.R;
import org.mariotaku.twidere.activity.support.BaseSupportActivity;
import org.mariotaku.twidere.app.TwidereApplication;
import org.mariotaku.twidere.menu.AccountActionProvider;
import org.mariotaku.twidere.menu.TwidereMenuInflater;
import org.mariotaku.twidere.model.Account;
import org.mariotaku.twidere.model.ParcelableStatus;
import org.mariotaku.twidere.model.ParcelableUser;
@ -57,6 +49,14 @@ import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import de.keyboardsurfer.android.widget.crouton.Crouton;
import de.keyboardsurfer.android.widget.crouton.CroutonStyle;
import static org.mariotaku.twidere.util.ContentValuesCreator.makeFilterdUserContentValues;
import static org.mariotaku.twidere.util.Utils.getAccountScreenNames;
import static org.mariotaku.twidere.util.content.ContentResolverUtils.bulkDelete;
import static org.mariotaku.twidere.util.content.ContentResolverUtils.bulkInsert;
@SuppressLint("Registered")
public class MultiSelectEventHandler implements Constants, ActionMode.Callback, MultiSelectManager.Callback {
@ -195,7 +195,7 @@ public class MultiSelectEventHandler implements Constants, ActionMode.Callback,
@Override
public boolean onCreateActionMode(final ActionMode mode, final Menu menu) {
new MenuInflater(mActivity).inflate(R.menu.action_multi_select_contents, menu);
new TwidereMenuInflater(mActivity).inflate(R.menu.action_multi_select_contents, menu);
mAccountActionProvider = (AccountActionProvider) menu.findItem(MENU_SELECT_ACCOUNT).getActionProvider();
mAccountActionProvider.setAccountId(mMultiSelectManager.getFirstSelectAccountId());
return true;

View File

@ -23,7 +23,6 @@ import android.app.ActionBar;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Color;
@ -32,6 +31,7 @@ import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.os.Build;
import android.support.annotation.NonNull;
import android.text.TextPaint;
import android.text.TextUtils;
import android.util.AttributeSet;
@ -289,8 +289,8 @@ public class ThemeUtils implements Constants {
public static boolean getDarkActionBarOption(final Context context) {
if (context == null) return true;
final SharedPreferences pref = context.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
return pref == null || pref.getBoolean(KEY_THEME_DARK_ACTIONBAR, true);
final SharedPreferencesWrapper pref = getSharedPreferencesWrapper(context);
return pref.getBoolean(KEY_THEME_DARK_ACTIONBAR, true);
}
public static Context getDialogThemedContext(final Context context) {
@ -388,7 +388,7 @@ public class ThemeUtils implements Constants {
public static int getNoDisplayThemeResource(final Context context) {
if (context == null) return R.style.Theme_Twidere_Dark_NoDisplay;
final SharedPreferences pref = context.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
final SharedPreferencesWrapper pref = getSharedPreferencesWrapper(context);
final String theme = pref.getString(KEY_THEME, VALUE_THEME_NAME_TWIDERE);
if (VALUE_THEME_NAME_DARK.equals(theme)) return R.style.Theme_Twidere_Dark_NoDisplay;
return R.style.Theme_Twidere_Light_NoDisplay;
@ -396,8 +396,7 @@ public class ThemeUtils implements Constants {
public static Resources getResources(final Context context) {
if (context instanceof IThemedActivity) {
final Resources defRes = ((IThemedActivity) context).getDefaultResources();
return defRes;
return ((IThemedActivity) context).getDefaultResources();
}
return context.getResources();
}
@ -473,8 +472,7 @@ public class ThemeUtils implements Constants {
public static String getThemeBackgroundOption(final Context context) {
if (context == null) return VALUE_THEME_BACKGROUND_DEFAULT;
final SharedPreferences pref = context.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
if (pref == null) return VALUE_THEME_BACKGROUND_DEFAULT;
final SharedPreferencesWrapper pref = getSharedPreferencesWrapper(context);
return pref.getString(KEY_THEME_BACKGROUND, VALUE_THEME_BACKGROUND_DEFAULT);
}
@ -501,10 +499,10 @@ public class ThemeUtils implements Constants {
final int themeRes, accentColor;
if (context instanceof IThemedActivity) {
themeRes = ((IThemedActivity) context).getThemeResourceId();
accentColor = ((IThemedActivity) context).getThemeColor();
accentColor = ((IThemedActivity) context).getOverrideAccentColor();
} else {
themeRes = getSettingsThemeResource(context);
accentColor = getUserThemeColor(context);
accentColor = getUserThemeColor(context, themeRes);
}
return new TwidereContextThemeWrapper(context, getThemeResActionIcons(themeRes), accentColor);
}
@ -522,7 +520,7 @@ public class ThemeUtils implements Constants {
final int themeRes, accentColor;
if (context instanceof IThemedActivity) {
themeRes = ((IThemedActivity) context).getThemeResourceId();
accentColor = ((IThemedActivity) context).getThemeColor();
accentColor = ((IThemedActivity) context).getOverrideAccentColor();
} else {
themeRes = getSettingsThemeResource(context);
accentColor = getUserThemeColor(context);
@ -533,7 +531,7 @@ public class ThemeUtils implements Constants {
public static String getThemeFontFamily(final Context context) {
if (context == null) return VALUE_THEME_FONT_FAMILY_REGULAR;
final SharedPreferences pref = context.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
final SharedPreferencesWrapper pref = getSharedPreferencesWrapper(context);
final String fontFamily = pref.getString(KEY_THEME_FONT_FAMILY, VALUE_THEME_FONT_FAMILY_REGULAR);
if (!TextUtils.isEmpty(fontFamily)) return fontFamily;
return VALUE_THEME_FONT_FAMILY_REGULAR;
@ -550,10 +548,17 @@ public class ThemeUtils implements Constants {
}
}
@NonNull
private static SharedPreferencesWrapper getSharedPreferencesWrapper(Context context) {
final Context appContext = context.getApplicationContext();
return SharedPreferencesWrapper.getInstance(appContext, SHARED_PREFERENCES_NAME,
Context.MODE_PRIVATE);
}
public static String getThemeNameOption(final Context context) {
if (context == null) return VALUE_THEME_NAME_TWIDERE;
final SharedPreferences pref = context.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
return pref != null ? pref.getString(KEY_THEME, VALUE_THEME_NAME_TWIDERE) : VALUE_THEME_NAME_TWIDERE;
final SharedPreferencesWrapper pref = getSharedPreferencesWrapper(context);
return pref.getString(KEY_THEME, VALUE_THEME_NAME_TWIDERE);
}
public static int getThemeResActionIcons(final int baseThemeRes) {
@ -651,16 +656,23 @@ public class ThemeUtils implements Constants {
public static int getUserThemeBackgroundAlpha(final Context context) {
if (context == null) return DEFAULT_THEME_BACKGROUND_ALPHA;
final SharedPreferences pref = context.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
final SharedPreferencesWrapper pref = getSharedPreferencesWrapper(context);
return pref.getInt(KEY_THEME_BACKGROUND_ALPHA, DEFAULT_THEME_BACKGROUND_ALPHA);
}
public static int getUserThemeColor(final Context context) {
if (context == null) return Color.TRANSPARENT;
final Resources res = getResources(context);
final SharedPreferences pref = context.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
final SharedPreferencesWrapper pref = getSharedPreferencesWrapper(context);
final int def = res.getColor(android.R.color.holo_blue_light);
return pref != null ? pref.getInt(KEY_THEME_COLOR, def) : def;
return pref.getInt(KEY_THEME_COLOR, def);
}
public static int getUserThemeColor(final Context context, int themeRes) {
if (context == null) return Color.TRANSPARENT;
final int defThemeColor = getThemeColor(context, themeRes);
final SharedPreferencesWrapper pref = getSharedPreferencesWrapper(context);
return pref.getInt(KEY_THEME_COLOR, defThemeColor);
}
public static Typeface getUserTypeface(final Context context, final Typeface defTypeface) {
@ -943,4 +955,16 @@ public class ThemeUtils implements Constants {
public static Resources getThemedResourcesForActionIcons(Context context, int themeRes, int accentColor) {
return getThemedContextForActionIcons(context, themeRes, accentColor).getResources();
}
public static int getThemeColor(Context context, int themeResourceId) {
final Context appContext = context.getApplicationContext();
final Resources res = appContext.getResources();
final TypedArray a = appContext.obtainStyledAttributes(null,
new int[]{android.R.attr.colorActivatedHighlight}, 0, themeResourceId);
try {
return a.getColor(0, res.getColor(android.R.color.holo_blue_light));
} finally {
a.recycle();
}
}
}

View File

@ -19,9 +19,6 @@
package org.mariotaku.twidere.util.content;
import static org.mariotaku.twidere.util.Utils.trim;
import static org.mariotaku.twidere.util.content.DatabaseUpgradeHelper.safeUpgrade;
import android.content.ContentValues;
import android.content.Context;
import android.content.SharedPreferences;
@ -49,6 +46,9 @@ import org.mariotaku.twidere.util.TwidereQueryBuilder.DirectMessagesQueryBuilder
import java.util.HashMap;
import static org.mariotaku.twidere.util.Utils.trim;
import static org.mariotaku.twidere.util.content.DatabaseUpgradeHelper.safeUpgrade;
public final class TwidereSQLiteOpenHelper extends SQLiteOpenHelper implements Constants {
private final Context mContext;
@ -148,8 +148,11 @@ public final class TwidereSQLiteOpenHelper extends SQLiteOpenHelper implements C
true, null);
safeUpgrade(db, CachedTrends.Local.TABLE_NAME, CachedTrends.Local.COLUMNS, CachedTrends.Local.TYPES, true, null);
safeUpgrade(db, Tabs.TABLE_NAME, Tabs.COLUMNS, Tabs.TYPES, false, null);
db.beginTransaction();
db.execSQL(createDirectMessagesView().getSQL());
db.execSQL(createDirectMessageConversationEntriesView().getSQL());
db.setTransactionSuccessful();
db.endTransaction();
}
private static String createTable(final String tableName, final String[] columns, final String[] types,

View File

@ -26,11 +26,11 @@ public class WhiteDrawableInterceptor implements AccentResources.Interceptor {
@Override
public Drawable getDrawable(final Resources res, final AccentPalette palette, final int resId) {
if (resId == R.drawable.solid_pressed_white_intercepted)
if (resId == R.drawable.solid_white_pressed)
return new ColorDrawable(mAccentPalette.getAccentColor(PRESSED_ALPHA));
if (resId == R.drawable.solid_focused_white_intercepted)
if (resId == R.drawable.solid_white_focused)
return new ColorDrawable(mAccentPalette.getAccentColor(FOCUSED_ALPHA));
if (resId == R.drawable.rect_focused_background_white_intercepted) {
if (resId == R.drawable.rect_white_focused_background) {
final int backColor = mAccentPalette.getAccentColor(0x55);
final int borderColor = mAccentPalette.getAccentColor(0xAA);
return new RectDrawable(mResources, backColor, 2f, borderColor);

View File

@ -0,0 +1,26 @@
package org.mariotaku.twidere.view;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MenuInflater;
import org.mariotaku.menucomponent.widget.MenuBar;
import org.mariotaku.twidere.menu.TwidereMenuInflater;
/**
* Created by mariotaku on 14-7-29.
*/
public class TwidereMenuBar extends MenuBar {
public TwidereMenuBar(Context context) {
super(context);
}
public TwidereMenuBar(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public MenuInflater getMenuInflater() {
return new TwidereMenuInflater(getContext());
}
}

View File

@ -1,21 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2013 NEGU Soft
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/rect_focused_background_white_intercepted"/>
</layer-list>

View File

@ -1,28 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2013 NEGU Soft
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/transparent" android:state_window_focused="false"/>
<!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. -->
<item android:drawable="@color/ha__selector_disabled_light" android:state_enabled="false" android:state_focused="true" android:state_pressed="true"/>
<item android:drawable="@color/ha__selector_disabled_light" android:state_enabled="false" android:state_focused="true"/>
<item android:drawable="@drawable/list_selector_transition_white" android:state_focused="true" android:state_pressed="true"/>
<item android:drawable="@drawable/list_selector_transition_white" android:state_focused="false" android:state_pressed="true"/>
<item android:drawable="@drawable/focused_background_white" android:state_focused="true"/>
</selector>

View File

@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
<?xml version="1.0" encoding="utf-8"?><!--
Copyright 2013 NEGU Soft
Licensed under the Apache License, Version 2.0 (the "License");
@ -16,13 +15,13 @@
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/transparent" android:state_window_focused="false"/>
<item android:state_window_focused="false" android:drawable="@android:color/transparent" />
<!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. -->
<item android:drawable="@color/ha__selector_disabled" android:state_enabled="false" android:state_focused="true" android:state_pressed="true"/>
<item android:drawable="@color/ha__selector_disabled" android:state_enabled="false" android:state_focused="true"/>
<item android:drawable="@drawable/list_selector_transition_white" android:state_focused="true" android:state_pressed="true"/>
<item android:drawable="@drawable/list_selector_transition_white" android:state_focused="false" android:state_pressed="true"/>
<item android:drawable="@drawable/focused_background_white" android:state_focused="true"/>
<item android:state_focused="true" android:state_enabled="false" android:state_pressed="true" android:drawable="@color/ha__selector_disabled" />
<item android:state_focused="true" android:state_enabled="false" android:drawable="@color/ha__selector_disabled" />
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/list_selector_white_transition" />
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/list_selector_white_transition" />
<item android:state_focused="true" android:drawable="@drawable/rect_white_focused_background" />
</selector>

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2013 NEGU Soft
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false" android:drawable="@android:color/transparent" />
<!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. -->
<item android:state_focused="true" android:state_enabled="false" android:state_pressed="true" android:drawable="@color/ha__selector_disabled_light" />
<item android:state_focused="true" android:state_enabled="false" android:drawable="@color/ha__selector_disabled_light" />
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/ha__list_selector_transition" />
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/ha__list_selector_transition" />
<item android:state_focused="true" android:drawable="@drawable/ha__rect_focused_background" />
</selector>

View File

@ -16,7 +16,7 @@
-->
<transition xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/solid_pressed_white_intercepted"/>
<item android:drawable="@drawable/solid_focused_white_intercepted"/>
<item android:drawable="@drawable/solid_white_pressed"/>
<item android:drawable="@drawable/solid_white_focused"/>
</transition>

View File

@ -22,7 +22,7 @@
android:layout_height="wrap_content"
android:contentDescription="@string/send"
android:cropToPadding="false"
android:padding="@dimen/element_spacing_extra_small"
android:padding="@dimen/element_spacing_xsmall"
android:scaleType="centerCrop"
app:image="@drawable/ic_iconic_action_send" />

View File

@ -75,7 +75,7 @@
android:padding="2dp"
android:visibility="gone" />
<org.mariotaku.menucomponent.widget.MenuBar
<org.mariotaku.twidere.view.TwidereMenuBar
android:id="@+id/action_menu"
android:layout_width="wrap_content"
android:layout_height="match_parent"

View File

@ -28,7 +28,7 @@
android:layout_height="match_parent"
android:layout_weight="0">
<org.mariotaku.menucomponent.widget.MenuBar
<org.mariotaku.twidere.view.TwidereMenuBar
android:id="@+id/bottom_menu"
android:layout_width="wrap_content"
android:layout_height="match_parent"

View File

@ -1,4 +1,4 @@
<org.mariotaku.menucomponent.widget.MenuBar xmlns:android="http://schemas.android.com/apk/res/android"
<org.mariotaku.twidere.view.TwidereMenuBar xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/menu_bar"
style="?android:actionBarSplitStyle"
android:layout_width="match_parent"

View File

@ -1,4 +1,4 @@
<org.mariotaku.menucomponent.widget.MenuBar xmlns:android="http://schemas.android.com/apk/res/android"
<org.mariotaku.twidere.view.TwidereMenuBar xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/menu_bar"
style="?android:actionBarSplitStyle"
android:layout_width="match_parent"

View File

@ -2,7 +2,7 @@
<org.mariotaku.twidere.view.SquareRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:padding="@dimen/element_spacing_extra_small">
android:padding="@dimen/element_spacing_xsmall">
<org.mariotaku.twidere.view.ForegroundColorView
android:id="@+id/color"
@ -12,6 +12,6 @@
android:layout_alignParentTop="true"
android:background="?android:activatedBackgroundIndicator"
android:foreground="?android:selectableItemBackground"
android:padding="@dimen/element_spacing_extra_small"/>
android:padding="@dimen/element_spacing_xsmall"/>
</org.mariotaku.twidere.view.SquareRelativeLayout>

View File

@ -9,10 +9,10 @@
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentTop="true"
android:layout_margin="@dimen/element_spacing_extra_small"
android:layout_margin="@dimen/element_spacing_xsmall"
android:background="?android:activatedBackgroundIndicator"
android:foreground="?android:selectableItemBackground"
android:padding="@dimen/element_spacing_extra_small"/>
android:padding="@dimen/element_spacing_xsmall"/>
<!--
<org.mariotaku.twidere.view.ActivatedCheckBox
android:layout_width="wrap_content"

View File

@ -13,7 +13,7 @@
<View
android:layout_width="match_parent"
android:layout_height="@dimen/element_spacing_extra_small"
android:layout_height="@dimen/element_spacing_xsmall"
android:layout_above="@+id/profile_name_container"
android:background="@drawable/shadow_top"/>
<!--

View File

@ -1,8 +1,8 @@
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_header_title"
style="?android:attr/listSeparatorTextViewStyle"
android:layout_width="fill_parent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="2dip"
android:paddingLeft="5dip"
android:paddingTop="2dip"/>
android:paddingBottom="@dimen/element_spacing_xsmall"
android:paddingLeft="@dimen/element_spacing_small"
android:paddingTop="@dimen/element_spacing_xsmall" />

View File

@ -22,7 +22,7 @@
android:layout_alignTop="@+id/status_content"/>
</RelativeLayout>
<org.mariotaku.menucomponent.widget.MenuBar
<org.mariotaku.twidere.view.TwidereMenuBar
android:id="@+id/actionbar_split"
android:layout_width="match_parent"
android:layout_height="?android:actionBarSize"

View File

Before

Width:  |  Height:  |  Size: 172 B

After

Width:  |  Height:  |  Size: 172 B

View File

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@ -2,7 +2,7 @@
<resources>
<dimen name="element_size_default">48dp</dimen>
<dimen name="element_spacing_extra_small">2dp</dimen>
<dimen name="element_spacing_xsmall">2dp</dimen>
<dimen name="element_spacing_small">4dp</dimen>
<dimen name="element_spacing_normal">8dp</dimen>
<dimen name="element_spacing_large">16dp</dimen>

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="solid_pressed_white_intercepted" type="drawable"/>
<item name="solid_focused_white_intercepted" type="drawable"/>
<item name="rect_focused_background_white_intercepted" type="drawable"/>
<item name="solid_white_pressed" type="drawable"/>
<item name="solid_white_focused" type="drawable"/>
<item name="rect_white_focused_background" type="drawable"/>
</resources>

View File

@ -39,11 +39,20 @@
<!-- Card UI styles -->
<item name="cardItemBackground">@drawable/bg_card_item_dark</item>
<item name="cardItemBackgroundColor">#1a1a1a</item>
<item name="cardItemMessageIncomingBackground">@drawable/bg_card_item_message_incoming_dark</item>
<item name="cardItemMessageOutgoingBackground">@drawable/bg_card_item_message_outgoing_dark</item>
<item name="cardItemMessageProfileImageIncomingBackground">@drawable/bg_card_item_message_profile_image_incoming_dark</item>
<item name="cardItemMessageProfileImageOutgoingBackground">@drawable/bg_card_item_message_profile_image_outgoing_dark</item>
<item name="listMenuOverflowButton">@drawable/ic_list_menu_moreoverflow_normal_holo_dark</item>
<item name="cardItemMessageIncomingBackground">
@drawable/bg_card_item_message_incoming_dark
</item>
<item name="cardItemMessageOutgoingBackground">
@drawable/bg_card_item_message_outgoing_dark
</item>
<item name="cardItemMessageProfileImageIncomingBackground">
@drawable/bg_card_item_message_profile_image_incoming_dark
</item>
<item name="cardItemMessageProfileImageOutgoingBackground">
@drawable/bg_card_item_message_profile_image_outgoing_dark
</item>
<item name="listMenuOverflowButton">@drawable/ic_list_menu_moreoverflow_normal_holo_dark
</item>
<item name="cardItemViewStyle">@style/Widget.CardItemView</item>
</style>
@ -72,11 +81,20 @@
<!-- Card UI styles -->
<item name="cardItemBackground">@drawable/bg_card_item_light</item>
<item name="cardItemBackgroundColor">#f8f8f8</item>
<item name="cardItemMessageIncomingBackground">@drawable/bg_card_item_message_incoming_light</item>
<item name="cardItemMessageOutgoingBackground">@drawable/bg_card_item_message_outgoing_light</item>
<item name="cardItemMessageProfileImageIncomingBackground">@drawable/bg_card_item_message_profile_image_incoming_light</item>
<item name="cardItemMessageProfileImageOutgoingBackground">@drawable/bg_card_item_message_profile_image_outgoing_light</item>
<item name="listMenuOverflowButton">@drawable/ic_list_menu_moreoverflow_normal_holo_light</item>
<item name="cardItemMessageIncomingBackground">
@drawable/bg_card_item_message_incoming_light
</item>
<item name="cardItemMessageOutgoingBackground">
@drawable/bg_card_item_message_outgoing_light
</item>
<item name="cardItemMessageProfileImageIncomingBackground">
@drawable/bg_card_item_message_profile_image_incoming_light
</item>
<item name="cardItemMessageProfileImageOutgoingBackground">
@drawable/bg_card_item_message_profile_image_outgoing_light
</item>
<item name="listMenuOverflowButton">@drawable/ic_list_menu_moreoverflow_normal_holo_light
</item>
<item name="cardItemViewStyle">@style/Widget.CardItemView.Light</item>
</style>
@ -93,23 +111,35 @@
<item name="android:windowBackground">@color/bg_color_light</item>
<!-- ActionBar styles -->
<item name="android:actionBarStyle">@style/Widget.Twidere.ActionBar.Light.DarkActionBar</item>
<item name="android:actionBarStyle">@style/Widget.Twidere.ActionBar.Light.DarkActionBar
</item>
<item name="android:actionBarWidgetTheme">@style/Theme.Twidere.Dark</item>
<!-- Custom view styles -->
<item name="tabItemStyle">@style/Widget.TabPageIndicator.TabItem</item>
<item name="tabItemContentStyle">@style/Widget.TabPageIndicator.TabItem.Content</item>
<item name="tabItemTextStyle">@style/Widget.TabPageIndicator.TabItem.TextView.Light.DarkActionBar</item>
<item name="tabItemTextStyle">
@style/Widget.TabPageIndicator.TabItem.TextView.Light.DarkActionBar
</item>
<item name="staggeredGridViewStyle">@style/Widget.StaggeredGridView</item>
<!-- Card UI styles -->
<item name="cardItemBackground">@drawable/bg_card_item_light</item>
<item name="cardItemBackgroundColor">#f8f8f8</item>
<item name="cardItemMessageIncomingBackground">@drawable/bg_card_item_message_incoming_light</item>
<item name="cardItemMessageOutgoingBackground">@drawable/bg_card_item_message_outgoing_light</item>
<item name="cardItemMessageProfileImageIncomingBackground">@drawable/bg_card_item_message_profile_image_incoming_light</item>
<item name="cardItemMessageProfileImageOutgoingBackground">@drawable/bg_card_item_message_profile_image_outgoing_light</item>
<item name="listMenuOverflowButton">@drawable/ic_list_menu_moreoverflow_normal_holo_light</item>
<item name="cardItemMessageIncomingBackground">
@drawable/bg_card_item_message_incoming_light
</item>
<item name="cardItemMessageOutgoingBackground">
@drawable/bg_card_item_message_outgoing_light
</item>
<item name="cardItemMessageProfileImageIncomingBackground">
@drawable/bg_card_item_message_profile_image_incoming_light
</item>
<item name="cardItemMessageProfileImageOutgoingBackground">
@drawable/bg_card_item_message_profile_image_outgoing_light
</item>
<item name="listMenuOverflowButton">@drawable/ic_list_menu_moreoverflow_normal_holo_light
</item>
<item name="cardItemViewStyle">@style/Widget.CardItemView.Light</item>
</style>
@ -119,8 +149,9 @@
<!-- ActionBar styles -->
<item name="android:actionBarStyle">@style/Widget.Twidere.ActionBar.Colored</item>
<item name="android:actionBarWidgetTheme">@style/Theme.Twidere.ActionBar.Colored.Light</item>
<!--<item name="android:actionBarItemBackground">@drawable/list_selector_light_white</item>-->
<item name="android:actionBarWidgetTheme">@style/Theme.Twidere.ActionBar.Colored.Light
</item>
<item name="android:actionBarItemBackground">@drawable/list_selector_white_light</item>
</style>
<style name="Theme.Twidere.Colored.DarkActionBar" parent="Theme.Twidere.Light.DarkActionBar">
@ -128,7 +159,7 @@
<!-- ActionBar styles -->
<item name="android:actionBarStyle">@style/Widget.Twidere.ActionBar.Colored.Inverse</item>
<item name="android:actionBarWidgetTheme">@style/Theme.Twidere.ActionBar.Colored.Dark</item>
<!--<item name="android:actionBarItemBackground">@drawable/list_selector_white</item>-->
<item name="android:actionBarItemBackground">@drawable/list_selector_white</item>
</style>
<style name="Theme.Twidere.Colored.DarkActionBar.DarkIcon" />
@ -225,12 +256,12 @@
<style name="Theme.Twidere.ActionBar.Colored.Light" parent="Theme.Twidere.Light">
<item name="accentColor">@color/accent_white</item>
<!--<item name="android:actionBarItemBackground">@drawable/list_selector_light_white</item>-->
<item name="android:actionBarItemBackground">@drawable/list_selector_white_light</item>
</style>
<style name="Theme.Twidere.ActionBar.Colored.Dark" parent="Theme.Twidere.Dark">
<item name="accentColor">@color/accent_white</item>
<!--<item name="android:actionBarItemBackground">@drawable/list_selector_white</item>-->
<item name="android:actionBarItemBackground">@drawable/list_selector_white</item>
</style>
<style name="Theme.Twidere.Dark.Dialog" parent="android:Theme.Holo.Dialog">
@ -244,11 +275,20 @@
<!-- Card UI styles -->
<item name="cardItemBackground">@drawable/bg_card_item_dark</item>
<item name="cardItemBackgroundColor">#1a1a1a</item>
<item name="cardItemMessageIncomingBackground">@drawable/bg_card_item_message_incoming_dark</item>
<item name="cardItemMessageOutgoingBackground">@drawable/bg_card_item_message_outgoing_dark</item>
<item name="cardItemMessageProfileImageIncomingBackground">@drawable/bg_card_item_message_profile_image_incoming_dark</item>
<item name="cardItemMessageProfileImageOutgoingBackground">@drawable/bg_card_item_message_profile_image_outgoing_dark</item>
<item name="listMenuOverflowButton">@drawable/ic_list_menu_moreoverflow_normal_holo_dark</item>
<item name="cardItemMessageIncomingBackground">
@drawable/bg_card_item_message_incoming_dark
</item>
<item name="cardItemMessageOutgoingBackground">
@drawable/bg_card_item_message_outgoing_dark
</item>
<item name="cardItemMessageProfileImageIncomingBackground">
@drawable/bg_card_item_message_profile_image_incoming_dark
</item>
<item name="cardItemMessageProfileImageOutgoingBackground">
@drawable/bg_card_item_message_profile_image_outgoing_dark
</item>
<item name="listMenuOverflowButton">@drawable/ic_list_menu_moreoverflow_normal_holo_dark
</item>
<item name="cardItemViewStyle">@style/Widget.CardItemView</item>
</style>
@ -263,11 +303,20 @@
<!-- Card UI styles -->
<item name="cardItemBackground">@drawable/bg_card_item_light</item>
<item name="cardItemBackgroundColor">#f8f8f8</item>
<item name="cardItemMessageIncomingBackground">@drawable/bg_card_item_message_incoming_light</item>
<item name="cardItemMessageOutgoingBackground">@drawable/bg_card_item_message_outgoing_light</item>
<item name="cardItemMessageProfileImageIncomingBackground">@drawable/bg_card_item_message_profile_image_incoming_light</item>
<item name="cardItemMessageProfileImageOutgoingBackground">@drawable/bg_card_item_message_profile_image_outgoing_light</item>
<item name="listMenuOverflowButton">@drawable/ic_list_menu_moreoverflow_normal_holo_light</item>
<item name="cardItemMessageIncomingBackground">
@drawable/bg_card_item_message_incoming_light
</item>
<item name="cardItemMessageOutgoingBackground">
@drawable/bg_card_item_message_outgoing_light
</item>
<item name="cardItemMessageProfileImageIncomingBackground">
@drawable/bg_card_item_message_profile_image_incoming_light
</item>
<item name="cardItemMessageProfileImageOutgoingBackground">
@drawable/bg_card_item_message_profile_image_outgoing_light
</item>
<item name="listMenuOverflowButton">@drawable/ic_list_menu_moreoverflow_normal_holo_light
</item>
<item name="cardItemViewStyle">@style/Widget.CardItemView.Light</item>
</style>
@ -353,11 +402,20 @@
<!-- Card UI styles -->
<item name="cardItemBackground">@drawable/bg_card_item_dark</item>
<item name="cardItemBackgroundColor">#1a1a1a</item>
<item name="cardItemMessageIncomingBackground">@drawable/bg_card_item_message_incoming_dark</item>
<item name="cardItemMessageOutgoingBackground">@drawable/bg_card_item_message_outgoing_dark</item>
<item name="cardItemMessageProfileImageIncomingBackground">@drawable/bg_card_item_message_profile_image_incoming_dark</item>
<item name="cardItemMessageProfileImageOutgoingBackground">@drawable/bg_card_item_message_profile_image_outgoing_dark</item>
<item name="listMenuOverflowButton">@drawable/ic_list_menu_moreoverflow_normal_holo_dark</item>
<item name="cardItemMessageIncomingBackground">
@drawable/bg_card_item_message_incoming_dark
</item>
<item name="cardItemMessageOutgoingBackground">
@drawable/bg_card_item_message_outgoing_dark
</item>
<item name="cardItemMessageProfileImageIncomingBackground">
@drawable/bg_card_item_message_profile_image_incoming_dark
</item>
<item name="cardItemMessageProfileImageOutgoingBackground">
@drawable/bg_card_item_message_profile_image_outgoing_dark
</item>
<item name="listMenuOverflowButton">@drawable/ic_list_menu_moreoverflow_normal_holo_dark
</item>
<item name="cardItemViewStyle">@style/Widget.CardItemView</item>
</style>
@ -437,11 +495,20 @@
<!-- Card UI styles -->
<item name="cardItemBackground">@drawable/bg_card_item_dark</item>
<item name="cardItemBackgroundColor">#1a1a1a</item>
<item name="cardItemMessageIncomingBackground">@drawable/bg_card_item_message_incoming_dark</item>
<item name="cardItemMessageOutgoingBackground">@drawable/bg_card_item_message_outgoing_dark</item>
<item name="cardItemMessageProfileImageIncomingBackground">@drawable/bg_card_item_message_profile_image_incoming_dark</item>
<item name="cardItemMessageProfileImageOutgoingBackground">@drawable/bg_card_item_message_profile_image_outgoing_dark</item>
<item name="listMenuOverflowButton">@drawable/ic_list_menu_moreoverflow_normal_holo_dark</item>
<item name="cardItemMessageIncomingBackground">
@drawable/bg_card_item_message_incoming_dark
</item>
<item name="cardItemMessageOutgoingBackground">
@drawable/bg_card_item_message_outgoing_dark
</item>
<item name="cardItemMessageProfileImageIncomingBackground">
@drawable/bg_card_item_message_profile_image_incoming_dark
</item>
<item name="cardItemMessageProfileImageOutgoingBackground">
@drawable/bg_card_item_message_profile_image_outgoing_dark
</item>
<item name="listMenuOverflowButton">@drawable/ic_list_menu_moreoverflow_normal_holo_dark
</item>
<item name="cardItemViewStyle">@style/Widget.CardItemView</item>
</style>
@ -462,11 +529,20 @@
<!-- Card UI styles -->
<item name="cardItemBackground">@drawable/bg_card_item_light</item>
<item name="cardItemBackgroundColor">#f8f8f8</item>
<item name="cardItemMessageIncomingBackground">@drawable/bg_card_item_message_incoming_light</item>
<item name="cardItemMessageOutgoingBackground">@drawable/bg_card_item_message_outgoing_light</item>
<item name="cardItemMessageProfileImageIncomingBackground">@drawable/bg_card_item_message_profile_image_incoming_light</item>
<item name="cardItemMessageProfileImageOutgoingBackground">@drawable/bg_card_item_message_profile_image_outgoing_light</item>
<item name="listMenuOverflowButton">@drawable/ic_list_menu_moreoverflow_normal_holo_light</item>
<item name="cardItemMessageIncomingBackground">
@drawable/bg_card_item_message_incoming_light
</item>
<item name="cardItemMessageOutgoingBackground">
@drawable/bg_card_item_message_outgoing_light
</item>
<item name="cardItemMessageProfileImageIncomingBackground">
@drawable/bg_card_item_message_profile_image_incoming_light
</item>
<item name="cardItemMessageProfileImageOutgoingBackground">
@drawable/bg_card_item_message_profile_image_outgoing_light
</item>
<item name="listMenuOverflowButton">@drawable/ic_list_menu_moreoverflow_normal_holo_light
</item>
<item name="cardItemViewStyle">@style/Widget.CardItemView.Light</item>
</style>
@ -487,11 +563,20 @@
<!-- Card UI styles -->
<item name="cardItemBackground">@drawable/bg_card_item_light</item>
<item name="cardItemBackgroundColor">#f8f8f8</item>
<item name="cardItemMessageIncomingBackground">@drawable/bg_card_item_message_incoming_light</item>
<item name="cardItemMessageOutgoingBackground">@drawable/bg_card_item_message_outgoing_light</item>
<item name="cardItemMessageProfileImageIncomingBackground">@drawable/bg_card_item_message_profile_image_incoming_light</item>
<item name="cardItemMessageProfileImageOutgoingBackground">@drawable/bg_card_item_message_profile_image_outgoing_light</item>
<item name="listMenuOverflowButton">@drawable/ic_list_menu_moreoverflow_normal_holo_light</item>
<item name="cardItemMessageIncomingBackground">
@drawable/bg_card_item_message_incoming_light
</item>
<item name="cardItemMessageOutgoingBackground">
@drawable/bg_card_item_message_outgoing_light
</item>
<item name="cardItemMessageProfileImageIncomingBackground">
@drawable/bg_card_item_message_profile_image_incoming_light
</item>
<item name="cardItemMessageProfileImageOutgoingBackground">
@drawable/bg_card_item_message_profile_image_outgoing_light
</item>
<item name="listMenuOverflowButton">@drawable/ic_list_menu_moreoverflow_normal_holo_light
</item>
<item name="cardItemViewStyle">@style/Widget.CardItemView.Light</item>
</style>