trying to fix NoDisplay theme crashes on Marshmallow
This commit is contained in:
parent
674202dbea
commit
3ef40e2e53
|
@ -47,7 +47,7 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
maven { url 'http://repo.commonsware.com.s3.amazonaws.com' }
|
maven { url 'https://repo.commonsware.com.s3.amazonaws.com' }
|
||||||
}
|
}
|
||||||
|
|
||||||
configurations {
|
configurations {
|
||||||
|
|
|
@ -32,6 +32,7 @@ public class CreateComposeShortcutActivity extends Activity implements Constants
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(final Bundle savedInstanceState) {
|
protected void onCreate(final Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
setVisible(true);
|
||||||
final Intent intent = new Intent();
|
final Intent intent = new Intent();
|
||||||
final Intent launch_intent = new Intent(INTENT_ACTION_COMPOSE);
|
final Intent launch_intent = new Intent(INTENT_ACTION_COMPOSE);
|
||||||
final ShortcutIconResource icon = Intent.ShortcutIconResource.fromContext(this, R.mipmap.ic_launcher);
|
final ShortcutIconResource icon = Intent.ShortcutIconResource.fromContext(this, R.mipmap.ic_launcher);
|
||||||
|
|
|
@ -45,6 +45,7 @@ public class MainActivity extends Activity implements Constants {
|
||||||
}
|
}
|
||||||
ThemeUtils.overrideActivityOpenAnimation(this);
|
ThemeUtils.overrideActivityOpenAnimation(this);
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
setVisible(true);
|
||||||
final Intent intent = new Intent(this, HomeActivity.class);
|
final Intent intent = new Intent(this, HomeActivity.class);
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
|
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
|
|
|
@ -33,6 +33,7 @@ public class UsageStatisticsActivity extends Activity implements Constants {
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
setVisible(true);
|
||||||
final Bundle fragmentArgs = new Bundle();
|
final Bundle fragmentArgs = new Bundle();
|
||||||
fragmentArgs.putInt(EXTRA_RESID, R.xml.preferences_usage_statistics);
|
fragmentArgs.putInt(EXTRA_RESID, R.xml.preferences_usage_statistics);
|
||||||
final Intent intent = new Intent(this, SettingsActivity.class);
|
final Intent intent = new Intent(this, SettingsActivity.class);
|
||||||
|
|
|
@ -29,50 +29,56 @@ import org.mariotaku.twidere.util.ThemeUtils;
|
||||||
|
|
||||||
public class ColorPickerDialogActivity extends BaseSupportDialogActivity implements Callback {
|
public class ColorPickerDialogActivity extends BaseSupportDialogActivity implements Callback {
|
||||||
|
|
||||||
public static final int RESULT_CLEARED = -2;
|
public static final int RESULT_CLEARED = -2;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getThemeResourceId() {
|
public int getThemeResourceId() {
|
||||||
return ThemeUtils.getNoDisplayThemeResource(this);
|
return ThemeUtils.getNoDisplayThemeResource(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCancelled() {
|
public void onCancelled() {
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onColorCleared() {
|
protected void onStart() {
|
||||||
setResult(RESULT_CLEARED);
|
super.onStart();
|
||||||
finish();
|
setVisible(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onColorSelected(final int color) {
|
public void onColorCleared() {
|
||||||
final Intent intent = new Intent();
|
setResult(RESULT_CLEARED);
|
||||||
intent.putExtra(EXTRA_COLOR, color);
|
finish();
|
||||||
setResult(RESULT_OK, intent);
|
}
|
||||||
finish();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDismissed() {
|
public void onColorSelected(final int color) {
|
||||||
finish();
|
final Intent intent = new Intent();
|
||||||
}
|
intent.putExtra(EXTRA_COLOR, color);
|
||||||
|
setResult(RESULT_OK, intent);
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(final Bundle savedInstanceState) {
|
public void onDismissed() {
|
||||||
super.onCreate(savedInstanceState);
|
finish();
|
||||||
if (savedInstanceState == null) {
|
}
|
||||||
final Intent intent = getIntent();
|
|
||||||
final ColorPickerDialogFragment f = new ColorPickerDialogFragment();
|
@Override
|
||||||
final Bundle args = new Bundle();
|
protected void onCreate(final Bundle savedInstanceState) {
|
||||||
args.putInt(EXTRA_COLOR, intent.getIntExtra(EXTRA_COLOR, Color.WHITE));
|
super.onCreate(savedInstanceState);
|
||||||
args.putBoolean(EXTRA_CLEAR_BUTTON, intent.getBooleanExtra(EXTRA_CLEAR_BUTTON, false));
|
if (savedInstanceState == null) {
|
||||||
args.putBoolean(EXTRA_ALPHA_SLIDER, intent.getBooleanExtra(EXTRA_ALPHA_SLIDER, true));
|
final Intent intent = getIntent();
|
||||||
f.setArguments(args);
|
final ColorPickerDialogFragment f = new ColorPickerDialogFragment();
|
||||||
f.show(getSupportFragmentManager(), "color_picker_dialog");
|
final Bundle args = new Bundle();
|
||||||
}
|
args.putInt(EXTRA_COLOR, intent.getIntExtra(EXTRA_COLOR, Color.WHITE));
|
||||||
}
|
args.putBoolean(EXTRA_CLEAR_BUTTON, intent.getBooleanExtra(EXTRA_CLEAR_BUTTON, false));
|
||||||
|
args.putBoolean(EXTRA_ALPHA_SLIDER, intent.getBooleanExtra(EXTRA_ALPHA_SLIDER, true));
|
||||||
|
f.setArguments(args);
|
||||||
|
f.show(getSupportFragmentManager(), "color_picker_dialog");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,9 +20,9 @@ import java.util.Date;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
public class DataExportActivity extends ThemedFragmentActivity implements FileSelectorDialogFragment.Callback,
|
public class DataExportActivity extends ThemedFragmentActivity implements FileSelectorDialogFragment.Callback,
|
||||||
DataExportImportTypeSelectorDialogFragment.Callback {
|
DataExportImportTypeSelectorDialogFragment.Callback {
|
||||||
|
|
||||||
private ExportSettingsTask mTask;
|
private ExportSettingsTask mTask;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getThemeColor() {
|
public int getThemeColor() {
|
||||||
|
@ -30,113 +30,119 @@ public class DataExportActivity extends ThemedFragmentActivity implements FileSe
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getThemeResourceId() {
|
public int getThemeResourceId() {
|
||||||
return ThemeUtils.getNoDisplayThemeResource(this);
|
return ThemeUtils.getNoDisplayThemeResource(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCancelled(final DialogFragment df) {
|
public void onCancelled(final DialogFragment df) {
|
||||||
if (!isFinishing()) {
|
if (!isFinishing()) {
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDismissed(final DialogFragment df) {
|
public void onDismissed(final DialogFragment df) {
|
||||||
if (df instanceof DataExportImportTypeSelectorDialogFragment) {
|
if (df instanceof DataExportImportTypeSelectorDialogFragment) {
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFilePicked(final File file) {
|
public void onFilePicked(final File file) {
|
||||||
if (file == null) {
|
if (file == null) {
|
||||||
finish();
|
finish();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final DialogFragment df = new DataExportImportTypeSelectorDialogFragment();
|
final DialogFragment df = new DataExportImportTypeSelectorDialogFragment();
|
||||||
final Bundle args = new Bundle();
|
final Bundle args = new Bundle();
|
||||||
args.putString(EXTRA_PATH, file.getAbsolutePath());
|
args.putString(EXTRA_PATH, file.getAbsolutePath());
|
||||||
args.putString(EXTRA_TITLE, getString(R.string.export_settings_type_dialog_title));
|
args.putString(EXTRA_TITLE, getString(R.string.export_settings_type_dialog_title));
|
||||||
df.setArguments(args);
|
df.setArguments(args);
|
||||||
df.show(getSupportFragmentManager(), "select_export_type");
|
df.show(getSupportFragmentManager(), "select_export_type");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPositiveButtonClicked(final String path, final int flags) {
|
public void onPositiveButtonClicked(final String path, final int flags) {
|
||||||
if (path == null || flags == 0) {
|
if (path == null || flags == 0) {
|
||||||
finish();
|
finish();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (mTask == null || mTask.getStatus() != AsyncTask.Status.RUNNING) {
|
if (mTask == null || mTask.getStatus() != AsyncTask.Status.RUNNING) {
|
||||||
mTask = new ExportSettingsTask(this, path, flags);
|
mTask = new ExportSettingsTask(this, path, flags);
|
||||||
mTask.execute();
|
mTask.execute();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(final Bundle savedInstanceState) {
|
protected void onStart() {
|
||||||
super.onCreate(savedInstanceState);
|
super.onStart();
|
||||||
if (savedInstanceState == null) {
|
setVisible(true);
|
||||||
final File extStorage = Environment.getExternalStorageDirectory();
|
}
|
||||||
final String storagePath = extStorage != null ? extStorage.getAbsolutePath() : "/";
|
|
||||||
final FileSelectorDialogFragment f = new FileSelectorDialogFragment();
|
|
||||||
final Bundle args = new Bundle();
|
|
||||||
args.putString(EXTRA_ACTION, INTENT_ACTION_PICK_DIRECTORY);
|
|
||||||
args.putString(EXTRA_PATH, storagePath);
|
|
||||||
f.setArguments(args);
|
|
||||||
f.show(getSupportFragmentManager(), "select_file");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static class ExportSettingsTask extends AsyncTask<Object, Object, Boolean> {
|
@Override
|
||||||
private static final String FRAGMENT_TAG = "import_settings_dialog";
|
protected void onCreate(final Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
if (savedInstanceState == null) {
|
||||||
|
final File extStorage = Environment.getExternalStorageDirectory();
|
||||||
|
final String storagePath = extStorage != null ? extStorage.getAbsolutePath() : "/";
|
||||||
|
final FileSelectorDialogFragment f = new FileSelectorDialogFragment();
|
||||||
|
final Bundle args = new Bundle();
|
||||||
|
args.putString(EXTRA_ACTION, INTENT_ACTION_PICK_DIRECTORY);
|
||||||
|
args.putString(EXTRA_PATH, storagePath);
|
||||||
|
f.setArguments(args);
|
||||||
|
f.show(getSupportFragmentManager(), "select_file");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private final DataExportActivity mActivity;
|
static class ExportSettingsTask extends AsyncTask<Object, Object, Boolean> {
|
||||||
private final String mPath;
|
private static final String FRAGMENT_TAG = "import_settings_dialog";
|
||||||
private final int mFlags;
|
|
||||||
|
|
||||||
ExportSettingsTask(final DataExportActivity activity, final String path, final int flags) {
|
private final DataExportActivity mActivity;
|
||||||
mActivity = activity;
|
private final String mPath;
|
||||||
mPath = path;
|
private final int mFlags;
|
||||||
mFlags = flags;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
ExportSettingsTask(final DataExportActivity activity, final String path, final int flags) {
|
||||||
protected Boolean doInBackground(final Object... params) {
|
mActivity = activity;
|
||||||
if (mPath == null) return false;
|
mPath = path;
|
||||||
final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss", Locale.US);
|
mFlags = flags;
|
||||||
final String fileName = String.format("Twidere_Settings_%s.zip", sdf.format(new Date()));
|
}
|
||||||
final File file = new File(mPath, fileName);
|
|
||||||
file.delete();
|
|
||||||
try {
|
|
||||||
DataImportExportUtils.exportData(mActivity, file, mFlags);
|
|
||||||
return true;
|
|
||||||
} catch (final IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(final Boolean result) {
|
protected Boolean doInBackground(final Object... params) {
|
||||||
final FragmentManager fm = mActivity.getSupportFragmentManager();
|
if (mPath == null) return false;
|
||||||
final DialogFragment f = (DialogFragment) fm.findFragmentByTag(FRAGMENT_TAG);
|
final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss", Locale.US);
|
||||||
if (f != null) {
|
final String fileName = String.format("Twidere_Settings_%s.zip", sdf.format(new Date()));
|
||||||
f.dismiss();
|
final File file = new File(mPath, fileName);
|
||||||
}
|
file.delete();
|
||||||
if (result != null && result) {
|
try {
|
||||||
mActivity.setResult(RESULT_OK);
|
DataImportExportUtils.exportData(mActivity, file, mFlags);
|
||||||
} else {
|
return true;
|
||||||
mActivity.setResult(RESULT_CANCELED);
|
} catch (final IOException e) {
|
||||||
}
|
e.printStackTrace();
|
||||||
mActivity.finish();
|
}
|
||||||
}
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPreExecute() {
|
protected void onPostExecute(final Boolean result) {
|
||||||
ProgressDialogFragment.show(mActivity, FRAGMENT_TAG).setCancelable(false);
|
final FragmentManager fm = mActivity.getSupportFragmentManager();
|
||||||
}
|
final DialogFragment f = (DialogFragment) fm.findFragmentByTag(FRAGMENT_TAG);
|
||||||
|
if (f != null) {
|
||||||
|
f.dismiss();
|
||||||
|
}
|
||||||
|
if (result != null && result) {
|
||||||
|
mActivity.setResult(RESULT_OK);
|
||||||
|
} else {
|
||||||
|
mActivity.setResult(RESULT_CANCELED);
|
||||||
|
}
|
||||||
|
mActivity.finish();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
@Override
|
||||||
|
protected void onPreExecute() {
|
||||||
|
ProgressDialogFragment.show(mActivity, FRAGMENT_TAG).setCancelable(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,6 +72,12 @@ public class DataImportActivity extends ThemedFragmentActivity implements FileSe
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onStart() {
|
||||||
|
super.onStart();
|
||||||
|
setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(final Bundle savedInstanceState) {
|
protected void onCreate(final Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
|
@ -45,6 +45,12 @@ public class FileSelectorActivity extends BaseSupportDialogActivity implements F
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onStart() {
|
||||||
|
super.onStart();
|
||||||
|
setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDismissed(final DialogFragment df) {
|
public void onDismissed(final DialogFragment df) {
|
||||||
if (!isFinishing()) {
|
if (!isFinishing()) {
|
||||||
|
|
|
@ -21,6 +21,12 @@ public class ThemedImagePickerActivity extends ImagePickerActivity {
|
||||||
return new ThemedIntentBuilder(context);
|
return new ThemedIntentBuilder(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onStart() {
|
||||||
|
super.onStart();
|
||||||
|
setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
public static final class ThemedIntentBuilder {
|
public static final class ThemedIntentBuilder {
|
||||||
private final Context context;
|
private final Context context;
|
||||||
private final IntentBuilder intentBuilder;
|
private final IntentBuilder intentBuilder;
|
||||||
|
|
|
@ -230,8 +230,8 @@ public class TwidereApplication extends MultiDexApplication implements Constants
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLowMemory() {
|
public void onLowMemory() {
|
||||||
// final ApplicationModule module = getApplicationModule();
|
final ApplicationModule module = getApplicationModule();
|
||||||
// module.getMediaLoaderWrapper().clearMemoryCache();
|
module.onLowMemory();
|
||||||
super.onLowMemory();
|
super.onLowMemory();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -253,7 +253,7 @@ public class TwidereApplication extends MultiDexApplication implements Constants
|
||||||
}
|
}
|
||||||
|
|
||||||
public void reloadConnectivitySettings() {
|
public void reloadConnectivitySettings() {
|
||||||
ApplicationModule.get(this).getImageDownloader().reloadConnectivitySettings();
|
getApplicationModule().reloadConnectivitySettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
private DiskCache createDiskCache(final String dirName) {
|
private DiskCache createDiskCache(final String dirName) {
|
||||||
|
|
|
@ -113,11 +113,17 @@ public class TwitterAPIFactory implements TwidereConstants {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static RestHttpClient createHttpClient(final Context context, final Network network, final SharedPreferences prefs) {
|
public static RestHttpClient createHttpClient(final Context context, final Network network, final SharedPreferences prefs) {
|
||||||
|
final OkHttpClient client = new OkHttpClient();
|
||||||
|
updateHttpClientConfiguration(prefs, client);
|
||||||
|
Internal.instance.setNetwork(client, network);
|
||||||
|
return new OkHttpRestClient(context, client);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void updateHttpClientConfiguration(final SharedPreferences prefs, final OkHttpClient client) {
|
||||||
final int connectionTimeout = prefs.getInt(KEY_CONNECTION_TIMEOUT, 10);
|
final int connectionTimeout = prefs.getInt(KEY_CONNECTION_TIMEOUT, 10);
|
||||||
final boolean ignoreSslError = prefs.getBoolean(KEY_IGNORE_SSL_ERROR, false);
|
final boolean ignoreSslError = prefs.getBoolean(KEY_IGNORE_SSL_ERROR, false);
|
||||||
final boolean enableProxy = prefs.getBoolean(KEY_ENABLE_PROXY, false);
|
final boolean enableProxy = prefs.getBoolean(KEY_ENABLE_PROXY, false);
|
||||||
|
|
||||||
final OkHttpClient client = new OkHttpClient();
|
|
||||||
client.setConnectTimeout(connectionTimeout, TimeUnit.SECONDS);
|
client.setConnectTimeout(connectionTimeout, TimeUnit.SECONDS);
|
||||||
final long connectionTimeoutMillis = TimeUnit.MILLISECONDS.convert(connectionTimeout, TimeUnit.SECONDS);
|
final long connectionTimeoutMillis = TimeUnit.MILLISECONDS.convert(connectionTimeout, TimeUnit.SECONDS);
|
||||||
final SSLSocketFactory sslSocketFactory;
|
final SSLSocketFactory sslSocketFactory;
|
||||||
|
@ -131,8 +137,6 @@ public class TwitterAPIFactory implements TwidereConstants {
|
||||||
if (enableProxy) {
|
if (enableProxy) {
|
||||||
client.setProxy(getProxy(prefs));
|
client.setProxy(getProxy(prefs));
|
||||||
}
|
}
|
||||||
Internal.instance.setNetwork(client, network);
|
|
||||||
return new OkHttpRestClient(context, client);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -161,7 +165,7 @@ public class TwitterAPIFactory implements TwidereConstants {
|
||||||
} else {
|
} else {
|
||||||
userAgent = getTwidereUserAgent(context);
|
userAgent = getTwidereUserAgent(context);
|
||||||
}
|
}
|
||||||
factory.setClient(getDefaultHttpClient(context));
|
factory.setClient(ApplicationModule.get(context).getRestHttpClient());
|
||||||
factory.setConverter(new TwitterConverter());
|
factory.setConverter(new TwitterConverter());
|
||||||
factory.setEndpoint(endpoint);
|
factory.setEndpoint(endpoint);
|
||||||
factory.setAuthorization(auth);
|
factory.setAuthorization(auth);
|
||||||
|
|
|
@ -25,19 +25,23 @@ import com.nostra13.universalimageloader.core.ImageLoader;
|
||||||
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
|
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
|
||||||
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
|
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
|
||||||
import com.nostra13.universalimageloader.utils.L;
|
import com.nostra13.universalimageloader.utils.L;
|
||||||
|
import com.squareup.okhttp.OkHttpClient;
|
||||||
import com.squareup.okhttp.internal.Network;
|
import com.squareup.okhttp.internal.Network;
|
||||||
|
|
||||||
import org.mariotaku.restfu.http.RestHttpClient;
|
import org.mariotaku.restfu.http.RestHttpClient;
|
||||||
import org.mariotaku.twidere.BuildConfig;
|
import org.mariotaku.twidere.BuildConfig;
|
||||||
|
import org.mariotaku.twidere.Constants;
|
||||||
import org.mariotaku.twidere.app.TwidereApplication;
|
import org.mariotaku.twidere.app.TwidereApplication;
|
||||||
import org.mariotaku.twidere.util.ActivityTracker;
|
import org.mariotaku.twidere.util.ActivityTracker;
|
||||||
import org.mariotaku.twidere.util.AsyncTaskManager;
|
import org.mariotaku.twidere.util.AsyncTaskManager;
|
||||||
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
||||||
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||||
import org.mariotaku.twidere.util.ReadStateManager;
|
import org.mariotaku.twidere.util.ReadStateManager;
|
||||||
|
import org.mariotaku.twidere.util.SharedPreferencesWrapper;
|
||||||
import org.mariotaku.twidere.util.TwitterAPIFactory;
|
import org.mariotaku.twidere.util.TwitterAPIFactory;
|
||||||
import org.mariotaku.twidere.util.VideoLoader;
|
import org.mariotaku.twidere.util.VideoLoader;
|
||||||
import org.mariotaku.twidere.util.imageloader.TwidereImageDownloader;
|
import org.mariotaku.twidere.util.imageloader.TwidereImageDownloader;
|
||||||
|
import org.mariotaku.twidere.util.net.OkHttpRestClient;
|
||||||
import org.mariotaku.twidere.util.net.TwidereNetwork;
|
import org.mariotaku.twidere.util.net.TwidereNetwork;
|
||||||
|
|
||||||
import dagger.Module;
|
import dagger.Module;
|
||||||
|
@ -49,6 +53,8 @@ import dagger.Provides;
|
||||||
@Module
|
@Module
|
||||||
public class ApplicationModule {
|
public class ApplicationModule {
|
||||||
|
|
||||||
|
private final SharedPreferencesWrapper sharedPreferences;
|
||||||
|
|
||||||
private final ActivityTracker activityTracker;
|
private final ActivityTracker activityTracker;
|
||||||
private final AsyncTwitterWrapper asyncTwitterWrapper;
|
private final AsyncTwitterWrapper asyncTwitterWrapper;
|
||||||
private final ReadStateManager readStateManager;
|
private final ReadStateManager readStateManager;
|
||||||
|
@ -61,13 +67,14 @@ public class ApplicationModule {
|
||||||
private final RestHttpClient restHttpClient;
|
private final RestHttpClient restHttpClient;
|
||||||
|
|
||||||
public ApplicationModule(TwidereApplication application) {
|
public ApplicationModule(TwidereApplication application) {
|
||||||
|
sharedPreferences = SharedPreferencesWrapper.getInstance(application, Constants.SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
|
||||||
activityTracker = new ActivityTracker();
|
activityTracker = new ActivityTracker();
|
||||||
asyncTaskManager = AsyncTaskManager.getInstance();
|
asyncTaskManager = AsyncTaskManager.getInstance();
|
||||||
asyncTwitterWrapper = new AsyncTwitterWrapper(application, asyncTaskManager);
|
asyncTwitterWrapper = new AsyncTwitterWrapper(application, asyncTaskManager);
|
||||||
readStateManager = new ReadStateManager(application);
|
readStateManager = new ReadStateManager(application);
|
||||||
network = new TwidereNetwork(application);
|
network = new TwidereNetwork(application);
|
||||||
restHttpClient = TwitterAPIFactory.getDefaultHttpClient(application, network);
|
restHttpClient = TwitterAPIFactory.getDefaultHttpClient(application, network);
|
||||||
imageDownloader = new TwidereImageDownloader(application, network, true);
|
imageDownloader = new TwidereImageDownloader(application, restHttpClient, true);
|
||||||
imageLoader = createImageLoader(application, imageDownloader);
|
imageLoader = createImageLoader(application, imageDownloader);
|
||||||
videoLoader = new VideoLoader(application, imageDownloader, asyncTaskManager);
|
videoLoader = new VideoLoader(application, imageDownloader, asyncTaskManager);
|
||||||
mediaLoaderWrapper = new MediaLoaderWrapper(imageLoader, videoLoader);
|
mediaLoaderWrapper = new MediaLoaderWrapper(imageLoader, videoLoader);
|
||||||
|
@ -140,4 +147,17 @@ public class ApplicationModule {
|
||||||
public Network getNetwork() {
|
public Network getNetwork() {
|
||||||
return network;
|
return network;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void reloadConnectivitySettings() {
|
||||||
|
imageDownloader.reloadConnectivitySettings();
|
||||||
|
if (restHttpClient instanceof OkHttpRestClient) {
|
||||||
|
final OkHttpClient okHttpClient = ((OkHttpRestClient) restHttpClient).getClient();
|
||||||
|
TwitterAPIFactory.updateHttpClientConfiguration(sharedPreferences, okHttpClient);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onLowMemory() {
|
||||||
|
mediaLoaderWrapper.clearMemoryCache();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,6 @@ import android.webkit.URLUtil;
|
||||||
|
|
||||||
import com.nostra13.universalimageloader.core.assist.ContentLengthInputStream;
|
import com.nostra13.universalimageloader.core.assist.ContentLengthInputStream;
|
||||||
import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
|
import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
|
||||||
import com.squareup.okhttp.internal.Network;
|
|
||||||
import com.squareup.pollexor.Thumbor;
|
import com.squareup.pollexor.Thumbor;
|
||||||
import com.squareup.pollexor.ThumborUrlBuilder;
|
import com.squareup.pollexor.ThumborUrlBuilder;
|
||||||
|
|
||||||
|
@ -70,25 +69,24 @@ public class TwidereImageDownloader extends BaseImageDownloader implements Const
|
||||||
private final SharedPreferencesWrapper mPreferences;
|
private final SharedPreferencesWrapper mPreferences;
|
||||||
private final boolean mUseThumbor;
|
private final boolean mUseThumbor;
|
||||||
private final String mUserAgent;
|
private final String mUserAgent;
|
||||||
private final Network mNetwork;
|
private final RestHttpClient mClient;
|
||||||
private Thumbor mThumbor;
|
private Thumbor mThumbor;
|
||||||
private RestHttpClient mClient;
|
|
||||||
private final String mTwitterProfileImageSize;
|
private final String mTwitterProfileImageSize;
|
||||||
|
|
||||||
public TwidereImageDownloader(final Context context, final Network network, final boolean useThumbor) {
|
public TwidereImageDownloader(final Context context, final RestHttpClient client, final boolean useThumbor) {
|
||||||
super(context);
|
super(context);
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mNetwork = network;
|
|
||||||
mPreferences = SharedPreferencesWrapper.getInstance(context, SHARED_PREFERENCES_NAME,
|
mPreferences = SharedPreferencesWrapper.getInstance(context, SHARED_PREFERENCES_NAME,
|
||||||
Context.MODE_PRIVATE, SharedPreferenceConstants.class);
|
Context.MODE_PRIVATE, SharedPreferenceConstants.class);
|
||||||
mTwitterProfileImageSize = context.getString(R.string.profile_image_size);
|
mTwitterProfileImageSize = context.getString(R.string.profile_image_size);
|
||||||
mUseThumbor = useThumbor;
|
mUseThumbor = useThumbor;
|
||||||
mUserAgent = UserAgentUtils.getDefaultUserAgentString(context);
|
mUserAgent = UserAgentUtils.getDefaultUserAgentString(context);
|
||||||
|
mClient = client;
|
||||||
reloadConnectivitySettings();
|
reloadConnectivitySettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void reloadConnectivitySettings() {
|
public void reloadConnectivitySettings() {
|
||||||
mClient = TwitterAPIFactory.getDefaultHttpClient(mContext, mNetwork);
|
|
||||||
if (mUseThumbor && mPreferences.getBoolean(KEY_THUMBOR_ENABLED)) {
|
if (mUseThumbor && mPreferences.getBoolean(KEY_THUMBOR_ENABLED)) {
|
||||||
final String address = mPreferences.getString(KEY_THUMBOR_ADDRESS, null);
|
final String address = mPreferences.getString(KEY_THUMBOR_ADDRESS, null);
|
||||||
final String securityKey = mPreferences.getString(KEY_THUMBOR_SECURITY_KEY, null);
|
final String securityKey = mPreferences.getString(KEY_THUMBOR_SECURITY_KEY, null);
|
||||||
|
|
|
@ -70,7 +70,12 @@ public class OkHttpRestClient implements RestHttpClient {
|
||||||
DebugModeUtils.initForHttpClient(client);
|
DebugModeUtils.initForHttpClient(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public OkHttpClient getClient() {
|
||||||
|
return client;
|
||||||
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RestHttpResponse execute(RestHttpRequest restHttpRequest) throws IOException {
|
public RestHttpResponse execute(RestHttpRequest restHttpRequest) throws IOException {
|
||||||
final Call call = newCall(restHttpRequest);
|
final Call call = newCall(restHttpRequest);
|
||||||
|
|
Loading…
Reference in New Issue