removed redundant code code

bug fix
style fix
This commit is contained in:
NudeDude 2018-09-18 18:46:32 +02:00
parent 154671f30b
commit 850076b215
21 changed files with 162 additions and 118 deletions

View File

@ -26,11 +26,13 @@ public class ImagePopup extends AsyncTask<String, Void, Boolean> {
private LayoutInflater inflater;
private int position = 0;
public ImagePopup(Context context) {
popup = new Dialog(context);
inflater = LayoutInflater.from(context);
}
@Override
@SuppressLint("InflateParams")
protected void onPreExecute() {
@ -46,20 +48,19 @@ public class ImagePopup extends AsyncTask<String, Void, Boolean> {
@Override
public void onClick(View v) {
popup.dismiss();
if (!isCancelled())
cancel(true);
}
});
popup.setOnCancelListener(new DialogInterface.OnCancelListener() {
popup.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onCancel(DialogInterface dialog) {
if (!isCancelled())
public void onDismiss(DialogInterface dialog) {
if (getStatus() == Status.RUNNING)
cancel(true);
}
});
popup.show();
}
@Override
protected Boolean doInBackground(String... links) {
try {
@ -85,6 +86,7 @@ public class ImagePopup extends AsyncTask<String, Void, Boolean> {
}
}
@Override
@SuppressLint("InflateParams")
protected void onPostExecute(Boolean result) {
@ -127,6 +129,7 @@ public class ImagePopup extends AsyncTask<String, Void, Boolean> {
}
}
private void setImage(Bitmap btm, ImageView mImg) {
if (btm != null) {
int height = (int) (btm.getHeight() / (btm.getWidth() / 640.0));

View File

@ -27,6 +27,7 @@ public class MessageLoader extends AsyncTask<Void, Void, Boolean> {
private String errorMsg = "E MessageLoader: ";
private int returnCode = 0;
public MessageLoader(DirectMessage context) {
ui = new WeakReference<>(context);
GlobalSettings settings = GlobalSettings.getInstance(context);
@ -43,6 +44,7 @@ public class MessageLoader extends AsyncTask<Void, Void, Boolean> {
}
}
@Override
protected Boolean doInBackground(Void... param) {
try {
@ -72,6 +74,7 @@ public class MessageLoader extends AsyncTask<Void, Void, Boolean> {
return true;
}
@Override
protected void onPostExecute(Boolean success) {
if (ui.get() == null) return;

View File

@ -49,7 +49,7 @@ public class MessageUpload extends AsyncTask<String, Void, Boolean> {
popup.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
if (!isCancelled()) {
if (getStatus() == Status.RUNNING) {
Toast.makeText(ui.get(), R.string.abort, Toast.LENGTH_SHORT).show();
cancel(true);
}
@ -80,14 +80,14 @@ public class MessageUpload extends AsyncTask<String, Void, Boolean> {
@Override
protected void onPostExecute(Boolean success) {
if (ui.get() != null) {
popup.dismiss();
if (success) {
Toast.makeText(ui.get(), R.string.dmsend, Toast.LENGTH_SHORT).show();
ui.get().finish();
} else {
Toast.makeText(ui.get(), R.string.error_sending_dm, Toast.LENGTH_SHORT).show();
}
if (ui.get() == null) return;
popup.dismiss();
if (success) {
Toast.makeText(ui.get(), R.string.dmsend, Toast.LENGTH_SHORT).show();
ui.get().finish();
} else {
Toast.makeText(ui.get(), R.string.error_sending_dm, Toast.LENGTH_SHORT).show();
}
}
}

View File

@ -259,7 +259,7 @@ public class ProfileLoader extends AsyncTask<Long, Long, Long> {
profile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (getStatus() == Status.FINISHED)
if (getStatus() != Status.RUNNING)
new ImagePopup(ui.get()).execute(user.profileImg);
}
});
@ -310,6 +310,10 @@ public class ProfileLoader extends AsyncTask<Long, Long, Long> {
default:
Toast.makeText(ui.get(), errMsg, Toast.LENGTH_LONG).show();
}
SwipeRefreshLayout homeReload = ui.get().findViewById(R.id.hometweets);
SwipeRefreshLayout favReload = ui.get().findViewById(R.id.homefavorits);
homeReload.setRefreshing(false);
favReload.setRefreshing(false);
}
if (!isHome) {
ui.get().setConnection(isFollowing, isMuted, isBlocked, canDm);

View File

@ -5,18 +5,17 @@ import android.os.AsyncTask;
import android.util.Log;
import android.widget.Toast;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.window.LoginPage;
import java.lang.ref.WeakReference;
import twitter4j.TwitterException;
public class Registration extends AsyncTask<String, Void, Boolean> {
private WeakReference<LoginPage> ui;
private TwitterEngine mTwitter;
private boolean failure = false;
private String errorMessage = "E Registration: ";
private String redirectionURL = "";
@ -30,19 +29,14 @@ public class Registration extends AsyncTask<String, Void, Boolean> {
protected Boolean doInBackground(String... twitterPin) {
String pin = twitterPin[0];
try {
if (pin.trim().isEmpty()) {
redirectionURL = mTwitter.request();
} else {
redirectionURL = mTwitter.request();
if (!pin.trim().isEmpty()) {
mTwitter.initialize(pin);
return true;
}
} catch (TwitterException e) {
errorMessage += e.getMessage();
failure = true;
} catch (Exception e) {
errorMessage += e.getMessage();
e.printStackTrace();
Log.e("Registration", errorMessage);
Log.e("Registration", e.getMessage());
failure = true;
}
return false;
@ -51,15 +45,15 @@ public class Registration extends AsyncTask<String, Void, Boolean> {
@Override
protected void onPostExecute(Boolean success) {
if (ui.get() != null) {
if (success) {
ui.get().setResult(Activity.RESULT_OK);
ui.get().finish();
} else if (failure) {
Toast.makeText(ui.get(), errorMessage, Toast.LENGTH_LONG).show();
} else {
ui.get().connect(redirectionURL);
}
if (ui.get() == null) return;
if (success) {
ui.get().setResult(Activity.RESULT_OK);
ui.get().finish();
} else if (failure) {
Toast.makeText(ui.get(), R.string.pin_verification_failed, Toast.LENGTH_LONG).show();
} else {
ui.get().connect(redirectionURL);
}
}
}

View File

@ -91,22 +91,22 @@ public class StatusUpload extends AsyncTask<String, Void, Boolean> {
@Override
protected void onPostExecute(Boolean success) {
if (ui.get() != null) {
popup.dismiss();
if (success) {
Toast.makeText(ui.get(), R.string.tweet_sent, Toast.LENGTH_LONG).show();
ui.get().finish();
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(ui.get());
builder.setTitle(R.string.error).setMessage(R.string.error_sending_tweet)
.setPositiveButton(R.string.retry, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ui.get().findViewById(R.id.sendTweet).callOnClick();
}
})
.setNegativeButton(R.string.cancel, null).show();
}
if (ui.get() == null) return;
popup.dismiss();
if (success) {
Toast.makeText(ui.get(), R.string.tweet_sent, Toast.LENGTH_LONG).show();
ui.get().finish();
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(ui.get());
builder.setTitle(R.string.error).setMessage(R.string.error_sending_tweet)
.setPositiveButton(R.string.retry, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ui.get().findViewById(R.id.sendTweet).callOnClick();
}
})
.setNegativeButton(R.string.cancel, null).show();
}
}
}

View File

@ -38,11 +38,12 @@ public class TwitterEngine {
private static TwitterEngine mTwitter;
private final String TWITTER_CONSUMER_KEY = "xxx";
private final String TWITTER_CONSUMER_SECRET = "xxx";
private long twitterID = -1L;
private String redirectionUrl;
private long twitterID;
private Twitter twitter;
private GlobalSettings settings;
private RequestToken reqToken;
private boolean login;
private int load;
@ -51,13 +52,18 @@ public class TwitterEngine {
*/
private TwitterEngine(Context context) {
settings = GlobalSettings.getInstance(context);
login = settings.getLogin();
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.setOAuthConsumerKey(TWITTER_CONSUMER_KEY);
builder.setOAuthConsumerSecret(TWITTER_CONSUMER_SECRET);
Configuration configuration = builder.build();
TwitterFactory factory = new TwitterFactory(configuration);
twitter = factory.getInstance();
if (settings.getLogin()) {
String keys[] = settings.getKeys();
initKeys(keys[0], keys[1]);
twitterID = settings.getUserId();
}
}
@ -70,7 +76,6 @@ public class TwitterEngine {
public static TwitterEngine getInstance(Context context) {
if (mTwitter == null) {
mTwitter = new TwitterEngine(context);
mTwitter.init();
}
mTwitter.setLoad();
return mTwitter;
@ -83,9 +88,11 @@ public class TwitterEngine {
* @throws TwitterException if internet connection is unavailable
*/
public String request() throws TwitterException {
if (reqToken == null)
if (reqToken == null) {
reqToken = twitter.getOAuthRequestToken();
return reqToken.getAuthenticationURL();
redirectionUrl = reqToken.getAuthenticationURL();
}
return redirectionUrl;
}
/**
@ -101,9 +108,8 @@ public class TwitterEngine {
String key1 = accessToken.getToken();
String key2 = accessToken.getTokenSecret();
initKeys(key1, key2);
saveCurrentUser(key1, key2);
} else {
throw new IllegalMonitorStateException("empty request token!");
twitterID = twitter.getId();
settings.setConnection(key1, key2, twitterID);
}
}
@ -120,19 +126,6 @@ public class TwitterEngine {
builder.setTweetModeExtended(true);
AccessToken token = new AccessToken(key1, key2);
twitter = new TwitterFactory(builder.build()).getInstance(token);
login = true;
}
/**
* store current user's name & id
*
* @param key1 AccessToken
* @param key2 AccessToken Secret
* @throws TwitterException if twitter isn't initialized yet.
*/
private void saveCurrentUser(String key1, String key2) throws TwitterException {
twitterID = twitter.getId();
settings.setConnection(key1, key2, twitterID);
}
@ -143,17 +136,6 @@ public class TwitterEngine {
load = settings.getRowLimit();
}
/**
* recall Keys from Shared-Preferences
* & initialize Twitter
*/
private void init() {
if (login) {
String keys[] = settings.getKeys();
initKeys(keys[0], keys[1]);
}
twitterID = settings.getUserId();
}
/**
* Get Home Timeline

View File

@ -27,6 +27,11 @@ import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.database.GlobalSettings;
import org.nuclearfog.twidda.viewadapter.WorldIdAdapter;
/**
* App settings page
*
* @see GlobalSettings
*/
public class AppSettings extends AppCompatActivity implements OnClickListener,
OnColorChangedListener, OnItemSelectedListener {

View File

@ -78,11 +78,13 @@ public class DirectMessage extends AppCompatActivity implements OnItemSelected,
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.message:
Intent sendDm = new Intent(this, MessagePopup.class);
startActivity(sendDm);
break;
if (mLoader != null && mLoader.getStatus() != RUNNING) {
switch (item.getItemId()) {
case R.id.message:
Intent sendDm = new Intent(this, MessagePopup.class);
startActivity(sendDm);
break;
}
}
return super.onOptionsItemSelected(item);
}

View File

@ -15,11 +15,18 @@ import android.widget.Toast;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.Registration;
import static android.os.AsyncTask.Status.RUNNING;
/**
* Login Page
*
* @see Registration
*/
public class LoginPage extends AppCompatActivity implements OnClickListener {
private Registration register;
private EditText pin;
@Override
protected void onCreate(Bundle b) {
super.onCreate(b);
@ -31,6 +38,14 @@ public class LoginPage extends AppCompatActivity implements OnClickListener {
}
@Override
protected void onDestroy() {
if (register != null && register.getStatus() == RUNNING)
register.cancel(true);
super.onDestroy();
}
@Override
public void onBackPressed() {
setResult(RESULT_CANCELED);
@ -40,16 +55,20 @@ public class LoginPage extends AppCompatActivity implements OnClickListener {
@Override
public void onClick(View v) {
if (register != null && register.getStatus() == RUNNING)
register.cancel(true);
switch (v.getId()) {
case R.id.linkButton:
Registration account = new Registration(this);
account.execute("");
register = new Registration(this);
register.execute("");
break;
case R.id.get:
String twitterPin = pin.getText().toString();
if (!twitterPin.trim().isEmpty()) {
new Registration(this).execute(twitterPin);
register = new Registration(this);
register.execute(twitterPin);
} else {
Toast.makeText(this, R.string.enter_pin, Toast.LENGTH_LONG).show();
}

View File

@ -24,6 +24,11 @@ import org.nuclearfog.twidda.database.GlobalSettings;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static android.os.AsyncTask.Status.RUNNING;
/**
* Message Window
*
* @see MessageUpload
*/
public class MessagePopup extends AppCompatActivity implements View.OnClickListener {
private MessageUpload upload;

View File

@ -27,9 +27,13 @@ import org.nuclearfog.twidda.viewadapter.TimelineAdapter;
import org.nuclearfog.twidda.viewadapter.TimelineAdapter.OnItemClicked;
import org.nuclearfog.twidda.viewadapter.UserAdapter;
import static android.os.AsyncTask.Status.FINISHED;
import static android.os.AsyncTask.Status.RUNNING;
/**
* Search Page
*
* @see TwitterSearch
*/
public class SearchPage extends AppCompatActivity implements UserAdapter.OnItemClicked,
OnRefreshListener, OnTabChangeListener, OnItemClicked {
@ -131,6 +135,7 @@ public class SearchPage extends AppCompatActivity implements UserAdapter.OnItemC
startActivity(intent);
return true;
}
@Override
public boolean onQueryTextChange(String s) {
return false;
@ -142,7 +147,7 @@ public class SearchPage extends AppCompatActivity implements UserAdapter.OnItemC
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.search_tweet) {
if (item.getItemId() == R.id.search_tweet && mSearch.getStatus() != RUNNING) {
Intent intent = new Intent(this, TweetPopup.class);
intent.putExtra("TweetID", -1);
if (search.startsWith("#"))
@ -181,7 +186,7 @@ public class SearchPage extends AppCompatActivity implements UserAdapter.OnItemC
@Override
public void onRefresh() {
if (mSearch != null && mSearch.getStatus() == FINISHED) {
if (mSearch != null && mSearch.getStatus() != RUNNING) {
mSearch = new TwitterSearch(this);
mSearch.execute(search);
}

View File

@ -29,13 +29,13 @@ import org.nuclearfog.twidda.database.GlobalSettings;
import org.nuclearfog.twidda.viewadapter.TimelineAdapter;
import org.nuclearfog.twidda.viewadapter.TimelineAdapter.OnItemClicked;
import static android.os.AsyncTask.Status.FINISHED;
import static android.os.AsyncTask.Status.RUNNING;
/**
* Detailed Tweet Activity
*
* @see StatusLoader
* @see ImagePopup
*/
public class TweetDetail extends AppCompatActivity implements OnClickListener,
OnItemClicked, OnRefreshListener {
@ -159,7 +159,7 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener,
@Override
public void onClick(View v) {
if (mStat != null && mStat.getStatus() == FINISHED) {
if (mStat != null && mStat.getStatus() != RUNNING) {
switch (v.getId()) {
case R.id.rt_button_detail:
mStat = new StatusLoader(this);
@ -227,7 +227,7 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener,
public void onMediaClicked(String mediaLinks[]) {
ImagePopup mediaContent = new ImagePopup(this);
mediaContent.execute(mediaLinks);
ImagePopup imagePopup = new ImagePopup(this);
imagePopup.execute(mediaLinks);
}
}

View File

@ -27,9 +27,15 @@ import java.util.List;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static android.os.AsyncTask.Status.RUNNING;
/**
* Tweet Window
*
* @see StatusUpload
*/
public class TweetPopup extends AppCompatActivity implements OnClickListener {
private StatusUpload sendTweet;
private ImagePopup imagePopup;
private View imageButton, previewBtn;
private List<String> mediaPath;
private TextView imgCount;
@ -73,6 +79,16 @@ public class TweetPopup extends AppCompatActivity implements OnClickListener {
}
@Override
protected void onDestroy() {
if (sendTweet != null && sendTweet.getStatus() == RUNNING)
sendTweet.cancel(true);
if (imagePopup != null && imagePopup.getStatus() == RUNNING)
imagePopup.cancel(true);
super.onDestroy();
}
@Override
public void onBackPressed() {
showClosingMsg();
@ -118,8 +134,9 @@ public class TweetPopup extends AppCompatActivity implements OnClickListener {
switch (v.getId()) {
case R.id.sendTweet:
String tweetStr = tweet.getText().toString();
if (sendTweet != null && sendTweet.getStatus() == RUNNING)
sendTweet.cancel(true);
sendTweet = new StatusUpload(this, tweetStr, inReplyId);
if (!tweetStr.trim().isEmpty() && mediaPath.isEmpty()) {
sendTweet.execute();
} else if (!mediaPath.isEmpty()) {
@ -140,7 +157,10 @@ public class TweetPopup extends AppCompatActivity implements OnClickListener {
break;
case R.id.img_preview:
new ImagePopup(this).execute(mediaPath.toArray(new String[mediaPath.size()]));
if (imagePopup != null && imagePopup.getStatus() == RUNNING)
imagePopup.cancel(true);
imagePopup = new ImagePopup(this);
imagePopup.execute(mediaPath.toArray(new String[mediaPath.size()]));
break;
}
}
@ -154,8 +174,6 @@ public class TweetPopup extends AppCompatActivity implements OnClickListener {
closeDialog.setPositiveButton(R.string.yes_confirm, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (sendTweet != null && sendTweet.getStatus() == RUNNING)
sendTweet.cancel(true);
finish();
}
});

View File

@ -20,9 +20,8 @@ import org.nuclearfog.twidda.viewadapter.UserAdapter.OnItemClicked;
import static android.os.AsyncTask.Status.RUNNING;
/**
* User List
* User List Activity
*
* @see UserLists
*/

View File

@ -26,10 +26,8 @@ import org.nuclearfog.twidda.database.GlobalSettings;
import org.nuclearfog.twidda.viewadapter.TimelineAdapter;
import org.nuclearfog.twidda.viewadapter.TimelineAdapter.OnItemClicked;
import static android.os.AsyncTask.Status.FINISHED;
import static android.os.AsyncTask.Status.RUNNING;
/**
* User Profile Activity
*
@ -169,7 +167,7 @@ public class UserProfile extends AppCompatActivity implements
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (mProfile != null && mProfile.getStatus() == FINISHED) {
if (mProfile != null && mProfile.getStatus() != RUNNING) {
switch (item.getItemId()) {
case R.id.profile_tweet:
Intent tweet = new Intent(this, TweetPopup.class);

View File

@ -182,7 +182,7 @@
style="@style/Widget.AppCompat.Button.Borderless"
android:layout_width="0dp"
android:layout_height="@dimen/button_height"
android:layout_marginEnd="5dp"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@android:color/holo_red_dark"
android:text="@string/delete_database" />
@ -192,7 +192,7 @@
style="@style/Widget.AppCompat.Button.Borderless"
android:layout_width="0dp"
android:layout_height="@dimen/button_height"
android:layout_marginEnd="5dp"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@android:color/holo_red_dark"
android:text="@string/logout" />

View File

@ -10,15 +10,16 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:gravity="right|center_vertical"
android:orientation="horizontal">
<EditText
android:id="@+id/dm_receiver"
android:layout_width="@dimen/text_input_width"
android:layout_width="0dp"
android:layout_height="@dimen/name_input_height"
android:layout_marginBottom="5dp"
android:layout_marginEnd="5dp"
android:layout_weight="1"
android:background="@android:color/transparent"
android:hint="@string/username"
android:inputType="text"

View File

@ -17,7 +17,7 @@
<string name="trend_setting">Trendeinstellung</string>
<string name="database">Datenbank</string>
<string name="profile">Profil</string>
<string name="register_link">app registrieren</string>
<string name="register_link">PIN aufrufen</string>
<string name="profile_image">profilbild</string>
<string name="settings">Einstellungen</string>
<string name="back">Zurück</string>
@ -68,8 +68,9 @@
<string name="error_not_specified">Allgemeiner Fehler!</string>
<string name="error_sending_dm">Fehler beim Senden der Direktnachricht!</string>
<string name="empty_tweet">Tweet leer!</string>
<string name="logout">log out!</string>
<string name="logout">ausloggen</string>
<string name="should_log_lout">ausloggen?</string>
<string name="should_unfollow">User entfolgen?</string>
<string name="should_block">user sperren?</string>
<string name="pin_verification_failed">PIN verifizierung fehlgeschlagen!</string>
</resources>

View File

@ -31,7 +31,7 @@
<string name="trend_setting">trend setting</string>
<string name="database">database</string>
<string name="profile">profile</string>
<string name="register_link">app registry</string>
<string name="register_link">get PIN!</string>
<string name="image">load images</string>
<string name="delete_database">delete database</string>
<string name="search">search</string>
@ -80,4 +80,5 @@
<string name="should_log_lout">log out?</string>
<string name="should_unfollow">unfollow user?</string>
<string name="should_block">block user?</string>
<string name="pin_verification_failed">PIN verification failed!</string>
</resources>

View File

@ -8,7 +8,7 @@
<item name="android:windowAnimationStyle">@style/TransactionPending</item>
<item name="android:statusBarColor">@android:color/black</item>
<item name="android:textViewStyle">@style/RobotoTextView</item>
<item name="buttonStyle">@style/RobotoTextView</item>
<item name="buttonStyle">@style/CustomButton</item>
</style>
<style name="Transparency" parent="AppTheme">
@ -27,9 +27,13 @@
<style name="CardViewStyle" parent="CardView">
<item name="cardBackgroundColor">#40000000</item>
<item name="cardCornerRadius">4dp</item>
<item name="cardElevation">2dp</item>
<item name="cardCornerRadius">5dp</item>
<item name="cardUseCompatPadding">true</item>
</style>
<style name="CustomButton" parent="Widget.AppCompat.Button">
<item name="android:textAllCaps">false</item>
<item name="android:fontFamily">RobotoTextView</item>
</style>
</resources>