From 7f73a894e0ea1bc7f46403bbe5a5edc6da25ab6a Mon Sep 17 00:00:00 2001 From: NudeDude Date: Thu, 4 Jan 2018 20:12:50 +0100 Subject: [PATCH] Base 1.1 --- .../org/nuclearfog/twidda/MainActivity.java | 6 +- .../org/nuclearfog/twidda/backend/Search.java | 54 ++++++++----- .../twidda/database/ColorPreferences.java | 57 +++++++++++++ .../twidda/database/TweetDatabase.java | 2 +- .../twidda/viewadapter/TimelineAdapter.java | 3 +- .../twidda/window/TwitterSearch.java | 79 +++++++++++++++---- app/src/main/res/drawable/result.xml | 4 + app/src/main/res/drawable/search_result.xml | 5 ++ app/src/main/res/drawable/user_result.xml | 5 ++ app/src/main/res/drawable/users.xml | 4 + app/src/main/res/layout/search.xml | 53 +++++++++++-- app/src/main/res/layout/trend.xml | 3 +- 12 files changed, 232 insertions(+), 43 deletions(-) create mode 100644 app/src/main/java/org/nuclearfog/twidda/database/ColorPreferences.java create mode 100644 app/src/main/res/drawable/result.xml create mode 100644 app/src/main/res/drawable/search_result.xml create mode 100644 app/src/main/res/drawable/user_result.xml create mode 100644 app/src/main/res/drawable/users.xml diff --git a/app/src/main/java/org/nuclearfog/twidda/MainActivity.java b/app/src/main/java/org/nuclearfog/twidda/MainActivity.java index c63caf47..2f90e97d 100644 --- a/app/src/main/java/org/nuclearfog/twidda/MainActivity.java +++ b/app/src/main/java/org/nuclearfog/twidda/MainActivity.java @@ -37,6 +37,7 @@ public class MainActivity extends AppCompatActivity private ListView timelineList, trendList,mentionList; private MenuItem profile, tweet, search, setting; private SharedPreferences settings; + private SearchView searchQuery; private EditText pin; private Context con; private Toolbar toolbar; @@ -74,7 +75,7 @@ public class MainActivity extends AppCompatActivity tweet = m.findItem(R.id.action_tweet); search = m.findItem(R.id.action_search); setting = m.findItem(R.id.action_settings); - SearchView searchQuery = (SearchView)m.findItem(R.id.action_search).getActionView(); + searchQuery = (SearchView)m.findItem(R.id.action_search).getActionView(); searchQuery.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override @@ -201,6 +202,7 @@ public class MainActivity extends AppCompatActivity mentionReload.setRefreshing(false); trendReload.setRefreshing(false); timelineReload.setRefreshing(false); + searchQuery.onActionViewCollapsed(); setVisibility(tabId); } }); @@ -305,6 +307,7 @@ public class MainActivity extends AppCompatActivity private void setVisibility(String currentTab) { switch(currentTab) { case "timeline": + searchQuery.onActionViewCollapsed(); profile.setVisible(true); search.setVisible(false); tweet.setVisible(true); @@ -317,6 +320,7 @@ public class MainActivity extends AppCompatActivity setting.setVisible(true); break; case "mention": + searchQuery.onActionViewCollapsed(); profile.setVisible(false); search.setVisible(false); tweet.setVisible(false); diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/Search.java b/app/src/main/java/org/nuclearfog/twidda/backend/Search.java index 494d6e65..82623728 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/Search.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/Search.java @@ -8,20 +8,26 @@ import android.widget.ListView; import org.nuclearfog.twidda.database.TweetDatabase; import org.nuclearfog.twidda.R; +import org.nuclearfog.twidda.database.UserDatabase; import org.nuclearfog.twidda.viewadapter.TimelineAdapter; +import org.nuclearfog.twidda.viewadapter.UserAdapter; import org.nuclearfog.twidda.window.TwitterSearch; import twitter4j.Query; import twitter4j.QueryResult; import twitter4j.Twitter; -public class Search extends AsyncTask { +public class Search extends AsyncTask { + + public static final String TWEETS = "tweets"; + public static final String USERS = "users"; private TimelineAdapter tlAdp; - private SwipeRefreshLayout refresh; + private UserAdapter uAdp; + private SwipeRefreshLayout tweetReload, userReload; + private ListView tweetSearch, userSearch; private Context context; private Twitter twitter; - private ListView tl; private int load; public Search(Context context) { @@ -32,34 +38,46 @@ public class Search extends AsyncTask { @Override protected void onPreExecute() { - tl = (ListView) ((TwitterSearch)context).findViewById(R.id.search_result); - refresh = (SwipeRefreshLayout) ((TwitterSearch)context).findViewById(R.id.search_refresh); + tweetSearch = (ListView) ((TwitterSearch)context).findViewById(R.id.tweet_result); + userSearch = (ListView) ((TwitterSearch)context).findViewById(R.id.user_result); + tweetReload = (SwipeRefreshLayout) ((TwitterSearch)context).findViewById(R.id.searchtweets); + userReload = (SwipeRefreshLayout) ((TwitterSearch)context).findViewById(R.id.searchusers); twitter = TwitterResource.getInstance(context).getTwitter(); } @Override - protected Boolean doInBackground(String... search) { + protected String doInBackground(String... search) { + String mode = search[0]; String get = search[1]; - Query q = new Query(); - q.setQuery(get+" +exclude:retweets"); - q.setCount(load); try { - switch(search[0]) { - case("tweet"): + switch(mode) { + case(TWEETS): + Query q = new Query(); + q.setQuery(get+" +exclude:retweets"); + q.setCount(load); QueryResult result = twitter.search(q); TweetDatabase searchdb = new TweetDatabase(result.getTweets(),context); tlAdp = new TimelineAdapter(context, searchdb); - break; - case("user"): - break; + return TWEETS; + case(USERS): + UserDatabase userdb = new UserDatabase(context, twitter.searchUsers(get,-1)); + uAdp = new UserAdapter(context, userdb); + return USERS; } } catch(Exception err){err.printStackTrace();} - return false; + return ""; } @Override - protected void onPostExecute(Boolean result) { - tl.setAdapter(tlAdp); - refresh.setRefreshing(false); + protected void onPostExecute(String mode) { + switch(mode) { + case(TWEETS): + tweetSearch.setAdapter(tlAdp); + tweetReload.setRefreshing(false); + break; + case(USERS): + userSearch.setAdapter(uAdp); + userReload.setRefreshing(false); + } } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/database/ColorPreferences.java b/app/src/main/java/org/nuclearfog/twidda/database/ColorPreferences.java new file mode 100644 index 00000000..0bf08e9d --- /dev/null +++ b/app/src/main/java/org/nuclearfog/twidda/database/ColorPreferences.java @@ -0,0 +1,57 @@ +package org.nuclearfog.twidda.database; + +import android.content.Context; +import android.content.SharedPreferences; +import android.graphics.Color; + +import com.flask.colorpicker.ColorPickerView; +import com.flask.colorpicker.OnColorSelectedListener; +import com.flask.colorpicker.builder.ColorPickerDialogBuilder; + +public class ColorPreferences implements OnColorSelectedListener{ + + public static final int BACKGROUND = 0x0; + public static final int FONT_COLOR = 0x1; + + private int current = 0; + private static ColorPreferences ourInstance; + private SharedPreferences settings; + private Context context; + + + private ColorPreferences(Context context) { + this.context = context; + settings = context.getSharedPreferences("settings", 0); + } + + @Override + public void onColorSelected(int i) { + current = i; + } + + + public void setColor(final int MODE) { + ColorPickerDialogBuilder.with(context) + .showAlphaSlider(false) + .wheelType(ColorPickerView.WHEEL_TYPE.CIRCLE).density(20) + .setOnColorSelectedListener(this).build().show(); + } + + public void commmit() { + + + } + + /** + * + * TODO + */ + + + + public static ColorPreferences getInstance(Context context) { + if(ourInstance==null) + ourInstance = new ColorPreferences(context); + return ourInstance; + } +} 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 55ac3def..c43e6dd5 100644 --- a/app/src/main/java/org/nuclearfog/twidda/database/TweetDatabase.java +++ b/app/src/main/java/org/nuclearfog/twidda/database/TweetDatabase.java @@ -26,12 +26,12 @@ public class TweetDatabase { private List userId,tweetId,timeMillis; private List noRT,noFav,noAns; private List stats; + private SharedPreferences settings; private boolean toggleImg; private int size = 0; private int mode = 0; private int limit; private long CurrentId = 0; - private SharedPreferences settings; /** * Store & Read Data diff --git a/app/src/main/java/org/nuclearfog/twidda/viewadapter/TimelineAdapter.java b/app/src/main/java/org/nuclearfog/twidda/viewadapter/TimelineAdapter.java index 9e5c626a..91c81747 100644 --- a/app/src/main/java/org/nuclearfog/twidda/viewadapter/TimelineAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/viewadapter/TimelineAdapter.java @@ -1,6 +1,7 @@ package org.nuclearfog.twidda.viewadapter; import android.content.Context; +import android.graphics.Color; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -48,7 +49,7 @@ public class TimelineAdapter extends ArrayAdapter { ((TextView) v.findViewById(R.id.favorite_number)).setText(""+mTweets.getFavorite(position)); ((TextView) v.findViewById(R.id.time)).setText(mTweets.getDate(position)); ImageView imgView = v.findViewById(R.id.tweetPb); - + v.setBackgroundColor(Color.BLUE); v.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { diff --git a/app/src/main/java/org/nuclearfog/twidda/window/TwitterSearch.java b/app/src/main/java/org/nuclearfog/twidda/window/TwitterSearch.java index 35bc5226..5199aaa1 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/TwitterSearch.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/TwitterSearch.java @@ -10,30 +10,36 @@ import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; +import android.widget.TabHost; import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.backend.Search; import org.nuclearfog.twidda.database.TweetDatabase; +import org.nuclearfog.twidda.database.UserDatabase; import org.nuclearfog.twidda.viewadapter.TimelineAdapter; +import org.nuclearfog.twidda.viewadapter.UserAdapter; public class TwitterSearch extends AppCompatActivity { private String search; - private ListView searchTL; - private SwipeRefreshLayout search_refresh; + private ListView tweetSearch, userSearch; + private SwipeRefreshLayout tweetReload,userReload; @Override - protected void onCreate(Bundle bundle){ + protected void onCreate(Bundle bundle) { super.onCreate(bundle); setContentView(R.layout.search); Toolbar tool = (Toolbar) findViewById(R.id.search_toolbar); - searchTL = (ListView) findViewById(R.id.search_result); - search_refresh = (SwipeRefreshLayout) findViewById(R.id.search_refresh); + tweetSearch = (ListView) findViewById(R.id.tweet_result); + userSearch = (ListView) findViewById(R.id.user_result); + tweetReload = (SwipeRefreshLayout) findViewById(R.id.searchtweets); + userReload = (SwipeRefreshLayout) findViewById(R.id.searchusers); setSupportActionBar(tool); getSupportActionBar().setDisplayShowTitleEnabled(false); search = getIntent().getExtras().getString("search"); - getContent(); + setTabContent(); setListener(); + getContent(Search.TWEETS); } @Override @@ -56,11 +62,11 @@ public class TwitterSearch extends AppCompatActivity { } private void setListener() { - searchTL.setOnItemClickListener(new AdapterView.OnItemClickListener() { + tweetSearch.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { - if(!search_refresh.isRefreshing()) { - TimelineAdapter tlAdp = (TimelineAdapter) searchTL.getAdapter(); + if(!tweetReload.isRefreshing()) { + TimelineAdapter tlAdp = (TimelineAdapter) tweetSearch.getAdapter(); TweetDatabase twDB = tlAdp.getAdapter(); long tweetID = twDB.getTweetId(position); long userID = twDB.getUserID(position); @@ -73,16 +79,61 @@ public class TwitterSearch extends AppCompatActivity { } } }); - search_refresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { + userSearch.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + if(!userReload.isRefreshing()) { + UserAdapter uAdp = (UserAdapter) userSearch.getAdapter(); + UserDatabase uDb = uAdp.getAdapter(); + Intent profile = new Intent(getApplicationContext(), UserProfile.class); + Bundle bundle = new Bundle(); + long userID = uDb.getUserID(position); + bundle.putLong("userID",userID); + profile.putExtras(bundle); + startActivity(profile); + } + } + }); + tweetReload.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { - getContent(); + getContent(Search.TWEETS); + } + }); + userReload.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { + @Override + public void onRefresh() { + getContent(Search.USERS); } }); } - private void getContent() { - Search s = new Search(this); - s.execute("tweet",search); + private void setTabContent(){ + TabHost tabhost = (TabHost)findViewById(R.id.search_tab); + tabhost.setup(); + + TabHost.TabSpec tab1 = tabhost.newTabSpec("Tweets"); + tab1.setContent(R.id.searchtweets); + tab1.setIndicator("",getResources().getDrawable(R.drawable.search_result)); + tabhost.addTab(tab1); + + TabHost.TabSpec tab2 = tabhost.newTabSpec("Tweets"); + tab2.setContent(R.id.searchusers); + tab2.setIndicator("",getResources().getDrawable(R.drawable.user_result)); + tabhost.addTab(tab2); + + tabhost.setOnTabChangedListener(new TabHost.OnTabChangeListener() { + @Override + public void onTabChanged(String tabId) { + tweetReload.setRefreshing(false); + userReload.setRefreshing(false); + } + }); + } + + private void getContent(final String MODE){ + Search s = new Search(TwitterSearch.this); + s.execute(MODE,search); + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/result.xml b/app/src/main/res/drawable/result.xml new file mode 100644 index 00000000..26824b0b --- /dev/null +++ b/app/src/main/res/drawable/result.xml @@ -0,0 +1,4 @@ + + + diff --git a/app/src/main/res/drawable/search_result.xml b/app/src/main/res/drawable/search_result.xml new file mode 100644 index 00000000..68ba3197 --- /dev/null +++ b/app/src/main/res/drawable/search_result.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/user_result.xml b/app/src/main/res/drawable/user_result.xml new file mode 100644 index 00000000..c8825019 --- /dev/null +++ b/app/src/main/res/drawable/user_result.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/users.xml b/app/src/main/res/drawable/users.xml new file mode 100644 index 00000000..e36c37a5 --- /dev/null +++ b/app/src/main/res/drawable/users.xml @@ -0,0 +1,4 @@ + + + diff --git a/app/src/main/res/layout/search.xml b/app/src/main/res/layout/search.xml index b5305ccc..85fef84d 100644 --- a/app/src/main/res/layout/search.xml +++ b/app/src/main/res/layout/search.xml @@ -11,19 +11,58 @@ android:minHeight="?attr/actionBarSize" android:theme="?attr/actionBarTheme" /> - - - + android:layout_height="match_parent" + android:orientation="vertical"> + + + + + + + + + + - + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/trend.xml b/app/src/main/res/layout/trend.xml index 6aaf4700..bb8506ed 100644 --- a/app/src/main/res/layout/trend.xml +++ b/app/src/main/res/layout/trend.xml @@ -9,7 +9,8 @@ android:id="@+id/trendname" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_margin="5dp" /> + android:layout_margin="5dp" + android:textSize="18dp" />