This commit is contained in:
NudeDude 2018-01-06 13:09:49 +01:00
parent 360c64640a
commit 22c93e1521
24 changed files with 307 additions and 291 deletions

View File

@ -31,7 +31,8 @@ import org.nuclearfog.twidda.window.TweetDetail;
import org.nuclearfog.twidda.window.TweetPopup;
import org.nuclearfog.twidda.window.TwitterSearch;
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener, SwipeRefreshLayout.OnRefreshListener
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener,
SwipeRefreshLayout.OnRefreshListener, TabHost.OnTabChangeListener
{
private SwipeRefreshLayout timelineReload,trendReload,mentionReload;
private ListView timelineList, trendList,mentionList;
@ -42,7 +43,7 @@ public class MainActivity extends AppCompatActivity implements AdapterView.OnIte
private Context con;
private Toolbar toolbar;
private boolean login;
private String currentTab;
private String currentTab = "timeline";
/**
* Create Activity
@ -203,6 +204,37 @@ public class MainActivity extends AppCompatActivity implements AdapterView.OnIte
}
}
@Override
public void onTabChanged(String tabId) {
mentionReload.setRefreshing(false);
trendReload.setRefreshing(false);
timelineReload.setRefreshing(false);
searchQuery.onActionViewCollapsed();
currentTab = tabId;
switch(tabId) {
case "timeline":
searchQuery.onActionViewCollapsed();
profile.setVisible(true);
search.setVisible(false);
tweet.setVisible(true);
setting.setVisible(false);
break;
case "trends":
profile.setVisible(false);
search.setVisible(true);
tweet.setVisible(false);
setting.setVisible(true);
break;
case "mention":
searchQuery.onActionViewCollapsed();
profile.setVisible(false);
search.setVisible(false);
tweet.setVisible(false);
setting.setVisible(true);
break;
}
}
/**
* Load Preferences
*/
@ -235,6 +267,7 @@ public class MainActivity extends AppCompatActivity implements AdapterView.OnIte
timelineReload = (SwipeRefreshLayout) findViewById(R.id.timeline);
trendReload = (SwipeRefreshLayout) findViewById(R.id.trends);
mentionReload = (SwipeRefreshLayout) findViewById(R.id.mention);
TabHost tabhost = (TabHost)findViewById(R.id.main_tabhost);
toolbar = (Toolbar) findViewById(R.id.profile_toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
@ -246,16 +279,6 @@ public class MainActivity extends AppCompatActivity implements AdapterView.OnIte
trendReload.setOnRefreshListener(this);
mentionReload.setOnRefreshListener(this);
setTabListener();
setTabContent();
}
/**
* Set Tab Listener
* @see #setTabContent()
*/
private void setTabListener() {
TabHost tabhost = (TabHost)findViewById(R.id.main_tabhost);
tabhost.setup();
// Tab #1
TabSpec tab1 = tabhost.newTabSpec("timeline");
@ -272,23 +295,13 @@ public class MainActivity extends AppCompatActivity implements AdapterView.OnIte
tab3.setContent(R.id.mention);
tab3.setIndicator("",getResources().getDrawable(R.drawable.mention_icon));
tabhost.addTab(tab3);
currentTab = "timeline";
tabhost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
mentionReload.setRefreshing(false);
trendReload.setRefreshing(false);
timelineReload.setRefreshing(false);
searchQuery.onActionViewCollapsed();
setVisibility(tabId);
currentTab = tabId;
}
});
tabhost.setOnTabChangedListener(this);
setTabContent();
}
/**
* Set DB Content
* separate THREAD
*/
private void setTabContent() {
TweetDatabase tweetDeck = new TweetDatabase(con,TweetDatabase.HOME_TL, 0L);
@ -298,33 +311,4 @@ public class MainActivity extends AppCompatActivity implements AdapterView.OnIte
timelineList.setAdapter(tlAdapt);
trendList.setAdapter(trendAdp);
}
/**
* Toolbar Items
* @param currentTab 3 Tabs "timeline" , "trends" , "mention"
*/
private void setVisibility(String currentTab) {
switch(currentTab) {
case "timeline":
searchQuery.onActionViewCollapsed();
profile.setVisible(true);
search.setVisible(false);
tweet.setVisible(true);
setting.setVisible(false);
break;
case "trends":
profile.setVisible(false);
search.setVisible(true);
tweet.setVisible(false);
setting.setVisible(true);
break;
case "mention":
searchQuery.onActionViewCollapsed();
profile.setVisible(false);
search.setVisible(false);
tweet.setVisible(false);
setting.setVisible(true);
break;
}
}
}

View File

@ -20,7 +20,6 @@ public class ImageDownloader extends AsyncTask<String, Void, Bitmap>
@Override
protected Bitmap doInBackground(String... links) {
Bitmap picture = null;
try {
InputStream iStream = new URL(links[0]).openStream();
picture = BitmapFactory.decodeStream(iStream);

View File

@ -91,6 +91,8 @@ public class ProfileInfo extends AsyncTask<Long,Void,Void>
if(imgEnabled) {
profileImg.execute(imageLink);
bannerImg.execute(bannerLink);
} else{
profile.setImageResource(R.mipmap.pb);
}
}
}

View File

@ -10,9 +10,11 @@ public class ColorPreferences implements OnColorSelectedListener {
public static final int BACKGROUND = 0x0;
public static final int FONT_COLOR = 0x1;
public static final int TWEET_COLOR = 0x3;
private int background = 0;
private int font = 0;
private int tweet = 0;
private int mode;
private static ColorPreferences ourInstance;
@ -23,8 +25,9 @@ public class ColorPreferences implements OnColorSelectedListener {
private ColorPreferences(Context context) {
ColorPreferences.context = context;
settings = context.getSharedPreferences("settings", 0);
background = settings.getInt("background_color", 0x061a22);//-14142465
font = settings.getInt("font_color", 0xffffff);//-851982
background = settings.getInt("background_color", 0xff061a22);
font = settings.getInt("font_color", 0xffffffff);
tweet = settings.getInt("tweet_color", 0xff19aae8);
}
@Override
@ -36,6 +39,9 @@ public class ColorPreferences implements OnColorSelectedListener {
case FONT_COLOR:
font = i;
break;
case TWEET_COLOR:
tweet = i;
break;
}
}
@ -43,9 +49,11 @@ public class ColorPreferences implements OnColorSelectedListener {
int preColor = 0x0;
mode = MODE;
if(MODE == BACKGROUND)
preColor = getBackgroundColor();
preColor = background;
else if(MODE == FONT_COLOR)
preColor = getFontColor();
preColor = font;
else if(MODE == TWEET_COLOR)
preColor = tweet;
ColorPickerDialogBuilder.with(context)
.showAlphaSlider(false).initialColor(preColor)
.wheelType(ColorPickerView.WHEEL_TYPE.CIRCLE).density(20)
@ -56,11 +64,13 @@ public class ColorPreferences implements OnColorSelectedListener {
SharedPreferences.Editor e = settings.edit();
e.putInt("background_color", background);
e.putInt("font_color", font);
e.putInt("tweet_color", tweet);
e.apply();
}
public int getBackgroundColor(){return background;}
public int getFontColor(){return font;}
public int getTweetColor(){return tweet;}
public static ColorPreferences getInstance(Context c) {
if(ourInstance==null)

View File

@ -192,7 +192,7 @@ public class TweetDatabase {
public long getTweetId(int pos){return tweetId.get(pos);}
public long getTime(int pos){return timeMillis.get(pos);}
public String getUsername(int pos){return user.get(pos);}
public String getScreenname(int pos){return scrname.get(pos);}
public String getScreenname(int pos){return '@'+scrname.get(pos);}
public String getTweet(int pos){return tweet.get(pos);}
public String getDate(int pos){return timeToString(getTime(pos));}
public String getPbImg (int pos){return pbLink.get(pos);}

View File

@ -19,7 +19,7 @@ public class UserDatabase {
public long getUserID(int pos){ return user.get(pos).getId();}
public String getUsername(int pos){ return user.get(pos).getName();}
public String getScreenname(int pos){ return user.get(pos).getScreenName();}
public String getScreenname(int pos){ return '@' + user.get(pos).getScreenName();}
public String getProfileURL(int pos){ return user.get(pos).getProfileBackgroundImageURL();}
public int getSize(){ return user.size(); }
public boolean loadImages(){ return toggleImg; }

View File

@ -1,6 +1,7 @@
package org.nuclearfog.twidda.viewadapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -14,7 +15,7 @@ import org.nuclearfog.twidda.backend.ImageDownloader;
import org.nuclearfog.twidda.database.ColorPreferences;
import org.nuclearfog.twidda.database.TweetDatabase;
public class TimelineAdapter extends ArrayAdapter {
public class TimelineAdapter extends ArrayAdapter implements View.OnClickListener {
private TweetDatabase mTweets;
private ColorPreferences mcolor;
private Context context;
@ -36,8 +37,9 @@ public class TimelineAdapter extends ArrayAdapter {
return mTweets.getSize();
}
@NonNull
@Override
public View getView(int position, View v, ViewGroup parent) {
public View getView(int position, View v, @NonNull ViewGroup parent) {
p = parent;
if(v == null) {
LayoutInflater inf=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
@ -45,25 +47,27 @@ public class TimelineAdapter extends ArrayAdapter {
v.setBackgroundColor(mcolor.getBackgroundColor());
}
((TextView) v.findViewById(R.id.username)).setText(mTweets.getUsername(position));
((TextView) v.findViewById(R.id.screenname)).setText(" "+mTweets.getScreenname(position));
((TextView) v.findViewById(R.id.screenname)).setText(mTweets.getScreenname(position));
((TextView) v.findViewById(R.id.tweettext)).setText(mTweets.getTweet(position));
((TextView) v.findViewById(R.id.answer_number)).setText(""+mTweets.getAnswer(position));
((TextView) v.findViewById(R.id.retweet_number)).setText(""+mTweets.getRetweet(position));
((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.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ListView parent = ((ListView)p);
int position = parent.getPositionForView(v);
parent.performItemClick(v,position,0);
}
});
v.setOnClickListener(this);
if(mTweets.loadImages()) {
ImageDownloader imgDl = new ImageDownloader(imgView);
imgDl.execute(mTweets.getPbImg(position));
} else {
imgView.setImageResource(R.mipmap.pb);
}
return v;
}
@Override
public void onClick(View v) {
ListView parent = ((ListView)p);
int position = parent.getPositionForView(v);
parent.performItemClick(v,position,0);
}
}

View File

@ -5,6 +5,7 @@ import org.nuclearfog.twidda.database.ColorPreferences;
import org.nuclearfog.twidda.database.TrendDatabase;
import android.content.Context;
import android.support.annotation.NonNull;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -17,13 +18,13 @@ public class TrendAdapter extends ArrayAdapter {
private ColorPreferences mcolor;
public TrendAdapter(Context context, TrendDatabase trend) {
super(context, R.layout.trend);//test
super(context, R.layout.trend);
this.trend = trend;
this.context = context;
mcolor = ColorPreferences.getInstance(context);
}
public TrendDatabase getDatabase(){
public TrendDatabase getDatabase() {
return trend;
}
@ -32,8 +33,9 @@ public class TrendAdapter extends ArrayAdapter {
return trend.getSize();
}
@NonNull
@Override
public View getView(int position, View v, ViewGroup parent) {
public View getView(int position, View v, @NonNull ViewGroup parent) {
if(v == null) {
LayoutInflater inf=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inf.inflate(R.layout.trend, parent,false);
@ -41,7 +43,6 @@ public class TrendAdapter extends ArrayAdapter {
}
String trendName = trend.getTrendname(position);
((TextView) v.findViewById(R.id.trendname)).setText(trendName);
return v;
}
}

View File

@ -1,6 +1,7 @@
package org.nuclearfog.twidda.viewadapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -14,7 +15,7 @@ import org.nuclearfog.twidda.database.ColorPreferences;
import org.nuclearfog.twidda.database.UserDatabase;
import org.nuclearfog.twidda.R;
public class UserAdapter extends ArrayAdapter {
public class UserAdapter extends ArrayAdapter implements View.OnClickListener {
private Context context;
private UserDatabase userDatabase;
@ -37,8 +38,9 @@ public class UserAdapter extends ArrayAdapter {
return userDatabase.getSize();
}
@NonNull
@Override
public View getView(int position, View v, ViewGroup parent) {
public View getView(int position, View v, @NonNull ViewGroup parent) {
p = parent;
if(v == null) {
LayoutInflater inf=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
@ -46,25 +48,27 @@ public class UserAdapter extends ArrayAdapter {
}
((TextView)v.findViewById(R.id.username_detail)).setText(userDatabase.getUsername(position));
((TextView)v.findViewById(R.id.screenname_detail)).setText('@'+userDatabase.getScreenname(position));
((TextView)v.findViewById(R.id.screenname_detail)).setText(userDatabase.getScreenname(position));
ImageView imgView = v.findViewById(R.id.user_profileimg);
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ListView parent = ((ListView)p);
int position = parent.getPositionForView(v);
parent.performItemClick(v,position,0);
}
});
v.setOnClickListener(this);
if(userDatabase.loadImages()) {
ImageDownloader imgDl = new ImageDownloader(imgView);
imgDl.execute(userDatabase.getProfileURL(position));
} else {
imgView.setImageResource(R.mipmap.pb);
}
v.setBackgroundColor(mColor.getBackgroundColor());
return v;
}
@Override
public void onClick(View v) {
ListView parent = ((ListView)p);
int position = parent.getPositionForView(v);
parent.performItemClick(v,position,0);
}
}

View File

@ -13,24 +13,16 @@ import android.widget.EditText;
import android.widget.NumberPicker;
import android.widget.Switch;
import com.flask.colorpicker.ColorPickerView;
import com.flask.colorpicker.OnColorSelectedListener;
import com.flask.colorpicker.builder.ColorPickerDialogBuilder;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.database.ColorPreferences;
public class AppSettings extends AppCompatActivity implements View.OnClickListener{
public class AppSettings extends AppCompatActivity implements View.OnClickListener,
CompoundButton.OnCheckedChangeListener {
private Button delButon,save_woeid, colorButton1, colorButton2;
private int backgroundColor, fontColor;
private Switch toggleImg;
private EditText woeId;
private SharedPreferences settings;
private NumberPicker load_factor;
private ColorPreferences mColor;
private Editor edit;
private boolean modified = false;
private boolean imgldr;
@Override
@ -39,45 +31,37 @@ public class AppSettings extends AppCompatActivity implements View.OnClickListen
setContentView(R.layout.settings);
mColor = ColorPreferences.getInstance(this);
settings = getApplicationContext().getSharedPreferences("settings", 0);
int location = settings.getInt("woeid",23424829);
edit = settings.edit();
String location = Integer.toString(settings.getInt("woeid",23424829));
Button delButon = (Button) findViewById(R.id.delete_db);
Switch toggleImg = (Switch) findViewById(R.id.toggleImg);
Button colorButton1 = (Button) findViewById(R.id.color_background);
Button colorButton2 = (Button) findViewById(R.id.color_font);
Button colorButton3 = (Button) findViewById(R.id.color_tweet);
Button save_woeid = (Button) findViewById(R.id.save_woeid);
load_factor = (NumberPicker)findViewById(R.id.tweet_load);
delButon = (Button) findViewById(R.id.delete_db);
toggleImg = (Switch) findViewById(R.id.toggleImg);
woeId = (EditText) findViewById(R.id.woeid);
colorButton1 = (Button) findViewById(R.id.color_background);
colorButton2 = (Button) findViewById(R.id.color_font);
save_woeid = (Button) findViewById(R.id.save_woeid);
delButon.setOnClickListener(this);
colorButton1.setOnClickListener(this);
colorButton2.setOnClickListener(this);
colorButton3.setOnClickListener(this);
save_woeid.setOnClickListener(this);
toggleImg.setOnCheckedChangeListener(this);
load_factor.setMinValue(5);
load_factor.setMaxValue(100);
toggleImg.setChecked(settings.getBoolean("image_load",false));
load_factor.setValue(settings.getInt("preload",10));
woeId.setText(""+location);
loadSettings();
setListener();
woeId.setText(location);
}
/**
* Create Actionbar
*/
@Override
public boolean onCreateOptionsMenu( Menu m ) {
getMenuInflater().inflate(R.menu.setting, m);
return true;
}
/**
* Actionbar selection
*/
@Override
public boolean onOptionsItemSelected( MenuItem item ) {
switch(item.getItemId()) {
@ -90,6 +74,7 @@ public class AppSettings extends AppCompatActivity implements View.OnClickListen
@Override
protected void onDestroy() {
Editor edit = settings.edit();
edit.putInt("woeid", Integer.valueOf(woeId.getText().toString()));
edit.putInt("preload", load_factor.getValue());
edit.putBoolean("image_load", imgldr);
@ -110,22 +95,14 @@ public class AppSettings extends AppCompatActivity implements View.OnClickListen
case R.id.color_font:
mColor.setColor(ColorPreferences.FONT_COLOR);
break;
case R.id.color_tweet:
mColor.setColor(ColorPreferences.TWEET_COLOR);
break;
}
}
private void setListener() {
toggleImg.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton b, boolean checked) {
imgldr = checked;
modified = true;
}
});
@Override
public void onCheckedChanged(CompoundButton b, boolean checked) {
imgldr = checked;
}
private void loadSettings() {
backgroundColor = settings.getInt("background",10);
fontColor = settings.getInt("fontColor",10);
}
}

View File

@ -1,6 +1,5 @@
package org.nuclearfog.twidda.window;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.widget.SwipeRefreshLayout;
@ -16,12 +15,12 @@ import org.nuclearfog.twidda.database.UserDatabase;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.viewadapter.UserAdapter;
public class Follower extends AppCompatActivity {
public class Follower extends AppCompatActivity implements AdapterView.OnItemClickListener,
SwipeRefreshLayout.OnRefreshListener {
private long userID;
private long mode;
private ListView follow;
private Context context;
private SwipeRefreshLayout reload;
private Toolbar toolbar;
@ -31,49 +30,42 @@ public class Follower extends AppCompatActivity {
setContentView(R.layout.follow);
userID = getIntent().getExtras().getLong("userID");
mode = getIntent().getExtras().getLong("mode");
toolbar = (Toolbar) findViewById(R.id.follow_toolbar);
setSupportActionBar(toolbar);
follow = (ListView) findViewById(R.id.followList);
reload = (SwipeRefreshLayout) findViewById(R.id.follow_swipe);
context = getApplicationContext();
toolbar = (Toolbar) findViewById(R.id.follow_toolbar);
setSupportActionBar(toolbar);
setActionbarTitle(mode);
setListener();
follow.setOnItemClickListener(this);
reload.setOnRefreshListener(this);
}
/**
* Create Actionbar
*/
@Override
public boolean onCreateOptionsMenu( Menu m ) {
toolbar.inflateMenu(R.menu.setting); //TODO
return true;
}
private void setListener() {
reload.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
Following follow = new Following(Follower.this);
follow.execute(mode, userID);
}
});
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if(!reload.isRefreshing()) {
UserAdapter uAdp = (UserAdapter) follow.getAdapter();
UserDatabase uDB = uAdp.getAdapter();
long userID = uDB.getUserID(position);
Intent intent = new Intent(getApplicationContext(), UserProfile.class);
Bundle bundle = new Bundle();
bundle.putLong("userID",userID);
bundle.putBoolean("home", false);//todo
intent.putExtras(bundle);
startActivity(intent);
}
}
follow.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if(!reload.isRefreshing()) {
UserAdapter uAdp = (UserAdapter) follow.getAdapter();
UserDatabase uDB = uAdp.getAdapter();
long userID = uDB.getUserID(position);
Intent intent = new Intent(context, UserProfile.class);
Bundle bundle = new Bundle();
bundle.putLong("userID",userID);
bundle.putBoolean("home", false);//todo
intent.putExtras(bundle);
startActivity(intent);
}
}
});
@Override
public void onRefresh() {
Following follow = new Following(Follower.this);
follow.execute(mode, userID);
}
private void setActionbarTitle(long mode) {

View File

@ -7,9 +7,11 @@ import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import org.nuclearfog.twidda.backend.ShowStatus;
import org.nuclearfog.twidda.database.ColorPreferences;
import org.nuclearfog.twidda.database.TweetDatabase;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.viewadapter.TimelineAdapter;
@ -21,7 +23,7 @@ public class TweetDetail extends AppCompatActivity implements View.OnClickListen
private long userID;
@Override
protected void onCreate(Bundle b){
protected void onCreate(Bundle b) {
super.onCreate(b);
setContentView(R.layout.tweet_detail);
tweetID = getIntent().getExtras().getLong("tweetID");
@ -43,14 +45,20 @@ public class TweetDetail extends AppCompatActivity implements View.OnClickListen
@Override
protected void onDestroy() {
// TODO save tweet
super.onDestroy();
}
@Override
public void onClick(View v) {
Intent intent;
Bundle bundle = new Bundle();
switch(v.getId()) {
case R.id.answer_button:
//todo
intent = new Intent(getApplicationContext(), TweetPopup.class);
bundle.putLong("TweetID", tweetID);
intent.putExtras(bundle);
startActivity(intent);
break;
case R.id.rt_button:
//todo
@ -59,12 +67,11 @@ public class TweetDetail extends AppCompatActivity implements View.OnClickListen
//todo
break;
case R.id.profileimage_detail:
Intent profile = new Intent(getApplicationContext(), UserProfile.class);
Bundle bundle = new Bundle();
intent = new Intent(getApplicationContext(), UserProfile.class);
bundle.putLong("userID",userID);
bundle.putBoolean("home", false);//todo
profile.putExtras(bundle);
startActivity(profile);
intent.putExtras(bundle);
startActivity(intent);
break;
}
}
@ -84,6 +91,9 @@ public class TweetDetail extends AppCompatActivity implements View.OnClickListen
}
private void setContent() {
ColorPreferences mColor = ColorPreferences.getInstance(getApplicationContext());
LinearLayout background = (LinearLayout) findViewById(R.id.tweet_detail);
background.setBackgroundColor(mColor.getBackgroundColor());//TODO
ShowStatus set = new ShowStatus(this);
set.execute(tweetID);
}

View File

@ -1,5 +1,6 @@
package org.nuclearfog.twidda.window;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
@ -9,8 +10,9 @@ import android.widget.LinearLayout;
import org.nuclearfog.twidda.backend.SendStatus;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.database.ColorPreferences;
public class TweetPopup extends AppCompatActivity {
public class TweetPopup extends AppCompatActivity implements View.OnClickListener {
private EditText tweetfield;
private long inReplyId;
@ -19,28 +21,39 @@ public class TweetPopup extends AppCompatActivity {
protected void onCreate(Bundle SavedInstance) {
super.onCreate(SavedInstance);
setContentView(R.layout.tweetwindow);
inReplyId = getIntent().getExtras().getLong("TweetID");
getWindow().setLayout(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
Button tweetButton = (Button) findViewById(R.id.sendTweet);
Button closeButton = (Button) findViewById(R.id.close);
tweetfield = (EditText) findViewById(R.id.tweet_input);
Button closeButton = (Button) findViewById(R.id.close);
closeButton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
final int size = LinearLayout.LayoutParams.WRAP_CONTENT;
getWindow().setLayout(size, size);
Button tweetButton = (Button) findViewById(R.id.sendTweet);
tweetButton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
closeButton.setOnClickListener(this);
tweetButton.setOnClickListener(this);
LinearLayout root = (LinearLayout) findViewById(R.id.tweet_popup);
ColorPreferences mColor = ColorPreferences.getInstance(this);
root.setBackgroundColor(mColor.getTweetColor());
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.sendTweet:
send();
}
});
break;
case R.id.close:
finish();
break;
}
finish();
}
private void send() {
@ -52,9 +65,4 @@ public class TweetPopup extends AppCompatActivity {
sendTweet.execute(tweet);
finish();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}

View File

@ -19,26 +19,46 @@ import org.nuclearfog.twidda.database.UserDatabase;
import org.nuclearfog.twidda.viewadapter.TimelineAdapter;
import org.nuclearfog.twidda.viewadapter.UserAdapter;
public class TwitterSearch extends AppCompatActivity {
public class TwitterSearch extends AppCompatActivity implements AdapterView.OnItemClickListener,
SwipeRefreshLayout.OnRefreshListener, TabHost.OnTabChangeListener {
private String search;
private ListView tweetSearch, userSearch;
private SwipeRefreshLayout tweetReload,userReload;
private String currentTab = "search_result";
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.search);
search = getIntent().getExtras().getString("search");
Toolbar tool = (Toolbar) findViewById(R.id.search_toolbar);
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);
TabHost tabhost = (TabHost)findViewById(R.id.search_tab);
tabhost.setup();
setSupportActionBar(tool);
getSupportActionBar().setDisplayShowTitleEnabled(false);
search = getIntent().getExtras().getString("search");
setTabContent();
setListener();
TabHost.TabSpec tab1 = tabhost.newTabSpec("search_result");
tab1.setContent(R.id.searchtweets);
tab1.setIndicator("",getResources().getDrawable(R.drawable.search_result));
tabhost.addTab(tab1);
TabHost.TabSpec tab2 = tabhost.newTabSpec("user_result");
tab2.setContent(R.id.searchusers);
tab2.setIndicator("",getResources().getDrawable(R.drawable.user_result));
tabhost.addTab(tab2);
tabhost.setOnTabChangedListener(this);
tweetSearch.setOnItemClickListener(this);
userSearch.setOnItemClickListener(this);
tweetReload.setOnRefreshListener(this);
userReload.setOnRefreshListener(this);
getContent(Search.TWEETS);
}
@ -61,10 +81,10 @@ public class TwitterSearch extends AppCompatActivity {
return true;
}
private void setListener() {
tweetSearch.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
switch(parent.getId()) {
case R.id.tweet_result:
if(!tweetReload.isRefreshing()) {
TimelineAdapter tlAdp = (TimelineAdapter) tweetSearch.getAdapter();
TweetDatabase twDB = tlAdp.getAdapter();
@ -77,11 +97,8 @@ public class TwitterSearch extends AppCompatActivity {
intent.putExtras(bundle);
startActivity(intent);
}
}
});
userSearch.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
break;
case R.id.user_result:
if(!userReload.isRefreshing()) {
UserAdapter uAdp = (UserAdapter) userSearch.getAdapter();
UserDatabase uDb = uAdp.getAdapter();
@ -92,48 +109,31 @@ public class TwitterSearch extends AppCompatActivity {
profile.putExtras(bundle);
startActivity(profile);
}
}
});
tweetReload.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
break;
}
}
@Override
public void onRefresh() {
switch(currentTab){
case "search_result":
getContent(Search.TWEETS);
}
});
userReload.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
break;
case "user_result":
getContent(Search.USERS);
}
});
break;
}
}
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);
}
});
@Override
public void onTabChanged(String tabId) {
tweetReload.setRefreshing(false);
userReload.setRefreshing(false);
currentTab = tabId;
}
private void getContent(final String MODE){
private void getContent(final String MODE) {
Search s = new Search(TwitterSearch.this);
s.execute(MODE,search);
}
}

View File

@ -19,16 +19,18 @@ import org.nuclearfog.twidda.backend.ProfileTweets;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.viewadapter.TimelineAdapter;
public class UserProfile extends AppCompatActivity implements View.OnClickListener, AdapterView.OnItemClickListener {
public class UserProfile extends AppCompatActivity implements View.OnClickListener,
AdapterView.OnItemClickListener, SwipeRefreshLayout.OnRefreshListener, TabHost.OnTabChangeListener {
private SwipeRefreshLayout homeReload, favoriteReload;
private ListView homeTweets, homeFavorits;
private TextView txtFollowing, txtFollower;
private long userId, tweetId;
private boolean home;
private String currentTab = "tweets";
@Override
protected void onCreate(Bundle savedInstance){
protected void onCreate(Bundle savedInstance) {
super.onCreate(savedInstance);
setContentView(R.layout.profile);
Toolbar tool = (Toolbar) findViewById(R.id.profile_toolbar);
@ -42,15 +44,30 @@ public class UserProfile extends AppCompatActivity implements View.OnClickListen
txtFollower = (TextView)findViewById(R.id.follower);
homeReload = (SwipeRefreshLayout) findViewById(R.id.hometweets);
favoriteReload = (SwipeRefreshLayout) findViewById(R.id.homefavorits);
TabHost mTab = (TabHost)findViewById(R.id.profile_tab);
txtFollowing.setOnClickListener(this);
txtFollower.setOnClickListener(this);
homeTweets.setOnItemClickListener(this);
homeFavorits.setOnItemClickListener(this);
homeReload.setOnRefreshListener(this);
favoriteReload.setOnRefreshListener(this);
mTab.setup();
// Tab #1
TabHost.TabSpec tab1 = mTab.newTabSpec("tweets");
tab1.setContent(R.id.hometweets);
tab1.setIndicator("",getResources().getDrawable(R.drawable.timeline_icon));
mTab.addTab(tab1);
// Tab #2
TabHost.TabSpec tab2 = mTab.newTabSpec("favorites");
tab2.setContent(R.id.homefavorits);
tab2.setIndicator("",getResources().getDrawable(R.drawable.favorite_icon));
mTab.addTab(tab2);
mTab.setOnTabChangedListener(this);
initElements();
initTabs();
initSwipe();
getContent();
}
@ -131,55 +148,29 @@ public class UserProfile extends AppCompatActivity implements View.OnClickListen
}
}
/**
* Init Tab Listener
*/
private void initTabs(){
TabHost mTab = (TabHost)findViewById(R.id.profile_tab);
mTab.setup();
// Tab #1
TabHost.TabSpec tab1 = mTab.newTabSpec("tweets");
tab1.setContent(R.id.hometweets);
tab1.setIndicator("",getResources().getDrawable(R.drawable.timeline_icon));
mTab.addTab(tab1);
// Tab #2
TabHost.TabSpec tab2 = mTab.newTabSpec("favorites");
tab2.setContent(R.id.homefavorits);
tab2.setIndicator("",getResources().getDrawable(R.drawable.favorite_icon));
mTab.addTab(tab2);
// Listener
mTab.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
homeReload.setRefreshing(false);
favoriteReload.setRefreshing(false);
}
});
@Override
public void onRefresh() {
switch(currentTab) {
case "tweets":
getTweets(0L);
break;
case "favorites":
getTweets(1L);
break;
}
}
/**
* Init SwipeRefresh
*/
private void initSwipe() {
homeReload.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
getTweets(0L);
}
});
favoriteReload.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
getTweets(1L);
}
});
@Override
public void onTabChanged(String tabId) {
homeReload.setRefreshing(false);
favoriteReload.setRefreshing(false);
currentTab = tabId;
}
/**
* Load Content from Database
*/
private void getContent(){
private void getContent() {
new Thread(){
@Override
public void run(){
@ -203,9 +194,8 @@ public class UserProfile extends AppCompatActivity implements View.OnClickListen
/**
* Download Content
* @param mode 0 = Home Tweets, 1 = Home Favorite Tweets
*/
private void getTweets(long mode ){
private void getTweets(long mode) {
ProfileTweets mProfile = new ProfileTweets(this);
mProfile.execute(userId, mode);
}

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="M10,0.4c-5.303,0 -9.601,4.298 -9.601,9.6c0,5.303 4.298,9.601 9.601,9.601c5.301,0 9.6,-4.298 9.6,-9.601C19.6,4.698 15.301,0.4 10,0.4zM2.399,10c0,-4.197 3.402,-7.6 7.6,-7.6c1.829,0 3.506,0.647 4.817,1.723L4.122,14.817C3.046,13.505 2.399,11.829 2.399,10zM9.999,17.599c-1.828,0 -3.505,-0.646 -4.815,-1.722L15.878,5.184C16.953,6.496 17.6,8.171 17.6,10C17.6,14.197 14.196,17.599 9.999,17.599z"/>
</vector>

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="M15.989,19.129C16,17 13.803,15.74 11.672,14.822c-2.123,-0.914 -2.801,-1.684 -2.801,-3.334c0,-0.989 0.648,-0.667 0.932,-2.481c0.12,-0.752 0.692,-0.012 0.802,-1.729c0,-0.684 -0.313,-0.854 -0.313,-0.854s0.159,-1.013 0.221,-1.793c0.064,-0.817 -0.398,-2.56 -2.301,-3.095C7.88,1.195 7.655,0.654 8.679,0.112c-2.24,-0.104 -2.761,1.068 -3.954,1.93c-1.015,0.756 -1.289,1.953 -1.24,2.59c0.065,0.78 0.223,1.793 0.223,1.793s-0.314,0.17 -0.314,0.854c0.11,1.718 0.684,0.977 0.803,1.729C4.481,10.822 5.13,10.5 5.13,11.489c0,1.65 -0.212,2.21 -2.336,3.124C0.663,15.53 0,17 0.011,19.129C0.014,19.766 0,20 0,20h16C16,20 15.986,19.766 15.989,19.129zM17,10V7h-2v3h-3v2h3v3h2v-3h3v-2H17z"/>
</vector>

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="M4.254,19.567c0.307,-0.982 0.77,-2.364 1.391,-4.362c2.707,-0.429 3.827,0.341 5.546,-2.729c-1.395,0.427 -3.077,-0.792 -2.987,-1.321c0.091,-0.528 3.913,0.381 6.416,-3.173c-3.155,0.696 -4.164,-0.836 -3.757,-1.067c0.939,-0.534 3.726,-0.222 5.212,-1.669c0.766,-0.745 1.125,-2.556 0.813,-3.202c-0.374,-0.781 -2.656,-1.946 -3.914,-1.836c-1.258,0.109 -3.231,4.79 -3.817,4.754C8.573,4.925 8.454,2.864 9.476,0.949c-1.077,0.477 -3.051,1.959 -3.67,3.226c-1.153,2.357 0.108,7.766 -0.296,7.958c-0.405,0.193 -1.766,-2.481 -2.172,-3.694c-0.555,1.859 -0.568,3.721 1.053,6.194c-0.611,1.623 -0.945,3.491 -0.996,4.441C3.371,19.833 4.119,19.996 4.254,19.567z"/>
</vector>

View File

@ -28,7 +28,7 @@
android:layout_height="wrap_content" />
<Button
android:id="@+id/color_link"
android:id="@+id/color_tweet"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>

View File

@ -47,7 +47,6 @@
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_margin="5dp"
android:background="@mipmap/pb"
android:contentDescription="@string/profile_image" />
<TextView

View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/tweet_detail"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tweet_popup"
android:layout_width="300dp"
android:layout_height="200dp"
android:layout_gravity="center"

View File

@ -11,8 +11,7 @@
android:layout_width="64dp"
android:layout_height="64dp"
android:contentDescription="@string/profile_image"
android:padding="5dp"
app:srcCompat="@mipmap/pb" />
android:padding="5dp" />
<LinearLayout
android:layout_width="match_parent"

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/profile_tweet"
android:icon="@drawable/tweet"
android:title="@string/tweet"
android:visible="true"
app:showAsAction="always" />
<item
android:id="@+id/profile_follow"
android:icon="@drawable/follow"
android:title="follow "
android:visible="false"
app:showAsAction="ifRoom" />
<item
android:id="@+id/profile_block"
android:icon="@drawable/block"
android:title="Block"
android:visible="false"
app:showAsAction="ifRoom" />
</menu>