mirror of
https://github.com/TwidereProject/Twidere-Android
synced 2025-02-14 02:30:39 +01:00
added automatic bug report
This commit is contained in:
parent
d672aa89e5
commit
d247f1921e
@ -3,6 +3,7 @@ package org.mariotaku.simplerestapi;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.util.Pair;
|
||||
|
||||
import org.apache.commons.lang3.NotImplementedException;
|
||||
import org.mariotaku.simplerestapi.http.ValueMap;
|
||||
import org.mariotaku.simplerestapi.http.mime.BaseTypedData;
|
||||
import org.mariotaku.simplerestapi.http.mime.FormTypedBody;
|
||||
@ -280,7 +281,7 @@ public final class RestMethodInfo {
|
||||
|
||||
private static void checkMethod(RestMethod restMethod, Body body, HashMap<Form, Object> forms, HashMap<Part, Object> parts, FileValue file) {
|
||||
if (restMethod == null)
|
||||
throw new NullPointerException("Method must has annotation annotated with @RestMethod");
|
||||
throw new NotImplementedException("Method must has annotation annotated with @RestMethod");
|
||||
if (!restMethod.hasBody() && body != null) {
|
||||
throw new IllegalArgumentException(restMethod.value() + " does not allow body");
|
||||
}
|
||||
@ -363,7 +364,6 @@ public final class RestMethodInfo {
|
||||
}
|
||||
|
||||
|
||||
|
||||
public List<Pair<String, String>> getQueries() {
|
||||
return queries;
|
||||
}
|
||||
|
@ -94,6 +94,7 @@ dependencies {
|
||||
compile 'com.squareup:pollexor:2.0.2'
|
||||
compile 'org.apache.commons:commons-lang3:3.4'
|
||||
compile 'com.bluelinelabs:logansquare:1.0.6'
|
||||
compile 'ch.acra:acra:4.6.2'
|
||||
googleCompile 'com.google.android.gms:play-services-maps:7.0.0'
|
||||
googleCompile 'com.google.maps.android:android-maps-utils:0.3.4'
|
||||
fdroidCompile 'org.osmdroid:osmdroid-android:4.3'
|
||||
|
@ -164,7 +164,6 @@ public class HomeActivity extends BaseAppCompatActivity implements OnClickListen
|
||||
|
||||
private UpdateUnreadCountTask mUpdateUnreadCountTask;
|
||||
|
||||
private int mTabDisplayOption;
|
||||
private Toolbar mActionBar;
|
||||
|
||||
private OnSharedPreferenceChangeListener mReadStateChangeListener = new OnSharedPreferenceChangeListener() {
|
||||
@ -360,7 +359,7 @@ public class HomeActivity extends BaseAppCompatActivity implements OnClickListen
|
||||
setSupportActionBar(mActionBar);
|
||||
sendBroadcast(new Intent(BROADCAST_HOME_ACTIVITY_ONCREATE));
|
||||
final boolean refreshOnStart = mPreferences.getBoolean(KEY_REFRESH_ON_START, false);
|
||||
mTabDisplayOption = getTabDisplayOptionInt(this);
|
||||
int tabDisplayOptionInt = getTabDisplayOptionInt(this);
|
||||
|
||||
mTabColumns = getResources().getInteger(R.integer.default_tab_columns);
|
||||
|
||||
@ -371,12 +370,14 @@ public class HomeActivity extends BaseAppCompatActivity implements OnClickListen
|
||||
mTabIndicator.setViewPager(mViewPager);
|
||||
mTabIndicator.setOnPageChangeListener(this);
|
||||
mTabIndicator.setColumns(mTabColumns);
|
||||
if (mTabDisplayOption != 0) {
|
||||
mTabIndicator.setTabDisplayOption(mTabDisplayOption);
|
||||
} else {
|
||||
mTabIndicator.setTabDisplayOption(TabPagerIndicator.ICON);
|
||||
if (tabDisplayOptionInt == 0) {
|
||||
tabDisplayOptionInt = TabPagerIndicator.ICON;
|
||||
}
|
||||
mTabIndicator.setTabDisplayOption(tabDisplayOptionInt);
|
||||
mTabIndicator.setTabExpandEnabled((tabDisplayOptionInt & TabPagerIndicator.LABEL) == 0);
|
||||
mTabIndicator.setDisplayBadge(mPreferences.getBoolean(KEY_UNREAD_COUNT, true));
|
||||
mTabIndicator.updateAppearance();
|
||||
|
||||
mActionsButton.setOnClickListener(this);
|
||||
mActionsButton.setOnLongClickListener(this);
|
||||
mEmptyTabHint.setOnClickListener(this);
|
||||
@ -438,9 +439,6 @@ public class HomeActivity extends BaseAppCompatActivity implements OnClickListen
|
||||
resolver.registerContentObserver(Accounts.CONTENT_URI, true, mAccountChangeObserver);
|
||||
final Bus bus = TwidereApplication.getInstance(this).getMessageBus();
|
||||
bus.register(this);
|
||||
if (getTabDisplayOptionInt(this) != mTabDisplayOption) {
|
||||
restart();
|
||||
}
|
||||
// UCD
|
||||
ProfilingUtil.profile(this, ProfilingUtil.FILE_NAME_APP, "App onStart");
|
||||
// spice
|
||||
@ -876,6 +874,8 @@ public class HomeActivity extends BaseAppCompatActivity implements OnClickListen
|
||||
ThemeUtils.applyWindowBackground(this, mSlidingMenu.getContent(), getCurrentThemeResourceId(),
|
||||
getThemeBackgroundOption(), getCurrentThemeBackgroundAlpha());
|
||||
window.setBackgroundDrawable(new EmptyDrawable());
|
||||
|
||||
mSlidingMenu.addIgnoredView(mActionBarContainer);
|
||||
}
|
||||
|
||||
private void showDataProfilingRequest() {
|
||||
|
@ -43,6 +43,9 @@ import com.nostra13.universalimageloader.utils.L;
|
||||
import com.squareup.okhttp.internal.Network;
|
||||
import com.squareup.otto.Bus;
|
||||
|
||||
import org.acra.ACRA;
|
||||
import org.acra.annotation.ReportsCrashes;
|
||||
import org.acra.sender.HttpSender;
|
||||
import org.mariotaku.twidere.Constants;
|
||||
import org.mariotaku.twidere.activity.AssistLauncherActivity;
|
||||
import org.mariotaku.twidere.activity.MainActivity;
|
||||
@ -75,6 +78,11 @@ import static org.mariotaku.twidere.util.Utils.initAccountColor;
|
||||
import static org.mariotaku.twidere.util.Utils.startRefreshServiceIfNeeded;
|
||||
import static org.mariotaku.twidere.util.Utils.startUsageStatisticsServiceIfNeeded;
|
||||
|
||||
@ReportsCrashes(formUri = "https://mariotaku.cloudant.com/acra-twidere/_design/acra-storage/_update/report",
|
||||
reportType = HttpSender.Type.JSON,
|
||||
httpMethod = HttpSender.Method.PUT,
|
||||
formUriBasicAuthLogin = "membeentlyposedistderryb",
|
||||
formUriBasicAuthPassword = "oYETEB0KXUThmyXketa8V4XY")
|
||||
public class TwidereApplication extends MultiDexApplication implements Constants,
|
||||
OnSharedPreferenceChangeListener {
|
||||
|
||||
@ -223,6 +231,7 @@ public class TwidereApplication extends MultiDexApplication implements Constants
|
||||
StrictModeUtils.detectAllVmPolicy();
|
||||
}
|
||||
super.onCreate();
|
||||
initBugReport();
|
||||
mDefaultUserAgent = UserAgentUtils.getDefaultUserAgentString(this);
|
||||
mHandler = new Handler();
|
||||
mMessageBus = new Bus();
|
||||
@ -255,6 +264,10 @@ public class TwidereApplication extends MultiDexApplication implements Constants
|
||||
reloadConnectivitySettings();
|
||||
}
|
||||
|
||||
private void initBugReport() {
|
||||
ACRA.init(this);
|
||||
}
|
||||
|
||||
private void migrateUsageStatisticsPreferences() {
|
||||
final SharedPreferences preferences = getSharedPreferences();
|
||||
final boolean hasUsageStatistics = preferences.contains(KEY_USAGE_STATISTICS);
|
||||
|
@ -164,15 +164,15 @@ public abstract class AbsStatusesFragment<Data> extends AbsContentRecyclerViewFr
|
||||
final long lastReadId;
|
||||
final int lastVisiblePos, lastVisibleTop;
|
||||
final String tag = getCurrentReadPositionTag();
|
||||
final LinearLayoutManager mLayoutManager = getLayoutManager();
|
||||
final LinearLayoutManager layoutManager = getLayoutManager();
|
||||
if (readFromBottom) {
|
||||
lastVisiblePos = mLayoutManager.findLastVisibleItemPosition();
|
||||
lastVisiblePos = layoutManager.findLastVisibleItemPosition();
|
||||
} else {
|
||||
lastVisiblePos = mLayoutManager.findFirstVisibleItemPosition();
|
||||
lastVisiblePos = layoutManager.findFirstVisibleItemPosition();
|
||||
}
|
||||
if (lastVisiblePos != RecyclerView.NO_POSITION) {
|
||||
lastReadId = adapter.getStatusId(lastVisiblePos);
|
||||
final View positionView = mLayoutManager.findViewByPosition(lastVisiblePos);
|
||||
final View positionView = layoutManager.findViewByPosition(lastVisiblePos);
|
||||
lastVisibleTop = positionView != null ? positionView.getTop() : 0;
|
||||
} else if (rememberPosition && tag != null) {
|
||||
lastReadId = mReadStateManager.getPosition(tag);
|
||||
@ -193,7 +193,12 @@ public abstract class AbsStatusesFragment<Data> extends AbsContentRecyclerViewFr
|
||||
}
|
||||
}
|
||||
if (pos != -1 && adapter.isStatus(pos) && (readFromBottom || lastVisiblePos != 0)) {
|
||||
mLayoutManager.scrollToPositionWithOffset(pos, lastVisibleTop);
|
||||
if (layoutManager.getHeight() == 0) {
|
||||
// RecyclerView has not currently laid out, ignore padding.
|
||||
layoutManager.scrollToPositionWithOffset(pos, lastVisibleTop);
|
||||
} else {
|
||||
layoutManager.scrollToPositionWithOffset(pos, lastVisibleTop - layoutManager.getPaddingTop());
|
||||
}
|
||||
}
|
||||
}
|
||||
if (loader instanceof IExtendedLoader) {
|
||||
|
@ -73,6 +73,9 @@ import org.mariotaku.twidere.activity.support.ColorPickerDialogActivity;
|
||||
import org.mariotaku.twidere.adapter.AbsStatusesAdapter.StatusAdapterListener;
|
||||
import org.mariotaku.twidere.adapter.decorator.DividerItemDecoration;
|
||||
import org.mariotaku.twidere.adapter.iface.IStatusesAdapter;
|
||||
import org.mariotaku.twidere.api.twitter.Twitter;
|
||||
import org.mariotaku.twidere.api.twitter.TwitterException;
|
||||
import org.mariotaku.twidere.api.twitter.model.Paging;
|
||||
import org.mariotaku.twidere.app.TwidereApplication;
|
||||
import org.mariotaku.twidere.constant.IntentConstants;
|
||||
import org.mariotaku.twidere.loader.support.ParcelableStatusLoader;
|
||||
@ -121,9 +124,6 @@ import java.util.Locale;
|
||||
|
||||
import edu.tsinghua.spice.Utilies.SpiceProfilingUtil;
|
||||
import edu.tsinghua.spice.Utilies.TypeMappingUtil;
|
||||
import org.mariotaku.twidere.api.twitter.model.Paging;
|
||||
import org.mariotaku.twidere.api.twitter.Twitter;
|
||||
import org.mariotaku.twidere.api.twitter.TwitterException;
|
||||
|
||||
/**
|
||||
* Created by mariotaku on 14/12/5.
|
||||
@ -161,6 +161,7 @@ public class StatusFragment extends BaseSupportFragment implements LoaderCallbac
|
||||
private LoaderCallbacks<List<ParcelableStatus>> mRepliesLoaderCallback = new LoaderCallbacks<List<ParcelableStatus>>() {
|
||||
@Override
|
||||
public Loader<List<ParcelableStatus>> onCreateLoader(int id, Bundle args) {
|
||||
mStatusAdapter.updateItemDecoration();
|
||||
final long accountId = args.getLong(EXTRA_ACCOUNT_ID, -1);
|
||||
final String screenName = args.getString(EXTRA_SCREEN_NAME);
|
||||
final long statusId = args.getLong(EXTRA_STATUS_ID, -1);
|
||||
@ -170,12 +171,12 @@ public class StatusFragment extends BaseSupportFragment implements LoaderCallbac
|
||||
final StatusRepliesLoader loader = new StatusRepliesLoader(getActivity(), accountId,
|
||||
screenName, statusId, maxId, sinceId, null, null, 0, true);
|
||||
loader.setComparator(ParcelableStatus.REVERSE_ID_COMPARATOR);
|
||||
|
||||
return loader;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadFinished(Loader<List<ParcelableStatus>> loader, List<ParcelableStatus> data) {
|
||||
mStatusAdapter.updateItemDecoration();
|
||||
final Pair<Long, Integer> readPosition = saveReadPosition();
|
||||
setReplies(data);
|
||||
restoreReadPosition(readPosition);
|
||||
@ -1525,10 +1526,10 @@ public class StatusFragment extends BaseSupportFragment implements LoaderCallbac
|
||||
if (mRecyclerView == null) return;
|
||||
final DividerItemDecoration decoration = mFragment.getItemDecoration();
|
||||
decoration.setDecorationStart(0);
|
||||
if (isLoadMoreIndicatorVisible()) {
|
||||
decoration.setDecorationEndOffset(3);
|
||||
if (mReplies == null) {
|
||||
decoration.setDecorationEndOffset(2);
|
||||
} else {
|
||||
decoration.setDecorationEndOffset(mReplies != null && mReplies.size() > 0 ? 1 : 2);
|
||||
decoration.setDecorationEndOffset(1);
|
||||
}
|
||||
mRecyclerView.invalidateItemDecorations();
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ import org.mariotaku.twidere.api.twitter.model.Paging;
|
||||
import org.mariotaku.twidere.api.twitter.Twitter;
|
||||
import org.mariotaku.twidere.api.twitter.TwitterException;
|
||||
|
||||
public class ActivitiesAboutMeLoader extends Twitter4JActivitiesLoader {
|
||||
public class ActivitiesAboutMeLoader extends TwitterAPIActivitiesLoader {
|
||||
|
||||
public ActivitiesAboutMeLoader(final Context context, final long accountId, long sinceId,
|
||||
long maxId, final List<ParcelableActivity> data,
|
||||
|
@ -31,7 +31,7 @@ import org.mariotaku.twidere.api.twitter.model.Paging;
|
||||
import org.mariotaku.twidere.api.twitter.Twitter;
|
||||
import org.mariotaku.twidere.api.twitter.TwitterException;
|
||||
|
||||
public class ActivitiesByFriendsLoader extends Twitter4JActivitiesLoader {
|
||||
public class ActivitiesByFriendsLoader extends TwitterAPIActivitiesLoader {
|
||||
|
||||
|
||||
public ActivitiesByFriendsLoader(final Context context, final long accountId, long sinceId,
|
||||
|
@ -29,7 +29,7 @@ import java.util.List;
|
||||
|
||||
import org.mariotaku.twidere.api.twitter.model.CursorSupport;
|
||||
|
||||
public abstract class BaseCursorSupportUsersLoader extends Twitter4JUsersLoader
|
||||
public abstract class BaseCursorSupportUsersLoader extends TwitterAPIUsersLoader
|
||||
implements ICursorSupportLoader {
|
||||
|
||||
private final long mCursor;
|
||||
|
@ -20,6 +20,7 @@
|
||||
package org.mariotaku.twidere.loader.support;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.content.AsyncTaskLoader;
|
||||
|
||||
import org.mariotaku.twidere.Constants;
|
||||
@ -77,6 +78,7 @@ public abstract class ParcelableStatusesLoader extends AsyncTaskLoader<List<Parc
|
||||
return result;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
protected List<ParcelableStatus> getData() {
|
||||
return mData;
|
||||
}
|
||||
|
@ -27,17 +27,16 @@ import android.util.Pair;
|
||||
|
||||
import com.bluelinelabs.logansquare.LoganSquare;
|
||||
|
||||
import org.mariotaku.jsonserializer.JSONFileIO;
|
||||
import org.mariotaku.twidere.api.twitter.Twitter;
|
||||
import org.mariotaku.twidere.api.twitter.TwitterException;
|
||||
import org.mariotaku.twidere.api.twitter.model.Activity;
|
||||
import org.mariotaku.twidere.api.twitter.model.Paging;
|
||||
import org.mariotaku.twidere.model.ParcelableActivity;
|
||||
import org.mariotaku.twidere.util.LoganSquareWrapper;
|
||||
import org.mariotaku.twidere.util.TwitterAPIUtils;
|
||||
import org.mariotaku.twidere.util.Utils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
@ -48,7 +47,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
import static org.mariotaku.twidere.util.Utils.truncateActivities;
|
||||
|
||||
public abstract class Twitter4JActivitiesLoader extends ParcelableActivitiesLoader {
|
||||
public abstract class TwitterAPIActivitiesLoader extends ParcelableActivitiesLoader {
|
||||
|
||||
private final Context mContext;
|
||||
private final long mAccountIds;
|
||||
@ -56,9 +55,9 @@ public abstract class Twitter4JActivitiesLoader extends ParcelableActivitiesLoad
|
||||
private final Object[] mSavedStatusesFileArgs;
|
||||
private Comparator<ParcelableActivity> mComparator;
|
||||
|
||||
public Twitter4JActivitiesLoader(final Context context, final long accountId, final long sinceId,
|
||||
final long maxId, final List<ParcelableActivity> data, final String[] savedStatusesArgs,
|
||||
final int tabPosition) {
|
||||
public TwitterAPIActivitiesLoader(final Context context, final long accountId, final long sinceId,
|
||||
final long maxId, final List<ParcelableActivity> data, final String[] savedStatusesArgs,
|
||||
final int tabPosition) {
|
||||
super(context, data, tabPosition);
|
||||
mContext = context;
|
||||
mAccountIds = accountId;
|
||||
@ -151,10 +150,8 @@ public abstract class Twitter4JActivitiesLoader extends ParcelableActivitiesLoad
|
||||
|
||||
private List<ParcelableActivity> getCachedData(final File file) {
|
||||
if (file == null) return null;
|
||||
FileInputStream is = null;
|
||||
try {
|
||||
is = new FileInputStream(file);
|
||||
return LoganSquare.parseList(is, ParcelableActivity.class);
|
||||
return LoganSquareWrapper.parseList(file, ParcelableActivity.class);
|
||||
} catch (final IOException e) {
|
||||
if (Utils.isDebugBuild()) {
|
||||
Log.w(LOGTAG, e);
|
||||
@ -164,8 +161,6 @@ public abstract class Twitter4JActivitiesLoader extends ParcelableActivitiesLoad
|
||||
throw e;
|
||||
}
|
||||
Log.e(LOGTAG, "Error unserializing data", e);
|
||||
} finally {
|
||||
Utils.closeSilently(is);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -173,7 +168,7 @@ public abstract class Twitter4JActivitiesLoader extends ParcelableActivitiesLoad
|
||||
private File getSerializationFile() {
|
||||
if (mSavedStatusesFileArgs == null) return null;
|
||||
try {
|
||||
return JSONFileIO.getSerializationFile(mContext, mSavedStatusesFileArgs);
|
||||
return LoganSquareWrapper.getSerializationFile(mContext, mSavedStatusesFileArgs);
|
||||
} catch (final IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
@ -29,13 +29,16 @@ import android.util.Log;
|
||||
import com.bluelinelabs.logansquare.LoganSquare;
|
||||
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.mariotaku.jsonserializer.JSONFileIO;
|
||||
import org.mariotaku.twidere.api.twitter.Twitter;
|
||||
import org.mariotaku.twidere.api.twitter.TwitterException;
|
||||
import org.mariotaku.twidere.api.twitter.model.Paging;
|
||||
import org.mariotaku.twidere.api.twitter.model.Status;
|
||||
import org.mariotaku.twidere.app.TwidereApplication;
|
||||
import org.mariotaku.twidere.model.ParcelableStatus;
|
||||
import org.mariotaku.twidere.util.LoganSquareWrapper;
|
||||
import org.mariotaku.twidere.util.TwitterAPIUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
@ -44,12 +47,6 @@ import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
import org.mariotaku.twidere.api.twitter.model.Paging;
|
||||
import org.mariotaku.twidere.api.twitter.model.Status;
|
||||
import org.mariotaku.twidere.api.twitter.Twitter;
|
||||
import org.mariotaku.twidere.api.twitter.TwitterException;
|
||||
|
||||
import static org.mariotaku.twidere.util.TwitterAPIUtils.getTwitterInstance;
|
||||
import static org.mariotaku.twidere.util.Utils.truncateStatuses;
|
||||
|
||||
public abstract class TwitterAPIStatusesLoader extends ParcelableStatusesLoader {
|
||||
@ -75,7 +72,10 @@ public abstract class TwitterAPIStatusesLoader extends ParcelableStatusesLoader
|
||||
@Override
|
||||
public final List<ParcelableStatus> loadInBackground() {
|
||||
final File serializationFile = getSerializationFile();
|
||||
final List<ParcelableStatus> data = getData();
|
||||
List<ParcelableStatus> data = getData();
|
||||
if (data == null) {
|
||||
data = new CopyOnWriteArrayList<>();
|
||||
}
|
||||
if (isFirstLoad() && getTabPosition() >= 0 && serializationFile != null) {
|
||||
final List<ParcelableStatus> cached = getCachedData(serializationFile);
|
||||
if (cached != null) {
|
||||
@ -96,7 +96,7 @@ public abstract class TwitterAPIStatusesLoader extends ParcelableStatusesLoader
|
||||
final Context context = getContext();
|
||||
final SharedPreferences prefs = context.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
|
||||
final int loadItemLimit = prefs.getInt(KEY_LOAD_ITEM_LIMIT, DEFAULT_LOAD_ITEM_LIMIT);
|
||||
final boolean noItemsBefore = data == null || data.isEmpty();
|
||||
final boolean noItemsBefore = data.isEmpty();
|
||||
try {
|
||||
final Paging paging = new Paging();
|
||||
paging.setCount(loadItemLimit);
|
||||
@ -181,9 +181,9 @@ public abstract class TwitterAPIStatusesLoader extends ParcelableStatusesLoader
|
||||
private List<ParcelableStatus> getCachedData(final File file) {
|
||||
if (file == null) return null;
|
||||
try {
|
||||
return LoganSquare.parseList(new FileInputStream(file), ParcelableStatus.class);
|
||||
return LoganSquareWrapper.parseList(file, ParcelableStatus.class);
|
||||
} catch (final IOException e) {
|
||||
e.printStackTrace();
|
||||
Log.w(LOGTAG, e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -191,7 +191,7 @@ public abstract class TwitterAPIStatusesLoader extends ParcelableStatusesLoader
|
||||
private File getSerializationFile() {
|
||||
if (mSavedStatusesFileArgs == null) return null;
|
||||
try {
|
||||
return JSONFileIO.getSerializationFile(mContext, mSavedStatusesFileArgs);
|
||||
return LoganSquareWrapper.getSerializationFile(mContext, mSavedStatusesFileArgs);
|
||||
} catch (final IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
@ -33,13 +33,13 @@ import org.mariotaku.twidere.api.twitter.model.User;
|
||||
|
||||
import static org.mariotaku.twidere.util.TwitterAPIUtils.getTwitterInstance;
|
||||
|
||||
public abstract class Twitter4JUsersLoader extends ParcelableUsersLoader {
|
||||
public abstract class TwitterAPIUsersLoader extends ParcelableUsersLoader {
|
||||
|
||||
private final long mAccountId;
|
||||
|
||||
private final Context mContext;
|
||||
|
||||
public Twitter4JUsersLoader(final Context context, final long accountId, final List<ParcelableUser> data, boolean fromUser) {
|
||||
public TwitterAPIUsersLoader(final Context context, final long accountId, final List<ParcelableUser> data, boolean fromUser) {
|
||||
super(context, data, fromUser);
|
||||
mContext = context;
|
||||
mAccountId = accountId;
|
@ -30,7 +30,7 @@ import org.mariotaku.twidere.api.twitter.Twitter;
|
||||
import org.mariotaku.twidere.api.twitter.TwitterException;
|
||||
import org.mariotaku.twidere.api.twitter.model.User;
|
||||
|
||||
public class UserSearchLoader extends Twitter4JUsersLoader {
|
||||
public class UserSearchLoader extends TwitterAPIUsersLoader {
|
||||
|
||||
private final String mQuery;
|
||||
private final int mPage;
|
||||
|
@ -120,7 +120,6 @@ public class ThemePreviewPreference extends Preference implements Constants, OnS
|
||||
cardView.setCardBackgroundColor(cardBackgroundColor);
|
||||
|
||||
actionBarView.setTitle(R.string.app_name);
|
||||
// actionBarView.setTitleTextColor(ThemeUtils.getContrastActionBarTitleColor(context, themeId, accentColor));
|
||||
menuBar.setEnabled(false);
|
||||
final MenuInflater inflater = new SupportMenuInflater(context);
|
||||
inflater.inflate(R.menu.menu_status, menuBar.getMenu());
|
||||
|
@ -26,7 +26,6 @@ import android.util.Log;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import org.mariotaku.jsonserializer.JSONFileIO;
|
||||
import org.mariotaku.twidere.Constants;
|
||||
import org.mariotaku.twidere.annotation.Preference;
|
||||
import org.mariotaku.twidere.constant.SharedPreferenceConstants;
|
||||
@ -159,7 +158,7 @@ public class DataImportExportUtils implements Constants {
|
||||
@NonNull final ProcessStrategy strategy) throws IOException {
|
||||
final ZipEntry entry = zipFile.getEntry(entryName);
|
||||
if (entry == null) return;
|
||||
final JSONObject json = JSONFileIO.convertJSONObject(zipFile.getInputStream(entry));
|
||||
final JSONObject json = LoganSquareWrapper.convertJSONObject(zipFile.getInputStream(entry));
|
||||
final Iterator<String> keys = json.keys();
|
||||
final SharedPreferences preferences = context.getSharedPreferences(preferencesName, Context.MODE_PRIVATE);
|
||||
final SharedPreferences.Editor editor = preferences.edit();
|
||||
|
@ -1,21 +1,23 @@
|
||||
package org.mariotaku.jsonserializer;
|
||||
package org.mariotaku.twidere.util;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.bluelinelabs.logansquare.LoganSquare;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import org.mariotaku.twidere.util.TwidereArrayUtils;
|
||||
import org.mariotaku.twidere.util.Utils;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.List;
|
||||
|
||||
public class JSONFileIO {
|
||||
public class LoganSquareWrapper extends LoganSquare {
|
||||
|
||||
public static final String JSON_CACHE_DIR = "json_cache";
|
||||
|
||||
@ -28,6 +30,16 @@ public class JSONFileIO {
|
||||
}
|
||||
}
|
||||
|
||||
public static <E> List<E> parseList(File file, Class<E> jsonObjectClass) throws IOException {
|
||||
final FileInputStream is = new FileInputStream(file);
|
||||
//noinspection TryFinallyCanBeTryWithResources
|
||||
try {
|
||||
return LoganSquare.parseList(is, jsonObjectClass);
|
||||
} finally {
|
||||
is.close();
|
||||
}
|
||||
}
|
||||
|
||||
public static String convertString(final InputStream stream) throws IOException {
|
||||
if (stream == null) throw new FileNotFoundException();
|
||||
final BufferedReader reader = new BufferedReader(new InputStreamReader(stream, Charset.defaultCharset()));
|
@ -11,7 +11,6 @@ import com.squareup.okhttp.OkHttpClient;
|
||||
import com.squareup.okhttp.internal.Internal;
|
||||
|
||||
import org.mariotaku.simplerestapi.RestAPIFactory;
|
||||
import org.mariotaku.simplerestapi.RestMethod;
|
||||
import org.mariotaku.simplerestapi.RestMethodInfo;
|
||||
import org.mariotaku.simplerestapi.http.Authorization;
|
||||
import org.mariotaku.simplerestapi.http.Endpoint;
|
||||
|
@ -170,7 +170,6 @@ public class TabPagerIndicator extends RecyclerView implements PagerIndicator, C
|
||||
@DisplayOption
|
||||
public void setTabDisplayOption(int flags) {
|
||||
mOption = flags;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
private void dispatchTabClick(int position) {
|
||||
@ -249,7 +248,6 @@ public class TabPagerIndicator extends RecyclerView implements PagerIndicator, C
|
||||
|
||||
private void setHorizontalPadding(int padding) {
|
||||
mHorizontalPadding = padding;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
private void setTabShowDivider(boolean showDivider) {
|
||||
@ -262,7 +260,6 @@ public class TabPagerIndicator extends RecyclerView implements PagerIndicator, C
|
||||
|
||||
private void setVerticalPadding(int padding) {
|
||||
mVerticalPadding = padding;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@IntDef({ICON, LABEL, BOTH})
|
||||
|
@ -52,53 +52,48 @@
|
||||
android:contentDescription="@string/profile_image"
|
||||
android:scaleType="fitCenter" />
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/name_frame"
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/name_container"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignWithParentIfMissing="true"
|
||||
android:layout_gravity="start|center_vertical"
|
||||
android:layout_toEndOf="@id/profile_image"
|
||||
android:layout_toRightOf="@id/profile_image">
|
||||
android:layout_toRightOf="@id/profile_image"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
<org.mariotaku.twidere.view.HandleSpanClickTextView
|
||||
android:id="@+id/name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="start|center_vertical"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
android:singleLine="true"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:textStyle="bold"
|
||||
tools:text="List" />
|
||||
|
||||
<org.mariotaku.twidere.view.HandleSpanClickTextView
|
||||
android:id="@+id/name"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:singleLine="true"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<org.mariotaku.twidere.view.HandleSpanClickTextView
|
||||
android:id="@+id/created_by"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="4dp"
|
||||
android:paddingRight="4dp"
|
||||
android:singleLine="true"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textColor="?android:attr/textColorSecondary" />
|
||||
</LinearLayout>
|
||||
</FrameLayout>
|
||||
<org.mariotaku.twidere.view.HandleSpanClickTextView
|
||||
android:id="@+id/created_by"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
tools:text="Created by user" />
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/description"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignLeft="@id/name_frame"
|
||||
android:layout_alignStart="@id/name_frame"
|
||||
android:layout_below="@id/name_frame"
|
||||
android:layout_alignLeft="@id/name_container"
|
||||
android:layout_alignStart="@id/name_container"
|
||||
android:layout_below="@id/name_container"
|
||||
android:paddingTop="@dimen/element_spacing_small"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textColor="?android:attr/textColorSecondary" />
|
||||
|
@ -21,7 +21,7 @@
|
||||
<view xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
class="org.mariotaku.twidere.view.TabPagerIndicator$ItemLayout"
|
||||
android:layout_width="0dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?selectableItemBackground"
|
||||
tools:layout_height="?actionBarSize">
|
||||
|
@ -744,4 +744,6 @@
|
||||
<string name="invalid_list_name">Must start with a letter and can consist only letters, numbers, \"-\", or \"_\".</string>
|
||||
<string name="delete_conversation">Delete conversation</string>
|
||||
<string name="delete_conversation_confirm_message">Delete all messages of this conversation?</string>
|
||||
<string name="name_first_summary_on">Display name first</string>
|
||||
<string name="name_first_summary_off">Display @screenname first</string>
|
||||
</resources>
|
@ -13,6 +13,8 @@
|
||||
android:defaultValue="true"
|
||||
android:key="name_first"
|
||||
android:order="22"
|
||||
android:summaryOff="@string/name_first_summary_off"
|
||||
android:summaryOn="@string/name_first_summary_on"
|
||||
android:title="@string/name_first">
|
||||
<extra
|
||||
android:name="notify_change"
|
||||
|
Loading…
x
Reference in New Issue
Block a user