code cleanup

This commit is contained in:
NudeDude 2019-04-12 20:44:00 +02:00
parent d10cc8adef
commit 82489e2aba
16 changed files with 200 additions and 191 deletions

View File

@ -22,7 +22,7 @@ import android.widget.TabHost.TabSpec;
import org.nuclearfog.twidda.adapter.OnItemClickListener; import org.nuclearfog.twidda.adapter.OnItemClickListener;
import org.nuclearfog.twidda.adapter.TimelineAdapter; import org.nuclearfog.twidda.adapter.TimelineAdapter;
import org.nuclearfog.twidda.adapter.TrendAdapter; import org.nuclearfog.twidda.adapter.TrendAdapter;
import org.nuclearfog.twidda.backend.MainPage; import org.nuclearfog.twidda.backend.StartPage;
import org.nuclearfog.twidda.backend.items.Tweet; import org.nuclearfog.twidda.backend.items.Tweet;
import org.nuclearfog.twidda.database.GlobalSettings; import org.nuclearfog.twidda.database.GlobalSettings;
import org.nuclearfog.twidda.window.AppSettings; import org.nuclearfog.twidda.window.AppSettings;
@ -33,16 +33,16 @@ import org.nuclearfog.twidda.window.TweetPopup;
import org.nuclearfog.twidda.window.UserProfile; import org.nuclearfog.twidda.window.UserProfile;
import static android.os.AsyncTask.Status.RUNNING; import static android.os.AsyncTask.Status.RUNNING;
import static org.nuclearfog.twidda.backend.MainPage.Mode.DATA; import static org.nuclearfog.twidda.backend.StartPage.Mode.DATA;
import static org.nuclearfog.twidda.backend.MainPage.Mode.HOME; import static org.nuclearfog.twidda.backend.StartPage.Mode.HOME;
import static org.nuclearfog.twidda.backend.MainPage.Mode.MENT; import static org.nuclearfog.twidda.backend.StartPage.Mode.MENT;
import static org.nuclearfog.twidda.backend.MainPage.Mode.TRND; import static org.nuclearfog.twidda.backend.StartPage.Mode.TRND;
import static org.nuclearfog.twidda.window.TweetDetail.STAT_CHANGED; import static org.nuclearfog.twidda.window.TweetDetail.STAT_CHANGED;
/** /**
* Main Activity * Main Activity
* *
* @see MainPage * @see StartPage
*/ */
public class MainActivity extends AppCompatActivity implements OnRefreshListener, public class MainActivity extends AppCompatActivity implements OnRefreshListener,
OnTabChangeListener, OnItemClickListener { OnTabChangeListener, OnItemClickListener {
@ -58,7 +58,7 @@ public class MainActivity extends AppCompatActivity implements OnRefreshListener
private View lastTab, root; private View lastTab, root;
private TrendAdapter trendsAdapter; private TrendAdapter trendsAdapter;
private GlobalSettings settings; private GlobalSettings settings;
private MainPage home; private StartPage mainAsync;
private TabHost tabhost; private TabHost tabhost;
private int tabIndex = 0; private int tabIndex = 0;
@ -125,7 +125,7 @@ public class MainActivity extends AppCompatActivity implements OnRefreshListener
if (!settings.getLogin()) { if (!settings.getLogin()) {
Intent i = new Intent(this, LoginPage.class); Intent i = new Intent(this, LoginPage.class);
startActivityForResult(i, LOGIN); startActivityForResult(i, LOGIN);
} else if (home == null) { } else if (mainAsync == null) {
timelineAdapter = new TimelineAdapter(this); timelineAdapter = new TimelineAdapter(this);
trendsAdapter = new TrendAdapter(this); trendsAdapter = new TrendAdapter(this);
mentionAdapter = new TimelineAdapter(this); mentionAdapter = new TimelineAdapter(this);
@ -145,8 +145,8 @@ public class MainActivity extends AppCompatActivity implements OnRefreshListener
trendList.setAdapter(trendsAdapter); trendList.setAdapter(trendsAdapter);
mentionList.setAdapter(mentionAdapter); mentionList.setAdapter(mentionAdapter);
home = new MainPage(this, DATA); mainAsync = new StartPage(this, DATA);
home.execute(1); mainAsync.execute(1);
setIndicator(); setIndicator();
} }
@ -155,8 +155,8 @@ public class MainActivity extends AppCompatActivity implements OnRefreshListener
@Override @Override
protected void onStop() { protected void onStop() {
if (home != null && home.getStatus() == RUNNING) { if (mainAsync != null && mainAsync.getStatus() == RUNNING) {
home.cancel(true); mainAsync.cancel(true);
} }
super.onStop(); super.onStop();
} }
@ -166,18 +166,17 @@ public class MainActivity extends AppCompatActivity implements OnRefreshListener
protected void onActivityResult(int reqCode, int returnCode, Intent i) { protected void onActivityResult(int reqCode, int returnCode, Intent i) {
switch (reqCode) { switch (reqCode) {
case LOGIN: case LOGIN:
if (returnCode == RESULT_CANCELED) { if (returnCode == RESULT_CANCELED)
finish(); finish();
}
break; break;
case TWEET: case TWEET:
if (returnCode == STAT_CHANGED) if (returnCode == STAT_CHANGED)
home = null; mainAsync = null;
break; break;
case SETTING: case SETTING:
home = null; mainAsync = null;
break; break;
} }
super.onActivityResult(reqCode, returnCode, i); super.onActivityResult(reqCode, returnCode, i);
@ -213,7 +212,6 @@ public class MainActivity extends AppCompatActivity implements OnRefreshListener
MenuItem tweet = m.findItem(R.id.action_tweet); MenuItem tweet = m.findItem(R.id.action_tweet);
MenuItem search = m.findItem(R.id.action_search); MenuItem search = m.findItem(R.id.action_search);
MenuItem setting = m.findItem(R.id.action_settings); MenuItem setting = m.findItem(R.id.action_settings);
SearchView searchQuery = (SearchView) search.getActionView();
switch (tabIndex) { switch (tabIndex) {
case 0: case 0:
@ -232,7 +230,6 @@ public class MainActivity extends AppCompatActivity implements OnRefreshListener
break; break;
case 2: case 2:
searchQuery.onActionViewCollapsed();
profile.setVisible(false); profile.setVisible(false);
search.setVisible(false); search.setVisible(false);
tweet.setVisible(false); tweet.setVisible(false);
@ -261,8 +258,8 @@ public class MainActivity extends AppCompatActivity implements OnRefreshListener
break; break;
case R.id.action_settings: case R.id.action_settings:
if (home != null && home.getStatus() == RUNNING) if (mainAsync != null && mainAsync.getStatus() == RUNNING)
home.cancel(true); mainAsync.cancel(true);
Intent settings = new Intent(this, AppSettings.class); Intent settings = new Intent(this, AppSettings.class);
startActivityForResult(settings, SETTING); startActivityForResult(settings, SETTING);
break; break;
@ -283,19 +280,22 @@ public class MainActivity extends AppCompatActivity implements OnRefreshListener
@Override @Override
public void onRefresh() { public void onRefresh() {
if (mainAsync != null && mainAsync.getStatus() == RUNNING)
mainAsync.cancel(true);
switch (tabIndex) { switch (tabIndex) {
default: default:
case 0: case 0:
home = new MainPage(this, HOME); mainAsync = new StartPage(this, HOME);
break; break;
case 1: case 1:
home = new MainPage(this, TRND); mainAsync = new StartPage(this, TRND);
break; break;
case 2: case 2:
home = new MainPage(this, MENT); mainAsync = new StartPage(this, MENT);
break; break;
} }
home.execute(1); mainAsync.execute(1);
} }
@ -316,7 +316,7 @@ public class MainActivity extends AppCompatActivity implements OnRefreshListener
Tweet tweet = timelineAdapter.getData(position); Tweet tweet = timelineAdapter.getData(position);
if (tweet.getEmbeddedTweet() != null) if (tweet.getEmbeddedTweet() != null)
tweet = tweet.getEmbeddedTweet(); tweet = tweet.getEmbeddedTweet();
openTweet(tweet.getId(), tweet.getUser().getId(), tweet.getUser().getScreenname()); openTweet(tweet.getId(), tweet.getUser().getScreenname());
} }
break; break;
@ -336,7 +336,7 @@ public class MainActivity extends AppCompatActivity implements OnRefreshListener
Tweet tweet = mentionAdapter.getData(position); Tweet tweet = mentionAdapter.getData(position);
if (tweet.getEmbeddedTweet() != null) if (tweet.getEmbeddedTweet() != null)
tweet = tweet.getEmbeddedTweet(); tweet = tweet.getEmbeddedTweet();
openTweet(tweet.getId(), tweet.getUser().getId(), tweet.getUser().getScreenname()); openTweet(tweet.getId(), tweet.getUser().getScreenname());
} }
break; break;
} }
@ -366,10 +366,9 @@ public class MainActivity extends AppCompatActivity implements OnRefreshListener
} }
private void openTweet(long tweetId, long userId, String username) { private void openTweet(long tweetId, String username) {
Intent intent = new Intent(this, TweetDetail.class); Intent intent = new Intent(this, TweetDetail.class);
intent.putExtra("tweetID", tweetId); intent.putExtra("tweetID", tweetId);
intent.putExtra("userID", userId);
intent.putExtra("username", username); intent.putExtra("username", username);
startActivityForResult(intent, TWEET); startActivityForResult(intent, TWEET);
} }

View File

@ -18,14 +18,14 @@ import java.lang.ref.WeakReference;
import java.net.URL; import java.net.URL;
public class ImageLoad extends AsyncTask<String, Void, Boolean> { public class ImageLoader extends AsyncTask<String, Void, Boolean> {
private WeakReference<ImageDetail> ui; private WeakReference<ImageDetail> ui;
private ImageAdapter imageAdapter; private ImageAdapter imageAdapter;
private Bitmap images[]; private Bitmap images[];
public ImageLoad(@NonNull ImageDetail context) { public ImageLoader(@NonNull ImageDetail context) {
ui = new WeakReference<>(context); ui = new WeakReference<>(context);
RecyclerView imageList = context.findViewById(R.id.image_list); RecyclerView imageList = context.findViewById(R.id.image_list);
imageAdapter = (ImageAdapter) imageList.getAdapter(); imageAdapter = (ImageAdapter) imageList.getAdapter();

View File

@ -73,10 +73,12 @@ public class MessageLoader extends AsyncTask<Long, Void, Void> {
break; break;
} }
} catch (TwitterException err) { } catch (TwitterException err) {
if (err.getErrorCode() == 34) if (err.getErrorCode() == 34) {
mData.deleteDm(messageId); mData.deleteDm(messageId);
this.err = err; } else {
failure = true; this.err = err;
failure = true;
}
} catch (Exception err) { } catch (Exception err) {
if(err.getMessage() != null) if(err.getMessage() != null)
Log.e("Direct Message", err.getMessage()); Log.e("Direct Message", err.getMessage());
@ -98,10 +100,8 @@ public class MessageLoader extends AsyncTask<Long, Void, Void> {
mAdapter.setData(message); mAdapter.setData(message);
mAdapter.notifyDataSetChanged(); mAdapter.notifyDataSetChanged();
if (failure) { if (failure)
if (err != null && err.getErrorCode() != 34) ErrorHandler.printError(ui.get(), err);
ErrorHandler.printError(ui.get(), err);
}
} }

View File

@ -22,6 +22,7 @@ import org.nuclearfog.twidda.backend.items.Tweet;
import org.nuclearfog.twidda.backend.items.TwitterUser; import org.nuclearfog.twidda.backend.items.TwitterUser;
import org.nuclearfog.twidda.database.DatabaseAdapter; import org.nuclearfog.twidda.database.DatabaseAdapter;
import org.nuclearfog.twidda.database.GlobalSettings; import org.nuclearfog.twidda.database.GlobalSettings;
import org.nuclearfog.twidda.window.ImageDetail;
import org.nuclearfog.twidda.window.UserDetail; import org.nuclearfog.twidda.window.UserDetail;
import org.nuclearfog.twidda.window.UserProfile; import org.nuclearfog.twidda.window.UserProfile;
@ -34,8 +35,8 @@ import java.util.List;
import twitter4j.TwitterException; import twitter4j.TwitterException;
import static android.view.View.VISIBLE;
import static android.view.View.GONE; import static android.view.View.GONE;
import static android.view.View.VISIBLE;
public class ProfileLoader extends AsyncTask<Long, Void, Void> { public class ProfileLoader extends AsyncTask<Long, Void, Void> {
@ -300,7 +301,10 @@ public class ProfileLoader extends AsyncTask<Long, Void, Void> {
profile.setOnClickListener(new View.OnClickListener() { profile.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
ui.get().imageClick(user.getImageLink()); Intent image = new Intent(ui.get(), ImageDetail.class);
image.putExtra("link", new String[]{user.getImageLink()});
ui.get().startActivity(image);
} }
}); });
} }

View File

@ -21,7 +21,7 @@ import java.util.List;
import twitter4j.TwitterException; import twitter4j.TwitterException;
public class MainPage extends AsyncTask<Integer, Void, Void> { public class StartPage extends AsyncTask<Integer, Void, Void> {
public enum Mode { public enum Mode {
DATA, DATA,
@ -45,7 +45,7 @@ public class MainPage extends AsyncTask<Integer, Void, Void> {
private int woeId; private int woeId;
public MainPage(@NonNull MainActivity context, Mode mode) { public StartPage(@NonNull MainActivity context, Mode mode) {
ui = new WeakReference<>(context); ui = new WeakReference<>(context);
mTwitter = TwitterEngine.getInstance(context); mTwitter = TwitterEngine.getInstance(context);
GlobalSettings settings = GlobalSettings.getInstance(context); GlobalSettings settings = GlobalSettings.getInstance(context);

View File

@ -19,7 +19,7 @@ import java.lang.ref.WeakReference;
import twitter4j.TwitterException; import twitter4j.TwitterException;
public class StatusUpload extends AsyncTask<String, Void, Boolean> { public class StatusUploader extends AsyncTask<String, Void, Boolean> {
private WeakReference<TweetPopup> ui; private WeakReference<TweetPopup> ui;
private TwitterEngine mTwitter; private TwitterEngine mTwitter;
@ -30,7 +30,7 @@ public class StatusUpload extends AsyncTask<String, Void, Boolean> {
private long replyId; private long replyId;
public StatusUpload(@NonNull TweetPopup context, String tweet, long replyId) { public StatusUploader(@NonNull TweetPopup context, String tweet, long replyId) {
ui = new WeakReference<>(context); ui = new WeakReference<>(context);
mTwitter = TwitterEngine.getInstance(context); mTwitter = TwitterEngine.getInstance(context);
inflater = LayoutInflater.from(context); inflater = LayoutInflater.from(context);

View File

@ -33,7 +33,7 @@ import static org.nuclearfog.twidda.backend.MessageLoader.Mode.LDR;
*/ */
public class DirectMessage extends AppCompatActivity implements OnRefreshListener, OnItemSelected { public class DirectMessage extends AppCompatActivity implements OnRefreshListener, OnItemSelected {
private MessageLoader mLoader; private MessageLoader messageAsync;
private MessageAdapter mAdapter; private MessageAdapter mAdapter;
private SwipeRefreshLayout messageRefresh; private SwipeRefreshLayout messageRefresh;
private GlobalSettings settings; private GlobalSettings settings;
@ -66,21 +66,21 @@ public class DirectMessage extends AppCompatActivity implements OnRefreshListene
@Override @Override
protected void onStart() { protected void onStart() {
super.onStart(); super.onStart();
if (mLoader == null) { if (messageAsync == null) {
mAdapter = new MessageAdapter(this); mAdapter = new MessageAdapter(this);
mAdapter.setColor(settings.getFontColor(), settings.getHighlightColor()); mAdapter.setColor(settings.getFontColor(), settings.getHighlightColor());
mAdapter.setImageLoad(settings.getImageLoad()); mAdapter.setImageLoad(settings.getImageLoad());
dmList.setAdapter(mAdapter); dmList.setAdapter(mAdapter);
mLoader = new MessageLoader(this, LDR); messageAsync = new MessageLoader(this, LDR);
mLoader.execute(); messageAsync.execute();
} }
} }
@Override @Override
protected void onStop() { protected void onStop() {
if (mLoader != null && mLoader.getStatus() == RUNNING) { if (messageAsync != null && messageAsync.getStatus() == RUNNING) {
mLoader.cancel(true); messageAsync.cancel(true);
} }
super.onStop(); super.onStop();
} }
@ -95,7 +95,7 @@ public class DirectMessage extends AppCompatActivity implements OnRefreshListene
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
if (mLoader != null && mLoader.getStatus() != RUNNING) { if (messageAsync != null && messageAsync.getStatus() != RUNNING) {
switch (item.getItemId()) { switch (item.getItemId()) {
case R.id.message: case R.id.message:
Intent sendDm = new Intent(this, MessagePopup.class); Intent sendDm = new Intent(this, MessagePopup.class);
@ -128,8 +128,8 @@ public class DirectMessage extends AppCompatActivity implements OnRefreshListene
.setPositiveButton(R.string.yes_confirm, new DialogInterface.OnClickListener() { .setPositiveButton(R.string.yes_confirm, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
mLoader = new MessageLoader(DirectMessage.this, DEL); messageAsync = new MessageLoader(DirectMessage.this, DEL);
mLoader.execute(messageId); messageAsync.execute(messageId);
} }
}).show(); }).show();
} }
@ -162,7 +162,7 @@ public class DirectMessage extends AppCompatActivity implements OnRefreshListene
@Override @Override
public void onRefresh() { public void onRefresh() {
mLoader = new MessageLoader(this, GET); messageAsync = new MessageLoader(this, GET);
mLoader.execute(); messageAsync.execute();
} }
} }

View File

@ -14,7 +14,7 @@ import android.widget.Toast;
import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.adapter.ImageAdapter; import org.nuclearfog.twidda.adapter.ImageAdapter;
import org.nuclearfog.twidda.adapter.ImageAdapter.OnImageClickListener; import org.nuclearfog.twidda.adapter.ImageAdapter.OnImageClickListener;
import org.nuclearfog.twidda.backend.ImageLoad; import org.nuclearfog.twidda.backend.ImageLoader;
import org.nuclearfog.zoomview.ZoomView; import org.nuclearfog.zoomview.ZoomView;
import java.io.File; import java.io.File;
@ -30,12 +30,12 @@ import static android.support.v7.widget.LinearLayoutManager.HORIZONTAL;
/** /**
* @see ImageLoad * @see ImageLoader
*/ */
public class ImageDetail extends AppCompatActivity implements OnImageClickListener { public class ImageDetail extends AppCompatActivity implements OnImageClickListener {
boolean storable = true; boolean storable = true;
private ImageLoad mImage; private ImageLoader imageAsync;
private ZoomView zoomImage; private ZoomView zoomImage;
private String link[]; private String link[];
private int width; private int width;
@ -66,17 +66,17 @@ public class ImageDetail extends AppCompatActivity implements OnImageClickListen
@Override @Override
protected void onStart() { protected void onStart() {
super.onStart(); super.onStart();
if (mImage == null) { if (imageAsync == null) {
mImage = new ImageLoad(this); imageAsync = new ImageLoader(this);
mImage.execute(link); imageAsync.execute(link);
} }
} }
@Override @Override
protected void onDestroy() { protected void onDestroy() {
if (mImage != null && mImage.getStatus() == RUNNING) if (imageAsync != null && imageAsync.getStatus() == RUNNING)
mImage.cancel(true); imageAsync.cancel(true);
super.onDestroy(); super.onDestroy();
} }

View File

@ -24,7 +24,7 @@ import static android.os.AsyncTask.Status.RUNNING;
*/ */
public class LoginPage extends AppCompatActivity implements OnClickListener { public class LoginPage extends AppCompatActivity implements OnClickListener {
private Registration register; private Registration registerAsync;
private EditText pin; private EditText pin;
@Override @Override
@ -40,8 +40,8 @@ public class LoginPage extends AppCompatActivity implements OnClickListener {
@Override @Override
protected void onDestroy() { protected void onDestroy() {
if (register != null && register.getStatus() == RUNNING) if (registerAsync != null && registerAsync.getStatus() == RUNNING)
register.cancel(true); registerAsync.cancel(true);
super.onDestroy(); super.onDestroy();
} }
@ -55,20 +55,20 @@ public class LoginPage extends AppCompatActivity implements OnClickListener {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (register != null && register.getStatus() == RUNNING) if (registerAsync != null && registerAsync.getStatus() == RUNNING)
register.cancel(true); registerAsync.cancel(true);
switch (v.getId()) { switch (v.getId()) {
case R.id.linkButton: case R.id.linkButton:
register = new Registration(this); registerAsync = new Registration(this);
register.execute(""); registerAsync.execute("");
break; break;
case R.id.get: case R.id.get:
String twitterPin = pin.getText().toString(); String twitterPin = pin.getText().toString();
if (!twitterPin.trim().isEmpty()) { if (!twitterPin.trim().isEmpty()) {
register = new Registration(this); registerAsync = new Registration(this);
register.execute(twitterPin); registerAsync.execute(twitterPin);
} else { } else {
Toast.makeText(this, R.string.enter_pin, Toast.LENGTH_LONG).show(); Toast.makeText(this, R.string.enter_pin, Toast.LENGTH_LONG).show();
} }

View File

@ -29,7 +29,7 @@ import static android.os.AsyncTask.Status.RUNNING;
*/ */
public class MessagePopup extends AppCompatActivity implements View.OnClickListener { public class MessagePopup extends AppCompatActivity implements View.OnClickListener {
private MessageUpload upload; private MessageUpload messageAsync;
private EditText receiver, text; private EditText receiver, text;
private String mediaPath = ""; private String mediaPath = "";
@ -69,8 +69,8 @@ public class MessagePopup extends AppCompatActivity implements View.OnClickListe
closeDialog.setPositiveButton(R.string.yes_confirm, new DialogInterface.OnClickListener() { closeDialog.setPositiveButton(R.string.yes_confirm, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
if (upload != null && upload.getStatus() == RUNNING) if (messageAsync != null && messageAsync.getStatus() == RUNNING)
upload.cancel(true); messageAsync.cancel(true);
finish(); finish();
} }
}); });
@ -107,8 +107,8 @@ public class MessagePopup extends AppCompatActivity implements View.OnClickListe
String username = receiver.getText().toString(); String username = receiver.getText().toString();
String message = text.getText().toString(); String message = text.getText().toString();
if (!username.trim().isEmpty() && (!message.trim().isEmpty() || !mediaPath.isEmpty())) { if (!username.trim().isEmpty() && (!message.trim().isEmpty() || !mediaPath.isEmpty())) {
upload = new MessageUpload(this); messageAsync = new MessageUpload(this);
upload.execute(username, message, mediaPath); messageAsync.execute(username, message, mediaPath);
} else { } else {
Toast.makeText(this, R.string.error_dm, Toast.LENGTH_SHORT).show(); Toast.makeText(this, R.string.error_dm, Toast.LENGTH_SHORT).show();
} }

View File

@ -34,7 +34,7 @@ import static org.nuclearfog.twidda.backend.ProfileEditor.Mode.WRITE_DATA;
*/ */
public class ProfileEdit extends AppCompatActivity implements View.OnClickListener { public class ProfileEdit extends AppCompatActivity implements View.OnClickListener {
private ProfileEditor mEdit; private ProfileEditor editorAsync;
private TextView txtImg; private TextView txtImg;
@Override @Override
@ -60,17 +60,17 @@ public class ProfileEdit extends AppCompatActivity implements View.OnClickListen
@Override @Override
protected void onStart() { protected void onStart() {
super.onStart(); super.onStart();
if (mEdit == null) { if (editorAsync == null) {
mEdit = new ProfileEditor(this, READ_DATA); editorAsync = new ProfileEditor(this, READ_DATA);
mEdit.execute(); editorAsync.execute();
} }
} }
@Override @Override
protected void onStop() { protected void onStop() {
if (mEdit != null && mEdit.getStatus() == AsyncTask.Status.RUNNING) if (editorAsync != null && editorAsync.getStatus() == AsyncTask.Status.RUNNING)
mEdit.cancel(true); editorAsync.cancel(true);
super.onStop(); super.onStop();
} }
@ -101,7 +101,7 @@ public class ProfileEdit extends AppCompatActivity implements View.OnClickListen
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) { switch (item.getItemId()) {
case R.id.action_save: case R.id.action_save:
if (mEdit == null || mEdit.getStatus() != RUNNING) { if (editorAsync == null || editorAsync.getStatus() != RUNNING) {
save(); save();
} }
break; break;
@ -146,10 +146,10 @@ public class ProfileEdit extends AppCompatActivity implements View.OnClickListen
if (name.getText().toString().trim().isEmpty()) { if (name.getText().toString().trim().isEmpty()) {
Toast.makeText(this, R.string.edit_empty_name, Toast.LENGTH_SHORT).show(); Toast.makeText(this, R.string.edit_empty_name, Toast.LENGTH_SHORT).show();
} else { } else {
if (mEdit != null && mEdit.getStatus() == RUNNING) if (editorAsync != null && editorAsync.getStatus() == RUNNING)
mEdit.cancel(true); editorAsync.cancel(true);
mEdit = new ProfileEditor(this, WRITE_DATA); editorAsync = new ProfileEditor(this, WRITE_DATA);
mEdit.execute(); editorAsync.execute();
} }
} }

View File

@ -42,7 +42,7 @@ public class SearchPage extends AppCompatActivity implements OnRefreshListener,
private UserAdapter userAdapter; private UserAdapter userAdapter;
private SwipeRefreshLayout tweetReload; private SwipeRefreshLayout tweetReload;
private GlobalSettings settings; private GlobalSettings settings;
private TwitterSearch mSearch; private TwitterSearch searchAsync;
private View lastView, twUnderline, usUnderline; private View lastView, twUnderline, usUnderline;
private TabHost tabhost; private TabHost tabhost;
private String search = ""; private String search = "";
@ -76,7 +76,6 @@ public class SearchPage extends AppCompatActivity implements OnRefreshListener,
View usIndicator = inflater.inflate(R.layout.tab_us, null); View usIndicator = inflater.inflate(R.layout.tab_us, null);
twUnderline = twIndicator.findViewById(R.id.ts_divider); twUnderline = twIndicator.findViewById(R.id.ts_divider);
usUnderline = usIndicator.findViewById(R.id.us_divider); usUnderline = usIndicator.findViewById(R.id.us_divider);
twUnderline.setBackgroundColor(settings.getHighlightColor());
tweetReload.setProgressBackgroundColorSchemeColor(settings.getHighlightColor()); tweetReload.setProgressBackgroundColorSchemeColor(settings.getHighlightColor());
tabhost.setup(); tabhost.setup();
@ -84,12 +83,12 @@ public class SearchPage extends AppCompatActivity implements OnRefreshListener,
tab1.setContent(R.id.searchtweets); tab1.setContent(R.id.searchtweets);
tab1.setIndicator(twIndicator); tab1.setIndicator(twIndicator);
tabhost.addTab(tab1); tabhost.addTab(tab1);
TabHost.TabSpec tab2 = tabhost.newTabSpec("user_result"); TabHost.TabSpec tab2 = tabhost.newTabSpec("user_result");
tab2.setContent(R.id.user_result); tab2.setContent(R.id.user_result);
tab2.setIndicator(usIndicator); tab2.setIndicator(usIndicator);
tabhost.addTab(tab2); tabhost.addTab(tab2);
lastView = tabhost.getCurrentView(); lastView = tabhost.getCurrentView();
setIndicator();
tweetSearch.setLayoutManager(new LinearLayoutManager(this)); tweetSearch.setLayoutManager(new LinearLayoutManager(this));
userSearch.setLayoutManager(new LinearLayoutManager(this)); userSearch.setLayoutManager(new LinearLayoutManager(this));
@ -102,7 +101,7 @@ public class SearchPage extends AppCompatActivity implements OnRefreshListener,
@Override @Override
protected void onStart() { protected void onStart() {
super.onStart(); super.onStart();
if (mSearch == null) { if (searchAsync == null) {
searchAdapter = new TimelineAdapter(this); searchAdapter = new TimelineAdapter(this);
searchAdapter.setColor(settings.getHighlightColor(), settings.getFontColor()); searchAdapter.setColor(settings.getHighlightColor(), settings.getFontColor());
searchAdapter.toggleImage(settings.getImageLoad()); searchAdapter.toggleImage(settings.getImageLoad());
@ -113,16 +112,16 @@ public class SearchPage extends AppCompatActivity implements OnRefreshListener,
userAdapter.setColor(settings.getFontColor()); userAdapter.setColor(settings.getFontColor());
userSearch.setAdapter(userAdapter); userSearch.setAdapter(userAdapter);
mSearch = new TwitterSearch(this); searchAsync = new TwitterSearch(this);
mSearch.execute(search); searchAsync.execute(search);
} }
} }
@Override @Override
protected void onStop() { protected void onStop() {
if (mSearch != null && mSearch.getStatus() == RUNNING) if (searchAsync != null && searchAsync.getStatus() == RUNNING)
mSearch.cancel(true); searchAsync.cancel(true);
super.onStop(); super.onStop();
} }
@ -181,7 +180,6 @@ public class SearchPage extends AppCompatActivity implements OnRefreshListener,
Tweet tweet = searchAdapter.getData(position); Tweet tweet = searchAdapter.getData(position);
Intent tweetdetail = new Intent(this, TweetDetail.class); Intent tweetdetail = new Intent(this, TweetDetail.class);
tweetdetail.putExtra("tweetID", tweet.getId()); tweetdetail.putExtra("tweetID", tweet.getId());
tweetdetail.putExtra("userID", tweet.getUser().getId());
tweetdetail.putExtra("username", tweet.getUser().getScreenname()); tweetdetail.putExtra("username", tweet.getUser().getScreenname());
startActivity(tweetdetail); startActivity(tweetdetail);
break; break;
@ -200,8 +198,10 @@ public class SearchPage extends AppCompatActivity implements OnRefreshListener,
@Override @Override
public void onRefresh() { public void onRefresh() {
mSearch = new TwitterSearch(this); if (searchAsync != null && searchAsync.getStatus() == RUNNING)
mSearch.execute(search); searchAsync.cancel(true);
searchAsync = new TwitterSearch(this);
searchAsync.execute(search);
} }
@ -209,14 +209,20 @@ public class SearchPage extends AppCompatActivity implements OnRefreshListener,
public void onTabChanged(String tabId) { public void onTabChanged(String tabId) {
animate(); animate();
tabIndex = tabhost.getCurrentTab(); tabIndex = tabhost.getCurrentTab();
setIndicator();
}
private void setIndicator() {
switch (tabIndex) { switch (tabIndex) {
case 0: case 0:
twUnderline.setBackgroundColor(settings.getHighlightColor()); twUnderline.setBackgroundColor(settings.getHighlightColor());
usUnderline.setBackgroundColor(0); usUnderline.setBackgroundColor(0);
break; break;
case 1: case 1:
usUnderline.setBackgroundColor(settings.getHighlightColor()); usUnderline.setBackgroundColor(settings.getHighlightColor());
twUnderline.setBackgroundResource(0); twUnderline.setBackgroundColor(0);
break; break;
} }
} }

View File

@ -55,7 +55,7 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener,
private RecyclerView answer_list; private RecyclerView answer_list;
private TimelineAdapter answerAdapter; private TimelineAdapter answerAdapter;
private StatusLoader mStat; private StatusLoader statusAsync;
private GlobalSettings settings; private GlobalSettings settings;
private SwipeRefreshLayout answerReload; private SwipeRefreshLayout answerReload;
private ConnectivityManager mConnect; private ConnectivityManager mConnect;
@ -118,21 +118,21 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener,
protected void onStart() { protected void onStart() {
super.onStart(); super.onStart();
if (mStat == null) { if (statusAsync == null) {
answerAdapter = new TimelineAdapter(this); answerAdapter = new TimelineAdapter(this);
answerAdapter.toggleImage(settings.getImageLoad()); answerAdapter.toggleImage(settings.getImageLoad());
answerAdapter.setColor(settings.getHighlightColor(), settings.getFontColor()); answerAdapter.setColor(settings.getHighlightColor(), settings.getFontColor());
answer_list.setAdapter(answerAdapter); answer_list.setAdapter(answerAdapter);
mStat = new StatusLoader(this, LOAD); statusAsync = new StatusLoader(this, LOAD);
mStat.execute(tweetID); statusAsync.execute(tweetID);
} }
} }
@Override @Override
protected void onStop() { protected void onStop() {
if (mStat != null && mStat.getStatus() == RUNNING) if (statusAsync != null && statusAsync.getStatus() == RUNNING)
mStat.cancel(true); statusAsync.cancel(true);
super.onStop(); super.onStop();
} }
@ -140,7 +140,7 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener,
@Override @Override
protected void onActivityResult(int reqCode, int returnCode, Intent i) { protected void onActivityResult(int reqCode, int returnCode, Intent i) {
if (reqCode == TWEET && returnCode == STAT_CHANGED) { if (reqCode == TWEET && returnCode == STAT_CHANGED) {
mStat = null; statusAsync = null;
} }
super.onActivityResult(reqCode, returnCode, i); super.onActivityResult(reqCode, returnCode, i);
} }
@ -163,7 +163,7 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener,
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
if(mStat != null && mStat.getStatus() != RUNNING) { if (statusAsync != null && statusAsync.getStatus() != RUNNING) {
switch (item.getItemId()) { switch (item.getItemId()) {
case R.id.delete_tweet: case R.id.delete_tweet:
Builder deleteDialog = new Builder(this); Builder deleteDialog = new Builder(this);
@ -171,10 +171,10 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener,
deleteDialog.setPositiveButton(R.string.yes_confirm, new DialogInterface.OnClickListener() { deleteDialog.setPositiveButton(R.string.yes_confirm, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
if (mStat != null && mStat.getStatus() == RUNNING) if (statusAsync != null && statusAsync.getStatus() == RUNNING)
mStat.cancel(true); statusAsync.cancel(true);
mStat = new StatusLoader(TweetDetail.this, DELETE); statusAsync = new StatusLoader(TweetDetail.this, DELETE);
mStat.execute(tweetID); statusAsync.execute(tweetID);
} }
}); });
deleteDialog.setNegativeButton(R.string.no_confirm, null); deleteDialog.setNegativeButton(R.string.no_confirm, null);
@ -207,21 +207,21 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener,
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (mStat != null && mStat.getStatus() != RUNNING) { if (statusAsync != null && statusAsync.getStatus() != RUNNING) {
switch (v.getId()) { switch (v.getId()) {
case R.id.rt_button_detail: case R.id.rt_button_detail:
if (mStat != null && mStat.getStatus() == RUNNING) if (statusAsync != null && statusAsync.getStatus() == RUNNING)
mStat.cancel(true); statusAsync.cancel(true);
mStat = new StatusLoader(this, RETWEET); statusAsync = new StatusLoader(this, RETWEET);
mStat.execute(tweetID); statusAsync.execute(tweetID);
Toast.makeText(this, R.string.loading, Toast.LENGTH_SHORT).show(); Toast.makeText(this, R.string.loading, Toast.LENGTH_SHORT).show();
break; break;
case R.id.fav_button_detail: case R.id.fav_button_detail:
if (mStat != null && mStat.getStatus() == RUNNING) if (statusAsync != null && statusAsync.getStatus() == RUNNING)
mStat.cancel(true); statusAsync.cancel(true);
mStat = new StatusLoader(this, FAVORITE); statusAsync = new StatusLoader(this, FAVORITE);
mStat.execute(tweetID); statusAsync.execute(tweetID);
Toast.makeText(this, R.string.loading, Toast.LENGTH_SHORT).show(); Toast.makeText(this, R.string.loading, Toast.LENGTH_SHORT).show();
break; break;
@ -273,8 +273,8 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener,
@Override @Override
public void onRefresh() { public void onRefresh() {
mStat = new StatusLoader(this, ANS); statusAsync = new StatusLoader(this, ANS);
mStat.execute(tweetID); statusAsync.execute(tweetID);
} }

View File

@ -16,7 +16,7 @@ import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.StatusUpload; import org.nuclearfog.twidda.backend.StatusUploader;
import org.nuclearfog.twidda.database.GlobalSettings; import org.nuclearfog.twidda.database.GlobalSettings;
import java.util.ArrayList; import java.util.ArrayList;
@ -31,11 +31,11 @@ import static android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
/** /**
* Tweet Window * Tweet Window
* *
* @see StatusUpload * @see StatusUploader
*/ */
public class TweetPopup extends AppCompatActivity implements OnClickListener { public class TweetPopup extends AppCompatActivity implements OnClickListener {
private StatusUpload sendTweet; private StatusUploader uploaderAsync;
private View imageButton, previewBtn; private View imageButton, previewBtn;
private List<String> mediaPath; private List<String> mediaPath;
private TextView imgCount; private TextView imgCount;
@ -81,8 +81,8 @@ public class TweetPopup extends AppCompatActivity implements OnClickListener {
@Override @Override
protected void onDestroy() { protected void onDestroy() {
if (sendTweet != null && sendTweet.getStatus() == RUNNING) if (uploaderAsync != null && uploaderAsync.getStatus() == RUNNING)
sendTweet.cancel(true); uploaderAsync.cancel(true);
super.onDestroy(); super.onDestroy();
} }
@ -132,9 +132,9 @@ public class TweetPopup extends AppCompatActivity implements OnClickListener {
switch (v.getId()) { switch (v.getId()) {
case R.id.sendTweet: case R.id.sendTweet:
String tweetStr = tweet.getText().toString(); String tweetStr = tweet.getText().toString();
if (sendTweet != null && sendTweet.getStatus() == RUNNING) if (uploaderAsync != null && uploaderAsync.getStatus() == RUNNING)
sendTweet.cancel(true); uploaderAsync.cancel(true);
sendTweet = new StatusUpload(this, tweetStr, inReplyId); uploaderAsync = new StatusUploader(this, tweetStr, inReplyId);
if (tweetStr.trim().isEmpty() && mediaPath.isEmpty()) { if (tweetStr.trim().isEmpty() && mediaPath.isEmpty()) {
Toast.makeText(this, R.string.empty_tweet, Toast.LENGTH_SHORT).show(); Toast.makeText(this, R.string.empty_tweet, Toast.LENGTH_SHORT).show();
@ -143,9 +143,9 @@ public class TweetPopup extends AppCompatActivity implements OnClickListener {
} else if (!mediaPath.isEmpty()) { } else if (!mediaPath.isEmpty()) {
String[] paths = new String[mediaPath.size()]; String[] paths = new String[mediaPath.size()];
paths = mediaPath.toArray(paths); paths = mediaPath.toArray(paths);
sendTweet.execute(paths); uploaderAsync.execute(paths);
} else { } else {
sendTweet.execute(); uploaderAsync.execute();
} }
break; break;

View File

@ -34,7 +34,7 @@ public class UserDetail extends AppCompatActivity implements OnItemClickListener
private SwipeRefreshLayout userReload; private SwipeRefreshLayout userReload;
private UserAdapter usrAdp; private UserAdapter usrAdp;
private GlobalSettings settings; private GlobalSettings settings;
private UserLoader uList; private UserLoader userAsync;
private int mode; private int mode;
private long id; private long id;
@ -69,7 +69,7 @@ public class UserDetail extends AppCompatActivity implements OnItemClickListener
@Override @Override
protected void onStart() { protected void onStart() {
super.onStart(); super.onStart();
if (uList == null) { if (userAsync == null) {
int titleId; int titleId;
usrAdp = new UserAdapter(this); usrAdp = new UserAdapter(this);
usrAdp.toggleImage(settings.getImageLoad()); usrAdp.toggleImage(settings.getImageLoad());
@ -79,26 +79,26 @@ public class UserDetail extends AppCompatActivity implements OnItemClickListener
switch (mode) { switch (mode) {
case 0: case 0:
titleId = R.string.following; titleId = R.string.following;
uList = new UserLoader(UserDetail.this, FOLLOWING); userAsync = new UserLoader(UserDetail.this, FOLLOWING);
break; break;
case 1: case 1:
titleId = R.string.follower; titleId = R.string.follower;
uList = new UserLoader(UserDetail.this, FOLLOWERS); userAsync = new UserLoader(UserDetail.this, FOLLOWERS);
break; break;
case 2: case 2:
titleId = R.string.retweet; titleId = R.string.retweet;
uList = new UserLoader(UserDetail.this, RETWEET); userAsync = new UserLoader(UserDetail.this, RETWEET);
break; break;
case 3: case 3:
default: default:
titleId = R.string.favorite; titleId = R.string.favorite;
uList = new UserLoader(UserDetail.this, FAVORIT); userAsync = new UserLoader(UserDetail.this, FAVORIT);
break; break;
} }
uList.execute(id, -1L); userAsync.execute(id, -1L);
if (getSupportActionBar() != null) { if (getSupportActionBar() != null) {
getSupportActionBar().setTitle(titleId); getSupportActionBar().setTitle(titleId);
@ -109,8 +109,8 @@ public class UserDetail extends AppCompatActivity implements OnItemClickListener
@Override @Override
protected void onStop() { protected void onStop() {
if (uList != null && uList.getStatus() == RUNNING) if (userAsync != null && userAsync.getStatus() == RUNNING)
uList.cancel(true); userAsync.cancel(true);
super.onStop(); super.onStop();
} }
@ -133,19 +133,19 @@ public class UserDetail extends AppCompatActivity implements OnItemClickListener
public void onRefresh() { public void onRefresh() {
switch(mode) { switch(mode) {
case 0: case 0:
uList = new UserLoader(UserDetail.this, FOLLOWING); userAsync = new UserLoader(UserDetail.this, FOLLOWING);
break; break;
case 1: case 1:
uList = new UserLoader(UserDetail.this, FOLLOWERS); userAsync = new UserLoader(UserDetail.this, FOLLOWERS);
break; break;
case 2: case 2:
uList = new UserLoader(UserDetail.this, RETWEET); userAsync = new UserLoader(UserDetail.this, RETWEET);
break; break;
case 3: case 3:
default: default:
uList = new UserLoader(UserDetail.this, FAVORIT); userAsync = new UserLoader(UserDetail.this, FAVORIT);
break; break;
} }
uList.execute(id, -1L); userAsync.execute(id, -1L);
} }
} }

View File

@ -44,7 +44,7 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener,
private static final int TWEET = 1; private static final int TWEET = 1;
private ProfileLoader mProfile; private ProfileLoader profileAsync;
private GlobalSettings settings; private GlobalSettings settings;
private RecyclerView homeList, favoriteList; private RecyclerView homeList, favoriteList;
private TimelineAdapter tweetAdapter, favAdapter; private TimelineAdapter tweetAdapter, favAdapter;
@ -103,7 +103,6 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener,
favorUnderline = favorIndicator.findViewById(R.id.favor_divider); favorUnderline = favorIndicator.findViewById(R.id.favor_divider);
tweetCount = tweetIndicator.findViewById(R.id.profile_tweet_count); tweetCount = tweetIndicator.findViewById(R.id.profile_tweet_count);
favorCount = favorIndicator.findViewById(R.id.profile_favor_count); favorCount = favorIndicator.findViewById(R.id.profile_favor_count);
tweetUnderline.setBackgroundColor(settings.getHighlightColor());
homeReload.setProgressBackgroundColorSchemeColor(settings.getHighlightColor()); homeReload.setProgressBackgroundColorSchemeColor(settings.getHighlightColor());
favoriteReload.setProgressBackgroundColorSchemeColor(settings.getHighlightColor()); favoriteReload.setProgressBackgroundColorSchemeColor(settings.getHighlightColor());
@ -117,6 +116,7 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener,
tab2.setIndicator(favorIndicator); tab2.setIndicator(favorIndicator);
mTab.addTab(tab2); mTab.addTab(tab2);
lastTab = mTab.getCurrentView(); lastTab = mTab.getCurrentView();
setIndicator();
mTab.setOnTabChangedListener(this); mTab.setOnTabChangedListener(this);
homeReload.setOnRefreshListener(this); homeReload.setOnRefreshListener(this);
@ -127,7 +127,7 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener,
@Override @Override
protected void onStart() { protected void onStart() {
super.onStart(); super.onStart();
if (mProfile == null) { if (profileAsync == null) {
tweetAdapter = new TimelineAdapter(this); tweetAdapter = new TimelineAdapter(this);
tweetAdapter.setColor(settings.getHighlightColor(), settings.getFontColor()); tweetAdapter.setColor(settings.getHighlightColor(), settings.getFontColor());
tweetAdapter.toggleImage(settings.getImageLoad()); tweetAdapter.toggleImage(settings.getImageLoad());
@ -138,16 +138,16 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener,
favAdapter.toggleImage(settings.getImageLoad()); favAdapter.toggleImage(settings.getImageLoad());
favoriteList.setAdapter(favAdapter); favoriteList.setAdapter(favAdapter);
mProfile = new ProfileLoader(this, ProfileLoader.Mode.LDR_PROFILE); profileAsync = new ProfileLoader(this, ProfileLoader.Mode.LDR_PROFILE);
mProfile.execute(userId, 0L); profileAsync.execute(userId, 0L);
} }
} }
@Override @Override
protected void onStop() { protected void onStop() {
if (mProfile != null && mProfile.getStatus() == RUNNING) if (profileAsync != null && profileAsync.getStatus() == RUNNING)
mProfile.cancel(true); profileAsync.cancel(true);
super.onStop(); super.onStop();
} }
@ -155,7 +155,7 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener,
@Override @Override
protected void onActivityResult(int reqCode, int returnCode, Intent i) { protected void onActivityResult(int reqCode, int returnCode, Intent i) {
if (reqCode == TWEET && returnCode == STAT_CHANGED) { if (reqCode == TWEET && returnCode == STAT_CHANGED) {
mProfile = null; profileAsync = null;
} }
super.onActivityResult(reqCode, returnCode, i); super.onActivityResult(reqCode, returnCode, i);
} }
@ -214,7 +214,7 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener,
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
if (mProfile != null && mProfile.getStatus() != RUNNING) { if (profileAsync != null && profileAsync.getStatus() != RUNNING) {
switch (item.getItemId()) { switch (item.getItemId()) {
case R.id.profile_tweet: case R.id.profile_tweet:
Intent tweet = new Intent(this, TweetPopup.class); Intent tweet = new Intent(this, TweetPopup.class);
@ -224,16 +224,16 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener,
break; break;
case R.id.profile_follow: case R.id.profile_follow:
mProfile = new ProfileLoader(this, ProfileLoader.Mode.ACTION_FOLLOW); profileAsync = new ProfileLoader(this, ProfileLoader.Mode.ACTION_FOLLOW);
if (!isFollowing) { if (!isFollowing) {
mProfile.execute(userId); profileAsync.execute(userId);
} else { } else {
new Builder(this).setMessage(R.string.confirm_unfollow) new Builder(this).setMessage(R.string.confirm_unfollow)
.setNegativeButton(R.string.no_confirm, null) .setNegativeButton(R.string.no_confirm, null)
.setPositiveButton(R.string.yes_confirm, new DialogInterface.OnClickListener() { .setPositiveButton(R.string.yes_confirm, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
mProfile.execute(userId); profileAsync.execute(userId);
} }
}) })
.show(); .show();
@ -241,16 +241,16 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener,
break; break;
case R.id.profile_block: case R.id.profile_block:
mProfile = new ProfileLoader(this, ProfileLoader.Mode.ACTION_BLOCK); profileAsync = new ProfileLoader(this, ProfileLoader.Mode.ACTION_BLOCK);
if (isBlocked) { if (isBlocked) {
mProfile.execute(userId); profileAsync.execute(userId);
} else { } else {
new Builder(this).setMessage(R.string.confirm_block) new Builder(this).setMessage(R.string.confirm_block)
.setNegativeButton(R.string.no_confirm, null) .setNegativeButton(R.string.no_confirm, null)
.setPositiveButton(R.string.yes_confirm, new DialogInterface.OnClickListener() { .setPositiveButton(R.string.yes_confirm, new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
mProfile.execute(userId); profileAsync.execute(userId);
} }
}) })
.show(); .show();
@ -258,8 +258,8 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener,
break; break;
case R.id.profile_mute: case R.id.profile_mute:
mProfile = new ProfileLoader(this, ProfileLoader.Mode.ACTION_MUTE); profileAsync = new ProfileLoader(this, ProfileLoader.Mode.ACTION_MUTE);
mProfile.execute(userId); profileAsync.execute(userId);
break; break;
case R.id.profile_message: case R.id.profile_message:
@ -276,7 +276,7 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener,
case R.id.profile_settings: case R.id.profile_settings:
Intent editProfile = new Intent(this, ProfileEdit.class); Intent editProfile = new Intent(this, ProfileEdit.class);
startActivity(editProfile); startActivity(editProfile);
mProfile = null; profileAsync = null;
break; break;
} }
} }
@ -296,16 +296,18 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener,
@Override @Override
public void onRefresh() { public void onRefresh() {
if (profileAsync != null && profileAsync.getStatus() == RUNNING)
profileAsync.cancel(true);
switch (tabIndex) { switch (tabIndex) {
default: default:
case 0: case 0:
mProfile = new ProfileLoader(this, ProfileLoader.Mode.GET_TWEETS); profileAsync = new ProfileLoader(this, ProfileLoader.Mode.GET_TWEETS);
break; break;
case 1: case 1:
mProfile = new ProfileLoader(this, ProfileLoader.Mode.GET_FAVORS); profileAsync = new ProfileLoader(this, ProfileLoader.Mode.GET_FAVORS);
break; break;
} }
mProfile.execute(userId); profileAsync.execute(userId);
} }
@ -313,19 +315,7 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener,
public void onTabChanged(String tabId) { public void onTabChanged(String tabId) {
animate(); animate();
tabIndex = mTab.getCurrentTab(); tabIndex = mTab.getCurrentTab();
switch (tabIndex) { setIndicator();
case 0:
favoriteList.smoothScrollToPosition(0);
tweetUnderline.setBackgroundColor(settings.getHighlightColor());
favorUnderline.setBackgroundColor(0);
break;
case 1:
homeList.smoothScrollToPosition(0);
favorUnderline.setBackgroundColor(settings.getHighlightColor());
tweetUnderline.setBackgroundColor(0);
break;
}
} }
@ -337,7 +327,7 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener,
Tweet tweet = tweetAdapter.getData(position); Tweet tweet = tweetAdapter.getData(position);
if (tweet.getEmbeddedTweet() != null) if (tweet.getEmbeddedTweet() != null)
tweet = tweet.getEmbeddedTweet(); tweet = tweet.getEmbeddedTweet();
openTweet(tweet.getId(), tweet.getUser().getId(), tweet.getUser().getScreenname()); openTweet(tweet.getId(), tweet.getUser().getScreenname());
} }
break; break;
@ -346,7 +336,7 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener,
Tweet tweet = favAdapter.getData(position); Tweet tweet = favAdapter.getData(position);
if (tweet.getEmbeddedTweet() != null) if (tweet.getEmbeddedTweet() != null)
tweet = tweet.getEmbeddedTweet(); tweet = tweet.getEmbeddedTweet();
openTweet(tweet.getId(), tweet.getUser().getId(), tweet.getUser().getScreenname()); openTweet(tweet.getId(), tweet.getUser().getScreenname());
} }
break; break;
} }
@ -376,15 +366,32 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener,
} }
private void openTweet(long tweetId, long userId, String username) { private void openTweet(long tweetId, String username) {
Intent intent = new Intent(this, TweetDetail.class); Intent intent = new Intent(this, TweetDetail.class);
intent.putExtra("tweetID", tweetId); intent.putExtra("tweetID", tweetId);
intent.putExtra("userID", userId);
intent.putExtra("username", username); intent.putExtra("username", username);
startActivityForResult(intent, TWEET); startActivityForResult(intent, TWEET);
} }
private void setIndicator() {
switch (tabIndex) {
case 0:
tweetUnderline.setBackgroundColor(settings.getHighlightColor());
favorUnderline.setBackgroundColor(0);
favoriteList.smoothScrollToPosition(0);
break;
case 1:
favorUnderline.setBackgroundColor(settings.getHighlightColor());
tweetUnderline.setBackgroundColor(0);
homeList.smoothScrollToPosition(0);
break;
}
}
private void animate() { private void animate() {
final int ANIM_DUR = 300; final int ANIM_DUR = 300;
final float LEFT = -1.0f; final float LEFT = -1.0f;
@ -410,11 +417,4 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener,
} }
lastTab = mTab.getCurrentView(); lastTab = mTab.getCurrentView();
} }
public void imageClick(String link) {
Intent image = new Intent(this, ImageDetail.class);
image.putExtra("link", new String[]{link});
startActivity(image);
}
} }