diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/ImagePopup.java b/app/src/main/java/org/nuclearfog/twidda/backend/ImagePopup.java index 7a6d53d9..641261e4 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/ImagePopup.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/ImagePopup.java @@ -29,6 +29,7 @@ public class ImagePopup extends AsyncTask { private LayoutInflater inf; private ErrorLog errorLog; private int position = 0; + private String errMsg = "E: Image Popup, "; public ImagePopup(Context context) { popup = new Dialog(context); @@ -73,7 +74,8 @@ public class ImagePopup extends AsyncTask { } return true; } catch (Exception err) { - errorLog.add("E: " + err.getMessage()); + errMsg += err.getMessage(); + errorLog.add(errMsg); return false; } } diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/MainPage.java b/app/src/main/java/org/nuclearfog/twidda/backend/MainPage.java index 0ff3da3c..55f3f490 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/MainPage.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/MainPage.java @@ -38,9 +38,9 @@ public class MainPage extends AsyncTask { private TrendRecycler trendsAdapter; private ErrorLog errorLog; private int woeId; - private String errMsg; private int highlight, font; private boolean image; + private String errMsg = "E: Main Page, "; private int retryAfter = 0; /** @@ -162,16 +162,13 @@ public class MainPage extends AsyncTask { if(errCode == 420) { retryAfter = e.getRetryAfter(); } else { - String errMsg = "E: " + e.getMessage(); - errorLog.add(errMsg); + errMsg += e.getMessage(); } return FAIL; } catch (Exception e) { - String errMsg = "E: Main Page, " + e.getMessage(); - if(ui.get() != null) { - errorLog.add(errMsg); - } + errMsg += e.getMessage(); + errorLog.add(errMsg); return FAIL; } return MODE; @@ -206,8 +203,11 @@ public class MainPage extends AsyncTask { break; case FAIL: - if (retryAfter > 0) - Toast.makeText(connect, R.string.rate_limit_exceeded, Toast.LENGTH_LONG).show(); + if (retryAfter > 0) { + Toast.makeText(connect, R.string.rate_limit_exceeded, Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(connect, errMsg, Toast.LENGTH_LONG).show(); + } default: timelineRefresh.setRefreshing(false); trendRefresh.setRefreshing(false); diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/ProfileLoader.java b/app/src/main/java/org/nuclearfog/twidda/backend/ProfileLoader.java index ee62f49b..1848eaa8 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/ProfileLoader.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/ProfileLoader.java @@ -55,6 +55,7 @@ public class ProfileLoader extends AsyncTask { private boolean isVerified = false; private boolean isLocked = false; private boolean blocked = false; + private String errMsg = "E: Profile Load, "; private int retryAfter = 0; /** @@ -192,13 +193,13 @@ public class ProfileLoader extends AsyncTask { retryAfter = err.getRetryAfter(); } else if(errCode != 136) { - String errMsg = "E: " + err.getMessage(); + errMsg += err.getMessage(); errorLog.add(errMsg); } return FAILURE; } catch(Exception err) { - String errMsg = "E: Profile Load, " + err.getMessage(); + errMsg += err.getMessage(); errorLog.add(errMsg); return FAILURE; } diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/Registration.java b/app/src/main/java/org/nuclearfog/twidda/backend/Registration.java index b0b45cda..b8e1fc23 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/Registration.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/Registration.java @@ -17,7 +17,8 @@ public class Registration extends AsyncTask { private WeakReference ui; private TwitterEngine mTwitter; private ErrorLog errorLog; - private String errorMessage; + private boolean failure = false; + private String errorMessage = "E: Registration, "; private String redirectionURL = ""; @@ -39,12 +40,14 @@ public class Registration extends AsyncTask { return true; } } catch(TwitterException e) { - errorMessage = "E: " + e.getErrorMessage(); + errorMessage += e.getErrorMessage(); errorLog.add(errorMessage); + failure = true; } catch ( Exception e ) { - errorMessage = "E: Registration, " + e.getMessage(); + errorMessage += e.getMessage(); errorLog.add(errorMessage); + failure = true; } return false; } @@ -58,10 +61,10 @@ public class Registration extends AsyncTask { if(success) { connect.setResult(Activity.RESULT_OK); connect.finish(); - } else if (errorMessage != null) { + } else if (failure) { Toast.makeText(connect,errorMessage,Toast.LENGTH_LONG).show(); } else { - ui.get().connect(redirectionURL); + connect.connect(redirectionURL); } } diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/StatusLoader.java b/app/src/main/java/org/nuclearfog/twidda/backend/StatusLoader.java index 78c62f4e..e420452d 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/StatusLoader.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/StatusLoader.java @@ -54,7 +54,7 @@ public class StatusLoader extends AsyncTask { private String usernameStr, scrNameStr, tweetStr, dateString; private String repliedUsername, apiName, profile_pb; private String medialinks[]; - private String errorMessage = ""; + private String errorMessage = "Status load: "; private boolean retweeted, favorited, toggleImg, verified; private long tweetReplyID, replyUserId; private int rtCount, favCount; @@ -162,6 +162,7 @@ public class StatusLoader extends AsyncTask { answers = mTwitter.getAnswers(scrNameStr, tweetID, tweetID); } answerAdapter.setData(answers); + answerAdapter.toggleImage(toggleImg); answerAdapter.setColor(highlight, font); if(answers.size() > 0 && database.containStatus(tweetID)) database.storeReplies(answers); @@ -170,18 +171,18 @@ public class StatusLoader extends AsyncTask { catch(TwitterException e) { int errCode = e.getErrorCode(); if(errCode == 144) { - database.removeStatus(tweetID); + database.removeStatus(tweetID); //TODO errorMessage = "Tweet nicht gefunden!\nID:"+tweetID; } else if(errCode == 420) { - int retry = e.getRetryAfter(); + int retry = e.getRetryAfter(); //TODO errorMessage = "Rate limit erreicht!\n Weiter in "+retry+" Sekunden"; } else { - errorMessage = "Fehler: "+e.getMessage(); + errorMessage += e.getMessage(); } return ERROR; } catch(Exception err) { - errorMessage = "Status load: "+err.getMessage(); + errorMessage += err.getMessage(); errorLog.add(errorMessage); return ERROR; } @@ -245,16 +246,16 @@ public class StatusLoader extends AsyncTask { } if(toggleImg) { Picasso.with(ui.get()).load(profile_pb).into(profile_img); - if(medialinks != null && medialinks.length != 0) { - View mediaButton = connect.findViewById(R.id.image_attach); - mediaButton.setVisibility(View.VISIBLE); - mediaButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - connect.onMediaClicked(medialinks); - } - }); - } + } + if (medialinks != null && medialinks.length != 0) { + View mediaButton = connect.findViewById(R.id.image_attach); + mediaButton.setVisibility(View.VISIBLE); + mediaButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + connect.onMediaClicked(medialinks); + } + }); } Button retweetButton = connect.findViewById(R.id.rt_button_detail); Button favoriteButton = connect.findViewById(R.id.fav_button_detail); diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/TwitterSearch.java b/app/src/main/java/org/nuclearfog/twidda/backend/TwitterSearch.java index a47d8cdf..bb87bbf6 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/TwitterSearch.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/TwitterSearch.java @@ -20,7 +20,7 @@ import java.util.List; import twitter4j.TwitterException; -public class TwitterSearch extends AsyncTask { +public class TwitterSearch extends AsyncTask { private TimelineRecycler searchAdapter; private UserRecycler userAdapter; @@ -29,6 +29,7 @@ public class TwitterSearch extends AsyncTask { private WeakReference ui; private int highlight, font_color; private boolean imageLoad; + private String errorMessage = "E: Twitter search, "; private int retryAfter = 0; public TwitterSearch(Context context) { @@ -58,7 +59,7 @@ public class TwitterSearch extends AsyncTask { @Override - protected Void doInBackground(String... search) { + protected Boolean doInBackground(String... search) { String strSearch = search[0]; long id = 1L; try { @@ -79,32 +80,35 @@ public class TwitterSearch extends AsyncTask { searchAdapter.setColor(highlight,font_color); searchAdapter.toggleImage(imageLoad); userAdapter.toggleImage(imageLoad); + return true; } catch (TwitterException err) { int errCode = err.getErrorCode(); if(errCode == 420) { retryAfter = err.getRetryAfter(); } else { - String errorMessage = "E: " + err.getErrorMessage(); + errorMessage += err.getMessage(); errorLog.add(errorMessage); } } catch(Exception err) { - String errorMessage = "E: Twitter search, " + err.getMessage(); + errorMessage += err.getMessage(); errorLog.add(errorMessage); } - return null; + return false; } @Override - protected void onPostExecute(Void v) { + protected void onPostExecute(Boolean success) { SearchPage connect = ui.get(); if(connect == null) return; - if (retryAfter > 0) { - Toast.makeText(connect, R.string.rate_limit_exceeded, Toast.LENGTH_LONG).show(); + if (!success) { + if (retryAfter > 0) + Toast.makeText(connect, R.string.rate_limit_exceeded, Toast.LENGTH_LONG).show(); + else + Toast.makeText(connect, errorMessage, Toast.LENGTH_LONG).show(); } - SwipeRefreshLayout tweetReload = connect.findViewById(R.id.searchtweets); View circleLoad = connect.findViewById(R.id.search_progress); circleLoad.setVisibility(View.INVISIBLE); diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/UserLists.java b/app/src/main/java/org/nuclearfog/twidda/backend/UserLists.java index 7925c757..3073712f 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/UserLists.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/UserLists.java @@ -29,6 +29,7 @@ public class UserLists extends AsyncTask { private UserRecycler usrAdp; private ErrorLog errorLog; private boolean imageLoad; + private String errorMessage = "E: Userlist, "; private int retryAfter = 0; /** @@ -75,12 +76,12 @@ public class UserLists extends AsyncTask { if(errCode == 420) { retryAfter = err.getRetryAfter(); } else { - String errorMessage = "E: " + err.getMessage(); + errorMessage += err.getMessage(); errorLog.add(errorMessage); } return false; } catch(Exception err) { - String errorMessage = "E: Userlist, " + err.getMessage(); + errorMessage += err.getMessage(); errorLog.add(errorMessage); return false; } @@ -98,7 +99,9 @@ public class UserLists extends AsyncTask { usrAdp.notifyDataSetChanged(); } else { if (retryAfter > 0) - Toast.makeText(ui.get(), R.string.rate_limit_exceeded, Toast.LENGTH_LONG).show(); + Toast.makeText(ui.get(), R.string.rate_limit_exceeded, Toast.LENGTH_SHORT).show(); + else + Toast.makeText(ui.get(), errorMessage, Toast.LENGTH_SHORT).show(); } } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/window/TweetDetail.java b/app/src/main/java/org/nuclearfog/twidda/window/TweetDetail.java index 91eb3c9c..535b6062 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/TweetDetail.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/TweetDetail.java @@ -13,6 +13,9 @@ import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.Toolbar; +import android.view.Menu; +import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; @@ -43,13 +46,13 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener, private ConnectivityManager mConnect; private GlobalSettings settings; private String username = ""; + private boolean isHome; private long userID = 0; private long tweetID = 0; @Override protected void onCreate(Bundle b) { super.onCreate(b); - b = getIntent().getExtras(); if (b != null) { tweetID = b.getLong("tweetID"); @@ -58,13 +61,17 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener, } setContentView(R.layout.tweetpage); + Toolbar tool = findViewById(R.id.tweet_toolbar); + setSupportActionBar(tool); + if (getSupportActionBar() != null) + getSupportActionBar().setDisplayShowTitleEnabled(false); + settings = GlobalSettings.getInstance(this); - boolean home = userID == settings.getUserId(); + isHome = userID == settings.getUserId(); mConnect = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); View retweet = findViewById(R.id.rt_button_detail); View favorite = findViewById(R.id.fav_button_detail); - View delete = findViewById(R.id.delete); View txtRt = findViewById(R.id.no_rt_detail); View txtFav = findViewById(R.id.no_fav_detail); View date = findViewById(R.id.timedetail); @@ -73,16 +80,12 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener, answerReload = findViewById(R.id.answer_reload); answer_list = findViewById(R.id.answer_list); answer_list.setLayoutManager(new LinearLayoutManager(getApplicationContext())); - if(home) { - delete.setVisibility(View.VISIBLE); - } favorite.setOnClickListener(this); retweet.setOnClickListener(this); answerReload.setOnRefreshListener(this); txtFav.setOnClickListener(this); txtRt.setOnClickListener(this); date.setOnClickListener(this); - delete.setOnClickListener(this); profile_img.setOnClickListener(this); answer.setOnClickListener(this); setContent(); @@ -103,6 +106,31 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener, super.onPause(); } + @Override + public boolean onCreateOptionsMenu(Menu m) { + getMenuInflater().inflate(R.menu.tweet, m); //TODO add more + if (isHome) { + m.findItem(R.id.delete_tweet).setVisible(true); + } + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.delete_tweet: + AlertDialog.Builder alerta = new AlertDialog.Builder(this); + alerta.setMessage(R.string.delete_tweet); + alerta.setPositiveButton(R.string.yes_confirm, this); + alerta.setNegativeButton(R.string.no_confirm, this); + alerta.show(); + return true; + + default: + return false; + } + } + @Override public void onClick(View v) { Intent intent; @@ -133,18 +161,10 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener, startActivity(intent); break; - case R.id.delete: - AlertDialog.Builder alerta = new AlertDialog.Builder(this); - alerta.setMessage(R.string.delete_tweet); - alerta.setPositiveButton(R.string.yes_confirm, this); - alerta.setNegativeButton(R.string.no_confirm, this); - alerta.show(); - break; - case R.id.timedetail: if (mConnect.getActiveNetworkInfo() != null && mConnect.getActiveNetworkInfo().isConnected()) { intent = new Intent(Intent.ACTION_VIEW); - String tweetLink = "https://twitter.com/" + username + "/status/" + tweetID; + String tweetLink = "https://twitter.com/" + username.substring(1) + "/status/" + tweetID; intent.setData(Uri.parse(tweetLink)); startActivity(intent); } else { diff --git a/app/src/main/res/layout/profilepage.xml b/app/src/main/res/layout/profilepage.xml index 7a430902..a4da9437 100644 --- a/app/src/main/res/layout/profilepage.xml +++ b/app/src/main/res/layout/profilepage.xml @@ -10,10 +10,10 @@ android:background="@android:color/transparent"> + app:layout_scrollFlags="scroll|exitUntilCollapsed"> + android:layout_height="match_parent"> + android:background="@android:color/transparent"> + app:layout_scrollFlags="scroll|exitUntilCollapsed"> + + -