Added Picasso library

Minor Bugfixes
This commit is contained in:
NudeDude 2018-01-21 10:56:30 +01:00
parent 8d8a72ecf9
commit 8b80d11929
11 changed files with 147 additions and 90 deletions

View File

@ -47,7 +47,7 @@
android:screenOrientation="portrait"/> android:screenOrientation="portrait"/>
<activity <activity
android:name=".window.Follower" android:name=".window.UserDetail"
android:theme="@style/AppTheme" android:theme="@style/AppTheme"
android:screenOrientation="portrait"/> android:screenOrientation="portrait"/>

View File

@ -1,67 +0,0 @@
package org.nuclearfog.twidda.backend;
import android.content.Context;
import android.os.AsyncTask;
import android.support.v4.widget.SwipeRefreshLayout;
import android.widget.ListView;
import org.nuclearfog.twidda.database.UserDatabase;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.viewadapter.UserAdapter;
import org.nuclearfog.twidda.window.Follower;
import java.util.List;
import twitter4j.Twitter;
import twitter4j.User;
public class FollowStatus extends AsyncTask <Long, Void, Void> {
private Context context;
private Twitter twitter;
private UserAdapter usrAdp;
private ListView followList;
private SwipeRefreshLayout followReload;
/**
*@see Follower
*/
public FollowStatus(Context context) {
this.context=context;
}
@Override
protected void onPreExecute() {
twitter = TwitterResource.getInstance(context).getTwitter();
followList = (ListView)((Follower)context).findViewById(R.id.followList);
followReload = (SwipeRefreshLayout)((Follower)context).findViewById(R.id.follow_swipe);
}
/**
* @param data [0] mode FollowStatus/Follower , [1] UserID
*/
@Override
protected Void doInBackground(Long... data) {
long mode = data[0];
long userID = data[1];
long cursor = -1L; //TODO
List<User> userlist;
try {
if(mode == 1L) { //FOLLOWING
userlist = twitter.getFollowersList(userID,cursor);
} else { //Follower
userlist = twitter.getFriendsList(userID,cursor);
}
usrAdp = new UserAdapter(context,new UserDatabase(context,userlist));
} catch(Exception err) {
err.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void v) {
followList.setAdapter(usrAdp);
followReload.setRefreshing(false);
}
}

View File

@ -110,7 +110,7 @@ public class ProfileAction extends AsyncTask<Long,Void,Long>
description = user.getDescription(); description = user.getDescription();
location = user.getLocation(); location = user.getLocation();
link = user.getURL(); link = user.getURL();
follower = "Follower: "+user.getFollowersCount(); follower = "UserDetail: "+user.getFollowersCount();
following = "Following: "+user.getFriendsCount(); following = "Following: "+user.getFriendsCount();
imageLink = user.getProfileImageURL(); imageLink = user.getProfileImageURL();
bannerLink = user.getProfileBannerMobileURL(); bannerLink = user.getProfileBannerMobileURL();

View File

@ -4,7 +4,9 @@ import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.support.v4.widget.SwipeRefreshLayout; import android.support.v4.widget.SwipeRefreshLayout;
import android.view.View;
import android.widget.ListView; import android.widget.ListView;
import android.widget.ProgressBar;
import org.nuclearfog.twidda.database.TweetDatabase; import org.nuclearfog.twidda.database.TweetDatabase;
import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.R;
@ -26,6 +28,7 @@ public class TwitterSearch extends AsyncTask<String, Void, String> {
private UserAdapter uAdp; private UserAdapter uAdp;
private SwipeRefreshLayout tweetReload, userReload; private SwipeRefreshLayout tweetReload, userReload;
private ListView tweetSearch, userSearch; private ListView tweetSearch, userSearch;
private ProgressBar circleLoad;
private Context context; private Context context;
private Twitter twitter; private Twitter twitter;
private int load; private int load;
@ -42,6 +45,7 @@ public class TwitterSearch extends AsyncTask<String, Void, String> {
userSearch = (ListView) ((SearchWindow)context).findViewById(R.id.user_result); userSearch = (ListView) ((SearchWindow)context).findViewById(R.id.user_result);
tweetReload = (SwipeRefreshLayout) ((SearchWindow)context).findViewById(R.id.searchtweets); tweetReload = (SwipeRefreshLayout) ((SearchWindow)context).findViewById(R.id.searchtweets);
userReload = (SwipeRefreshLayout) ((SearchWindow)context).findViewById(R.id.searchusers); userReload = (SwipeRefreshLayout) ((SearchWindow)context).findViewById(R.id.searchusers);
circleLoad = (ProgressBar) ((SearchWindow)context).findViewById(R.id.search_progress);
twitter = TwitterResource.getInstance(context).getTwitter(); twitter = TwitterResource.getInstance(context).getTwitter();
} }
@ -70,6 +74,7 @@ public class TwitterSearch extends AsyncTask<String, Void, String> {
@Override @Override
protected void onPostExecute(String mode) { protected void onPostExecute(String mode) {
circleLoad.setVisibility(View.INVISIBLE);
switch(mode) { switch(mode) {
case(TWEETS): case(TWEETS):
tweetSearch.setAdapter(tlAdp); tweetSearch.setAdapter(tlAdp);

View File

@ -0,0 +1,70 @@
package org.nuclearfog.twidda.backend;
import android.content.Context;
import android.os.AsyncTask;
import android.support.v4.widget.SwipeRefreshLayout;
import android.widget.ListView;
import org.nuclearfog.twidda.database.UserDatabase;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.viewadapter.UserAdapter;
import org.nuclearfog.twidda.window.UserDetail;
import java.util.List;
import twitter4j.Twitter;
import twitter4j.User;
public class UserLists extends AsyncTask <Long, Void, Void> {
private Context context;
private Twitter twitter;
private UserAdapter usrAdp;
private ListView userList;
private SwipeRefreshLayout userReload;
/**
*@see UserDetail
*/
public UserLists(Context context) {
this.context = context;
}
@Override
protected void onPreExecute() {
twitter = TwitterResource.getInstance(context).getTwitter();
userList = (ListView)((UserDetail)context).findViewById(R.id.followList);
userReload = (SwipeRefreshLayout)((UserDetail)context).findViewById(R.id.follow_swipe);
}
/**
* @param data [0] mode UserLists/UserDetail , [1] UserID
*/
@Override
protected Void doInBackground(Long... data) {
long mode = data[0];
long id = data[1];
long cursor = -1L; //TODO
List<User> userlist = null;
try {
if(mode == 0L) { //FOLLOWING
userlist = twitter.getFollowersList(id,cursor);
} else if(mode == 1L) { //Follower
userlist = twitter.getFriendsList(id,cursor);
} else if(mode == 2L) { // Retweet TODO
} else if(mode == 3L) { // Favorite TODO
}
if(userlist != null)
usrAdp = new UserAdapter(context,new UserDatabase(context,userlist));
} catch(Exception err) {
err.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void v) {
userList.setAdapter(usrAdp);
userReload.setRefreshing(false);
}
}

View File

@ -17,6 +17,7 @@ import org.nuclearfog.twidda.database.TweetDatabase;
import org.nuclearfog.twidda.database.UserDatabase; 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.viewadapter.UserAdapter;
import org.nuclearfog.twidda.backend.TwitterSearch;
/** /**
* SearchWindow Tweets and Users * SearchWindow Tweets and Users
@ -62,7 +63,8 @@ public class SearchWindow extends AppCompatActivity implements AdapterView.OnIte
tweetReload.setOnRefreshListener(this); tweetReload.setOnRefreshListener(this);
userReload.setOnRefreshListener(this); userReload.setOnRefreshListener(this);
getContent(org.nuclearfog.twidda.backend.TwitterSearch.TWEETS); getContent(TwitterSearch.TWEETS);
getContent(TwitterSearch.USERS);
} }
@Override @Override
@ -142,7 +144,6 @@ public class SearchWindow extends AppCompatActivity implements AdapterView.OnIte
} }
private void getContent(final String MODE) { private void getContent(final String MODE) {
org.nuclearfog.twidda.backend.TwitterSearch s = new org.nuclearfog.twidda.backend.TwitterSearch(SearchWindow.this); new TwitterSearch(SearchWindow.this).execute(MODE,search);
s.execute(MODE,search);
} }
} }

View File

@ -9,6 +9,7 @@ import android.widget.Button;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.ListView; import android.widget.ListView;
import android.widget.TextView;
import org.nuclearfog.twidda.backend.ShowStatus; import org.nuclearfog.twidda.backend.ShowStatus;
import org.nuclearfog.twidda.database.TweetDatabase; import org.nuclearfog.twidda.database.TweetDatabase;
@ -38,10 +39,15 @@ public class TweetDetail extends AppCompatActivity implements View.OnClickListen
Button favorite = (Button) findViewById(R.id.fav_button_detail); Button favorite = (Button) findViewById(R.id.fav_button_detail);
ImageView pb = (ImageView) findViewById(R.id.profileimage_detail); ImageView pb = (ImageView) findViewById(R.id.profileimage_detail);
TextView txtRt = (TextView) findViewById(R.id.no_rt_detail);
TextView txtFav = (TextView) findViewById(R.id.no_fav_detail);
answer_list.setOnItemClickListener(this); answer_list.setOnItemClickListener(this);
favorite.setOnClickListener(this); favorite.setOnClickListener(this);
retweet.setOnClickListener(this); retweet.setOnClickListener(this);
answer.setOnClickListener(this); answer.setOnClickListener(this);
txtFav.setOnClickListener(this);
txtRt.setOnClickListener(this);
pb.setOnClickListener(this); pb.setOnClickListener(this);
setContent(); setContent();
} }
@ -75,6 +81,22 @@ public class TweetDetail extends AppCompatActivity implements View.OnClickListen
intent.putExtras(bundle); intent.putExtras(bundle);
startActivity(intent); startActivity(intent);
break; break;
case R.id.no_rt_detail:
intent = new Intent(getApplicationContext(), UserDetail.class);
bundle.putLong("userID",userID);
bundle.putLong("tweetID",tweetID);
bundle.putLong("mode",2L);
intent.putExtras(bundle);
startActivity(intent);
break;
case R.id.no_fav_detail:
intent = new Intent(getApplicationContext(), UserDetail.class);
bundle.putLong("userID",userID);
bundle.putLong("tweetID",tweetID);
bundle.putLong("mode",3L);
intent.putExtras(bundle);
startActivity(intent);
break;
} }
} }

View File

@ -10,21 +10,21 @@ import android.view.View;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.ListView; import android.widget.ListView;
import org.nuclearfog.twidda.backend.FollowStatus; import org.nuclearfog.twidda.backend.UserLists;
import org.nuclearfog.twidda.database.UserDatabase; import org.nuclearfog.twidda.database.UserDatabase;
import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.viewadapter.UserAdapter; import org.nuclearfog.twidda.viewadapter.UserAdapter;
/** /**
* Get Follow Connections from an User * Get Follow Connections from an User
* @see FollowStatus * @see UserLists
*/ */
public class Follower extends AppCompatActivity implements AdapterView.OnItemClickListener, public class UserDetail extends AppCompatActivity implements AdapterView.OnItemClickListener,
SwipeRefreshLayout.OnRefreshListener { SwipeRefreshLayout.OnRefreshListener {
private long userID; private long userID, tweetID;
private long mode; private long mode;
private ListView follow; private ListView userListview;
private SwipeRefreshLayout reload; private SwipeRefreshLayout reload;
private Toolbar toolbar; private Toolbar toolbar;
@ -32,16 +32,20 @@ public class Follower extends AppCompatActivity implements AdapterView.OnItemCli
protected void onCreate(Bundle b) { protected void onCreate(Bundle b) {
super.onCreate(b); super.onCreate(b);
setContentView(R.layout.follow); setContentView(R.layout.follow);
userID = getIntent().getExtras().getLong("userID"); Intent i = getIntent();
mode = getIntent().getExtras().getLong("mode"); userID = i.getExtras().getLong("userID");
mode = i.getExtras().getLong("mode");
if(i.hasExtra("tweetID")){
tweetID = i.getExtras().getLong("tweetID");
}
follow = (ListView) findViewById(R.id.followList); userListview = (ListView) findViewById(R.id.followList);
reload = (SwipeRefreshLayout) findViewById(R.id.follow_swipe); reload = (SwipeRefreshLayout) findViewById(R.id.follow_swipe);
toolbar = (Toolbar) findViewById(R.id.follow_toolbar); toolbar = (Toolbar) findViewById(R.id.follow_toolbar);
setSupportActionBar(toolbar); setSupportActionBar(toolbar);
setActionbarTitle(mode); setActionbarTitle(mode);
follow.setOnItemClickListener(this); userListview.setOnItemClickListener(this);
reload.setOnRefreshListener(this); reload.setOnRefreshListener(this);
} }
@ -54,7 +58,7 @@ public class Follower extends AppCompatActivity implements AdapterView.OnItemCli
@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(!reload.isRefreshing()) { if(!reload.isRefreshing()) {
UserAdapter uAdp = (UserAdapter) follow.getAdapter(); UserAdapter uAdp = (UserAdapter) userListview.getAdapter();
UserDatabase uDB = uAdp.getAdapter(); UserDatabase uDB = uAdp.getAdapter();
long userID = uDB.getUserID(position); long userID = uDB.getUserID(position);
Intent intent = new Intent(getApplicationContext(), UserProfile.class); Intent intent = new Intent(getApplicationContext(), UserProfile.class);
@ -68,15 +72,29 @@ public class Follower extends AppCompatActivity implements AdapterView.OnItemCli
@Override @Override
public void onRefresh() { public void onRefresh() {
FollowStatus follow = new FollowStatus(Follower.this); getUsers();
follow.execute(mode, userID); }
private void getUsers(){
UserLists uList = new UserLists(UserDetail.this);
if(mode == 0L || mode == 1L) {
uList.execute(mode, userID);
} else if(mode == 2L || mode == 3L) {
uList.execute(mode, tweetID);
}
} }
private void setActionbarTitle(long mode) { private void setActionbarTitle(long mode) {
if(mode==1){ if(getSupportActionBar() == null)
getSupportActionBar().setTitle(R.string.follower); return;
} else{ if(mode == 0) {
getSupportActionBar().setTitle(R.string.following); getSupportActionBar().setTitle(R.string.following);
} else if(mode == 1) {
getSupportActionBar().setTitle(R.string.follower);
} else if(mode == 2) {
getSupportActionBar().setTitle(R.string.retweet);
} else if(mode == 3) {
getSupportActionBar().setTitle(R.string.favorite);
} }
} }
} }

View File

@ -211,10 +211,10 @@ public class UserProfile extends AppCompatActivity implements View.OnClickListen
} }
/** /**
* @param mode 0L = Following , 1L Follower * @param mode 0L = Following , 1L UserDetail
*/ */
private void getFollows(long mode) { private void getFollows(long mode) {
Intent intent = new Intent(getApplicationContext(), Follower.class); Intent intent = new Intent(getApplicationContext(), UserDetail.class);
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putLong("userID",userId); bundle.putLong("userID",userId);
bundle.putLong("mode",mode); bundle.putLong("mode",mode);

View File

@ -7,7 +7,6 @@
android:id="@+id/search_toolbar" android:id="@+id/search_toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize" android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme" /> android:theme="?attr/actionBarTheme" />
@ -62,6 +61,13 @@
</android.support.v4.widget.SwipeRefreshLayout> </android.support.v4.widget.SwipeRefreshLayout>
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>
<ProgressBar
android:id="@+id/search_progress"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
</TabHost> </TabHost>

View File

@ -20,6 +20,8 @@
<string name="trend">Trends</string> <string name="trend">Trends</string>
<string name="following">Following</string> <string name="following">Following</string>
<string name="follower">Follower</string> <string name="follower">Follower</string>
<string name="retweet">Retweet</string>
<string name="favorite">Favorite</string>
<string name="woe_id">WOE ID</string> <string name="woe_id">WOE ID</string>
<string name="banner">Profilbanner</string> <string name="banner">Profilbanner</string>
<string name="link">Webseite</string> <string name="link">Webseite</string>