From 2353535311e42913ba4c0c162f3d5c0f8aa7fe8a Mon Sep 17 00:00:00 2001 From: NudeDude Date: Fri, 21 Sep 2018 17:37:19 +0200 Subject: [PATCH] restructured classes, bug fix added RegEx for Syntax highlighting --- .../org/nuclearfog/twidda/MainActivity.java | 4 +- .../MessageAdapter.java | 2 +- .../TimelineAdapter.java | 50 +----------- .../TrendAdapter.java | 2 +- .../{viewadapter => adapter}/UserAdapter.java | 2 +- .../WorldIdAdapter.java | 2 +- .../nuclearfog/twidda/backend/MainPage.java | 4 +- .../twidda/backend/MessageLoader.java | 2 +- .../twidda/backend/ProfileLoader.java | 2 +- .../twidda/backend/StatusLoader.java | 80 +++---------------- .../twidda/backend/TwitterSearch.java | 4 +- .../nuclearfog/twidda/backend/UserLists.java | 2 +- .../twidda/backend/clickable/Tagger.java | 65 +++++++++++++++ .../nuclearfog/twidda/window/AppSettings.java | 2 +- .../twidda/window/DirectMessage.java | 4 +- .../nuclearfog/twidda/window/SearchPage.java | 6 +- .../nuclearfog/twidda/window/TweetDetail.java | 40 +++++++--- .../nuclearfog/twidda/window/UserDetail.java | 4 +- .../nuclearfog/twidda/window/UserProfile.java | 41 ++++++---- 19 files changed, 158 insertions(+), 160 deletions(-) rename app/src/main/java/org/nuclearfog/twidda/{viewadapter => adapter}/MessageAdapter.java (98%) rename app/src/main/java/org/nuclearfog/twidda/{viewadapter => adapter}/TimelineAdapter.java (77%) rename app/src/main/java/org/nuclearfog/twidda/{viewadapter => adapter}/TrendAdapter.java (98%) rename app/src/main/java/org/nuclearfog/twidda/{viewadapter => adapter}/UserAdapter.java (98%) rename app/src/main/java/org/nuclearfog/twidda/{viewadapter => adapter}/WorldIdAdapter.java (97%) create mode 100644 app/src/main/java/org/nuclearfog/twidda/backend/clickable/Tagger.java diff --git a/app/src/main/java/org/nuclearfog/twidda/MainActivity.java b/app/src/main/java/org/nuclearfog/twidda/MainActivity.java index b58f0c5f..f3757648 100644 --- a/app/src/main/java/org/nuclearfog/twidda/MainActivity.java +++ b/app/src/main/java/org/nuclearfog/twidda/MainActivity.java @@ -19,11 +19,11 @@ import android.widget.TabHost; import android.widget.TabHost.OnTabChangeListener; import android.widget.TabHost.TabSpec; +import org.nuclearfog.twidda.adapter.TimelineAdapter; +import org.nuclearfog.twidda.adapter.TrendAdapter; import org.nuclearfog.twidda.backend.MainPage; import org.nuclearfog.twidda.backend.listitems.Tweet; import org.nuclearfog.twidda.database.GlobalSettings; -import org.nuclearfog.twidda.viewadapter.TimelineAdapter; -import org.nuclearfog.twidda.viewadapter.TrendAdapter; import org.nuclearfog.twidda.window.AppSettings; import org.nuclearfog.twidda.window.LoginPage; import org.nuclearfog.twidda.window.SearchPage; diff --git a/app/src/main/java/org/nuclearfog/twidda/viewadapter/MessageAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/MessageAdapter.java similarity index 98% rename from app/src/main/java/org/nuclearfog/twidda/viewadapter/MessageAdapter.java rename to app/src/main/java/org/nuclearfog/twidda/adapter/MessageAdapter.java index eae30995..3142db01 100644 --- a/app/src/main/java/org/nuclearfog/twidda/viewadapter/MessageAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/MessageAdapter.java @@ -1,4 +1,4 @@ -package org.nuclearfog.twidda.viewadapter; +package org.nuclearfog.twidda.adapter; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; diff --git a/app/src/main/java/org/nuclearfog/twidda/viewadapter/TimelineAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/TimelineAdapter.java similarity index 77% rename from app/src/main/java/org/nuclearfog/twidda/viewadapter/TimelineAdapter.java rename to app/src/main/java/org/nuclearfog/twidda/adapter/TimelineAdapter.java index 2f58b495..c0c8ae12 100644 --- a/app/src/main/java/org/nuclearfog/twidda/viewadapter/TimelineAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/TimelineAdapter.java @@ -1,12 +1,10 @@ -package org.nuclearfog.twidda.viewadapter; +package org.nuclearfog.twidda.adapter; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView.Adapter; import android.support.v7.widget.RecyclerView.ViewHolder; -import android.text.SpannableStringBuilder; import android.text.Spanned; -import android.text.style.ForegroundColorSpan; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; @@ -17,6 +15,7 @@ import android.widget.TextView; import com.squareup.picasso.Picasso; import org.nuclearfog.twidda.R; +import org.nuclearfog.twidda.backend.clickable.Tagger; import org.nuclearfog.twidda.backend.listitems.Tweet; import java.text.SimpleDateFormat; @@ -102,10 +101,10 @@ public class TimelineAdapter extends Adapter { } else { vh.retweeter.setText(""); } - + Spanned text = Tagger.makeText(tweet.tweet, highlight); vh.username.setText(tweet.user.username); vh.screenname.setText(tweet.user.screenname); - vh.tweet.setText(highlight(tweet.tweet)); + vh.tweet.setText(text); vh.retweet.setText(retweet); vh.favorite.setText(favorit); vh.time.setText(stringTime(tweet.time)); @@ -151,47 +150,6 @@ public class TimelineAdapter extends Adapter { } - public SpannableStringBuilder highlight(String tweet) { - SpannableStringBuilder sTweet = new SpannableStringBuilder(tweet); - int start = 0; - boolean marked = false; - for (int i = 0; i < tweet.length(); i++) { - char current = tweet.charAt(i); - switch (current) { - case '@': - start = i; - marked = true; - break; - case '#': - start = i; - marked = true; - break; - - case '\'': - case '\"': - case '\n': - case ')': - case '(': - case ':': - case ' ': - case '.': - case ',': - case '!': - case '?': - case '-': - if (marked) - sTweet.setSpan(new ForegroundColorSpan(highlight), start, i, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - marked = false; - break; - } - if (i == tweet.length() - 1 && marked) { - sTweet.setSpan(new ForegroundColorSpan(highlight), start, i + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - } - } - return sTweet; - } - - /** * Custom Click Listener */ diff --git a/app/src/main/java/org/nuclearfog/twidda/viewadapter/TrendAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/TrendAdapter.java similarity index 98% rename from app/src/main/java/org/nuclearfog/twidda/viewadapter/TrendAdapter.java rename to app/src/main/java/org/nuclearfog/twidda/adapter/TrendAdapter.java index 63626f53..9025bcdd 100644 --- a/app/src/main/java/org/nuclearfog/twidda/viewadapter/TrendAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/TrendAdapter.java @@ -1,4 +1,4 @@ -package org.nuclearfog.twidda.viewadapter; +package org.nuclearfog.twidda.adapter; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; diff --git a/app/src/main/java/org/nuclearfog/twidda/viewadapter/UserAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/UserAdapter.java similarity index 98% rename from app/src/main/java/org/nuclearfog/twidda/viewadapter/UserAdapter.java rename to app/src/main/java/org/nuclearfog/twidda/adapter/UserAdapter.java index b4474b1a..4c731197 100644 --- a/app/src/main/java/org/nuclearfog/twidda/viewadapter/UserAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/UserAdapter.java @@ -1,4 +1,4 @@ -package org.nuclearfog.twidda.viewadapter; +package org.nuclearfog.twidda.adapter; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; diff --git a/app/src/main/java/org/nuclearfog/twidda/viewadapter/WorldIdAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/WorldIdAdapter.java similarity index 97% rename from app/src/main/java/org/nuclearfog/twidda/viewadapter/WorldIdAdapter.java rename to app/src/main/java/org/nuclearfog/twidda/adapter/WorldIdAdapter.java index 7cec2819..9515c31e 100644 --- a/app/src/main/java/org/nuclearfog/twidda/viewadapter/WorldIdAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/WorldIdAdapter.java @@ -1,4 +1,4 @@ -package org.nuclearfog.twidda.viewadapter; +package org.nuclearfog.twidda.adapter; import android.content.Context; import android.content.res.Resources; 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 babfd477..b10ec224 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/MainPage.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/MainPage.java @@ -8,12 +8,12 @@ import android.widget.Toast; import org.nuclearfog.twidda.MainActivity; import org.nuclearfog.twidda.R; +import org.nuclearfog.twidda.adapter.TimelineAdapter; +import org.nuclearfog.twidda.adapter.TrendAdapter; import org.nuclearfog.twidda.backend.listitems.Trend; import org.nuclearfog.twidda.backend.listitems.Tweet; import org.nuclearfog.twidda.database.DatabaseAdapter; import org.nuclearfog.twidda.database.GlobalSettings; -import org.nuclearfog.twidda.viewadapter.TimelineAdapter; -import org.nuclearfog.twidda.viewadapter.TrendAdapter; import java.lang.ref.WeakReference; import java.util.ArrayList; diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/MessageLoader.java b/app/src/main/java/org/nuclearfog/twidda/backend/MessageLoader.java index 4af6b8e7..46b765be 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/MessageLoader.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/MessageLoader.java @@ -7,9 +7,9 @@ import android.util.Log; import android.widget.Toast; import org.nuclearfog.twidda.R; +import org.nuclearfog.twidda.adapter.MessageAdapter; import org.nuclearfog.twidda.backend.listitems.Message; import org.nuclearfog.twidda.database.DatabaseAdapter; -import org.nuclearfog.twidda.viewadapter.MessageAdapter; import org.nuclearfog.twidda.window.DirectMessage; import java.lang.ref.WeakReference; 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 69b134e3..8b7fa643 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/ProfileLoader.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/ProfileLoader.java @@ -13,11 +13,11 @@ import android.widget.Toast; import com.squareup.picasso.Picasso; import org.nuclearfog.twidda.R; +import org.nuclearfog.twidda.adapter.TimelineAdapter; import org.nuclearfog.twidda.backend.listitems.Tweet; import org.nuclearfog.twidda.backend.listitems.TwitterUser; import org.nuclearfog.twidda.database.DatabaseAdapter; import org.nuclearfog.twidda.database.GlobalSettings; -import org.nuclearfog.twidda.viewadapter.TimelineAdapter; import org.nuclearfog.twidda.window.UserDetail; import org.nuclearfog.twidda.window.UserProfile; 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 fe6ac091..8968a8f3 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/StatusLoader.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/StatusLoader.java @@ -5,10 +5,6 @@ import android.os.AsyncTask; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.RecyclerView; import android.text.Spannable; -import android.text.SpannableStringBuilder; -import android.text.Spanned; -import android.text.TextPaint; -import android.text.style.ClickableSpan; import android.util.Log; import android.view.View; import android.widget.Button; @@ -19,11 +15,11 @@ import android.widget.Toast; import com.squareup.picasso.Picasso; import org.nuclearfog.twidda.R; +import org.nuclearfog.twidda.adapter.TimelineAdapter; +import org.nuclearfog.twidda.backend.clickable.Tagger; import org.nuclearfog.twidda.backend.listitems.Tweet; import org.nuclearfog.twidda.database.DatabaseAdapter; import org.nuclearfog.twidda.database.GlobalSettings; -import org.nuclearfog.twidda.viewadapter.TimelineAdapter; -import org.nuclearfog.twidda.window.SearchPage; import org.nuclearfog.twidda.window.TweetDetail; import java.lang.ref.WeakReference; @@ -154,7 +150,8 @@ public class StatusLoader extends AsyncTask { View mediaButton = ui.get().findViewById(R.id.image_attach); View tweet_verify = ui.get().findViewById(R.id.tweet_verify); - tweetText.setText(highlight(tweet.tweet)); + Spannable sTweet = Tagger.makeText(tweet.tweet, highlight, ui.get()); + tweetText.setText(sTweet); tweetText.setTextColor(font_color); username.setText(tweet.user.username); username.setTextColor(font_color); @@ -218,6 +215,7 @@ public class StatusLoader extends AsyncTask { answerAdapter.notifyDataSetChanged(); } + @Override protected void onPostExecute(Long mode) { if (ui.get() == null) return; @@ -225,10 +223,14 @@ public class StatusLoader extends AsyncTask { SwipeRefreshLayout ansReload = ui.get().findViewById(R.id.answer_reload); ansReload.setRefreshing(false); - if (mode == DELETE) { + if (mode == FAVORITE || mode == RETWEET) { + ui.get().setResult(TweetDetail.CHANGED); + + } else if (mode == DELETE) { Toast.makeText(ui.get(), R.string.tweet_removed, Toast.LENGTH_SHORT).show(); - ui.get().setResult(ui.get().CHANGED); + ui.get().setResult(TweetDetail.CHANGED); ui.get().finish(); + } else if (mode == ERROR) { switch (returnCode) { case 136: @@ -244,64 +246,4 @@ public class StatusLoader extends AsyncTask { } } } - - - private Spannable highlight(String tweet) { - Spannable sTweet = new SpannableStringBuilder(tweet); - int start = 0; - boolean marked = false; - for (int i = 0; i < tweet.length(); i++) { - char current = tweet.charAt(i); - switch (current) { - case '@': - case '#': - start = i; - marked = true; - break; - case '\'': - case '\"': - case '\n': - case ')': - case '(': - case ':': - case ' ': - case '.': - case ',': - case '!': - case '?': - case '-': - if (marked && start != i - 1) - sTweet = spanning(sTweet, start, i); - marked = false; - break; - } - } - if (marked && start != tweet.length() - 1) { - sTweet = spanning(sTweet, start, tweet.length()); - } - return sTweet; - } - - - private Spannable spanning(Spannable sTweet, final int start, final int end) { - sTweet.setSpan(new ClickableSpan() { - @Override - public void onClick(View widget) { - TextView tv = (TextView) widget; - Spanned s = (Spanned) tv.getText(); - String search = s.subSequence(start, end).toString(); - Intent intent = new Intent(ui.get(), SearchPage.class); - if (search.startsWith("#")) - intent.putExtra("Addition", search); - intent.putExtra("search", search); - ui.get().startActivity(intent); - } - @Override - public void updateDrawState(TextPaint ds) { - ds.setColor(highlight); - ds.setUnderlineText(false); - } - }, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - return sTweet; - } } \ No newline at end of file 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 3d0c72dd..d6a66114 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/TwitterSearch.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/TwitterSearch.java @@ -7,10 +7,10 @@ import android.util.Log; import android.widget.Toast; import org.nuclearfog.twidda.R; +import org.nuclearfog.twidda.adapter.TimelineAdapter; +import org.nuclearfog.twidda.adapter.UserAdapter; import org.nuclearfog.twidda.backend.listitems.Tweet; import org.nuclearfog.twidda.backend.listitems.TwitterUser; -import org.nuclearfog.twidda.viewadapter.TimelineAdapter; -import org.nuclearfog.twidda.viewadapter.UserAdapter; import org.nuclearfog.twidda.window.SearchPage; import java.lang.ref.WeakReference; 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 a9ef49c4..f5913960 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/UserLists.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/UserLists.java @@ -8,8 +8,8 @@ import android.util.Log; import android.widget.Toast; import org.nuclearfog.twidda.R; +import org.nuclearfog.twidda.adapter.UserAdapter; import org.nuclearfog.twidda.backend.listitems.TwitterUser; -import org.nuclearfog.twidda.viewadapter.UserAdapter; import org.nuclearfog.twidda.window.UserDetail; import java.lang.ref.WeakReference; diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/clickable/Tagger.java b/app/src/main/java/org/nuclearfog/twidda/backend/clickable/Tagger.java new file mode 100644 index 00000000..86957e35 --- /dev/null +++ b/app/src/main/java/org/nuclearfog/twidda/backend/clickable/Tagger.java @@ -0,0 +1,65 @@ +package org.nuclearfog.twidda.backend.clickable; + +import android.text.Spannable; +import android.text.SpannableStringBuilder; +import android.text.Spanned; +import android.text.TextPaint; +import android.text.style.ClickableSpan; +import android.text.style.ForegroundColorSpan; +import android.view.View; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class Tagger { + + private static final String PATTERN = "[@#][^\\s@#\\.\\,]+"; + private static final int MODE = Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; + + + private Tagger() { + } + + + public static Spannable makeText(final String text, final int color, final OnTagClickListener l) { + SpannableStringBuilder sText = new SpannableStringBuilder(text); + Pattern p = Pattern.compile(PATTERN); + Matcher m = p.matcher(text); + while (m.find()) { + final int start = m.start(); + final int end = m.end(); + sText.setSpan(new ClickableSpan() { + @Override + public void onClick(View widget) { + l.onClick(text.substring(start, end)); + } + + @Override + public void updateDrawState(TextPaint ds) { + ds.setColor(color); + ds.setUnderlineText(false); + } + }, start, end, MODE); + } + return sText; + } + + + public static Spannable makeText(String text, int color) { + SpannableStringBuilder sText = new SpannableStringBuilder(text); + Pattern p = Pattern.compile(PATTERN); + Matcher m = p.matcher(text); + while (m.find()) { + final int start = m.start(); + final int end = m.end(); + ForegroundColorSpan sColor = new ForegroundColorSpan(color); + sText.setSpan(sColor, start, end, MODE); + } + return sText; + } + + + public interface OnTagClickListener { + void onClick(String text); + } +} \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/window/AppSettings.java b/app/src/main/java/org/nuclearfog/twidda/window/AppSettings.java index 876393a9..4eb9da3e 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/AppSettings.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/AppSettings.java @@ -22,9 +22,9 @@ import com.flask.colorpicker.OnColorChangedListener; import com.flask.colorpicker.builder.ColorPickerDialogBuilder; import org.nuclearfog.twidda.R; +import org.nuclearfog.twidda.adapter.WorldIdAdapter; import org.nuclearfog.twidda.backend.TwitterEngine; import org.nuclearfog.twidda.database.GlobalSettings; -import org.nuclearfog.twidda.viewadapter.WorldIdAdapter; /** * App settings page diff --git a/app/src/main/java/org/nuclearfog/twidda/window/DirectMessage.java b/app/src/main/java/org/nuclearfog/twidda/window/DirectMessage.java index b11830e2..dcbaaa0b 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/DirectMessage.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/DirectMessage.java @@ -13,11 +13,11 @@ import android.view.MenuItem; import android.view.View; import org.nuclearfog.twidda.R; +import org.nuclearfog.twidda.adapter.MessageAdapter; +import org.nuclearfog.twidda.adapter.MessageAdapter.OnItemSelected; import org.nuclearfog.twidda.backend.MessageLoader; import org.nuclearfog.twidda.backend.listitems.TwitterUser; import org.nuclearfog.twidda.database.GlobalSettings; -import org.nuclearfog.twidda.viewadapter.MessageAdapter; -import org.nuclearfog.twidda.viewadapter.MessageAdapter.OnItemSelected; import static android.os.AsyncTask.Status.RUNNING; diff --git a/app/src/main/java/org/nuclearfog/twidda/window/SearchPage.java b/app/src/main/java/org/nuclearfog/twidda/window/SearchPage.java index 64ed714d..7130dca0 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/SearchPage.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/SearchPage.java @@ -19,13 +19,13 @@ import android.widget.TabHost; import android.widget.TabHost.OnTabChangeListener; import org.nuclearfog.twidda.R; +import org.nuclearfog.twidda.adapter.TimelineAdapter; +import org.nuclearfog.twidda.adapter.TimelineAdapter.OnItemClicked; +import org.nuclearfog.twidda.adapter.UserAdapter; import org.nuclearfog.twidda.backend.TwitterSearch; import org.nuclearfog.twidda.backend.listitems.Tweet; import org.nuclearfog.twidda.backend.listitems.TwitterUser; import org.nuclearfog.twidda.database.GlobalSettings; -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.RUNNING; 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 4d8e11c8..7e20894f 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/TweetDetail.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/TweetDetail.java @@ -21,12 +21,13 @@ import android.view.ViewGroup; import android.widget.Toast; import org.nuclearfog.twidda.R; +import org.nuclearfog.twidda.adapter.TimelineAdapter; +import org.nuclearfog.twidda.adapter.TimelineAdapter.OnItemClicked; import org.nuclearfog.twidda.backend.ImagePopup; import org.nuclearfog.twidda.backend.StatusLoader; +import org.nuclearfog.twidda.backend.clickable.Tagger; import org.nuclearfog.twidda.backend.listitems.Tweet; 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.RUNNING; @@ -37,12 +38,14 @@ import static android.os.AsyncTask.Status.RUNNING; * @see ImagePopup */ public class TweetDetail extends AppCompatActivity implements OnClickListener, - OnItemClicked, OnRefreshListener { + OnItemClicked, OnRefreshListener, Tagger.OnTagClickListener { public static final int CHANGED = 1; + private static final int TWEET = 2; private RecyclerView answer_list; private StatusLoader mStat; + private GlobalSettings settings; private SwipeRefreshLayout answerReload; private ConnectivityManager mConnect; private String username = ""; @@ -68,7 +71,7 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener, if (getSupportActionBar() != null) getSupportActionBar().setDisplayShowTitleEnabled(false); - GlobalSettings settings = GlobalSettings.getInstance(this); + settings = GlobalSettings.getInstance(this); isHome = userID == settings.getUserId(); mConnect = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); @@ -85,10 +88,6 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener, answer_list.setLayoutManager(new LinearLayoutManager(this)); root.setBackgroundColor(settings.getBackgroundColor()); - TimelineAdapter answerAdapter = new TimelineAdapter(this); - answerAdapter.toggleImage(settings.loadImages()); - answerAdapter.setColor(settings.getHighlightColor(), settings.getFontColor()); - answer_list.setAdapter(answerAdapter); favorite.setOnClickListener(this); retweet.setOnClickListener(this); @@ -103,6 +102,11 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener, protected void onStart() { super.onStart(); if (mStat == null) { + TimelineAdapter answerAdapter = new TimelineAdapter(this); + answerAdapter.toggleImage(settings.loadImages()); + answerAdapter.setColor(settings.getHighlightColor(), settings.getFontColor()); + answer_list.setAdapter(answerAdapter); + answerReload.setRefreshing(true); mStat = new StatusLoader(this); mStat.execute(tweetID, StatusLoader.LOAD); @@ -120,6 +124,14 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener, } + @Override + protected void onActivityResult(int reqCode, int returnCode, Intent i) { + if (reqCode == TWEET && returnCode == CHANGED) { + mStat = null; + } + } + + @Override public boolean onCreateOptionsMenu(Menu m) { getMenuInflater().inflate(R.menu.tweet, m); @@ -209,6 +221,16 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener, } + @Override + public void onClick(String text) { + Intent intent = new Intent(this, SearchPage.class); + if (text.startsWith("#")) + intent.putExtra("Addition", text); + intent.putExtra("search", text); + startActivity(intent); + } + + @Override public void onItemClick(ViewGroup parent, int position) { TimelineAdapter timeLineAdapter = (TimelineAdapter) answer_list.getAdapter(); @@ -218,7 +240,7 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener, intent.putExtra("tweetID", tweet.tweetID); intent.putExtra("userID", tweet.user.userID); intent.putExtra("username", tweet.user.screenname); - startActivity(intent); + startActivityForResult(intent, TWEET); } } 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 6c7d00c4..b1a91bf2 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/UserDetail.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/UserDetail.java @@ -12,11 +12,11 @@ import android.view.View; import android.view.ViewGroup; import org.nuclearfog.twidda.R; +import org.nuclearfog.twidda.adapter.UserAdapter; +import org.nuclearfog.twidda.adapter.UserAdapter.OnItemClicked; import org.nuclearfog.twidda.backend.UserLists; import org.nuclearfog.twidda.backend.listitems.TwitterUser; import org.nuclearfog.twidda.database.GlobalSettings; -import org.nuclearfog.twidda.viewadapter.UserAdapter; -import org.nuclearfog.twidda.viewadapter.UserAdapter.OnItemClicked; import static android.os.AsyncTask.Status.RUNNING; 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 e776a1df..c42d71d3 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/UserProfile.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/UserProfile.java @@ -20,11 +20,11 @@ import android.widget.TabHost; import android.widget.TabHost.OnTabChangeListener; import org.nuclearfog.twidda.R; +import org.nuclearfog.twidda.adapter.TimelineAdapter; +import org.nuclearfog.twidda.adapter.TimelineAdapter.OnItemClicked; import org.nuclearfog.twidda.backend.ProfileLoader; import org.nuclearfog.twidda.backend.listitems.Tweet; 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.RUNNING; @@ -36,7 +36,10 @@ import static android.os.AsyncTask.Status.RUNNING; public class UserProfile extends AppCompatActivity implements OnRefreshListener, OnTabChangeListener, OnItemClicked { + private static final int TWEET = 1; + private ProfileLoader mProfile; + private GlobalSettings settings; private SwipeRefreshLayout homeReload, favoriteReload; private RecyclerView homeList, favoriteList; private TabHost mTab; @@ -72,7 +75,7 @@ public class UserProfile extends AppCompatActivity implements if (getSupportActionBar() != null) getSupportActionBar().setDisplayShowTitleEnabled(false); - GlobalSettings settings = GlobalSettings.getInstance(this); + settings = GlobalSettings.getInstance(this); home = userId == settings.getUserId(); homeList.setLayoutManager(new LinearLayoutManager(this)); @@ -90,16 +93,6 @@ public class UserProfile extends AppCompatActivity implements mTab.addTab(tab2); lastTab = mTab.getCurrentView(); - TimelineAdapter homeTl = new TimelineAdapter(this); - homeTl.setColor(settings.getHighlightColor(), settings.getFontColor()); - homeTl.toggleImage(settings.loadImages()); - homeList.setAdapter(homeTl); - - TimelineAdapter homeFav = new TimelineAdapter(this); - homeFav.setColor(settings.getHighlightColor(), settings.getFontColor()); - homeFav.toggleImage(settings.loadImages()); - favoriteList.setAdapter(homeFav); - mTab.setOnTabChangedListener(this); homeReload.setOnRefreshListener(this); favoriteReload.setOnRefreshListener(this); @@ -110,6 +103,16 @@ public class UserProfile extends AppCompatActivity implements protected void onStart() { super.onStart(); if (mProfile == null) { + TimelineAdapter homeTl = new TimelineAdapter(this); + homeTl.setColor(settings.getHighlightColor(), settings.getFontColor()); + homeTl.toggleImage(settings.loadImages()); + homeList.setAdapter(homeTl); + + TimelineAdapter homeFav = new TimelineAdapter(this); + homeFav.setColor(settings.getHighlightColor(), settings.getFontColor()); + homeFav.toggleImage(settings.loadImages()); + favoriteList.setAdapter(homeFav); + mProfile = new ProfileLoader(this); mProfile.execute(userId, 0L); homeReload.setRefreshing(true); @@ -129,6 +132,14 @@ public class UserProfile extends AppCompatActivity implements } + @Override + protected void onActivityResult(int reqCode, int returnCode, Intent i) { + if (reqCode == TWEET && returnCode == TweetDetail.CHANGED) { + mProfile = null; + } + } + + @Override public boolean onCreateOptionsMenu(Menu m) { getMenuInflater().inflate(R.menu.profile, m); @@ -293,7 +304,7 @@ public class UserProfile extends AppCompatActivity implements intent.putExtra("tweetID", tweet.tweetID); intent.putExtra("userID", tweet.user.userID); intent.putExtra("username", tweet.user.screenname); - startActivity(intent); + startActivityForResult(intent, TWEET); } } else { TimelineAdapter tweetAdapter = (TimelineAdapter) favoriteList.getAdapter(); @@ -305,7 +316,7 @@ public class UserProfile extends AppCompatActivity implements intent.putExtra("tweetID", tweet.tweetID); intent.putExtra("userID", tweet.user.userID); intent.putExtra("username", tweet.user.screenname); - startActivity(intent); + startActivityForResult(intent, TWEET); } } }