added saved searches screen

improved theme
added twitter card in search results
This commit is contained in:
Mariotaku Lee 2015-04-18 17:54:20 +08:00
parent 9f75af1cf5
commit d4a8bbb7c0
19 changed files with 161 additions and 164 deletions

View File

@ -88,7 +88,9 @@ I started a crowdin project, so anyone can do something for Twidere. Visit this
**Donation methods**
PayPal & AliPay: "mariotaku.lee#gmail.com".replace("#", "@");
PayPal & AliPay: String.format("%s@%s", "mariotaku.lee", "gmail.com");
PayPal & AliPay: String.format("%s@%s", "pay", "uucky.me");
Bitcoin: 1FHAVAzge7cj1LfCTMfnLL49DgA3mVUCuW

View File

@ -1333,9 +1333,9 @@ final class TwitterImpl extends TwitterBaseImpl implements Twitter {
public QueryResult search(final Query query) throws TwitterException {
final String url = conf.getRestBaseURL() + ENDPOINT_SEARCH_TWEETS;
final String signUrl = conf.getSigningRestBaseURL() + ENDPOINT_SEARCH_TWEETS;
return factory.createQueryResult(get(url, signUrl,
query.asHttpParameterArray(INCLUDE_ENTITIES, INCLUDE_RTS, INCLUDE_REPLY_COUNT,
INCLUDE_DESCENDENT_REPLY_COUNT)), query);
final HttpParameter[] params = query.asHttpParameterArray(INCLUDE_ENTITIES, INCLUDE_RTS, INCLUDE_REPLY_COUNT,
INCLUDE_DESCENDENT_REPLY_COUNT, INCLUDE_MY_RETWEET, INCLUDE_CARDS, CARDS_PLATFORM);
return factory.createQueryResult(get(url, signUrl, params), query);
}
@Override

View File

@ -100,7 +100,7 @@ public interface User extends Comparable<User>, TwitterResponse, Serializable {
*
* @return the profile image url of the user
*/
String getProfileImageURL();
String getProfileImageUrl();
/**
* Returns the profile image url of the user, served over SSL

View File

@ -232,7 +232,7 @@ import static twitter4j.internal.util.InternalParseUtil.getRawString;
* {@inheritDoc}
*/
@Override
public String getProfileImageURL() {
public String getProfileImageUrl() {
return profileImageUrl;
}

View File

@ -224,7 +224,7 @@ public class HomeActivity extends BaseActionBarActivity implements OnClickListen
@Override
public void setControlBarOffset(float offset) {
mTabsContainer.setTranslationY(mTabColumns > 1 ? 1 : getControlBarHeight() * (offset - 1));
mTabsContainer.setTranslationY(mTabColumns > 1 ? 0 : getControlBarHeight() * (offset - 1));
final ViewGroup.LayoutParams lp = mActionsButton.getLayoutParams();
if (lp instanceof MarginLayoutParams) {
mActionsButton.setTranslationY((((MarginLayoutParams) lp).bottomMargin + mActionsButton.getHeight()) * (1 - offset));

View File

@ -206,7 +206,7 @@ public abstract class AbsActivitiesAdapter<Data> extends Adapter<ViewHolder> imp
}
@Override
public void onMediaClick(StatusViewHolder holder, ParcelableMedia media, int position) {
public void onMediaClick(StatusViewHolder holder, View view, ParcelableMedia media, int position) {
}

View File

@ -1,10 +1,7 @@
package org.mariotaku.twidere.adapter;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.FragmentActivity;
import android.support.v4.util.Pair;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView.ViewHolder;
import android.view.LayoutInflater;
@ -15,7 +12,6 @@ import org.mariotaku.twidere.Constants;
import org.mariotaku.twidere.R;
import org.mariotaku.twidere.adapter.iface.IStatusesAdapter;
import org.mariotaku.twidere.app.TwidereApplication;
import org.mariotaku.twidere.fragment.support.UserFragment;
import org.mariotaku.twidere.model.ParcelableMedia;
import org.mariotaku.twidere.model.ParcelableStatus;
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
@ -185,14 +181,14 @@ public abstract class AbsStatusesAdapter<D> extends LoadMoreSupportAdapter<ViewH
}
@Override
public void onMediaClick(StatusViewHolder holder, final ParcelableMedia media, int position) {
public void onMediaClick(StatusViewHolder holder, View view, final ParcelableMedia media, int position) {
if (mStatusAdapterListener == null) return;
mStatusAdapterListener.onMediaClick(holder, media, position);
mStatusAdapterListener.onMediaClick(holder, view, media, position);
}
@Override
public void onUserProfileClick(final StatusViewHolder holder, final int position) {
if (mStatusAdapterListener==null)return;
if (mStatusAdapterListener == null) return;
final ParcelableStatus status = getStatus(position);
if (status == null) return;
mStatusAdapterListener.onUserProfileClick(holder, status, position);
@ -301,7 +297,7 @@ public abstract class AbsStatusesAdapter<D> extends LoadMoreSupportAdapter<ViewH
public static interface StatusAdapterListener {
void onGapClick(GapViewHolder holder, int position);
void onMediaClick(StatusViewHolder holder, ParcelableMedia media, int position);
void onMediaClick(StatusViewHolder holder, View view, ParcelableMedia media, int position);
void onStatusActionClick(StatusViewHolder holder, int id, int position);

View File

@ -3,9 +3,11 @@ package org.mariotaku.twidere.fragment.support;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityOptionsCompat;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.Loader;
@ -242,12 +244,15 @@ public abstract class AbsStatusesFragment<Data> extends AbsContentListFragment<A
}
@Override
public void onMediaClick(StatusViewHolder holder, ParcelableMedia media, int position) {
public void onMediaClick(StatusViewHolder holder, View view, ParcelableMedia media, int position) {
final AbsStatusesAdapter<Data> adapter = getAdapter();
final ParcelableStatus status = adapter.getStatus(position);
if (status == null) return;
//TODO open media animation
Bundle options = null;
view.buildDrawingCache();
final Bitmap drawingCache = Bitmap.createBitmap(view.getDrawingCache());
final Bundle options = ActivityOptionsCompat.makeThumbnailScaleUpAnimation(view, drawingCache, 0, 0).toBundle();
view.destroyDrawingCache();
Utils.openMedia(getActivity(), status, media, options);
//spice
SpiceProfilingUtil.log(getActivity(),

View File

@ -87,7 +87,14 @@ public class FileSelectorDialogFragment extends BaseSupportDialogFragment implem
if (isPickDirectory() && a instanceof Callback) {
((Callback) a).onFilePicked(getCurrentDirectory());
}
dismiss();
// dismiss();
break;
}
case DialogInterface.BUTTON_NEGATIVE: {
final FragmentActivity a = getActivity();
if (a instanceof Callback) {
((Callback) a).onCancelled(this);
}
break;
}
}
@ -100,7 +107,7 @@ public class FileSelectorDialogFragment extends BaseSupportDialogFragment implem
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setAdapter(mAdapter, this);
builder.setTitle(R.string.pick_file);
builder.setNegativeButton(android.R.string.cancel, null);
builder.setNegativeButton(android.R.string.cancel, this);
if (isPickDirectory()) {
builder.setPositiveButton(android.R.string.ok, this);
}

View File

@ -26,6 +26,7 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.Point;
import android.graphics.Rect;
@ -37,6 +38,7 @@ import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityOptionsCompat;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
@ -107,8 +109,8 @@ import org.mariotaku.twidere.util.TwidereLinkify;
import org.mariotaku.twidere.util.TwitterCardUtils;
import org.mariotaku.twidere.util.UserColorNameUtils;
import org.mariotaku.twidere.util.Utils;
import org.mariotaku.twidere.view.CardMediaContainer.OnMediaClickListener;
import org.mariotaku.twidere.view.CardMediaContainer;
import org.mariotaku.twidere.view.CardMediaContainer.OnMediaClickListener;
import org.mariotaku.twidere.view.ColorLabelRelativeLayout;
import org.mariotaku.twidere.view.ForegroundColorView;
import org.mariotaku.twidere.view.ShapedImageView;
@ -292,11 +294,13 @@ public class StatusFragment extends BaseSupportFragment implements LoaderCallbac
}
@Override
public void onMediaClick(StatusViewHolder holder, ParcelableMedia media, int position) {
public void onMediaClick(StatusViewHolder holder, View view, ParcelableMedia media, int position) {
final ParcelableStatus status = mStatusAdapter.getStatus(position);
if (status == null) return;
//TODO open media animation
Bundle options = null;
view.buildDrawingCache();
final Bitmap drawingCache = Bitmap.createBitmap(view.getDrawingCache());
final Bundle options = ActivityOptionsCompat.makeThumbnailScaleUpAnimation(view, drawingCache, 0, 0).toBundle();
view.destroyDrawingCache();
Utils.openMedia(getActivity(), status, media, options);
SpiceProfilingUtil.log(getActivity(),
status.id + ",Clicked," + status.account_id + "," + status.user_id + "," + status.text_plain.length()
@ -380,8 +384,10 @@ public class StatusFragment extends BaseSupportFragment implements LoaderCallbac
public void onMediaClick(View view, ParcelableMedia media, long accountId) {
final ParcelableStatus status = mStatusAdapter.getStatus();
if (status == null) return;
//TODO open media animation
Bundle options = null;
view.buildDrawingCache();
final Bitmap drawingCache = Bitmap.createBitmap(view.getDrawingCache());
final Bundle options = ActivityOptionsCompat.makeThumbnailScaleUpAnimation(view, drawingCache, 0, 0).toBundle();
view.destroyDrawingCache();
Utils.openMediaDirectly(getActivity(), accountId, status, media, status.media, options);
//spice
SpiceProfilingUtil.log(getActivity(),
@ -397,7 +403,13 @@ public class StatusFragment extends BaseSupportFragment implements LoaderCallbac
private void addConversation(ParcelableStatus status, int position) {
mStatusAdapter.addConversation(status, position);
} @Override
}
private StatusAdapter getAdapter() {
return mStatusAdapter;
}
@Override
public Loader<SingleResponse<ParcelableStatus>> onCreateLoader(final int id, final Bundle args) {
final Bundle fragmentArgs = getArguments();
final long accountId = fragmentArgs.getLong(EXTRA_ACCOUNT_ID, -1);
@ -405,10 +417,6 @@ public class StatusFragment extends BaseSupportFragment implements LoaderCallbac
return new ParcelableStatusLoader(getActivity(), false, fragmentArgs, accountId, statusId);
}
private StatusAdapter getAdapter() {
return mStatusAdapter;
}
private DividerItemDecoration getItemDecoration() {
return mItemDecoration;
}
@ -476,29 +484,6 @@ public class StatusFragment extends BaseSupportFragment implements LoaderCallbac
}
}
//end
} @Override
public void onLoadFinished(final Loader<SingleResponse<ParcelableStatus>> loader,
final SingleResponse<ParcelableStatus> data) {
if (data.hasData()) {
final long itemId = mStatusAdapter.getItemId(mLayoutManager.findFirstVisibleItemPosition());
final View firstChild = mLayoutManager.getChildAt(0);
final int top = firstChild != null ? firstChild.getTop() : 0;
final ParcelableStatus status = data.getData();
if (mStatusAdapter.setStatus(status)) {
mLayoutManager.scrollToPositionWithOffset(1, 0);
mStatusAdapter.setConversation(null);
mStatusAdapter.setReplies(null);
loadReplies(status);
loadConversation(status);
} else {
final int position = mStatusAdapter.findPositionById(itemId);
mLayoutManager.scrollToPositionWithOffset(position, top);
}
setState(STATE_LOADED);
} else {
//TODO show errors
setState(STATE_ERROR);
}
}
private void restoreReadPosition(@Nullable Pair<Long, Integer> position) {
@ -524,6 +509,31 @@ public class StatusFragment extends BaseSupportFragment implements LoaderCallbac
return new Pair<>(itemId, positionView != null ? positionView.getTop() : -1);
}
@Override
public void onLoadFinished(final Loader<SingleResponse<ParcelableStatus>> loader,
final SingleResponse<ParcelableStatus> data) {
if (data.hasData()) {
final long itemId = mStatusAdapter.getItemId(mLayoutManager.findFirstVisibleItemPosition());
final View firstChild = mLayoutManager.getChildAt(0);
final int top = firstChild != null ? firstChild.getTop() : 0;
final ParcelableStatus status = data.getData();
if (mStatusAdapter.setStatus(status)) {
mLayoutManager.scrollToPositionWithOffset(1, 0);
mStatusAdapter.setConversation(null);
mStatusAdapter.setReplies(null);
loadReplies(status);
loadConversation(status);
} else {
final int position = mStatusAdapter.findPositionById(itemId);
mLayoutManager.scrollToPositionWithOffset(position, top);
}
setState(STATE_LOADED);
} else {
//TODO show errors
setState(STATE_ERROR);
}
}
private void setConversation(List<ParcelableStatus> data) {
final Pair<Long, Integer> readPosition = saveReadPosition();
mStatusAdapter.setConversation(data);
@ -865,22 +875,23 @@ public class StatusFragment extends BaseSupportFragment implements LoaderCallbac
mediaPreview.setStyle(adapter.getMediaPreviewStyle());
quoteTextView.setTextIsSelectable(true);
textView.setTextIsSelectable(true);
quoteTextView.setMovementMethod(StatusContentMovementMethod.getInstance());
textView.setMovementMethod(StatusContentMovementMethod.getInstance());
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
quoteTextView.setCustomSelectionActionModeCallback(new StatusActionModeCallback(quoteTextView, fragment, activity));
textView.setCustomSelectionActionModeCallback(new StatusActionModeCallback(textView, fragment, activity));
// }
quoteTextView.setCustomSelectionActionModeCallback(new StatusActionModeCallback(quoteTextView, activity));
textView.setCustomSelectionActionModeCallback(new StatusActionModeCallback(textView, activity));
}
private static class StatusActionModeCallback implements Callback {
private final TextView textView;
private final StatusFragment fragment;
private final FragmentActivity activity;
public StatusActionModeCallback(TextView textView, StatusFragment fragment, FragmentActivity activity) {
public StatusActionModeCallback(TextView textView, FragmentActivity activity) {
this.textView = textView;
this.fragment = fragment;
this.activity = activity;
}
@ -1388,9 +1399,9 @@ public class StatusFragment extends BaseSupportFragment implements LoaderCallbac
}
@Override
public void onMediaClick(StatusViewHolder holder, ParcelableMedia media, int position) {
public void onMediaClick(StatusViewHolder holder, View view, ParcelableMedia media, int position) {
if (mStatusAdapterListener != null) {
mStatusAdapterListener.onMediaClick(holder, media, position);
mStatusAdapterListener.onMediaClick(holder, view, media, position);
}
}
@ -1519,14 +1530,11 @@ public class StatusFragment extends BaseSupportFragment implements LoaderCallbac
}
@Override
public void onLoaderReset(final Loader<SingleResponse<ParcelableStatus>> loader) {
}
}

View File

@ -826,6 +826,7 @@ public class UserFragment extends BaseSupportFragment implements OnClickListener
}
MenuUtils.setMenuItemAvailability(menu, MENU_MENTION, !isMyself);
MenuUtils.setMenuItemAvailability(menu, R.id.incoming_friendships, isMyself);
MenuUtils.setMenuItemAvailability(menu, R.id.saved_searches, isMyself);
// final MenuItem followItem = menu.findItem(MENU_FOLLOW);
// followItem.setVisible(!isMyself);
// final boolean shouldShowFollowItem = !creatingFriendship && !destroyingFriendship && !isMyself
@ -1003,6 +1004,10 @@ public class UserFragment extends BaseSupportFragment implements OnClickListener
Utils.openUserMentions(getActivity(), user.account_id, user.screen_name);
return true;
}
case R.id.saved_searches: {
Utils.openSavedSearches(getActivity(), user.account_id);
return true;
}
default: {
if (item.getIntent() != null) {
try {

View File

@ -41,6 +41,7 @@ public class SettingsImportExportPreference extends DialogPreference {
public SettingsImportExportPreference(Context context, AttributeSet attrs) {
super(context, attrs);
setDialogTitle(null);
setPositiveButtonText(null);
setNegativeButtonText(null);
}

View File

@ -43,9 +43,6 @@ public class ThemeBackgroundPreference extends DialogPreference implements Const
public void onClick(DialogInterface dialog, int which) {
final String value = mBackgroundValues[which];
setValue(value);
// if (!VALUE_THEME_BACKGROUND_TRANSPARENT.equals(value)) {
// ThemeBackgroundPreference.this.onClick(dialog, DialogInterface.BUTTON_POSITIVE);
// }
}
};
@ -114,11 +111,6 @@ public class ThemeBackgroundPreference extends DialogPreference implements Const
return mValue;
}
@Override
public void onClick(DialogInterface dialog, int which) {
super.onClick(dialog, which);
}
public ThemeBackgroundPreference(Context context) {
this(context, null);
}

View File

@ -37,68 +37,67 @@ import android.widget.TextView;
*/
public class StatusContentMovementMethod extends ArrowKeyMovementMethod {
private static StatusContentMovementMethod sInstance;
private static StatusContentMovementMethod sInstance;
private static Object FROM_BELOW = new NoCopySpan.Concrete();
private static Object FROM_BELOW = new NoCopySpan.Concrete();
@Override
public void initialize(final TextView widget, final Spannable text) {
Selection.removeSelection(text);
text.removeSpan(FROM_BELOW);
}
@Override
public void initialize(final TextView widget, final Spannable text) {
Selection.removeSelection(text);
text.removeSpan(FROM_BELOW);
}
@Override
public void onTakeFocus(@NonNull final TextView view, @NonNull final Spannable text, final int dir) {
Selection.removeSelection(text);
@Override
public void onTakeFocus(@NonNull final TextView view, @NonNull final Spannable text, final int dir) {
Selection.removeSelection(text);
if ((dir & View.FOCUS_BACKWARD) != 0) {
text.setSpan(FROM_BELOW, 0, 0, Spannable.SPAN_POINT_POINT);
} else {
text.removeSpan(FROM_BELOW);
}
}
if ((dir & View.FOCUS_BACKWARD) != 0) {
text.setSpan(FROM_BELOW, 0, 0, Spannable.SPAN_POINT_POINT);
} else {
text.removeSpan(FROM_BELOW);
}
}
@Override
public boolean onTouchEvent(@NonNull final TextView widget, @NonNull final Spannable buffer, @NonNull final MotionEvent event) {
final int action = event.getAction();
@Override
public boolean onTouchEvent(@NonNull final TextView widget, @NonNull final Spannable buffer, @NonNull final MotionEvent event) {
final int action = event.getAction();
if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_DOWN) {
int x = (int) event.getX();
int y = (int) event.getY();
if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_DOWN) {
int x = (int) event.getX();
int y = (int) event.getY();
x -= widget.getTotalPaddingLeft();
y -= widget.getTotalPaddingTop();
x -= widget.getTotalPaddingLeft();
y -= widget.getTotalPaddingTop();
x += widget.getScrollX();
y += widget.getScrollY();
x += widget.getScrollX();
y += widget.getScrollY();
final Layout layout = widget.getLayout();
final int line = layout.getLineForVertical(y);
final int off = layout.getOffsetForHorizontal(line, x);
final Layout layout = widget.getLayout();
final int line = layout.getLineForVertical(y);
final int off = layout.getOffsetForHorizontal(line, x);
final ClickableSpan[] link = buffer.getSpans(off, off, ClickableSpan.class);
final ClickableSpan[] link = buffer.getSpans(off, off, ClickableSpan.class);
if (link.length != 0) {
if (action == MotionEvent.ACTION_UP) {
link[0].onClick(widget);
} else if (action == MotionEvent.ACTION_DOWN) {
Selection.setSelection(buffer, buffer.getSpanStart(link[0]), buffer.getSpanEnd(link[0]));
}
if (link.length != 0) {
if (action == MotionEvent.ACTION_UP) {
link[0].onClick(widget);
} else {
Selection.setSelection(buffer, buffer.getSpanStart(link[0]), buffer.getSpanEnd(link[0]));
}
return true;
} else {
Selection.removeSelection(buffer);
}
}
return true;
} else {
Selection.removeSelection(buffer);
}
}
return super.onTouchEvent(widget, buffer, event);
}
return super.onTouchEvent(widget, buffer, event);
}
public static MovementMethod getInstance() {
if (sInstance == null) {
sInstance = new StatusContentMovementMethod();
}
public static MovementMethod getInstance() {
if (sInstance == null) {
sInstance = new StatusContentMovementMethod();
}
return sInstance;
}
return sInstance;
}
}

View File

@ -33,8 +33,8 @@ import org.mariotaku.twidere.util.TwidereLinkify;
import org.mariotaku.twidere.util.TwitterCardUtils;
import org.mariotaku.twidere.util.UserColorNameUtils;
import org.mariotaku.twidere.util.Utils;
import org.mariotaku.twidere.view.CardMediaContainer.OnMediaClickListener;
import org.mariotaku.twidere.view.CardMediaContainer;
import org.mariotaku.twidere.view.CardMediaContainer.OnMediaClickListener;
import org.mariotaku.twidere.view.ForegroundColorView;
import org.mariotaku.twidere.view.ShapedImageView;
import org.mariotaku.twidere.view.ShortTimeView;
@ -576,7 +576,7 @@ public class StatusViewHolder extends ViewHolder implements Constants, OnClickLi
public void onMediaClick(View view, ParcelableMedia media, long accountId) {
if (statusClickListener == null) return;
final int position = getLayoutPosition();
statusClickListener.onMediaClick(this, media, position);
statusClickListener.onMediaClick(this, view, media, position);
}
public void setOnClickListeners() {
@ -651,7 +651,7 @@ public class StatusViewHolder extends ViewHolder implements Constants, OnClickLi
public static interface StatusClickListener extends ContentCardClickListener {
void onMediaClick(StatusViewHolder holder, ParcelableMedia media, int position);
void onMediaClick(StatusViewHolder holder, View view, ParcelableMedia media, int position);
void onStatusClick(StatusViewHolder holder, int position);
@ -835,7 +835,7 @@ public class StatusViewHolder extends ViewHolder implements Constants, OnClickLi
}
@Override
public void onMediaClick(StatusViewHolder holder, ParcelableMedia media, int position) {
public void onMediaClick(StatusViewHolder holder, View view, ParcelableMedia media, int position) {
}

View File

@ -36,6 +36,10 @@
android:id="@id/block"
android:icon="@drawable/ic_action_block"
android:title="@string/block"/>
<item
android:id="@id/report_spam"
android:icon="@drawable/ic_action_warning"
android:title="@string/report_for_spam"/>
<item
android:id="@+id/muted_users"
android:icon="@drawable/ic_action_mic_muted"
@ -53,9 +57,9 @@
android:icon="@drawable/ic_action_at"
android:title="@string/user_mentions"/>
<item
android:id="@id/report_spam"
android:icon="@drawable/ic_action_warning"
android:title="@string/report_for_spam"/>
android:id="@+id/saved_searches"
android:icon="@drawable/ic_action_search"
android:title="@string/saved_searches"/>
<item
android:id="@id/open_with_account"
android:icon="@drawable/ic_action_accounts"

View File

@ -83,11 +83,6 @@
<style name="Theme.Twidere.Dark.DialogWhenLarge" parent="Theme.Compat.Base.DialogWhenLarge">
<item name="windowActionBar">false</item>
<!-- Colors -->
<!--<item name="android:colorBackgroundCacheHint">@color/bg_color_dark</item>-->
<!-- Window attributes -->
<!--<item name="android:windowAnimationStyle">@style/Animation.Twidere.Activity</item>-->
<item name="android:windowBackground">@color/background_color_window_dark</item>
<!-- ActionBar styles -->
@ -111,18 +106,6 @@
<style name="Theme.Twidere.Light.DialogWhenLarge" parent="Theme.Compat.Base.Light.DialogWhenLarge">
<item name="windowActionBar">false</item>
<!-- Colors -->
<!--<item name="android:colorBackgroundCacheHint">@color/bg_color_light</item>-->
<!-- Window attributes -->
<!--<item name="android:windowAnimationStyle">@style/Animation.Twidere.Activity</item>-->
<!--<item name="android:windowBackground">@color/background_color_window_light</item>-->
<!-- ActionBar styles -->
<!--<item name="android:actionBarStyle">@style/Widget.Twidere.ActionBar.Light.DarkActionBar</item>-->
<!--<item name="android:actionBarWidgetTheme">@style/Theme.Twidere.Dark</item>-->
<!-- Custom view styles -->
<!-- Card UI styles -->
<item name="cardActionButtonStyle">@style/Widget.Light.CardActionButton</item>
@ -243,7 +226,6 @@
<style name="Theme.Twidere.Viewer" parent="Theme.AppCompat">
<!-- Window attributes -->
<!--<item name="android:windowAnimationStyle">@style/Animation.Twidere.Activity</item>-->
<item name="android:windowBackground">@color/bg_color_media_viewer</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:colorBackgroundCacheHint">@null</item>
@ -349,8 +331,6 @@
<!-- Colors -->
<!--<item name="android:colorBackgroundCacheHint">@color/bg_color_light</item>-->
<!-- Window attributes -->
<!--<item name="android:windowAnimationStyle">@style/Animation.Twidere.Activity</item>-->
<item name="android:windowBackground">@color/background_color_window_light</item>
<!-- Custom view styles -->

View File

@ -47,14 +47,12 @@
android:dependency="enable_proxy"
android:key="proxy_host"
android:singleLine="true"
android:summary="%s"
android:title="@string/proxy_host"/>
<org.mariotaku.twidere.preference.SummaryEditTextPreference
android:dependency="enable_proxy"
android:inputType="number"
android:key="proxy_port"
android:singleLine="true"
android:summary="%s"
android:title="@string/proxy_port"/>
</PreferenceCategory>
<PreferenceCategory
@ -68,21 +66,21 @@
</PreferenceCategory>
<PreferenceCategory
android:key="category_api"
android:key="category_tumbor"
android:title="@string/thumbor_integration">
<SwitchPreference
<org.mariotaku.twidere.preference.AutoFixCheckBoxPreference
android:defaultValue="false"
android:key="thumbor_enabled"
android:title="@string/thumbor_integration"/>
<org.mariotaku.twidere.preference.AutoFixEditTextPreference
<org.mariotaku.twidere.preference.SummaryEditTextPreference
android:dependency="thumbor_enabled"
android:inputType="textUri"
android:key="thumbor_address"
android:title="@string/server_address"/>
<org.mariotaku.twidere.preference.AutoFixEditTextPreference
<org.mariotaku.twidere.preference.SummaryEditTextPreference
android:dependency="thumbor_enabled"
android:inputType="textVisiblePassword"
android:key="thumbor_security_key"

View File

@ -33,6 +33,10 @@
android:key="compose_now_action"
android:title="@string/compose_now_action"/>
<Preference
android:fragment="org.mariotaku.twidere.fragment.KeyboardShortcutsFragment"
android:title="@string/keyboard_shortcuts"/>
<Preference
android:fragment="org.mariotaku.twidere.fragment.SettingsDetailsFragment"
android:key="data_profiling_settings"
@ -43,11 +47,7 @@
</Preference>
<org.mariotaku.twidere.preference.SettingsImportExportPreference
android:title="@string/import_export_settings"
android:key="import_export_settings"/>
<Preference
android:title="@string/keyboard_shortcuts"
android:fragment="org.mariotaku.twidere.fragment.KeyboardShortcutsFragment"/>
android:key="import_export_settings"
android:title="@string/import_export_settings"/>
</PreferenceScreen>