From 4bd98e4fa42a7600c84a01348e3d2270632f75b9 Mon Sep 17 00:00:00 2001 From: NudeDude Date: Sat, 3 Mar 2018 14:58:10 +0100 Subject: [PATCH] Bugfix Code Cleanup --- .../nuclearfog/twidda/backend/MainPage.java | 6 +- .../twidda/backend/ProfileLoader.java | 12 ++- .../twidda/backend/StatusLoader.java | 45 +++++------ .../twidda/backend/TwitterEngine.java | 21 +++-- .../twidda/database/UserDatabase.java | 5 +- .../twidda/viewadapter/UserAdapter.java | 5 ++ .../twidda/window/ColorPreferences.java | 2 +- .../nuclearfog/twidda/window/TweetDetail.java | 5 +- .../nuclearfog/twidda/window/UserDetail.java | 1 - app/src/main/res/drawable/followback.xml | 4 + app/src/main/res/layout/profile.xml | 78 ++++++++++++------- app/src/main/res/layout/tweetwindow.xml | 2 +- app/src/main/res/layout/useritem.xml | 59 +++++++++----- app/src/main/res/values/strings.xml | 1 + 14 files changed, 149 insertions(+), 97 deletions(-) create mode 100644 app/src/main/res/drawable/followback.xml 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 04e5a4e9..dcc5aa71 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/MainPage.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/MainPage.java @@ -7,6 +7,7 @@ import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.viewadapter.TimelineAdapter; import org.nuclearfog.twidda.viewadapter.TrendAdapter; +import android.content.SharedPreferences; import android.support.v4.widget.SwipeRefreshLayout; import android.widget.ListView; import android.widget.Toast; @@ -27,6 +28,7 @@ public class MainPage extends AsyncTask { private ListView timelineList, trendList, mentionList; private TimelineAdapter timelineAdapter, mentionAdapter; private TrendAdapter trendsAdapter; + private int woeid; /** * Main View @@ -35,6 +37,8 @@ public class MainPage extends AsyncTask { public MainPage(Context context) { this.context = context; mTwitter = TwitterEngine.getInstance(context); + SharedPreferences settings = context.getSharedPreferences("settings", 0); + woeid = settings.getInt("woeid",23424829); // Germany WOEID } @Override @@ -73,7 +77,7 @@ public class MainPage extends AsyncTask { break; case TRND: - trendsAdapter = new TrendAdapter(context, new TrendDatabase(mTwitter.getTrends(),context)); + trendsAdapter = new TrendAdapter(context, new TrendDatabase(mTwitter.getTrends(woeid),context)); break; case MENT: 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 7ae732d1..b37fb95a 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/ProfileLoader.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/ProfileLoader.java @@ -22,8 +22,8 @@ import twitter4j.User; import com.squareup.picasso.Picasso; -public class ProfileLoader extends AsyncTask -{ +public class ProfileLoader extends AsyncTask { + public static final long GET_INFORMATION = 0x0; public static final long ACTION_FOLLOW = 0x1; public static final long GET_TWEETS = 0x2; @@ -33,7 +33,7 @@ public class ProfileLoader extends AsyncTask 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; + private ImageView profile, banner, linkIcon, locationIcon, verifier, locked, followback; private SwipeRefreshLayout tweetsReload, favoritsReload; private ListView profileTweets, profileFavorits; private String imageLink, bannerLink, fullPbLink, link, dateString; @@ -72,6 +72,7 @@ public class ProfileLoader extends AsyncTask 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); @@ -88,7 +89,7 @@ public class ProfileLoader extends AsyncTask long id = 1L; TwitterEngine mTwitter = TwitterEngine.getInstance(context); try { - isHome = mTwitter.isHome(userId); + isHome = TwitterEngine.getHomeId() == userId; if(!isHome) { isFollowing = mTwitter.getConnection(userId, true); @@ -179,6 +180,9 @@ public class ProfileLoader extends AsyncTask if(isLocked) { locked.setVisibility(View.VISIBLE); } + if(isFollowed) { + followback.setVisibility(View.VISIBLE); + } if(imgEnabled) { Picasso.with(context).load(imageLink).into(profile); // Picasso.with(context).load(bannerLink).into(banner); // TODO 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 4e050d9c..878dc5bf 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/StatusLoader.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/StatusLoader.java @@ -36,7 +36,7 @@ import org.nuclearfog.twidda.window.ColorPreferences; import org.nuclearfog.twidda.window.TweetDetail; import org.nuclearfog.twidda.window.UserProfile; -public class StatusLoader extends AsyncTask implements View.OnClickListener { +public class StatusLoader extends AsyncTask { private static final long ERROR = -1; public static final long RETWEET = 0; @@ -63,7 +63,7 @@ public class StatusLoader extends AsyncTask implements View.On private boolean retweeted, favorited, toggleImg, verified; private boolean rtFlag = false; private long userReply, tweetReplyID; - private int rt, fav, ansNo = 0; + private int rt, fav; private int highlight; @@ -177,7 +177,6 @@ public class StatusLoader extends AsyncTask implements View.On if(tlAdp != null) tweetID = tlAdp.getItemId(0); answers = mTwitter.getAnswers(replyname, tweetID); - ansNo = answers.size(); } else if(mode == DELETE) { mTwitter.deleteTweet(tweetID); @@ -226,11 +225,25 @@ public class StatusLoader extends AsyncTask implements View.On profile_img.setImageBitmap(profile_btm); if(medialinks.length != 0) { mediabutton.setVisibility(View.VISIBLE); - mediabutton.setOnClickListener(this); + mediabutton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + new ImagePopup(c).execute(medialinks); + } + }); } } setIcons(); - replyName.setOnClickListener(this); + replyName.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(c, TweetDetail.class); + intent.putExtra("tweetID",tweetReplyID); + intent.putExtra("userID",userReply); + intent.putExtra("username", repliedUsername); + c.startActivity(intent); + } + }); } else if(mode == RETWEET) { String rtStr = Integer.toString(rt); @@ -253,7 +266,7 @@ public class StatusLoader extends AsyncTask implements View.On tlAdp.notifyDataSetChanged(); ansReload.setRefreshing(false); } - String ansStr = Integer.toString(ansNo); + String ansStr = Integer.toString(tlAdp.getCount()); txtAns.setText(ansStr); } else if(mode == DELETE) { @@ -268,26 +281,6 @@ public class StatusLoader extends AsyncTask implements View.On } } - @Override - public void onClick(View v) { - Intent intent; - switch(v.getId()) { - case R.id.image_attach: - new ImagePopup(c).execute(medialinks); - break; - - case R.id.answer_reference_detail: - intent = new Intent(c, TweetDetail.class); - Bundle bundle = new Bundle(); - bundle.putLong("tweetID",tweetReplyID); - bundle.putLong("userID",userReply); - bundle.putString("username", repliedUsername); - intent.putExtras(bundle); - c.startActivity(intent); - break; - } - } - private String formatString(String input) { String output = "gesendet von: "; boolean openTag = false; 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 a4e03793..4dd92d2f 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/TwitterEngine.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/TwitterEngine.java @@ -37,12 +37,12 @@ public class TwitterEngine { private final String TWITTER_CONSUMER_SECRET = "pgaWUlDVS5b7Q6VJQDgBzHKw0mIxJIX0UQBcT1oFJEivsCl5OV"; private static TwitterEngine mTwitter; + private static long twitterID; private Twitter twitter; private Context context; private SharedPreferences settings; private RequestToken reqToken; private int load; - private int location; /** @@ -52,7 +52,6 @@ public class TwitterEngine { */ private TwitterEngine(Context context) { settings = context.getSharedPreferences("settings", 0); - location = settings.getInt("woeid",23424829); // Germany WOEID ConfigurationBuilder builder = new ConfigurationBuilder(); builder.setOAuthConsumerKey(TWITTER_CONSUMER_KEY); builder.setOAuthConsumerSecret(TWITTER_CONSUMER_SECRET); @@ -134,6 +133,7 @@ public class TwitterEngine { if( settings.getBoolean("login", false) ) { key1 = settings.getString("key1", " "); key2 = settings.getString("key2", " "); + twitterID = settings.getLong("userID", -1L); initKeys(key1,key2); } } @@ -180,11 +180,12 @@ public class TwitterEngine { /** * Get Trending Hashtags + * @param woeid Yahoo World ID * @return Trend Resource * @throws TwitterException if access is unavailable */ - public Trends getTrends() throws TwitterException { - return twitter.getPlaceTrends(location); + public Trends getTrends(int woeid) throws TwitterException { + return twitter.getPlaceTrends(woeid); } @@ -239,9 +240,9 @@ public class TwitterEngine { */ public boolean getConnection(long id,boolean following) throws TwitterException { if(following) - return twitter.showFriendship(twitter.getId(),id).isSourceFollowingTarget(); + return twitter.showFriendship(twitterID,id).isSourceFollowingTarget(); else - return twitter.showFriendship(twitter.getId(),id).isTargetFollowingSource(); + return twitter.showFriendship(twitterID,id).isTargetFollowingSource(); } /** @@ -429,13 +430,11 @@ public class TwitterEngine { } /** - * check if User ID is home ID - * @param id User ID + * Return User ID * @return result - * @throws TwitterException if Access is unavailable */ - public boolean isHome(long id) throws TwitterException { - return twitter.getId() == id; + public static long getHomeId() { + return twitterID; } /** diff --git a/app/src/main/java/org/nuclearfog/twidda/database/UserDatabase.java b/app/src/main/java/org/nuclearfog/twidda/database/UserDatabase.java index dcf7270d..671a4cab 100644 --- a/app/src/main/java/org/nuclearfog/twidda/database/UserDatabase.java +++ b/app/src/main/java/org/nuclearfog/twidda/database/UserDatabase.java @@ -10,7 +10,7 @@ import twitter4j.User; public class UserDatabase { private List uName, scrName, imgUrl; - private List verified; + private List verified, locked; private List uID; private boolean toggleImg; private long cursor = -1L; @@ -32,6 +32,7 @@ public class UserDatabase { public String getScreenname(int pos){ return scrName.get(pos);} public String getImageUrl(int pos){ return imgUrl.get(pos);} public boolean isVerified(int pos){ return verified.get(pos);} + public boolean isLocked(int pos){ return locked.get(pos);} public int getSize(){ return size; } public boolean loadImages(){ return toggleImg; } public long getCursor(){return cursor;} @@ -48,6 +49,7 @@ public class UserDatabase { scrName.add('@'+usr.getScreenName()); imgUrl.add(usr.getMiniProfileImageURLHttps()); verified.add(usr.isVerified()); + locked.add(usr.isProtected()); size++; } } @@ -58,6 +60,7 @@ public class UserDatabase { scrName = new ArrayList<>(); imgUrl = new ArrayList<>(); verified = new ArrayList<>(); + locked = new ArrayList<>(); SharedPreferences s = c.getSharedPreferences("settings", 0); toggleImg = s.getBoolean("image_load", true); } diff --git a/app/src/main/java/org/nuclearfog/twidda/viewadapter/UserAdapter.java b/app/src/main/java/org/nuclearfog/twidda/viewadapter/UserAdapter.java index b82986f1..8b586e7e 100644 --- a/app/src/main/java/org/nuclearfog/twidda/viewadapter/UserAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/viewadapter/UserAdapter.java @@ -67,6 +67,11 @@ public class UserAdapter extends ArrayAdapter implements View.OnClickListener { } else { v.findViewById(R.id.verified).setVisibility(View.INVISIBLE); } + if(userDatabase.isLocked(position)) { + v.findViewById(R.id.locked_profile).setVisibility(View.VISIBLE); + } else { + v.findViewById(R.id.locked_profile).setVisibility(View.INVISIBLE); + } return v; } 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 0f9b1d38..5fede050 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/ColorPreferences.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/ColorPreferences.java @@ -31,7 +31,7 @@ public class ColorPreferences implements OnColorChangedListener, DialogInterface private ColorPreferences(Context context) { settings = context.getSharedPreferences("settings", 0); - background = settings.getInt("background_color", 0xff071222); + background = settings.getInt("background_color", 0xff0f114a); font = settings.getInt("font_color", 0xffffffff); tweet = settings.getInt("tweet_color", 0xff19aae8); highlight = settings.getInt("highlight_color", 0xffff00ff); 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 e8af3002..523f1ce6 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/TweetDetail.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/TweetDetail.java @@ -18,7 +18,9 @@ import android.widget.ListView; import android.widget.TextView; import static android.content.DialogInterface.*; +import org.nuclearfog.twidda.backend.ImagePopup; import org.nuclearfog.twidda.backend.StatusLoader; +import org.nuclearfog.twidda.backend.TwitterEngine; import org.nuclearfog.twidda.database.TweetDatabase; import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.viewadapter.TimelineAdapter; @@ -42,8 +44,7 @@ public class TweetDetail extends AppCompatActivity implements View.OnClickListen setContentView(R.layout.tweet_detail); getExtras(getIntent().getExtras()); - SharedPreferences settings = getSharedPreferences("settings", 0); - boolean home = userID == settings.getLong("userID", -1); + boolean home = userID == TwitterEngine.getHomeId(); answer_list = (ListView) findViewById(R.id.answer_list); Button answer = (Button) findViewById(R.id.answer_button); diff --git a/app/src/main/java/org/nuclearfog/twidda/window/UserDetail.java b/app/src/main/java/org/nuclearfog/twidda/window/UserDetail.java index bf90faee..1b98f0b6 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/UserDetail.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/UserDetail.java @@ -2,7 +2,6 @@ package org.nuclearfog.twidda.window; import android.content.Intent; import android.os.Bundle; -import android.support.annotation.CallSuper; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; diff --git a/app/src/main/res/drawable/followback.xml b/app/src/main/res/drawable/followback.xml new file mode 100644 index 00000000..affdcc91 --- /dev/null +++ b/app/src/main/res/drawable/followback.xml @@ -0,0 +1,4 @@ + + + diff --git a/app/src/main/res/layout/profile.xml b/app/src/main/res/layout/profile.xml index 90cea4b2..305ecb6a 100644 --- a/app/src/main/res/layout/profile.xml +++ b/app/src/main/res/layout/profile.xml @@ -50,46 +50,54 @@ android:layout_marginEnd="5dp" android:contentDescription="@string/profile_image" /> - - - - - - - - + android:orientation="horizontal"> - + + + + + + android:orientation="horizontal"> + + + + + + + + android:textSize="14sp" />