diff --git a/app/src/main/java/org/nuclearfog/twidda/MainActivity.java b/app/src/main/java/org/nuclearfog/twidda/MainActivity.java index 6e476184..ee67ebcd 100644 --- a/app/src/main/java/org/nuclearfog/twidda/MainActivity.java +++ b/app/src/main/java/org/nuclearfog/twidda/MainActivity.java @@ -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; - } - } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/ImageDownloader.java b/app/src/main/java/org/nuclearfog/twidda/backend/ImageDownloader.java index 0cb7bb59..4b4d2d99 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/ImageDownloader.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/ImageDownloader.java @@ -20,7 +20,6 @@ public class ImageDownloader extends AsyncTask @Override protected Bitmap doInBackground(String... links) { Bitmap picture = null; - try { InputStream iStream = new URL(links[0]).openStream(); picture = BitmapFactory.decodeStream(iStream); diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/ProfileInfo.java b/app/src/main/java/org/nuclearfog/twidda/backend/ProfileInfo.java index a62451e3..700053ec 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/ProfileInfo.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/ProfileInfo.java @@ -91,6 +91,8 @@ public class ProfileInfo extends AsyncTask if(imgEnabled) { profileImg.execute(imageLink); bannerImg.execute(bannerLink); + } else{ + profile.setImageResource(R.mipmap.pb); } } } \ 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 index fe76e1a0..371faa31 100644 --- a/app/src/main/java/org/nuclearfog/twidda/database/ColorPreferences.java +++ b/app/src/main/java/org/nuclearfog/twidda/database/ColorPreferences.java @@ -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) 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 c43e6dd5..8a7f743d 100644 --- a/app/src/main/java/org/nuclearfog/twidda/database/TweetDatabase.java +++ b/app/src/main/java/org/nuclearfog/twidda/database/TweetDatabase.java @@ -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);} diff --git a/app/src/main/java/org/nuclearfog/twidda/database/UserDatabase.java b/app/src/main/java/org/nuclearfog/twidda/database/UserDatabase.java index cc7810c6..18a44e79 100644 --- a/app/src/main/java/org/nuclearfog/twidda/database/UserDatabase.java +++ b/app/src/main/java/org/nuclearfog/twidda/database/UserDatabase.java @@ -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; } 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 4aa44cfe..eceeec41 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.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); + } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/viewadapter/TrendAdapter.java b/app/src/main/java/org/nuclearfog/twidda/viewadapter/TrendAdapter.java index b55d740e..5a1bfbf0 100644 --- a/app/src/main/java/org/nuclearfog/twidda/viewadapter/TrendAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/viewadapter/TrendAdapter.java @@ -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; } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/viewadapter/UserAdapter.java b/app/src/main/java/org/nuclearfog/twidda/viewadapter/UserAdapter.java index e9af67aa..780b89b8 100644 --- a/app/src/main/java/org/nuclearfog/twidda/viewadapter/UserAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/viewadapter/UserAdapter.java @@ -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); + } } \ 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 db62e9ba..86481c2c 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/AppSettings.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/AppSettings.java @@ -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); - } - } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/window/Follower.java b/app/src/main/java/org/nuclearfog/twidda/window/Follower.java index e3ce88b7..5f324664 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/Follower.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/Follower.java @@ -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) { 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 edbae3a3..35affa57 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/TweetDetail.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/TweetDetail.java @@ -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); } diff --git a/app/src/main/java/org/nuclearfog/twidda/window/TweetPopup.java b/app/src/main/java/org/nuclearfog/twidda/window/TweetPopup.java index e00c0c53..0f913ef0 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/TweetPopup.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/TweetPopup.java @@ -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(); - } } \ No newline at end of file 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 5199aaa1..1f4da502 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/TwitterSearch.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/TwitterSearch.java @@ -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); - } } \ No newline at end of file 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 b4a6ece0..51d5b793 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/UserProfile.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/UserProfile.java @@ -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); } diff --git a/app/src/main/res/drawable/block.xml b/app/src/main/res/drawable/block.xml new file mode 100644 index 00000000..d2dc9825 --- /dev/null +++ b/app/src/main/res/drawable/block.xml @@ -0,0 +1,4 @@ + + + diff --git a/app/src/main/res/drawable/follow.xml b/app/src/main/res/drawable/follow.xml new file mode 100644 index 00000000..5de24410 --- /dev/null +++ b/app/src/main/res/drawable/follow.xml @@ -0,0 +1,4 @@ + + + diff --git a/app/src/main/res/drawable/tweet.xml b/app/src/main/res/drawable/tweet.xml new file mode 100644 index 00000000..193947d9 --- /dev/null +++ b/app/src/main/res/drawable/tweet.xml @@ -0,0 +1,4 @@ + + + diff --git a/app/src/main/res/layout/settings.xml b/app/src/main/res/layout/settings.xml index ef4a4fb0..c33c419b 100644 --- a/app/src/main/res/layout/settings.xml +++ b/app/src/main/res/layout/settings.xml @@ -28,7 +28,7 @@ android:layout_height="wrap_content" />