From 1fee5209e699f57892525ce82f4f7a3efb444e1a Mon Sep 17 00:00:00 2001 From: NudeDude Date: Wed, 14 Mar 2018 19:06:33 +0100 Subject: [PATCH] Bugfix Cleanup --- .../nuclearfog/twidda/backend/ImagePopup.java | 9 +- .../nuclearfog/twidda/backend/MainPage.java | 41 ++++---- .../twidda/backend/ProfileLoader.java | 82 ++++++++-------- .../twidda/backend/Registration.java | 20 ++-- .../twidda/backend/StatusLoader.java | 94 +++++++++---------- .../twidda/backend/StatusUpload.java | 29 +++++- .../twidda/backend/TwitterEngine.java | 1 + .../twidda/backend/TwitterSearch.java | 41 ++++---- .../nuclearfog/twidda/backend/UserLists.java | 36 +++---- .../twidda/database/AppDatabase.java | 40 ++++---- .../twidda/database/TweetDatabase.java | 37 +++----- .../twidda/viewadapter/TimelineRecycler.java | 2 - .../twidda/window/ColorPreferences.java | 8 +- .../nuclearfog/twidda/window/TweetDetail.java | 3 +- .../nuclearfog/twidda/window/TweetPopup.java | 11 ++- .../nuclearfog/twidda/window/UserProfile.java | 20 ++-- app/src/main/res/layout/profile.xml | 3 +- app/src/main/res/layout/tweetwindow.xml | 35 ++++--- app/src/main/res/values/styles.xml | 2 - 19 files changed, 278 insertions(+), 236 deletions(-) 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 b874a6d8..f6dc7616 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/ImagePopup.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/ImagePopup.java @@ -18,7 +18,6 @@ import java.net.URL; public class ImagePopup extends AsyncTask implements Button.OnClickListener { - private ProgressBar mBar; private ImageView mImg; private Dialog popup; private Bitmap imgArray[]; @@ -29,14 +28,10 @@ public class ImagePopup extends AsyncTask implements Butt public ImagePopup(Context c) { popup = new Dialog(c); - mBar = new ProgressBar(c); + ProgressBar mBar = new ProgressBar(c); inf = (LayoutInflater)c.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - } - - @Override - protected void onPreExecute() { popup.requestWindowFeature(Window.FEATURE_NO_TITLE); - popup.getWindow().setBackgroundDrawableResource(R.color.transparent); + popup.getWindow().setBackgroundDrawableResource(android.R.color.transparent); popup.setContentView(mBar); popup.show(); popup.setOnCancelListener(new DialogInterface.OnCancelListener() { 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 5e92e7eb..1a308462 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/MainPage.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/MainPage.java @@ -14,6 +14,8 @@ import android.widget.Toast; import android.content.Context; import android.os.AsyncTask; +import java.lang.ref.WeakReference; + public class MainPage extends AsyncTask { public static final int HOME = 0; @@ -21,9 +23,8 @@ public class MainPage extends AsyncTask { public static final int MENT = 2; private static final int FAIL = -1; + private WeakReference ui; private TwitterEngine mTwitter; - private Context context; - private SwipeRefreshLayout timelineRefresh, trendRefresh, mentionRefresh; private RecyclerView timelineList, trendList, mentionList; private TimelineRecycler timelineAdapter, mentionAdapter; private TrendRecycler trendsAdapter; @@ -34,23 +35,13 @@ public class MainPage extends AsyncTask { * @see MainActivity */ public MainPage(Context context) { - this.context = context; + ui = new WeakReference<>((MainActivity)context); mTwitter = TwitterEngine.getInstance(context); SharedPreferences settings = context.getSharedPreferences("settings", 0); woeid = settings.getInt("woeid",23424829); // Germany WOEID - } - - @Override - protected void onPreExecute() { - // Timeline Tab - timelineRefresh = (SwipeRefreshLayout)((MainActivity)context).findViewById(R.id.timeline); - timelineList = (RecyclerView)((MainActivity)context).findViewById(R.id.tl_list); - // Trend Tab - trendRefresh = (SwipeRefreshLayout)((MainActivity)context).findViewById(R.id.trends); - trendList = (RecyclerView)((MainActivity)context).findViewById(R.id.tr_list); - // Mention Tab - mentionRefresh = (SwipeRefreshLayout)((MainActivity)context).findViewById(R.id.mention); - mentionList = (RecyclerView)((MainActivity)context).findViewById(R.id.m_list); + timelineList = (RecyclerView)ui.get().findViewById(R.id.tl_list); + trendList = (RecyclerView)ui.get().findViewById(R.id.tr_list); + mentionList = (RecyclerView)ui.get().findViewById(R.id.m_list); } /** @@ -70,8 +61,8 @@ public class MainPage extends AsyncTask { id = timelineAdapter.getItemId(0); timelineAdapter.getData().insert(mTwitter.getHome(page,id),true); } else { - TweetDatabase mTweets = new TweetDatabase(mTwitter.getHome(page,id), context,TweetDatabase.HOME_TL,0); - timelineAdapter = new TimelineRecycler(mTweets,(MainActivity)context); + TweetDatabase mTweets = new TweetDatabase(mTwitter.getHome(page,id), ui.get(),TweetDatabase.HOME_TL,0); + timelineAdapter = new TimelineRecycler(mTweets,ui.get()); } break; @@ -80,7 +71,7 @@ public class MainPage extends AsyncTask { if(trendsAdapter != null && trendsAdapter.getItemCount() > 0) trendsAdapter.getData().setTrends( mTwitter.getTrends(woeid) ); else - trendsAdapter = new TrendRecycler(new TrendDatabase(mTwitter.getTrends(woeid),context),(MainActivity)context); + trendsAdapter = new TrendRecycler(new TrendDatabase(mTwitter.getTrends(woeid),ui.get()), ui.get()); break; case MENT: @@ -89,8 +80,8 @@ public class MainPage extends AsyncTask { id = mentionAdapter.getItemId(0); mentionAdapter.getData().insert(mTwitter.getMention(page,id),true); } else { - TweetDatabase mention = new TweetDatabase(mTwitter.getMention(page,id), context,TweetDatabase.GET_MENT,0); - mentionAdapter = new TimelineRecycler(mention,(MainActivity)context); + TweetDatabase mention = new TweetDatabase(mTwitter.getMention(page,id), ui.get(),TweetDatabase.GET_MENT,0); + mentionAdapter = new TimelineRecycler(mention,ui.get()); } break; } @@ -103,6 +94,14 @@ public class MainPage extends AsyncTask { @Override protected void onPostExecute(Integer MODE) { + MainActivity connect = ui.get(); + if(connect == null) + return; + Context context = connect.getApplicationContext(); + SwipeRefreshLayout timelineRefresh = (SwipeRefreshLayout)connect.findViewById(R.id.timeline); + SwipeRefreshLayout trendRefresh = (SwipeRefreshLayout)connect.findViewById(R.id.trends); + SwipeRefreshLayout mentionRefresh = (SwipeRefreshLayout)connect.findViewById(R.id.mention); + switch(MODE) { case HOME: timelineRefresh.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 1dcb40a6..a044f7b1 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/ProfileLoader.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/ProfileLoader.java @@ -16,7 +16,8 @@ import org.nuclearfog.twidda.database.TweetDatabase; import org.nuclearfog.twidda.viewadapter.TimelineRecycler; import org.nuclearfog.twidda.window.UserProfile; -import java.text.SimpleDateFormat; +import java.lang.ref.WeakReference; +import java.text.DateFormat; import java.util.Date; import twitter4j.User; import com.squareup.picasso.Picasso; @@ -31,14 +32,11 @@ public class ProfileLoader extends AsyncTask { private static final long FAILURE = 0x6; private String screenName, username, description, location, follower, following; - private TextView txtUser,txtScrName,txtBio,txtLocation,txtLink,txtFollowing,txtFollower,txtCreated; - private ImageView profile, banner, linkIcon, locationIcon, verifier, locked, followback; - private SwipeRefreshLayout tweetsReload, favoritsReload; private RecyclerView profileTweets, profileFavorits; private String imageLink, bannerLink, fullPbLink, link, dateString; private TimelineRecycler homeTl, homeFav; - private Context context; - private Toolbar tool; + private WeakReference ui; + private TwitterEngine mTwitter; private boolean isHome = false; private boolean imgEnabled = false; private boolean isFollowing = false; @@ -52,41 +50,20 @@ public class ProfileLoader extends AsyncTask { * @see UserProfile */ public ProfileLoader(Context context) { - this.context=context; + ui = new WeakReference<>((UserProfile)context); + profileTweets = (RecyclerView) ui.get().findViewById(R.id.ht_list); + profileFavorits = (RecyclerView) ui.get().findViewById(R.id.hf_list); + mTwitter = TwitterEngine.getInstance(context); SharedPreferences settings = context.getSharedPreferences("settings", 0); imgEnabled = settings.getBoolean("image_load",true); } - @Override - protected void onPreExecute() { - txtUser = (TextView)((UserProfile)context).findViewById(R.id.profile_username); - txtScrName = (TextView)((UserProfile)context).findViewById(R.id.profile_screenname); - txtBio = (TextView)((UserProfile)context).findViewById(R.id.bio); - txtLocation = (TextView)((UserProfile)context).findViewById(R.id.location); - txtLink = (TextView)((UserProfile)context).findViewById(R.id.links); - txtCreated = (TextView)((UserProfile)context).findViewById(R.id.profile_date); - txtFollowing = (TextView)((UserProfile)context).findViewById(R.id.following); - txtFollower = (TextView)((UserProfile)context).findViewById(R.id.follower); - profile = (ImageView)((UserProfile)context).findViewById(R.id.profile_img); - banner = (ImageView)((UserProfile)context).findViewById(R.id.banner); - linkIcon = (ImageView)((UserProfile)context).findViewById(R.id.link_img); - verifier = (ImageView)((UserProfile)context).findViewById(R.id.profile_verify); - followback = (ImageView)((UserProfile)context).findViewById(R.id.followback); - locked = (ImageView)((UserProfile)context).findViewById(R.id.profile_locked); - locationIcon = (ImageView)((UserProfile)context).findViewById(R.id.location_img); - tweetsReload = (SwipeRefreshLayout)((UserProfile)context).findViewById(R.id.hometweets); - favoritsReload = (SwipeRefreshLayout)((UserProfile)context).findViewById(R.id.homefavorits); - profileTweets = (RecyclerView)((UserProfile)context).findViewById(R.id.ht_list); - profileFavorits = (RecyclerView)((UserProfile)context).findViewById(R.id.hf_list); - tool = (Toolbar) ((UserProfile)context).findViewById(R.id.profile_toolbar); - } - @Override protected Long doInBackground(Long... args) { long userId = args[0]; final long MODE = args[1]; long id = 1L; - TwitterEngine mTwitter = TwitterEngine.getInstance(context); + try { isHome = TwitterEngine.getHomeId() == userId; if(!isHome) @@ -111,7 +88,7 @@ public class ProfileLoader extends AsyncTask { bannerLink = user.getProfileBannerMobileURL(); fullPbLink = user.getOriginalProfileImageURL(); Date d = user.getCreatedAt(); - dateString = "seit "+new SimpleDateFormat("dd.MM.yyyy").format(d); + dateString = "seit "+ DateFormat.getDateTimeInstance().format(d); } else if(MODE == GET_TWEETS) { @@ -120,8 +97,8 @@ public class ProfileLoader extends AsyncTask { id = homeTl.getItemId(0); homeTl.getData().insert(mTwitter.getUserTweets(userId,args[2],id),true); } else { - TweetDatabase hTweets = new TweetDatabase(mTwitter.getUserTweets(userId,args[2],id),context,TweetDatabase.USER_TL,userId); - homeTl = new TimelineRecycler(hTweets,(UserProfile)context); + TweetDatabase hTweets = new TweetDatabase(mTwitter.getUserTweets(userId,args[2],id),ui.get(),TweetDatabase.USER_TL,userId); + homeTl = new TimelineRecycler(hTweets,ui.get()); } } else if(MODE == GET_FAVS) @@ -131,8 +108,8 @@ public class ProfileLoader extends AsyncTask { id = homeFav.getItemId(0); homeFav.getData().insert(mTwitter.getUserFavs(userId,args[2],id),true); } else { - TweetDatabase fTweets = new TweetDatabase(mTwitter.getUserFavs(userId,args[2],id),context,TweetDatabase.FAV_TL,userId); - homeFav = new TimelineRecycler(fTweets,(UserProfile)context); + TweetDatabase fTweets = new TweetDatabase(mTwitter.getUserFavs(userId,args[2],id),ui.get(),TweetDatabase.FAV_TL,userId); + homeFav = new TimelineRecycler(fTweets,ui.get()); } } else if(MODE == ACTION_FOLLOW) @@ -158,6 +135,32 @@ public class ProfileLoader extends AsyncTask { @Override protected void onPostExecute(Long mode) { + + UserProfile connect = ui.get(); + if(connect == null) + return; + + final Context context = connect.getApplicationContext(); + + TextView txtUser = (TextView)connect.findViewById(R.id.profile_username); + TextView txtScrName = (TextView)connect.findViewById(R.id.profile_screenname); + TextView txtBio = (TextView)connect.findViewById(R.id.bio); + TextView txtLocation = (TextView)connect.findViewById(R.id.location); + TextView txtLink = (TextView)connect.findViewById(R.id.links); + TextView txtCreated = (TextView)connect.findViewById(R.id.profile_date); + TextView txtFollowing = (TextView)connect.findViewById(R.id.following); + TextView txtFollower = (TextView)connect.findViewById(R.id.follower); + ImageView profile = (ImageView)connect.findViewById(R.id.profile_img); + ImageView banner = (ImageView)connect.findViewById(R.id.banner); + ImageView linkIcon = (ImageView)connect.findViewById(R.id.link_img); + ImageView verifier = (ImageView)connect.findViewById(R.id.profile_verify); + ImageView followback = (ImageView)connect.findViewById(R.id.followback); + ImageView locked = (ImageView)connect.findViewById(R.id.profile_locked); + ImageView locationIcon = (ImageView)connect.findViewById(R.id.location_img); + SwipeRefreshLayout tweetsReload = (SwipeRefreshLayout)connect.findViewById(R.id.hometweets); + SwipeRefreshLayout favoritsReload = (SwipeRefreshLayout)connect.findViewById(R.id.homefavorits); + Toolbar tool = (Toolbar) connect.findViewById(R.id.profile_toolbar); + if(mode == GET_INFORMATION) { txtUser.setText(username); txtScrName.setText(screenName); @@ -192,6 +195,7 @@ public class ProfileLoader extends AsyncTask { } }); } + ui.get().onLoaded(); } else if(mode == GET_TWEETS) { @@ -226,4 +230,8 @@ public class ProfileLoader extends AsyncTask { tool.getMenu().getItem(2).setIcon(R.drawable.block); } } + + public interface OnProfileFinished { + void onLoaded(); + } } \ No newline at end of file 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 62feca6f..5176b2f3 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/Registration.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/Registration.java @@ -6,8 +6,12 @@ import android.os.AsyncTask; import android.widget.Toast; import org.nuclearfog.twidda.window.LoginPage; +import java.lang.ref.WeakReference; + public class Registration extends AsyncTask { - private Context context; + + private WeakReference ui; + private TwitterEngine mTwitter; private String errMSG = ""; /** @@ -17,18 +21,18 @@ public class Registration extends AsyncTask { * @param context current Activity's Context. */ public Registration(Context context) { - this.context = context; + ui = new WeakReference<>((LoginPage)context); + mTwitter = TwitterEngine.getInstance(context); } @Override protected Boolean doInBackground( String... twitterPin ) { String pin = twitterPin[0]; - TwitterEngine mTwitter = TwitterEngine.getInstance(context); try { if( pin.trim().isEmpty() ) { mTwitter.request(); - }else { + } else { mTwitter.initialize(pin); return true; } @@ -41,10 +45,14 @@ public class Registration extends AsyncTask { @Override protected void onPostExecute(Boolean success) { + LoginPage connect = ui.get(); + if(connect == null) + return; if(success) { - ((LoginPage)context).setResult(Activity.RESULT_OK); - ((LoginPage)context).finish(); + connect.setResult(Activity.RESULT_OK); + connect.finish(); } else if(!errMSG.isEmpty()) { + Context context = connect.getApplicationContext(); Toast.makeText(context,"Fehler: "+errMSG,Toast.LENGTH_LONG).show(); } } 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 e5a3cd4d..aa952ed2 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/StatusLoader.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/StatusLoader.java @@ -18,8 +18,9 @@ import android.widget.TextView; import android.widget.Toast; import java.io.InputStream; +import java.lang.ref.WeakReference; import java.net.URL; -import java.text.SimpleDateFormat; +import java.text.DateFormat; import java.util.ArrayList; import java.util.List; @@ -42,19 +43,13 @@ public class StatusLoader extends AsyncTask { public static final long LOAD_TWEET = 3; public static final long LOAD_REPLY = 4; - private Context c; private TwitterEngine mTwitter; private List answers; private TimelineRecycler tlAdp; private RecyclerView replyList; - private TextView username,scrName,replyName,tweet,userRetweet; - private TextView used_api,txtAns,txtRet,txtFav,date; - private ImageView profile_img,tweet_verify; - private Button retweetButton,favoriteButton, mediabutton; - private SwipeRefreshLayout ansReload; private Bitmap profile_btm; private String usernameStr, scrNameStr, tweetStr, dateString; - private String repliedUsername, apiName, retweeter, tweetlink; + private String repliedUsername, apiName, retweeter; private String medialinks[]; private String errMSG = ""; private boolean retweeted, favorited, toggleImg, verified; @@ -63,7 +58,7 @@ public class StatusLoader extends AsyncTask { private int rt, fav; private int highlight; - + private WeakReference ui; public StatusLoader(Context c) { mTwitter = TwitterEngine.getInstance(c); @@ -71,32 +66,11 @@ public class StatusLoader extends AsyncTask { SharedPreferences settings = c.getSharedPreferences("settings", 0); toggleImg = settings.getBoolean("image_load", true); highlight = ColorPreferences.getInstance(c).getColor(ColorPreferences.HIGHLIGHTING); - this.c = c; + + ui = new WeakReference<>((TweetDetail)c); + replyList = (RecyclerView) ui.get().findViewById(R.id.answer_list); } - @Override - protected void onPreExecute() { - replyList = (RecyclerView) ((TweetDetail)c).findViewById(R.id.answer_list); - tweet = (TextView) ((TweetDetail)c).findViewById(R.id.tweet_detailed); - username = (TextView) ((TweetDetail)c).findViewById(R.id.usernamedetail); - scrName = (TextView) ((TweetDetail)c).findViewById(R.id.scrnamedetail); - date = (TextView) ((TweetDetail)c).findViewById(R.id.timedetail); - replyName = (TextView) ((TweetDetail)c).findViewById(R.id.answer_reference_detail); - txtAns = (TextView) ((TweetDetail)c).findViewById(R.id.no_ans_detail); - txtRet = (TextView) ((TweetDetail)c).findViewById(R.id.no_rt_detail); - txtFav = (TextView) ((TweetDetail)c).findViewById(R.id.no_fav_detail); - used_api = (TextView) ((TweetDetail)c).findViewById(R.id.used_api); - used_api = (TextView) ((TweetDetail)c).findViewById(R.id.used_api); - userRetweet = (TextView) ((TweetDetail)c).findViewById(R.id.rt_info); - ansReload = (SwipeRefreshLayout) ((TweetDetail)c).findViewById(R.id.answer_reload); - - profile_img = (ImageView) ((TweetDetail)c).findViewById(R.id.profileimage_detail); - tweet_verify =(ImageView)((TweetDetail)c).findViewById(R.id.tweet_verify); - - retweetButton = (Button) ((TweetDetail)c).findViewById(R.id.rt_button_detail); - favoriteButton = (Button) ((TweetDetail)c).findViewById(R.id.fav_button_detail); - mediabutton = (Button) ((TweetDetail)c).findViewById(R.id.image_attach); - } /** * @param data [0] TWEET ID , [1] Mode @@ -129,7 +103,7 @@ public class StatusLoader extends AsyncTask { usernameStr = user.getName(); scrNameStr = '@'+user.getScreenName(); apiName = formatString(currentTweet.getSource()); - dateString = new SimpleDateFormat("dd.MM.yyyy hh:mm:ss").format(currentTweet.getCreatedAt()); + dateString = DateFormat.getDateTimeInstance().format(currentTweet.getCreatedAt()); if(userReply > 0) repliedUsername = currentTweet.getInReplyToScreenName(); @@ -148,7 +122,7 @@ public class StatusLoader extends AsyncTask { else if(mode == RETWEET) { if(retweeted) { mTwitter.retweet(tweetID, true); - TweetDatabase.delete(c, tweetID); + TweetDatabase.delete(ui.get(), tweetID); retweeted = false; rt--; } else { @@ -177,12 +151,12 @@ public class StatusLoader extends AsyncTask { } else if(mode == DELETE) { mTwitter.deleteTweet(tweetID); - TweetDatabase.delete(c,tweetID); + TweetDatabase.delete(ui.get(),tweetID); } }catch(TwitterException e) { int err = e.getErrorCode(); if(err == 144) { // gelöscht - TweetDatabase.delete(c,tweetID); + TweetDatabase.delete(ui.get(),tweetID); errMSG = e.getMessage(); } e.printStackTrace(); @@ -196,6 +170,30 @@ public class StatusLoader extends AsyncTask { @Override protected void onPostExecute(Long mode) { + + TweetDetail connect = ui.get(); + if(connect == null) + return; + + final Context c = connect.getApplicationContext(); + + TextView tweet = (TextView)connect.findViewById(R.id.tweet_detailed); + TextView username = (TextView)connect.findViewById(R.id.usernamedetail); + TextView scrName = (TextView)connect.findViewById(R.id.scrnamedetail); + TextView date = (TextView)connect.findViewById(R.id.timedetail); + TextView replyName = (TextView)connect.findViewById(R.id.answer_reference_detail); + TextView txtAns = (TextView)connect.findViewById(R.id.no_ans_detail); + TextView txtRet = (TextView)connect.findViewById(R.id.no_rt_detail); + TextView txtFav = (TextView)connect.findViewById(R.id.no_fav_detail); + TextView used_api = (TextView)connect.findViewById(R.id.used_api); + TextView userRetweet = (TextView)connect.findViewById(R.id.rt_info); + SwipeRefreshLayout ansReload = (SwipeRefreshLayout)connect.findViewById(R.id.answer_reload); + ImageView profile_img = (ImageView)connect.findViewById(R.id.profileimage_detail); + ImageView tweet_verify =(ImageView)connect.findViewById(R.id.tweet_verify); + Button retweetButton = (Button)connect.findViewById(R.id.rt_button_detail); + Button favoriteButton = (Button)connect.findViewById(R.id.fav_button_detail); + Button mediabutton = (Button)connect.findViewById(R.id.image_attach); + if(mode == LOAD_TWEET) { tweet.setText(highlight(tweetStr)); username.setText(usernameStr); @@ -208,9 +206,9 @@ public class StatusLoader extends AsyncTask { txtFav.setText(favStr); txtRet.setText(rtStr); - setIcons(); if(repliedUsername != null) { - replyName.setText("antwort @"+repliedUsername); + String reply = "antwort @"+repliedUsername; + replyName.setText(reply); replyName.setVisibility(View.VISIBLE); } if(rtFlag) { @@ -231,7 +229,7 @@ public class StatusLoader extends AsyncTask { }); } } - setIcons(); + setIcons(favoriteButton, retweetButton); replyName.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -246,24 +244,24 @@ public class StatusLoader extends AsyncTask { else if(mode == RETWEET) { String rtStr = Integer.toString(rt); txtRet.setText(rtStr); - setIcons(); + setIcons(favoriteButton, retweetButton); } else if(mode == FAVORITE) { String favStr = Integer.toString(fav); txtFav.setText(favStr); - setIcons(); + setIcons(favoriteButton, retweetButton); } else if(mode == LOAD_REPLY) { if(tlAdp == null || tlAdp.getItemCount() == 0) { TweetDatabase tweetDatabase = new TweetDatabase(answers,c); - tlAdp = new TimelineRecycler(tweetDatabase,(TweetDetail)c); + tlAdp = new TimelineRecycler(tweetDatabase,(ui.get())); replyList.setAdapter(tlAdp); } else { TweetDatabase twDb = tlAdp.getData(); twDb.insert(answers,false); tlAdp.notifyDataSetChanged(); - ansReload.setRefreshing(false); } + ansReload.setRefreshing(false); String ansStr = Integer.toString(tlAdp.getItemCount()); txtAns.setText(ansStr); } @@ -280,7 +278,7 @@ public class StatusLoader extends AsyncTask { } private String formatString(String input) { - String output = "gesendet von: "; + StringBuilder output = new StringBuilder("gesendet von: "); boolean openTag = false; for(int i = 0 ; i < input.length() ; i++){ char current = input.charAt(i); @@ -289,10 +287,10 @@ public class StatusLoader extends AsyncTask { } else if(current == '<'){ openTag = false; } else if(openTag) { - output += current; + output.append(current); } } - return output; + return output.toString(); } private SpannableStringBuilder highlight(String tweet) { @@ -332,7 +330,7 @@ public class StatusLoader extends AsyncTask { return sTweet; } - private void setIcons() { + private void setIcons(Button favoriteButton, Button retweetButton) { if(favorited) favoriteButton.setBackgroundResource(R.drawable.favorite_enabled); else diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/StatusUpload.java b/app/src/main/java/org/nuclearfog/twidda/backend/StatusUpload.java index a9b15915..46bee9c4 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/StatusUpload.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/StatusUpload.java @@ -2,11 +2,20 @@ package org.nuclearfog.twidda.backend; import android.content.Context; import android.os.AsyncTask; +import android.view.View; +import android.widget.ProgressBar; import android.widget.Toast; +import org.nuclearfog.twidda.R; +import org.nuclearfog.twidda.window.TweetPopup; + +import java.lang.ref.WeakReference; + public class StatusUpload extends AsyncTask { - private Context context; + private WeakReference ui; + private TwitterEngine mTwitter; + private ProgressBar load; private String[] path; private String error; @@ -15,10 +24,17 @@ public class StatusUpload extends AsyncTask { * @param path Internal Path of the Image */ public StatusUpload(Context context, String[] path) { - this.context = context; + ui = new WeakReference<>((TweetPopup)context); + mTwitter = TwitterEngine.getInstance(context); + load = (ProgressBar) ui.get().findViewById(R.id.tweet_sending); this.path = path; } + @Override + protected void onPreExecute() { + load.setVisibility(View.VISIBLE); + } + /** * @param args Argument + Text * args[0] = TWEET TEXT @@ -33,9 +49,9 @@ public class StatusUpload extends AsyncTask { id = (Long) args[1]; } if(path.length == 0) { - TwitterEngine.getInstance(context).sendStatus(tweet,id); + mTwitter.sendStatus(tweet,id); } else { - TwitterEngine.getInstance(context).sendStatus(tweet,id,path); + mTwitter.sendStatus(tweet,id,path); } return true; } catch(Exception err) { @@ -46,10 +62,15 @@ public class StatusUpload extends AsyncTask { @Override protected void onPostExecute(Boolean success) { + TweetPopup connect = ui.get(); + if(connect == null) + return; + Context context = connect.getApplicationContext(); if(success) { Toast.makeText(context, "gesendet!", Toast.LENGTH_LONG).show(); } else { Toast.makeText(context, "Fehler: "+error, Toast.LENGTH_LONG).show(); } + connect.finish(); } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/TwitterEngine.java b/app/src/main/java/org/nuclearfog/twidda/backend/TwitterEngine.java index 473ba733..3290fa7d 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/TwitterEngine.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/TwitterEngine.java @@ -164,6 +164,7 @@ public class TwitterEngine { /** * Get Tweet search result * @param search Search String + * @param id Since ID * @return List of Tweets * @throws TwitterException if acces is unavailable */ 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 68fdc093..d66fb628 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/TwitterSearch.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/TwitterSearch.java @@ -15,58 +15,61 @@ import org.nuclearfog.twidda.viewadapter.UserRecycler; import org.nuclearfog.twidda.window.ColorPreferences; import org.nuclearfog.twidda.window.SearchPage; +import java.lang.ref.WeakReference; + public class TwitterSearch extends AsyncTask { private TimelineRecycler tlRc; private UserRecycler uAdp; - private SwipeRefreshLayout tweetReload; private RecyclerView tweetSearch, userSearch; - private ProgressBar circleLoad; - private Context context; private TwitterEngine mTwitter; + private WeakReference ui; private int background, font_color; public TwitterSearch(Context context) { - this.context=context; + ui = new WeakReference<>((SearchPage)context); + tweetSearch = (RecyclerView) ui.get().findViewById(R.id.tweet_result); + userSearch = (RecyclerView) ui.get().findViewById(R.id.user_result); + mTwitter = TwitterEngine.getInstance(context); ColorPreferences mcolor = ColorPreferences.getInstance(context); background = mcolor.getColor(ColorPreferences.BACKGROUND); font_color = mcolor.getColor(ColorPreferences.FONT_COLOR); } - @Override - protected void onPreExecute() { - tweetSearch = (RecyclerView) ((SearchPage)context).findViewById(R.id.tweet_result); - userSearch = (RecyclerView) ((SearchPage)context).findViewById(R.id.user_result); - tweetReload = (SwipeRefreshLayout) ((SearchPage)context).findViewById(R.id.searchtweets); - circleLoad = (ProgressBar) ((SearchPage)context).findViewById(R.id.search_progress); - mTwitter = TwitterEngine.getInstance(context); - } - @Override protected Void doInBackground(String... search) { - String get = search[0]; + String strSearch = search[0]; long id = 1L; try { tlRc = (TimelineRecycler) tweetSearch.getAdapter(); if(tlRc != null) { id = tlRc.getItemId(0); - tlRc.getData().insert(mTwitter.searchTweets(get,id),false); + tlRc.getData().insert(mTwitter.searchTweets(strSearch,id),false); } else { - tlRc = new TimelineRecycler(new TweetDatabase(mTwitter.searchTweets(get,id),context),((SearchPage)context)); + tlRc = new TimelineRecycler(new TweetDatabase(mTwitter.searchTweets(strSearch,id),ui.get()),ui.get()); tlRc.setColor(background,font_color); } - uAdp = new UserRecycler(new UserDatabase(context, mTwitter.searchUsers(get)),((SearchPage)context)); + uAdp = new UserRecycler(new UserDatabase(ui.get(), mTwitter.searchUsers(strSearch)),ui.get()); } catch(Exception err){err.printStackTrace();} return null; } @Override protected void onPostExecute(Void v) { + + SearchPage connect = ui.get(); + if(connect == null) + return; + + SwipeRefreshLayout tweetReload = (SwipeRefreshLayout)connect.findViewById(R.id.searchtweets); + ProgressBar circleLoad = (ProgressBar)connect.findViewById(R.id.search_progress); + circleLoad.setVisibility(View.INVISIBLE); - if(tweetSearch.getAdapter() == null) + if(tweetSearch.getAdapter() == null) { tweetSearch.setAdapter(tlRc); - else + } else { tlRc.notifyDataSetChanged(); + } userSearch.setAdapter(uAdp); tweetReload.setRefreshing(false); } 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 8677e944..fa7ff46b 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/UserLists.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/UserLists.java @@ -12,6 +12,8 @@ import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.viewadapter.UserRecycler; import org.nuclearfog.twidda.window.UserDetail; +import java.lang.ref.WeakReference; + public class UserLists extends AsyncTask { public static final long FOLLOWING = 0L; @@ -19,7 +21,7 @@ public class UserLists extends AsyncTask { public static final long RETWEETER = 2L; public static final long FAVORISER = 3L; - private Context context; + private WeakReference ui; private TwitterEngine mTwitter; private UserRecycler usrAdp; private RecyclerView userList; @@ -30,15 +32,13 @@ public class UserLists extends AsyncTask { *@see UserDetail */ public UserLists(Context context) { - this.context = context; + ui = new WeakReference<>((UserDetail)context); + mTwitter = TwitterEngine.getInstance(context); + userList = (RecyclerView) ui.get().findViewById(R.id.userlist); + uProgress = (ProgressBar) ui.get().findViewById(R.id.user_progress); } - @Override - protected void onPreExecute() { - mTwitter = TwitterEngine.getInstance(context); - userList = (RecyclerView) ((UserDetail)context).findViewById(R.id.userlist); - uProgress = (ProgressBar)((UserDetail)context).findViewById(R.id.user_progress); - } + @Override protected Void doInBackground(Long... data) { @@ -49,8 +49,8 @@ public class UserLists extends AsyncTask { usrAdp = (UserRecycler) userList.getAdapter(); if(mode == FOLLOWING) { if(usrAdp == null) { - UserDatabase udb = new UserDatabase(context,mTwitter.getFollowing(id,cursor)); - usrAdp = new UserRecycler(udb,(UserDetail)context); + UserDatabase udb = new UserDatabase(ui.get(),mTwitter.getFollowing(id,cursor)); + usrAdp = new UserRecycler(udb,ui.get()); } else { UserDatabase uDb = usrAdp.getData(); uDb.addLast(mTwitter.getFollowing(id,cursor)); @@ -59,8 +59,8 @@ public class UserLists extends AsyncTask { } else if(mode == FOLLOWERS) { if(usrAdp == null) { - UserDatabase udb = new UserDatabase(context,mTwitter.getFollower(id,cursor)); - usrAdp = new UserRecycler(udb,(UserDetail)context); + UserDatabase udb = new UserDatabase(ui.get(),mTwitter.getFollower(id,cursor)); + usrAdp = new UserRecycler(udb,ui.get()); } else { UserDatabase uDb = usrAdp.getData(); uDb.addLast(mTwitter.getFollower(id,cursor)); @@ -68,12 +68,12 @@ public class UserLists extends AsyncTask { } } else if(mode == RETWEETER) { - UserDatabase udb = new UserDatabase(context,mTwitter.getRetweeter(id,cursor)); - usrAdp = new UserRecycler(udb,(UserDetail)context); + UserDatabase udb = new UserDatabase(ui.get(),mTwitter.getRetweeter(id,cursor)); + usrAdp = new UserRecycler(udb,ui.get()); } - else if(mode == FAVORISER) { + /*else if(mode == FAVORISER) { // GET FAV USERS TODO - } + }*/ } catch(Exception err) { errmsg = "Fehler: "+err.getMessage(); @@ -83,10 +83,12 @@ public class UserLists extends AsyncTask { @Override protected void onPostExecute(Void v) { + if(ui.get() == null) + return; if(errmsg == null) { userList.setAdapter(usrAdp); } else { - Toast.makeText(context,errmsg,Toast.LENGTH_LONG).show(); + Toast.makeText(ui.get().getApplicationContext(),errmsg,Toast.LENGTH_LONG).show(); } uProgress.setVisibility(View.INVISIBLE); } diff --git a/app/src/main/java/org/nuclearfog/twidda/database/AppDatabase.java b/app/src/main/java/org/nuclearfog/twidda/database/AppDatabase.java index 6942ffa4..dfeaec9c 100644 --- a/app/src/main/java/org/nuclearfog/twidda/database/AppDatabase.java +++ b/app/src/main/java/org/nuclearfog/twidda/database/AppDatabase.java @@ -6,28 +6,34 @@ import android.database.sqlite.SQLiteOpenHelper; public class AppDatabase extends SQLiteOpenHelper { - private static final String uQuery = "CREATE TABLE IF NOT EXISTS user ("+ + private static final String userTable = "CREATE TABLE IF NOT EXISTS user ("+ "userID INTEGER PRIMARY KEY, username TEXT," + "scrname TEXT, pbLink TEXT, banner TEXT, bio TEXT,"+ "location TEXT, link TEXT, verify INTEGER);"; - private static final String tQuery = "CREATE TABLE IF NOT EXISTS tweet (" + - "tweetID INTEGER PRIMARY KEY, userID INTEGER, retweeter TEXT," + + private static final String tweetTable = "CREATE TABLE IF NOT EXISTS tweet (" + + "tweetID INTEGER PRIMARY KEY, userID INTEGER, retweetID INTEGER," + "time INTEGER, tweet TEXT, retweet INTEGER, favorite INTEGER," + - "retweeterID INTEGER, FOREIGN KEY (userID) REFERENCES user(userID));"; + "FOREIGN KEY (userID) REFERENCES user(userID));"; - private static final String trQuery = "CREATE TABLE IF NOT EXISTS trend (" + - "trendpos INTEGER PRIMARY KEY, trendname TEXT, trendlink TEXT);"; + private static final String favoriteTable = "CREATE TABLE IF NOT EXISTS favorit (" + + "userID INTEGER, tweetID INTEGER UNIQUE," + + "FOREIGN KEY (userID) REFERENCES user(userID)," + + "FOREIGN KEY (tweetID) REFERENCES tweet(tweetID));"; - private static final String hQuery = "CREATE TABLE IF NOT EXISTS timeline (" + + private static final String retweetTable = "CREATE TABLE IF NOT EXISTS retweet ("+ + "userID INTEGER, tweetID INTEGER UNIQUE," + + "FOREIGN KEY (userID) REFERENCES user(userID)," + + "FOREIGN KEY (tweetID) REFERENCES tweet(tweetID));"; + + private static final String timelineTable = "CREATE TABLE IF NOT EXISTS timeline (" + "tweetID INTEGER UNIQUE, mTweetID INTEGER UNIQUE," + "FOREIGN KEY (tweetID) REFERENCES tweet(tweetID));" + "FOREIGN KEY (mTweetID) REFERENCES tweet(tweetID));"; - private static final String fQuery = "CREATE TABLE IF NOT EXISTS favorit (" + - "ownerID INTEGER, tweetID INTEGER UNIQUE," + - "FOREIGN KEY (ownerID) REFERENCES user(userID)," + - "FOREIGN KEY (tweetID) REFERENCES tweet(tweetID));"; + private static final String trendTable = "CREATE TABLE IF NOT EXISTS trend (" + + "trendpos INTEGER PRIMARY KEY, trendname TEXT, trendlink TEXT);"; + private static AppDatabase mData; @@ -37,11 +43,12 @@ public class AppDatabase extends SQLiteOpenHelper @Override public void onCreate(SQLiteDatabase db) { - db.execSQL(uQuery); - db.execSQL(tQuery); - db.execSQL(trQuery); - db.execSQL(hQuery); - db.execSQL(fQuery); + db.execSQL(userTable); + db.execSQL(tweetTable); + db.execSQL(trendTable); + db.execSQL(timelineTable); + db.execSQL(favoriteTable); + db.execSQL(retweetTable); } @Override @@ -50,6 +57,7 @@ public class AppDatabase extends SQLiteOpenHelper db.execSQL("DROP TABLE IF EXISTS " + "tweet"); db.execSQL("DROP TABLE IF EXISTS " + "favorit"); db.execSQL("DROP TABLE IF EXISTS " + "timeline"); + db.execSQL("DROP TABLE IF EXISTS " + "retweet"); db.execSQL("DROP TABLE IF EXISTS " + "trend"); onCreate(db); } diff --git a/app/src/main/java/org/nuclearfog/twidda/database/TweetDatabase.java b/app/src/main/java/org/nuclearfog/twidda/database/TweetDatabase.java index 888bd417..f33abee1 100644 --- a/app/src/main/java/org/nuclearfog/twidda/database/TweetDatabase.java +++ b/app/src/main/java/org/nuclearfog/twidda/database/TweetDatabase.java @@ -24,8 +24,8 @@ public class TweetDatabase { public static final int GET_MENT = 4; private AppDatabase dataHelper; - private List user,scrname,tweet,pbLink,retweeter; - private List userId,tweetId,timeMillis; + private List user,scrname,tweet,pbLink; + private List userId,tweetId,timeMillis, retweetId; private List noRT,noFav, verify; private boolean toggleImg; private int limit; @@ -109,12 +109,10 @@ public class TweetDatabase { if(rtStat != null) { tweet.put("retweeter",usr.getScreenName()); - tweet.put("retweeterID", usr.getId()); stat = rtStat; usr = rtStat.getUser(); } else { - tweet.put("retweeter","\0"); - tweet.put("retweeterID", -1L); + tweet.put("retweeter","\t"); } user.put("userID",usr.getId()); @@ -135,7 +133,7 @@ public class TweetDatabase { home.put("tweetID", stat.getId()); fav.put("tweetID", stat.getId()); - fav.put("ownerID", CurrentId); + fav.put("userID", CurrentId); ment.put("mTweetID",stat.getId()); @@ -173,14 +171,14 @@ public class TweetDatabase { } else if(mode==USER_TL) { - SQL_GET_HOME = "SELECT * FROM user INNER JOIN tweet ON user.userID = tweet.userID " + - "WHERE tweet.userID = "+CurrentId+" OR tweet.retweeterID = "+CurrentId +" " + - "ORDER BY tweetID DESC"; + SQL_GET_HOME = "SELECT * FROM user " + + "INNER JOIN tweet ON tweet.userID = user.userID"+ + " WHERE user.userID = "+CurrentId+ " ORDER BY tweetID DESC"; } else if(mode==FAV_TL) { SQL_GET_HOME = "SELECT * FROM favorit " + "INNER JOIN tweet ON favorit.tweetID = tweet.tweetID " + - "INNER JOIN user ON tweet.userID=user.userID " + - "WHERE favorit.ownerID = "+CurrentId+" ORDER BY tweetID DESC"; + "INNER JOIN user ON tweet.userID = user.userID " + + "WHERE favorit.userID = "+CurrentId+" ORDER BY tweetID DESC"; } Cursor cursor = db.rawQuery(SQL_GET_HOME,null); @@ -207,8 +205,8 @@ public class TweetDatabase { userId.add(cursor.getLong(index)); index = cursor.getColumnIndex("tweetID"); tweetId.add(cursor.getLong(index)); - index = cursor.getColumnIndex("retweeter"); - retweeter.add(cursor.getString(index)); + // index = cursor.getColumnIndex("retweetID"); + //retweetId.add(cursor.getLong(index)); size++; } while(cursor.moveToNext() && size < limit); } @@ -231,10 +229,6 @@ public class TweetDatabase { public String getPbLink(int pos){return pbLink.get(pos);} public boolean loadImages(){return toggleImg;} public boolean isVerified(int pos){return verify.get(pos) == 1;} - public String getRetweeter(int pos) { - if(retweeter.get(pos).trim().isEmpty()) return ""; - else return " RT @"+retweeter.get(pos); - } public SpannableStringBuilder getHighlightedTweet(Context c, int pos) { String tweet = getTweet(pos); @@ -322,11 +316,8 @@ public class TweetDatabase { User usr = stat.getUser(); tweetId.add(stat.getId()); if(rtStat != null) { - retweeter.add(usr.getScreenName()); stat = rtStat; usr = rtStat.getUser(); - } else { - retweeter.add("\0"); } user.add(usr.getName()); scrname.add('@'+usr.getScreenName()); @@ -348,11 +339,9 @@ public class TweetDatabase { User usr = stat.getUser(); tweetId.add(0,stat.getId()); if(rtStat != null) { - retweeter.add(usr.getScreenName()); + // retweetId.add(usr.getScreenName()); stat = rtStat; usr = rtStat.getUser(); - } else { - retweeter.add(0,"\0"); } user.add(0,usr.getName()); scrname.add(0,'@'+usr.getScreenName()); @@ -377,7 +366,7 @@ public class TweetDatabase { pbLink = new ArrayList<>(); tweetId = new ArrayList<>(); verify = new ArrayList<>(); - retweeter = new ArrayList<>(); + retweetId = new ArrayList<>(); timeMillis = new ArrayList<>(); } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/viewadapter/TimelineRecycler.java b/app/src/main/java/org/nuclearfog/twidda/viewadapter/TimelineRecycler.java index 0fcdf435..7ec7a596 100644 --- a/app/src/main/java/org/nuclearfog/twidda/viewadapter/TimelineRecycler.java +++ b/app/src/main/java/org/nuclearfog/twidda/viewadapter/TimelineRecycler.java @@ -13,7 +13,6 @@ import com.squareup.picasso.Picasso; import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.database.TweetDatabase; - public class TimelineRecycler extends Adapter implements View.OnClickListener { private TweetDatabase mTweets; @@ -70,7 +69,6 @@ public class TimelineRecycler extends Adapter imple vh.tweet.setText(mTweets.getHighlightedTweet(parent.getContext(),index)); vh.retweet.setText(Integer.toString(mTweets.getRetweet(index))); vh.favorite.setText(Integer.toString(mTweets.getFavorite(index))); - vh.retweeter.setText(mTweets.getRetweeter(index)); vh.time.setText(mTweets.getDate(index)); if(mTweets.loadImages()) { Picasso.with(parent.getContext()).load(mTweets.getPbLink(index)).into(vh.profile); diff --git a/app/src/main/java/org/nuclearfog/twidda/window/ColorPreferences.java b/app/src/main/java/org/nuclearfog/twidda/window/ColorPreferences.java index 5fede050..55a0d897 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/ColorPreferences.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/ColorPreferences.java @@ -1,5 +1,7 @@ package org.nuclearfog.twidda.window; +import org.nuclearfog.twidda.R; + import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; @@ -10,8 +12,6 @@ import com.flask.colorpicker.ColorPickerView; import com.flask.colorpicker.OnColorChangedListener; import com.flask.colorpicker.builder.ColorPickerDialogBuilder; -import org.nuclearfog.twidda.R; - public class ColorPreferences implements OnColorChangedListener, DialogInterface.OnDismissListener { public static final int BACKGROUND = 0x0; @@ -28,6 +28,7 @@ public class ColorPreferences implements OnColorChangedListener, DialogInterface private static ColorPreferences ourInstance; private SharedPreferences settings; private Context context; + private Dialog d; private ColorPreferences(Context context) { settings = context.getSharedPreferences("settings", 0); @@ -65,6 +66,7 @@ public class ColorPreferences implements OnColorChangedListener, DialogInterface colorButton2.setBackgroundColor(font); colorButton3.setBackgroundColor(tweet); colorButton4.setBackgroundColor(highlight); + d.dismiss(); } public int getColor(final int Mode){ @@ -101,7 +103,7 @@ public class ColorPreferences implements OnColorChangedListener, DialogInterface default: preColor = 0xFFFFFFFF; } - Dialog d = ColorPickerDialogBuilder.with(context) + d = ColorPickerDialogBuilder.with(context) .showAlphaSlider(false).initialColor(preColor) .wheelType(ColorPickerView.WHEEL_TYPE.CIRCLE).density(20) .setOnColorChangedListener(this).build(); 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 ac8b90ab..aff916be 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/TweetDetail.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/TweetDetail.java @@ -76,7 +76,8 @@ public class TweetDetail extends AppCompatActivity implements View.OnClickListen @Override protected void onDestroy() { mStat.cancel(true); - mReply.cancel(true); + if(mReply != null) + mReply.cancel(true); super.onDestroy(); } diff --git a/app/src/main/java/org/nuclearfog/twidda/window/TweetPopup.java b/app/src/main/java/org/nuclearfog/twidda/window/TweetPopup.java index 54a53ca0..b2d79421 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/TweetPopup.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/TweetPopup.java @@ -28,6 +28,7 @@ import java.util.List; public class TweetPopup extends AppCompatActivity implements View.OnClickListener, DialogInterface.OnClickListener { + private StatusUpload sendTweet; private EditText tweetfield; private Button imageButton, previewBtn; private TextView imgcount; @@ -60,7 +61,6 @@ public class TweetPopup extends AppCompatActivity implements View.OnClickListene previewBtn.setOnClickListener(this); } - @Override public void onBackPressed() { showClosingMsg(); @@ -80,6 +80,8 @@ public class TweetPopup extends AppCompatActivity implements View.OnClickListene super.onActivityResult(reqCode,returnCode,i); if(returnCode == RESULT_OK){ String[] mode = {MediaStore.Images.Media.DATA}; + if(i.getData() == null) + return; Cursor c = getContentResolver().query(i.getData(),mode,null,null,null); if(c != null && c.moveToFirst()) { if(imgIndex == 0) { @@ -103,6 +105,8 @@ public class TweetPopup extends AppCompatActivity implements View.OnClickListene public void onClick(DialogInterface d, int id) { switch(id) { case BUTTON_POSITIVE: + if(sendTweet != null) + sendTweet.cancel(true); finish(); break; case BUTTON_NEGATIVE: @@ -145,15 +149,12 @@ public class TweetPopup extends AppCompatActivity implements View.OnClickListene String tweet = tweetfield.getText().toString(); String[] paths = new String[mediaPath.size()]; paths = mediaPath.toArray(paths); - StatusUpload sendTweet; - sendTweet = new StatusUpload(getApplicationContext(),paths); - + sendTweet = new StatusUpload(this ,paths); if(inReplyId > 0) { sendTweet.execute(tweet, inReplyId); } else { sendTweet.execute(tweet); } - finish(); } @SuppressWarnings("ConstantCondidions") diff --git a/app/src/main/java/org/nuclearfog/twidda/window/UserProfile.java b/app/src/main/java/org/nuclearfog/twidda/window/UserProfile.java index 668421ca..8941c907 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/UserProfile.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/UserProfile.java @@ -16,6 +16,7 @@ import android.widget.TabHost; import android.widget.TextView; import org.nuclearfog.twidda.R; +import org.nuclearfog.twidda.backend.StatusLoader; import org.nuclearfog.twidda.database.TweetDatabase; import org.nuclearfog.twidda.backend.ProfileLoader; import org.nuclearfog.twidda.viewadapter.TimelineRecycler; @@ -26,7 +27,7 @@ import org.nuclearfog.twidda.viewadapter.TimelineRecycler; */ public class UserProfile extends AppCompatActivity implements View.OnClickListener, SwipeRefreshLayout.OnRefreshListener, TabHost.OnTabChangeListener, - TimelineRecycler.OnItemClicked { + TimelineRecycler.OnItemClicked, ProfileLoader.OnProfileFinished { private ProfileLoader mProfile, mTweets, mFavorits; private SwipeRefreshLayout homeReload, favoriteReload; @@ -65,19 +66,15 @@ public class UserProfile extends AppCompatActivity implements View.OnClickListen favoriteReload.setOnRefreshListener(this); initElements(); - getContent(); } @Override - protected void onDestroy() { + public void onBackPressed() { mProfile.cancel(true); - mTweets.cancel(true); - mFavorits.cancel(true); - super.onDestroy(); - } - - @Override - public void onBackPressed(){ + if(mTweets != null) + mTweets.cancel(true); + if(mFavorits != null) + mFavorits.cancel(true); super.onBackPressed(); } @@ -195,7 +192,8 @@ public class UserProfile extends AppCompatActivity implements View.OnClickListen /** * Tab Content */ - private void getContent() { + @Override + public void onLoaded() { new Thread( new Runnable() { @Override public void run() { diff --git a/app/src/main/res/layout/profile.xml b/app/src/main/res/layout/profile.xml index 0fa03020..2de2059a 100644 --- a/app/src/main/res/layout/profile.xml +++ b/app/src/main/res/layout/profile.xml @@ -34,8 +34,7 @@ android:id="@+id/banner" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:contentDescription="@string/banner" - app:srcCompat="@android:color/holo_red_dark" /> + android:contentDescription="@string/banner" /> - + + + + + + @color/colorPrimaryDark @color/soylentgreen @style/TransactionPending - @android:color/background_dark @color/DarkBlue - @android:color/transparent