This commit is contained in:
NudeDude 2018-01-04 20:12:50 +01:00
parent a1081b3cc7
commit 7f73a894e0
12 changed files with 232 additions and 43 deletions

View File

@ -37,6 +37,7 @@ public class MainActivity extends AppCompatActivity
private ListView timelineList, trendList,mentionList; private ListView timelineList, trendList,mentionList;
private MenuItem profile, tweet, search, setting; private MenuItem profile, tweet, search, setting;
private SharedPreferences settings; private SharedPreferences settings;
private SearchView searchQuery;
private EditText pin; private EditText pin;
private Context con; private Context con;
private Toolbar toolbar; private Toolbar toolbar;
@ -74,7 +75,7 @@ public class MainActivity extends AppCompatActivity
tweet = m.findItem(R.id.action_tweet); tweet = m.findItem(R.id.action_tweet);
search = m.findItem(R.id.action_search); search = m.findItem(R.id.action_search);
setting = m.findItem(R.id.action_settings); 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() { searchQuery.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override @Override
@ -201,6 +202,7 @@ public class MainActivity extends AppCompatActivity
mentionReload.setRefreshing(false); mentionReload.setRefreshing(false);
trendReload.setRefreshing(false); trendReload.setRefreshing(false);
timelineReload.setRefreshing(false); timelineReload.setRefreshing(false);
searchQuery.onActionViewCollapsed();
setVisibility(tabId); setVisibility(tabId);
} }
}); });
@ -305,6 +307,7 @@ public class MainActivity extends AppCompatActivity
private void setVisibility(String currentTab) { private void setVisibility(String currentTab) {
switch(currentTab) { switch(currentTab) {
case "timeline": case "timeline":
searchQuery.onActionViewCollapsed();
profile.setVisible(true); profile.setVisible(true);
search.setVisible(false); search.setVisible(false);
tweet.setVisible(true); tweet.setVisible(true);
@ -317,6 +320,7 @@ public class MainActivity extends AppCompatActivity
setting.setVisible(true); setting.setVisible(true);
break; break;
case "mention": case "mention":
searchQuery.onActionViewCollapsed();
profile.setVisible(false); profile.setVisible(false);
search.setVisible(false); search.setVisible(false);
tweet.setVisible(false); tweet.setVisible(false);

View File

@ -8,20 +8,26 @@ import android.widget.ListView;
import org.nuclearfog.twidda.database.TweetDatabase; import org.nuclearfog.twidda.database.TweetDatabase;
import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.database.UserDatabase;
import org.nuclearfog.twidda.viewadapter.TimelineAdapter; import org.nuclearfog.twidda.viewadapter.TimelineAdapter;
import org.nuclearfog.twidda.viewadapter.UserAdapter;
import org.nuclearfog.twidda.window.TwitterSearch; import org.nuclearfog.twidda.window.TwitterSearch;
import twitter4j.Query; import twitter4j.Query;
import twitter4j.QueryResult; import twitter4j.QueryResult;
import twitter4j.Twitter; import twitter4j.Twitter;
public class Search extends AsyncTask<String, Void, Boolean> { public class Search extends AsyncTask<String, Void, String> {
public static final String TWEETS = "tweets";
public static final String USERS = "users";
private TimelineAdapter tlAdp; private TimelineAdapter tlAdp;
private SwipeRefreshLayout refresh; private UserAdapter uAdp;
private SwipeRefreshLayout tweetReload, userReload;
private ListView tweetSearch, userSearch;
private Context context; private Context context;
private Twitter twitter; private Twitter twitter;
private ListView tl;
private int load; private int load;
public Search(Context context) { public Search(Context context) {
@ -32,34 +38,46 @@ public class Search extends AsyncTask<String, Void, Boolean> {
@Override @Override
protected void onPreExecute() { protected void onPreExecute() {
tl = (ListView) ((TwitterSearch)context).findViewById(R.id.search_result); tweetSearch = (ListView) ((TwitterSearch)context).findViewById(R.id.tweet_result);
refresh = (SwipeRefreshLayout) ((TwitterSearch)context).findViewById(R.id.search_refresh); 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(); twitter = TwitterResource.getInstance(context).getTwitter();
} }
@Override @Override
protected Boolean doInBackground(String... search) { protected String doInBackground(String... search) {
String mode = search[0];
String get = search[1]; String get = search[1];
Query q = new Query();
q.setQuery(get+" +exclude:retweets");
q.setCount(load);
try { try {
switch(search[0]) { switch(mode) {
case("tweet"): case(TWEETS):
Query q = new Query();
q.setQuery(get+" +exclude:retweets");
q.setCount(load);
QueryResult result = twitter.search(q); QueryResult result = twitter.search(q);
TweetDatabase searchdb = new TweetDatabase(result.getTweets(),context); TweetDatabase searchdb = new TweetDatabase(result.getTweets(),context);
tlAdp = new TimelineAdapter(context, searchdb); tlAdp = new TimelineAdapter(context, searchdb);
break; return TWEETS;
case("user"): case(USERS):
break; UserDatabase userdb = new UserDatabase(context, twitter.searchUsers(get,-1));
uAdp = new UserAdapter(context, userdb);
return USERS;
} }
} catch(Exception err){err.printStackTrace();} } catch(Exception err){err.printStackTrace();}
return false; return "";
} }
@Override @Override
protected void onPostExecute(Boolean result) { protected void onPostExecute(String mode) {
tl.setAdapter(tlAdp); switch(mode) {
refresh.setRefreshing(false); case(TWEETS):
tweetSearch.setAdapter(tlAdp);
tweetReload.setRefreshing(false);
break;
case(USERS):
userSearch.setAdapter(uAdp);
userReload.setRefreshing(false);
}
} }
} }

View File

@ -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;
}
}

View File

@ -26,12 +26,12 @@ public class TweetDatabase {
private List<Long> userId,tweetId,timeMillis; private List<Long> userId,tweetId,timeMillis;
private List<Integer> noRT,noFav,noAns; private List<Integer> noRT,noFav,noAns;
private List<Status> stats; private List<Status> stats;
private SharedPreferences settings;
private boolean toggleImg; private boolean toggleImg;
private int size = 0; private int size = 0;
private int mode = 0; private int mode = 0;
private int limit; private int limit;
private long CurrentId = 0; private long CurrentId = 0;
private SharedPreferences settings;
/** /**
* Store & Read Data * Store & Read Data

View File

@ -1,6 +1,7 @@
package org.nuclearfog.twidda.viewadapter; package org.nuclearfog.twidda.viewadapter;
import android.content.Context; import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; 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.favorite_number)).setText(""+mTweets.getFavorite(position));
((TextView) v.findViewById(R.id.time)).setText(mTweets.getDate(position)); ((TextView) v.findViewById(R.id.time)).setText(mTweets.getDate(position));
ImageView imgView = v.findViewById(R.id.tweetPb); ImageView imgView = v.findViewById(R.id.tweetPb);
v.setBackgroundColor(Color.BLUE);
v.setOnClickListener(new View.OnClickListener() { v.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {

View File

@ -10,30 +10,36 @@ import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.ListView; import android.widget.ListView;
import android.widget.TabHost;
import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.Search; import org.nuclearfog.twidda.backend.Search;
import org.nuclearfog.twidda.database.TweetDatabase; import org.nuclearfog.twidda.database.TweetDatabase;
import org.nuclearfog.twidda.database.UserDatabase;
import org.nuclearfog.twidda.viewadapter.TimelineAdapter; import org.nuclearfog.twidda.viewadapter.TimelineAdapter;
import org.nuclearfog.twidda.viewadapter.UserAdapter;
public class TwitterSearch extends AppCompatActivity { public class TwitterSearch extends AppCompatActivity {
private String search; private String search;
private ListView searchTL; private ListView tweetSearch, userSearch;
private SwipeRefreshLayout search_refresh; private SwipeRefreshLayout tweetReload,userReload;
@Override @Override
protected void onCreate(Bundle bundle){ protected void onCreate(Bundle bundle) {
super.onCreate(bundle); super.onCreate(bundle);
setContentView(R.layout.search); setContentView(R.layout.search);
Toolbar tool = (Toolbar) findViewById(R.id.search_toolbar); Toolbar tool = (Toolbar) findViewById(R.id.search_toolbar);
searchTL = (ListView) findViewById(R.id.search_result); tweetSearch = (ListView) findViewById(R.id.tweet_result);
search_refresh = (SwipeRefreshLayout) findViewById(R.id.search_refresh); userSearch = (ListView) findViewById(R.id.user_result);
tweetReload = (SwipeRefreshLayout) findViewById(R.id.searchtweets);
userReload = (SwipeRefreshLayout) findViewById(R.id.searchusers);
setSupportActionBar(tool); setSupportActionBar(tool);
getSupportActionBar().setDisplayShowTitleEnabled(false); getSupportActionBar().setDisplayShowTitleEnabled(false);
search = getIntent().getExtras().getString("search"); search = getIntent().getExtras().getString("search");
getContent(); setTabContent();
setListener(); setListener();
getContent(Search.TWEETS);
} }
@Override @Override
@ -56,11 +62,11 @@ public class TwitterSearch extends AppCompatActivity {
} }
private void setListener() { private void setListener() {
searchTL.setOnItemClickListener(new AdapterView.OnItemClickListener() { tweetSearch.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if(!search_refresh.isRefreshing()) { if(!tweetReload.isRefreshing()) {
TimelineAdapter tlAdp = (TimelineAdapter) searchTL.getAdapter(); TimelineAdapter tlAdp = (TimelineAdapter) tweetSearch.getAdapter();
TweetDatabase twDB = tlAdp.getAdapter(); TweetDatabase twDB = tlAdp.getAdapter();
long tweetID = twDB.getTweetId(position); long tweetID = twDB.getTweetId(position);
long userID = twDB.getUserID(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 @Override
public void onRefresh() { public void onRefresh() {
getContent(); getContent(Search.TWEETS);
}
});
userReload.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
getContent(Search.USERS);
} }
}); });
} }
private void getContent() { private void setTabContent(){
Search s = new Search(this); TabHost tabhost = (TabHost)findViewById(R.id.search_tab);
s.execute("tweet",search); 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);
} }
} }

View File

@ -0,0 +1,4 @@
<vector android:height="24dp" android:viewportHeight="20.0"
android:viewportWidth="20.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FFFFFF" android:pathData="M14,5h-4v2h4V5zM14,8h-4v1h4V8zM9,5H6v4h3V5zM9,11h5v-1H9V11zM12,13h2v-1h-2V13zM14,14H6v1h8V14zM11,12H6v1h5V12zM8,10H6v1h2V10zM17,1H3C2.447,1 2,1.447 2,2v16c0,0.552 0.447,1 1,1h14c0.553,0 1,-0.448 1,-1V2C18,1.448 17.553,1 17,1zM16,17H4V3h12V17z"/>
</vector>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/result" />
</selector>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/user" />
</selector>

View File

@ -0,0 +1,4 @@
<vector android:height="24dp" android:viewportHeight="20.0"
android:viewportWidth="20.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FFFFFF" android:pathData="M7.725,2.146c-1.016,0.756 -1.289,1.953 -1.239,2.59C6.55,5.515 6.708,6.529 6.708,6.529s-0.313,0.17 -0.313,0.854C6.504,9.1 7.078,8.359 7.196,9.112c0.284,1.814 0.933,1.491 0.933,2.481c0,1.649 -0.68,2.42 -2.803,3.334C3.196,15.845 1,17 1,19v1h18v-1c0,-2 -2.197,-3.155 -4.328,-4.072c-2.123,-0.914 -2.801,-1.684 -2.801,-3.334c0,-0.99 0.647,-0.667 0.932,-2.481c0.119,-0.753 0.692,-0.012 0.803,-1.729c0,-0.684 -0.314,-0.854 -0.314,-0.854s0.158,-1.014 0.221,-1.793c0.065,-0.817 -0.398,-2.561 -2.3,-3.096c-0.333,-0.34 -0.558,-0.881 0.466,-1.424C9.439,0.112 8.918,1.284 7.725,2.146z"/>
</vector>

View File

@ -11,19 +11,58 @@
android:minHeight="?attr/actionBarSize" android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme" /> android:theme="?attr/actionBarTheme" />
<TabHost
<android.support.v4.widget.SwipeRefreshLayout android:id="@+id/search_tab"
android:id="@+id/search_refresh"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<ListView <LinearLayout
android:id="@+id/search_result"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent"
android:orientation="vertical">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/searchtweets"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/tweet_result"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</android.support.v4.widget.SwipeRefreshLayout> </android.support.v4.widget.SwipeRefreshLayout>
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/searchusers"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/user_result"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</android.support.v4.widget.SwipeRefreshLayout>
</FrameLayout>
</LinearLayout>
</TabHost>
</LinearLayout> </LinearLayout>

View File

@ -9,7 +9,8 @@
android:id="@+id/trendname" android:id="@+id/trendname"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_margin="5dp" /> android:layout_margin="5dp"
android:textSize="18dp" />
</LinearLayout> </LinearLayout>