mirror of
https://github.com/nuclearfog/Shitter.git
synced 2025-02-07 23:58:44 +01:00
setup page view
This commit is contained in:
parent
c24bce64a9
commit
a0efc085b4
@ -12,7 +12,7 @@ import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
|
||||
import org.nuclearfog.twidda.adapter.HomeTabAdapter;
|
||||
import org.nuclearfog.twidda.adapter.HomePagerAdapter;
|
||||
import org.nuclearfog.twidda.database.GlobalSettings;
|
||||
import org.nuclearfog.twidda.window.AppSettings;
|
||||
import org.nuclearfog.twidda.window.LoginPage;
|
||||
@ -27,10 +27,10 @@ public class MainActivity extends AppCompatActivity implements TabLayout.OnTabSe
|
||||
|
||||
private static final int LOGIN = 1;
|
||||
private static final int SETTING = 2;
|
||||
private static final int[] icons = {R.drawable.home, R.drawable.hash, R.drawable.mention};
|
||||
|
||||
private GlobalSettings settings;
|
||||
private HomeTabAdapter adapter;
|
||||
private HomePagerAdapter adapter;
|
||||
private TabLayout tab;
|
||||
private ViewPager pager;
|
||||
private int tabIndex = 0;
|
||||
|
||||
@ -40,28 +40,22 @@ public class MainActivity extends AppCompatActivity implements TabLayout.OnTabSe
|
||||
setContentView(R.layout.page_main);
|
||||
|
||||
Toolbar toolbar = findViewById(R.id.profile_toolbar);
|
||||
pager = findViewById(R.id.home_pager);
|
||||
tab = findViewById(R.id.home_tab);
|
||||
|
||||
setSupportActionBar(toolbar);
|
||||
if (getSupportActionBar() != null)
|
||||
getSupportActionBar().setDisplayShowTitleEnabled(false);
|
||||
|
||||
settings = GlobalSettings.getInstance(this);
|
||||
|
||||
pager = findViewById(R.id.home_pager);
|
||||
TabLayout tab = findViewById(R.id.home_tab);
|
||||
View root = findViewById(R.id.main_layout);
|
||||
root.setBackgroundColor(settings.getBackgroundColor());
|
||||
|
||||
adapter = new HomeTabAdapter(getSupportFragmentManager());
|
||||
pager.setOffscreenPageLimit(3);
|
||||
adapter = new HomePagerAdapter(getSupportFragmentManager());
|
||||
pager.setAdapter(adapter);
|
||||
|
||||
pager.setOffscreenPageLimit(3);
|
||||
tab.setupWithViewPager(pager);
|
||||
tab.addOnTabSelectedListener(this);
|
||||
|
||||
for(int i = 0 ; i < icons.length ; i++) {
|
||||
Tab t = tab.getTabAt(i);
|
||||
if(t != null)
|
||||
t.setIcon(icons[i]);
|
||||
}
|
||||
initView();
|
||||
}
|
||||
|
||||
|
||||
@ -72,25 +66,22 @@ public class MainActivity extends AppCompatActivity implements TabLayout.OnTabSe
|
||||
Intent i = new Intent(this, LoginPage.class);
|
||||
startActivityForResult(i, LOGIN);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int reqCode, int returnCode, Intent i) {
|
||||
protected void onActivityResult(int reqCode, int returnCode, Intent intent) {
|
||||
switch (reqCode) {
|
||||
case LOGIN:
|
||||
if (returnCode == RESULT_CANCELED)
|
||||
finish();
|
||||
break;
|
||||
|
||||
case SETTING:
|
||||
View root = findViewById(R.id.main_layout);
|
||||
root.setBackgroundColor(settings.getBackgroundColor());
|
||||
adapter.notifyDataSetChanged();
|
||||
adapter.notifySettingsChanged();
|
||||
initView();
|
||||
break;
|
||||
}
|
||||
super.onActivityResult(reqCode, returnCode, i);
|
||||
super.onActivityResult(reqCode, returnCode, intent);
|
||||
}
|
||||
|
||||
|
||||
@ -132,14 +123,12 @@ public class MainActivity extends AppCompatActivity implements TabLayout.OnTabSe
|
||||
setting.setVisible(false);
|
||||
search.collapseActionView();
|
||||
break;
|
||||
|
||||
case 1:
|
||||
profile.setVisible(false);
|
||||
search.setVisible(true);
|
||||
tweet.setVisible(false);
|
||||
setting.setVisible(true);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
profile.setVisible(false);
|
||||
search.setVisible(false);
|
||||
@ -162,12 +151,10 @@ public class MainActivity extends AppCompatActivity implements TabLayout.OnTabSe
|
||||
user.putExtra("username", "");
|
||||
startActivity(user);
|
||||
break;
|
||||
|
||||
case R.id.action_tweet:
|
||||
Intent tweet = new Intent(this, TweetPopup.class);
|
||||
startActivity(tweet);
|
||||
break;
|
||||
|
||||
case R.id.action_settings:
|
||||
Intent settings = new Intent(this, AppSettings.class);
|
||||
startActivityForResult(settings, SETTING);
|
||||
@ -195,9 +182,25 @@ public class MainActivity extends AppCompatActivity implements TabLayout.OnTabSe
|
||||
|
||||
|
||||
@Override
|
||||
public void onTabUnselected(TabLayout.Tab tab) { }
|
||||
public void onTabUnselected(TabLayout.Tab tab) {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onTabReselected(TabLayout.Tab tab) { }
|
||||
public void onTabReselected(TabLayout.Tab tab) {
|
||||
}
|
||||
|
||||
|
||||
private void initView() {
|
||||
final int[] icons = {R.drawable.home, R.drawable.hash, R.drawable.mention};
|
||||
View root = findViewById(R.id.main_layout);
|
||||
root.setBackgroundColor(settings.getBackgroundColor());
|
||||
tab.setSelectedTabIndicatorColor(settings.getHighlightColor());
|
||||
|
||||
for (int i = 0; i < icons.length; i++) {
|
||||
Tab t = tab.getTabAt(i);
|
||||
if (t != null)
|
||||
t.setIcon(icons[i]);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,38 +1,36 @@
|
||||
package org.nuclearfog.twidda.adapter;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.app.FragmentPagerAdapter;
|
||||
|
||||
import org.nuclearfog.twidda.fragment.TrendListFragment;
|
||||
import org.nuclearfog.twidda.fragment.TweetListFragment;
|
||||
|
||||
import static org.nuclearfog.twidda.fragment.TweetListFragment.HOME;
|
||||
import static org.nuclearfog.twidda.fragment.TweetListFragment.MENT;
|
||||
import org.nuclearfog.twidda.fragment.TweetListFragment.TweetType;
|
||||
|
||||
|
||||
public class HomeTabAdapter extends FragmentPagerAdapter {
|
||||
public class HomePagerAdapter extends FragmentPagerAdapter {
|
||||
|
||||
private static final int COUNT = 3;
|
||||
private static final Bundle HOME_TL, MENT_TL;
|
||||
|
||||
private final Fragment[] fragments;
|
||||
|
||||
static {
|
||||
HOME_TL = new Bundle();
|
||||
MENT_TL = new Bundle();
|
||||
HOME_TL.putInt("mode",HOME);
|
||||
HOME_TL.putBoolean("fix", true);
|
||||
MENT_TL.putInt("mode", MENT);
|
||||
MENT_TL.putBoolean("fix", true);
|
||||
}
|
||||
|
||||
public HomeTabAdapter(FragmentManager fm) {
|
||||
public HomePagerAdapter(FragmentManager fm) {
|
||||
super(fm);
|
||||
fragments = new Fragment[COUNT];
|
||||
fragments[0] = new TweetListFragment();
|
||||
fragments[1] = new TrendListFragment();
|
||||
fragments[2] = new TweetListFragment();
|
||||
|
||||
Bundle HOME_TL = new Bundle();
|
||||
Bundle MENT_TL = new Bundle();
|
||||
HOME_TL.putSerializable("mode", TweetType.HOME);
|
||||
MENT_TL.putSerializable("mode", TweetType.MENT);
|
||||
HOME_TL.putBoolean("fix", true);
|
||||
MENT_TL.putBoolean("fix", true);
|
||||
|
||||
fragments[0].setArguments(HOME_TL);
|
||||
fragments[2].setArguments(MENT_TL);
|
||||
}
|
||||
@ -48,4 +46,24 @@ public class HomeTabAdapter extends FragmentPagerAdapter {
|
||||
public int getCount() {
|
||||
return COUNT;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getItemPosition(@NonNull Object o) {
|
||||
return POSITION_NONE;
|
||||
}
|
||||
|
||||
|
||||
public void notifySettingsChanged() {
|
||||
for (Fragment fragment : fragments) {
|
||||
if (fragment instanceof OnSettingsChanged)
|
||||
((OnSettingsChanged) fragment).settingsChanged();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public interface OnSettingsChanged {
|
||||
|
||||
void settingsChanged();
|
||||
}
|
||||
}
|
@ -14,7 +14,7 @@ import java.lang.ref.WeakReference;
|
||||
public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ImageHolder> {
|
||||
|
||||
private WeakReference<OnImageClickListener> itemClickListener;
|
||||
private Bitmap images[];
|
||||
private Bitmap[] images;
|
||||
|
||||
|
||||
public ImageAdapter(OnImageClickListener l) {
|
||||
@ -23,7 +23,7 @@ public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ImageHolder>
|
||||
}
|
||||
|
||||
|
||||
public void setImages(@NonNull Bitmap images[]) {
|
||||
public void setImages(@NonNull Bitmap[] images) {
|
||||
this.images = images;
|
||||
}
|
||||
|
||||
|
@ -27,7 +27,7 @@ import java.util.List;
|
||||
public class MessageAdapter extends RecyclerView.Adapter<MessageAdapter.MessageHolder> {
|
||||
|
||||
private WeakReference<OnItemSelected> itemClickListener;
|
||||
private Message messages[];
|
||||
private Message[] messages;
|
||||
private int highlight;
|
||||
private int fontColor;
|
||||
private boolean loadImage;
|
||||
|
@ -6,29 +6,27 @@ import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.app.FragmentPagerAdapter;
|
||||
|
||||
import org.nuclearfog.twidda.fragment.TweetListFragment;
|
||||
import org.nuclearfog.twidda.fragment.TweetListFragment.TweetType;
|
||||
|
||||
import static org.nuclearfog.twidda.fragment.TweetListFragment.USER_FAVOR;
|
||||
import static org.nuclearfog.twidda.fragment.TweetListFragment.USER_TWEET;
|
||||
|
||||
public class ProfileTabAdapter extends FragmentPagerAdapter {
|
||||
public class ProfilePagerAdapter extends FragmentPagerAdapter {
|
||||
|
||||
private static final int COUNT = 2;
|
||||
|
||||
private final Fragment[] fragments;
|
||||
|
||||
|
||||
public ProfileTabAdapter(FragmentManager fm, long userId) {
|
||||
public ProfilePagerAdapter(FragmentManager fm, long userId) {
|
||||
super(fm);
|
||||
|
||||
Bundle usr_tweet = new Bundle();
|
||||
Bundle usr_favor = new Bundle();
|
||||
|
||||
usr_tweet.putLong("id", userId);
|
||||
usr_tweet.putInt("mode", USER_TWEET);
|
||||
usr_tweet.putBoolean("fix", false);
|
||||
usr_favor.putLong("id", userId);
|
||||
usr_favor.putInt("mode", USER_FAVOR);
|
||||
usr_tweet.putBoolean("fix", false);
|
||||
usr_tweet.putBoolean("fix", false);
|
||||
usr_tweet.putSerializable("mode", TweetType.USER_TWEET);
|
||||
usr_favor.putSerializable("mode", TweetType.USER_FAVOR);
|
||||
|
||||
fragments = new Fragment[COUNT];
|
||||
fragments[0] = new TweetListFragment();
|
@ -6,19 +6,17 @@ import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.app.FragmentPagerAdapter;
|
||||
|
||||
import org.nuclearfog.twidda.fragment.TweetListFragment;
|
||||
import org.nuclearfog.twidda.fragment.TweetListFragment.TweetType;
|
||||
import org.nuclearfog.twidda.fragment.UserListFragment;
|
||||
import org.nuclearfog.twidda.fragment.UserListFragment.UserType;
|
||||
|
||||
import static org.nuclearfog.twidda.fragment.TweetListFragment.SEARCH;
|
||||
import static org.nuclearfog.twidda.fragment.UserListFragment.USEARCH;
|
||||
|
||||
public class SearchTabAdapter extends FragmentPagerAdapter {
|
||||
public class SearchPagerAdapter extends FragmentPagerAdapter {
|
||||
|
||||
private static final int COUNT = 2;
|
||||
|
||||
private final Fragment[] fragments;
|
||||
|
||||
|
||||
public SearchTabAdapter(FragmentManager fm, String search) {
|
||||
public SearchPagerAdapter(FragmentManager fm, String search) {
|
||||
super(fm);
|
||||
fragments = new Fragment[COUNT];
|
||||
fragments[0] = new TweetListFragment();
|
||||
@ -26,12 +24,12 @@ public class SearchTabAdapter extends FragmentPagerAdapter {
|
||||
|
||||
Bundle tweetSearch = new Bundle();
|
||||
Bundle userSearch = new Bundle();
|
||||
|
||||
tweetSearch.putInt("mode", SEARCH);
|
||||
tweetSearch.putBoolean("fix", true);
|
||||
tweetSearch.putString("search", search);
|
||||
userSearch.putInt("mode", USEARCH);
|
||||
userSearch.putString("search", search);
|
||||
tweetSearch.putSerializable("mode", TweetType.SEARCH);
|
||||
userSearch.putSerializable("mode", UserType.USEARCH);
|
||||
tweetSearch.putBoolean("fix", true);
|
||||
userSearch.putBoolean("fix", true);
|
||||
|
||||
fragments[0].setArguments(tweetSearch);
|
||||
fragments[1].setArguments(userSearch);
|
@ -0,0 +1,64 @@
|
||||
package org.nuclearfog.twidda.adapter;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.app.FragmentPagerAdapter;
|
||||
|
||||
import org.nuclearfog.twidda.BuildConfig;
|
||||
import org.nuclearfog.twidda.fragment.UserListFragment;
|
||||
import org.nuclearfog.twidda.fragment.UserListFragment.UserType;
|
||||
|
||||
|
||||
public class UserPagerAdapter extends FragmentPagerAdapter {
|
||||
|
||||
public enum Mode {
|
||||
FOLLOWERS,
|
||||
FOLLOWING,
|
||||
RETWEETER,
|
||||
FAVORS
|
||||
}
|
||||
|
||||
private static final int COUNT = 1;
|
||||
private final Fragment[] fragments;
|
||||
|
||||
public UserPagerAdapter(FragmentManager fm, Mode mode, long id) {
|
||||
super(fm);
|
||||
Bundle param = new Bundle();
|
||||
fragments = new Fragment[COUNT];
|
||||
fragments[0] = new UserListFragment();
|
||||
|
||||
switch (mode) {
|
||||
case FOLLOWERS:
|
||||
param.putSerializable("mode", UserType.FOLLOWS);
|
||||
break;
|
||||
case FOLLOWING:
|
||||
param.putSerializable("mode", UserType.FRIENDS);
|
||||
break;
|
||||
case RETWEETER:
|
||||
param.putSerializable("mode", UserType.RETWEET);
|
||||
break;
|
||||
case FAVORS:
|
||||
param.putSerializable("mode", UserType.FAVORIT);
|
||||
break;
|
||||
default:
|
||||
if (BuildConfig.DEBUG)
|
||||
throw new AssertionError("mode failure");
|
||||
break;
|
||||
}
|
||||
param.putLong("id", id);
|
||||
fragments[0].setArguments(param);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Fragment getItem(int pos) {
|
||||
return fragments[pos];
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return COUNT;
|
||||
}
|
||||
}
|
@ -12,7 +12,6 @@ import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.squareup.picasso.Picasso;
|
||||
import twitter4j.TwitterException;
|
||||
|
||||
import org.nuclearfog.tag.Tagger;
|
||||
import org.nuclearfog.twidda.R;
|
||||
@ -20,7 +19,6 @@ import org.nuclearfog.twidda.backend.items.TwitterUser;
|
||||
import org.nuclearfog.twidda.database.DatabaseAdapter;
|
||||
import org.nuclearfog.twidda.database.GlobalSettings;
|
||||
import org.nuclearfog.twidda.window.ImageDetail;
|
||||
import org.nuclearfog.twidda.window.UserDetail;
|
||||
import org.nuclearfog.twidda.window.UserProfile;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
@ -28,6 +26,8 @@ import java.text.NumberFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
|
||||
import twitter4j.TwitterException;
|
||||
|
||||
import static android.view.View.GONE;
|
||||
import static android.view.View.VISIBLE;
|
||||
|
||||
@ -40,6 +40,7 @@ public class ProfileLoader extends AsyncTask<Long, Void, Boolean> {
|
||||
ACTION_BLOCK,
|
||||
ACTION_MUTE
|
||||
}
|
||||
|
||||
private final Mode mode;
|
||||
|
||||
private WeakReference<UserProfile> ui;
|
||||
@ -183,25 +184,6 @@ public class ProfileLoader extends AsyncTask<Long, Void, Boolean> {
|
||||
followback.setVisibility(VISIBLE);
|
||||
if (user.isLocked()) {
|
||||
locked.setVisibility(VISIBLE);
|
||||
} else {
|
||||
txtFollowing.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent following = new Intent(ui.get(), UserDetail.class);
|
||||
following.putExtra("ID", user.getId());
|
||||
following.putExtra("mode", 0);
|
||||
ui.get().startActivity(following);
|
||||
}
|
||||
});
|
||||
txtFollower.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent follower = new Intent(ui.get(), UserDetail.class);
|
||||
follower.putExtra("ID", user.getId());
|
||||
follower.putExtra("mode", 1);
|
||||
ui.get().startActivity(follower);
|
||||
}
|
||||
});
|
||||
}
|
||||
profile.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
@ -277,7 +259,7 @@ public class ProfileLoader extends AsyncTask<Long, Void, Boolean> {
|
||||
break;
|
||||
}
|
||||
if (!isHome) {
|
||||
ui.get().setConnection(isFollowing, isMuted, isBlocked, canDm, user.followRequested());
|
||||
ui.get().setConnection(isFollowing, isMuted, isBlocked, user.isLocked(), canDm, user.followRequested());
|
||||
ui.get().invalidateOptionsMenu();
|
||||
}
|
||||
} else {
|
||||
|
@ -1,103 +0,0 @@
|
||||
package org.nuclearfog.twidda.backend;
|
||||
|
||||
import android.os.AsyncTask;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.widget.SwipeRefreshLayout;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.util.Log;
|
||||
|
||||
import org.nuclearfog.twidda.R;
|
||||
import org.nuclearfog.twidda.adapter.UserAdapter;
|
||||
import org.nuclearfog.twidda.backend.items.TwitterUser;
|
||||
import org.nuclearfog.twidda.window.UserDetail;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import twitter4j.TwitterException;
|
||||
|
||||
public class UserLoader extends AsyncTask<Long, Void, Boolean> {
|
||||
|
||||
public enum Mode {
|
||||
FOLLOWING,
|
||||
FOLLOWERS,
|
||||
RETWEET,
|
||||
FAVORIT
|
||||
}
|
||||
|
||||
private Mode mode;
|
||||
|
||||
private WeakReference<UserDetail> ui;
|
||||
private TwitterEngine mTwitter;
|
||||
private TwitterException err;
|
||||
private UserAdapter usrAdp;
|
||||
private List<TwitterUser> user;
|
||||
|
||||
public UserLoader(@NonNull UserDetail context, Mode mode) {
|
||||
ui = new WeakReference<>(context);
|
||||
mTwitter = TwitterEngine.getInstance(context);
|
||||
RecyclerView userList = context.findViewById(R.id.userlist);
|
||||
usrAdp = (UserAdapter) userList.getAdapter();
|
||||
user = new ArrayList<>();
|
||||
this.mode = mode;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected Boolean doInBackground(Long... data) {
|
||||
long id = data[0];
|
||||
long cursor = data[1];
|
||||
try {
|
||||
switch (mode) {
|
||||
case FOLLOWING:
|
||||
user = mTwitter.getFollowing(id, cursor);
|
||||
break;
|
||||
case FOLLOWERS:
|
||||
user = mTwitter.getFollower(id, cursor);
|
||||
break;
|
||||
case RETWEET:
|
||||
user = mTwitter.getRetweeter(id, cursor);
|
||||
break;
|
||||
case FAVORIT:
|
||||
// TODO get User favoriting a tweet
|
||||
break;
|
||||
}
|
||||
} catch (TwitterException err) {
|
||||
this.err = err;
|
||||
return false;
|
||||
} catch (Exception err) {
|
||||
if (err.getMessage() != null)
|
||||
Log.e("User List", err.getMessage());
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Boolean success) {
|
||||
if (ui.get() == null) return;
|
||||
|
||||
SwipeRefreshLayout refresh = ui.get().findViewById(R.id.user_refresh);
|
||||
refresh.setRefreshing(false);
|
||||
|
||||
if (success) {
|
||||
usrAdp.setData(user);
|
||||
usrAdp.notifyDataSetChanged();
|
||||
} else {
|
||||
if (err != null) {
|
||||
ErrorHandler.printError(ui.get(), err);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCancelled() {
|
||||
if (ui.get() == null) return;
|
||||
|
||||
SwipeRefreshLayout refresh = ui.get().findViewById(R.id.user_refresh);
|
||||
refresh.setRefreshing(false);
|
||||
}
|
||||
}
|
@ -10,19 +10,17 @@ import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import org.nuclearfog.twidda.adapter.MessageAdapter;
|
||||
import org.nuclearfog.twidda.fragment.backend.MessageLoader;
|
||||
|
||||
import static android.os.AsyncTask.Status.RUNNING;
|
||||
import static org.nuclearfog.twidda.fragment.backend.MessageLoader.Mode.LOAD;
|
||||
|
||||
|
||||
public class MessageListFragment extends Fragment implements OnRefreshListener{
|
||||
public class MessageListFragment extends Fragment implements OnRefreshListener {
|
||||
|
||||
private MessageLoader messageTask;
|
||||
private SwipeRefreshLayout root;
|
||||
|
||||
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup parent, Bundle param) {
|
||||
root = new SwipeRefreshLayout(inflater.getContext());
|
||||
@ -36,7 +34,7 @@ public class MessageListFragment extends Fragment implements OnRefreshListener{
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
if(messageTask == null) {
|
||||
if (messageTask == null) {
|
||||
messageTask = new MessageLoader(root, LOAD);
|
||||
messageTask.execute();
|
||||
}
|
||||
@ -46,7 +44,7 @@ public class MessageListFragment extends Fragment implements OnRefreshListener{
|
||||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
if(messageTask != null && messageTask.getStatus() == RUNNING)
|
||||
if (messageTask != null && messageTask.getStatus() == RUNNING)
|
||||
messageTask.cancel(true);
|
||||
}
|
||||
|
||||
@ -58,8 +56,4 @@ public class MessageListFragment extends Fragment implements OnRefreshListener{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
package org.nuclearfog.twidda.fragment;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.AsyncTask.Status;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.app.Fragment;
|
||||
@ -13,19 +14,18 @@ import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import org.nuclearfog.twidda.R;
|
||||
import org.nuclearfog.twidda.adapter.HomePagerAdapter.OnSettingsChanged;
|
||||
import org.nuclearfog.twidda.adapter.OnItemClickListener;
|
||||
import org.nuclearfog.twidda.adapter.TrendAdapter;
|
||||
import org.nuclearfog.twidda.database.GlobalSettings;
|
||||
import org.nuclearfog.twidda.fragment.backend.TrendLoader;
|
||||
import org.nuclearfog.twidda.fragment.backend.TrendLoader.Mode;
|
||||
import org.nuclearfog.twidda.window.SearchPage;
|
||||
|
||||
import static android.os.AsyncTask.Status.RUNNING;
|
||||
import static org.nuclearfog.twidda.fragment.backend.TrendLoader.Mode.DB_TRND;
|
||||
import static org.nuclearfog.twidda.fragment.backend.TrendLoader.Mode.LD_TRND;
|
||||
|
||||
public class TrendListFragment extends Fragment implements OnRefreshListener, OnItemClickListener, OnSettingsChanged {
|
||||
|
||||
public class TrendListFragment extends Fragment implements OnRefreshListener, OnItemClickListener {
|
||||
|
||||
private GlobalSettings settings;
|
||||
private TrendLoader trendTask;
|
||||
private SwipeRefreshLayout reload;
|
||||
private TrendAdapter adapter;
|
||||
@ -36,7 +36,7 @@ public class TrendListFragment extends Fragment implements OnRefreshListener, On
|
||||
super.onCreateView(inflater, parent, param);
|
||||
View v = inflater.inflate(R.layout.fragment_list, parent, false);
|
||||
|
||||
GlobalSettings settings = GlobalSettings.getInstance(getContext());
|
||||
settings = GlobalSettings.getInstance(getContext());
|
||||
adapter = new TrendAdapter(this);
|
||||
adapter.setColor(settings.getFontColor());
|
||||
|
||||
@ -54,7 +54,7 @@ public class TrendListFragment extends Fragment implements OnRefreshListener, On
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View v, Bundle param) {
|
||||
super.onViewCreated(v,param);
|
||||
super.onViewCreated(v, param);
|
||||
root = v;
|
||||
}
|
||||
|
||||
@ -63,7 +63,7 @@ public class TrendListFragment extends Fragment implements OnRefreshListener, On
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
if (trendTask == null) {
|
||||
trendTask = new TrendLoader(root, DB_TRND);
|
||||
trendTask = new TrendLoader(root, Mode.DB_TRND);
|
||||
trendTask.execute();
|
||||
}
|
||||
}
|
||||
@ -71,7 +71,7 @@ public class TrendListFragment extends Fragment implements OnRefreshListener, On
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
if(trendTask != null && trendTask.getStatus() == RUNNING)
|
||||
if (trendTask != null && trendTask.getStatus() == Status.RUNNING)
|
||||
trendTask.cancel(true);
|
||||
super.onStop();
|
||||
}
|
||||
@ -79,7 +79,7 @@ public class TrendListFragment extends Fragment implements OnRefreshListener, On
|
||||
|
||||
@Override
|
||||
public void onRefresh() {
|
||||
trendTask = new TrendLoader(root, LD_TRND);
|
||||
trendTask = new TrendLoader(root, Mode.LD_TRND);
|
||||
trendTask.execute();
|
||||
}
|
||||
|
||||
@ -95,4 +95,12 @@ public class TrendListFragment extends Fragment implements OnRefreshListener, On
|
||||
startActivity(intent);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void settingsChanged() {
|
||||
reload.setProgressBackgroundColorSchemeColor(settings.getHighlightColor());
|
||||
adapter.setColor(settings.getFontColor());
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
}
|
@ -1,8 +1,8 @@
|
||||
package org.nuclearfog.twidda.fragment;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.AsyncTask.Status;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.widget.SwipeRefreshLayout;
|
||||
@ -15,6 +15,7 @@ import android.view.ViewGroup;
|
||||
|
||||
import org.nuclearfog.twidda.BuildConfig;
|
||||
import org.nuclearfog.twidda.R;
|
||||
import org.nuclearfog.twidda.adapter.HomePagerAdapter.OnSettingsChanged;
|
||||
import org.nuclearfog.twidda.adapter.OnItemClickListener;
|
||||
import org.nuclearfog.twidda.adapter.TweetAdapter;
|
||||
import org.nuclearfog.twidda.backend.items.Tweet;
|
||||
@ -24,47 +25,50 @@ import org.nuclearfog.twidda.fragment.backend.TweetLoader.Mode;
|
||||
import org.nuclearfog.twidda.window.TweetDetail;
|
||||
|
||||
|
||||
public class TweetListFragment extends Fragment implements OnRefreshListener, OnItemClickListener {
|
||||
public class TweetListFragment extends Fragment implements OnRefreshListener, OnItemClickListener, OnSettingsChanged {
|
||||
|
||||
public static final int HOME = 0;
|
||||
public static final int MENT = 1;
|
||||
public static final int USER_TWEET = 2;
|
||||
public static final int USER_FAVOR = 3;
|
||||
public static final int TWEET_ANSR = 4;
|
||||
public static final int SEARCH = 5;
|
||||
public enum TweetType {
|
||||
HOME,
|
||||
MENT,
|
||||
USER_TWEET,
|
||||
USER_FAVOR,
|
||||
TWEET_ANSR,
|
||||
SEARCH,
|
||||
}
|
||||
|
||||
private GlobalSettings settings;
|
||||
private TweetLoader tweetTask;
|
||||
private SwipeRefreshLayout reload;
|
||||
private TweetAdapter adapter;
|
||||
private View root;
|
||||
|
||||
private int mode;
|
||||
private TweetType mode;
|
||||
private String search;
|
||||
private long id;
|
||||
|
||||
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup parent, Bundle param) {
|
||||
super.onCreateView(inflater, parent, param);
|
||||
boolean fixSize;
|
||||
Bundle b = getArguments();
|
||||
if(b != null && b.containsKey("mode")) {
|
||||
mode = b.getInt("mode");
|
||||
if (b != null && b.containsKey("mode")) {
|
||||
mode = (TweetType) b.getSerializable("mode");
|
||||
id = b.getLong("id", -1);
|
||||
search = b.getString("search", "");
|
||||
fixSize = b.getBoolean("fix", false);
|
||||
} else {
|
||||
throw new AssertionError("Bundle error!");
|
||||
throw new AssertionError();
|
||||
}
|
||||
|
||||
View v = inflater.inflate(R.layout.fragment_list, parent, false);
|
||||
GlobalSettings settings = GlobalSettings.getInstance(getContext());
|
||||
|
||||
|
||||
reload = v.findViewById(R.id.fragment_reload);
|
||||
reload.setProgressBackgroundColorSchemeColor(settings.getHighlightColor());
|
||||
reload.setOnRefreshListener(this);
|
||||
|
||||
adapter = new TweetAdapter(this);
|
||||
|
||||
settings = GlobalSettings.getInstance(getContext());
|
||||
reload.setProgressBackgroundColorSchemeColor(settings.getHighlightColor());
|
||||
adapter.setColor(settings.getHighlightColor(), settings.getFontColor());
|
||||
adapter.toggleImage(settings.getImageLoad());
|
||||
|
||||
@ -86,8 +90,9 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
if(tweetTask == null) {
|
||||
switch(mode) {
|
||||
|
||||
if (tweetTask == null) {
|
||||
switch (mode) {
|
||||
case HOME:
|
||||
tweetTask = new TweetLoader(root, Mode.DB_HOME);
|
||||
tweetTask.execute();
|
||||
@ -113,7 +118,7 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On
|
||||
tweetTask.execute(search);
|
||||
break;
|
||||
default:
|
||||
if(BuildConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
throw new AssertionError("mode failure");
|
||||
break;
|
||||
}
|
||||
@ -123,7 +128,7 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
if(tweetTask != null && tweetTask.getStatus() == Status.RUNNING)
|
||||
if (tweetTask != null && tweetTask.getStatus() == Status.RUNNING)
|
||||
tweetTask.cancel(true);
|
||||
super.onStop();
|
||||
}
|
||||
@ -131,7 +136,7 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On
|
||||
|
||||
@Override
|
||||
public void onRefresh() {
|
||||
switch(mode) {
|
||||
switch (mode) {
|
||||
case HOME:
|
||||
tweetTask = new TweetLoader(root, Mode.TL_HOME);
|
||||
tweetTask.execute();
|
||||
@ -157,7 +162,7 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On
|
||||
tweetTask.execute(search);
|
||||
break;
|
||||
default:
|
||||
if(BuildConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
throw new AssertionError("mode failure");
|
||||
break;
|
||||
}
|
||||
@ -176,4 +181,13 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On
|
||||
startActivity(intent);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void settingsChanged() {
|
||||
reload.setProgressBackgroundColorSchemeColor(settings.getHighlightColor());
|
||||
adapter.setColor(settings.getHighlightColor(), settings.getFontColor());
|
||||
adapter.toggleImage(settings.getImageLoad());
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
}
|
@ -26,29 +26,32 @@ import org.nuclearfog.twidda.window.UserProfile;
|
||||
|
||||
public class UserListFragment extends Fragment implements OnRefreshListener, OnItemClickListener {
|
||||
|
||||
public static final int FOLLOWS = 0;
|
||||
public static final int FRIENDS = 1;
|
||||
public static final int RETWEET = 2;
|
||||
public static final int FAVORIT = 3;
|
||||
public static final int USEARCH = 4;
|
||||
public enum UserType {
|
||||
FOLLOWS,
|
||||
FRIENDS,
|
||||
RETWEET,
|
||||
FAVORIT,
|
||||
USEARCH
|
||||
}
|
||||
|
||||
private SwipeRefreshLayout reload;
|
||||
private UserAdapter adapter;
|
||||
private UserLoader userTask;
|
||||
private View root;
|
||||
private UserType mode;
|
||||
private String search;
|
||||
private long id;
|
||||
private int mode;
|
||||
|
||||
private boolean fixLayout;
|
||||
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup parent, Bundle param) {
|
||||
Bundle b = getArguments();
|
||||
if(b != null && b.containsKey("mode")) {
|
||||
mode = b.getInt("mode");
|
||||
if (b != null && b.containsKey("mode")) {
|
||||
mode = (UserType) b.getSerializable("mode");
|
||||
id = b.getLong("id", -1);
|
||||
search = b.getString("search", "");
|
||||
} else if(BuildConfig.DEBUG) {
|
||||
fixLayout = b.getBoolean("fix", true);
|
||||
} else if (BuildConfig.DEBUG) {
|
||||
throw new AssertionError("Bundle error!");
|
||||
}
|
||||
GlobalSettings settings = GlobalSettings.getInstance(getContext());
|
||||
@ -63,7 +66,7 @@ public class UserListFragment extends Fragment implements OnRefreshListener, OnI
|
||||
adapter.setColor(settings.getFontColor());
|
||||
adapter.toggleImage(settings.getImageLoad());
|
||||
list.setLayoutManager(new LinearLayoutManager(getContext()));
|
||||
list.setHasFixedSize(true);
|
||||
list.setHasFixedSize(fixLayout);
|
||||
list.setAdapter(adapter);
|
||||
return v;
|
||||
}
|
||||
@ -78,7 +81,7 @@ public class UserListFragment extends Fragment implements OnRefreshListener, OnI
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
if(userTask == null) {
|
||||
if (userTask == null) {
|
||||
load();
|
||||
}
|
||||
}
|
||||
@ -86,7 +89,7 @@ public class UserListFragment extends Fragment implements OnRefreshListener, OnI
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
if(userTask != null && userTask.getStatus() == Status.RUNNING)
|
||||
if (userTask != null && userTask.getStatus() == Status.RUNNING)
|
||||
userTask.cancel(true);
|
||||
super.onStop();
|
||||
}
|
||||
@ -100,7 +103,7 @@ public class UserListFragment extends Fragment implements OnRefreshListener, OnI
|
||||
|
||||
@Override
|
||||
public void onItemClick(RecyclerView rv, int pos) {
|
||||
if(!reload.isRefreshing()) {
|
||||
if (!reload.isRefreshing()) {
|
||||
TwitterUser user = adapter.getData(pos);
|
||||
long userID = user.getId();
|
||||
String username = user.getScreenname();
|
||||
@ -135,7 +138,7 @@ public class UserListFragment extends Fragment implements OnRefreshListener, OnI
|
||||
userTask.execute(search);
|
||||
break;
|
||||
default:
|
||||
if(BuildConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
throw new AssertionError("mode failure");
|
||||
break;
|
||||
}
|
||||
|
@ -14,16 +14,18 @@ import org.nuclearfog.twidda.database.DatabaseAdapter;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.List;
|
||||
|
||||
import twitter4j.TwitterException;
|
||||
|
||||
|
||||
public class MessageLoader extends AsyncTask<Long, Void, Boolean> {
|
||||
public class MessageLoader extends AsyncTask<Long, Void, Boolean> {
|
||||
|
||||
|
||||
public enum Mode {
|
||||
LOAD,
|
||||
DEL
|
||||
}
|
||||
|
||||
private Mode mode;
|
||||
private WeakReference<ViewGroup> ui;
|
||||
private TwitterEngine mTwitter;
|
||||
@ -45,10 +47,10 @@ public class MessageLoader extends AsyncTask<Long, Void, Boolean> {
|
||||
|
||||
@Override
|
||||
protected void onPreExecute() {
|
||||
if(ui.get() == null)
|
||||
if (ui.get() == null)
|
||||
return;
|
||||
|
||||
SwipeRefreshLayout reload = (SwipeRefreshLayout)ui.get();
|
||||
SwipeRefreshLayout reload = (SwipeRefreshLayout) ui.get();
|
||||
reload.setRefreshing(true);
|
||||
}
|
||||
|
||||
@ -57,7 +59,7 @@ public class MessageLoader extends AsyncTask<Long, Void, Boolean> {
|
||||
protected Boolean doInBackground(Long[] param) {
|
||||
long messageId = 0;
|
||||
try {
|
||||
switch(mode) {
|
||||
switch (mode) {
|
||||
case LOAD:
|
||||
messages = mTwitter.getMessages();
|
||||
db.storeMessage(messages);
|
||||
@ -70,14 +72,14 @@ public class MessageLoader extends AsyncTask<Long, Void, Boolean> {
|
||||
messages = db.getMessages();
|
||||
break;
|
||||
}
|
||||
} catch(TwitterException err) {
|
||||
} catch (TwitterException err) {
|
||||
if (err.getErrorCode() == 34) {
|
||||
db.deleteDm(messageId);
|
||||
} else {
|
||||
this.err = err;
|
||||
}
|
||||
return false;
|
||||
} catch(Exception err) {
|
||||
} catch (Exception err) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
@ -86,26 +88,26 @@ public class MessageLoader extends AsyncTask<Long, Void, Boolean> {
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Boolean success) {
|
||||
if(ui.get() == null)
|
||||
if (ui.get() == null)
|
||||
return;
|
||||
|
||||
if(success) {
|
||||
if (success) {
|
||||
adapter.setData(messages);
|
||||
adapter.notifyDataSetChanged();
|
||||
} else {
|
||||
if(err != null)
|
||||
if (err != null)
|
||||
ErrorHandler.printError(ui.get().getContext(), err);
|
||||
}
|
||||
SwipeRefreshLayout reload = (SwipeRefreshLayout)ui.get();
|
||||
SwipeRefreshLayout reload = (SwipeRefreshLayout) ui.get();
|
||||
reload.setRefreshing(false);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCancelled() {
|
||||
if(ui.get() == null)
|
||||
if (ui.get() == null)
|
||||
return;
|
||||
SwipeRefreshLayout reload = (SwipeRefreshLayout)ui.get();
|
||||
SwipeRefreshLayout reload = (SwipeRefreshLayout) ui.get();
|
||||
reload.setRefreshing(false);
|
||||
}
|
||||
}
|
@ -20,12 +20,13 @@ import java.util.List;
|
||||
import twitter4j.TwitterException;
|
||||
|
||||
|
||||
public class TrendLoader extends AsyncTask<Void, Void, Boolean> {
|
||||
public class TrendLoader extends AsyncTask<Void, Void, Boolean> {
|
||||
|
||||
public enum Mode {
|
||||
DB_TRND,
|
||||
LD_TRND
|
||||
}
|
||||
|
||||
private Mode mode;
|
||||
private WeakReference<View> ui;
|
||||
private TwitterException err;
|
||||
@ -50,7 +51,7 @@ public class TrendLoader extends AsyncTask<Void, Void, Boolean> {
|
||||
|
||||
@Override
|
||||
protected void onPreExecute() {
|
||||
if(ui.get() == null)
|
||||
if (ui.get() == null)
|
||||
return;
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
reload.setRefreshing(true);
|
||||
@ -60,10 +61,10 @@ public class TrendLoader extends AsyncTask<Void, Void, Boolean> {
|
||||
@Override
|
||||
protected Boolean doInBackground(Void[] v) {
|
||||
try {
|
||||
switch(mode) {
|
||||
switch (mode) {
|
||||
case DB_TRND:
|
||||
trends = db.getTrends(woeId);
|
||||
if(!trends.isEmpty())
|
||||
if (!trends.isEmpty())
|
||||
break;
|
||||
|
||||
case LD_TRND:
|
||||
@ -71,10 +72,10 @@ public class TrendLoader extends AsyncTask<Void, Void, Boolean> {
|
||||
db.storeTrends(trends, woeId);
|
||||
break;
|
||||
}
|
||||
} catch(TwitterException err) {
|
||||
} catch (TwitterException err) {
|
||||
this.err = err;
|
||||
return false;
|
||||
} catch(Exception err) {
|
||||
} catch (Exception err) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
@ -83,14 +84,14 @@ public class TrendLoader extends AsyncTask<Void, Void, Boolean> {
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Boolean success) {
|
||||
if(ui.get() == null)
|
||||
if (ui.get() == null)
|
||||
return;
|
||||
|
||||
if(success) {
|
||||
if (success) {
|
||||
adapter.setData(trends);
|
||||
adapter.notifyDataSetChanged();
|
||||
} else {
|
||||
if(err != null)
|
||||
if (err != null)
|
||||
ErrorHandler.printError(ui.get().getContext(), err);
|
||||
}
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
@ -100,7 +101,7 @@ public class TrendLoader extends AsyncTask<Void, Void, Boolean> {
|
||||
|
||||
@Override
|
||||
protected void onCancelled() {
|
||||
if(ui.get() == null)
|
||||
if (ui.get() == null)
|
||||
return;
|
||||
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
|
@ -30,6 +30,7 @@ public class TweetLoader extends AsyncTask<Object, Void, Boolean> {
|
||||
TWEET_ANS, DB_ANS,
|
||||
TWEET_SEARCH
|
||||
}
|
||||
|
||||
private Mode mode;
|
||||
private WeakReference<View> ui;
|
||||
private TweetAdapter adapter;
|
||||
@ -45,7 +46,7 @@ public class TweetLoader extends AsyncTask<Object, Void, Boolean> {
|
||||
settings = GlobalSettings.getInstance(root.getContext());
|
||||
mTwitter = TwitterEngine.getInstance(root.getContext());
|
||||
RecyclerView list = root.findViewById(R.id.fragment_list);
|
||||
adapter = (TweetAdapter)list.getAdapter();
|
||||
adapter = (TweetAdapter) list.getAdapter();
|
||||
db = new DatabaseAdapter(root.getContext());
|
||||
this.mode = mode;
|
||||
}
|
||||
@ -53,7 +54,7 @@ public class TweetLoader extends AsyncTask<Object, Void, Boolean> {
|
||||
|
||||
@Override
|
||||
protected void onPreExecute() {
|
||||
if(ui.get() == null)
|
||||
if (ui.get() == null)
|
||||
return;
|
||||
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
@ -65,10 +66,10 @@ public class TweetLoader extends AsyncTask<Object, Void, Boolean> {
|
||||
protected Boolean doInBackground(Object[] param) {
|
||||
long sinceId = 1;
|
||||
try {
|
||||
switch(mode) {
|
||||
switch (mode) {
|
||||
case DB_HOME:
|
||||
tweets = db.getHomeTimeline();
|
||||
if(!tweets.isEmpty())
|
||||
if (!tweets.isEmpty())
|
||||
break;
|
||||
|
||||
case TL_HOME:
|
||||
@ -81,54 +82,54 @@ public class TweetLoader extends AsyncTask<Object, Void, Boolean> {
|
||||
|
||||
case DB_MENT:
|
||||
tweets = db.getMentions();
|
||||
if(!tweets.isEmpty())
|
||||
if (!tweets.isEmpty())
|
||||
break;
|
||||
|
||||
case TL_MENT:
|
||||
if (adapter.getItemCount() > 0)
|
||||
sinceId = adapter.getItemId(0);
|
||||
tweets = mTwitter.getMention(1, sinceId);
|
||||
tweets.addAll(adapter.getData());
|
||||
db.storeMentions(tweets);
|
||||
tweets.addAll(adapter.getData());
|
||||
publishProgress();
|
||||
break;
|
||||
|
||||
case DB_TWEETS:
|
||||
tweets = db.getUserTweets((long)param[0]);
|
||||
if(!tweets.isEmpty())
|
||||
tweets = db.getUserTweets((long) param[0]);
|
||||
if (!tweets.isEmpty())
|
||||
break;
|
||||
|
||||
case USR_TWEETS:
|
||||
if (adapter.getItemCount() > 0)
|
||||
sinceId = adapter.getItemId(0);
|
||||
tweets = mTwitter.getUserTweets((long)param[0], sinceId, 1);
|
||||
tweets = mTwitter.getUserTweets((long) param[0], sinceId, 1);
|
||||
db.storeUserTweets(tweets);
|
||||
tweets.addAll(adapter.getData());
|
||||
break;
|
||||
|
||||
case DB_FAVORS:
|
||||
tweets = db.getUserFavs((long)param[0]);
|
||||
if(!tweets.isEmpty())
|
||||
tweets = db.getUserFavs((long) param[0]);
|
||||
if (!tweets.isEmpty())
|
||||
break;
|
||||
|
||||
case USR_FAVORS:
|
||||
if (adapter.getItemCount() > 0)
|
||||
sinceId = adapter.getItemId(0);
|
||||
tweets = mTwitter.getUserFavs((long)param[0], sinceId, 1);
|
||||
db.storeUserFavs(tweets, (long)param[0]);
|
||||
tweets = mTwitter.getUserFavs((long) param[0], sinceId, 1);
|
||||
db.storeUserFavs(tweets, (long) param[0]);
|
||||
tweets.addAll(adapter.getData());
|
||||
break;
|
||||
|
||||
case DB_ANS:
|
||||
tweets = db.getAnswers((long)param[0]);
|
||||
if(tweets.isEmpty() || !settings.getAnswerLoad())
|
||||
tweets = db.getAnswers((long) param[0]);
|
||||
if (tweets.isEmpty() || !settings.getAnswerLoad())
|
||||
break;
|
||||
|
||||
case TWEET_ANS:
|
||||
if (adapter.getItemCount() > 0)
|
||||
sinceId = adapter.getItemId(0);
|
||||
tweets = mTwitter.getAnswers((String)param[1], (long)param[0], sinceId);
|
||||
if (!tweets.isEmpty() && db.containStatus((long)param[0]))
|
||||
tweets = mTwitter.getAnswers((String) param[1], (long) param[0], sinceId);
|
||||
if (!tweets.isEmpty() && db.containStatus((long) param[0]))
|
||||
db.storeReplies(tweets);
|
||||
tweets.addAll(adapter.getData());
|
||||
break;
|
||||
@ -136,14 +137,14 @@ public class TweetLoader extends AsyncTask<Object, Void, Boolean> {
|
||||
case TWEET_SEARCH:
|
||||
if (adapter.getItemCount() > 0)
|
||||
sinceId = adapter.getItemId(0);
|
||||
tweets = mTwitter.searchTweets((String)param[0], sinceId);
|
||||
tweets = mTwitter.searchTweets((String) param[0], sinceId);
|
||||
tweets.addAll(adapter.getData());
|
||||
break;
|
||||
}
|
||||
} catch(TwitterException err) {
|
||||
} catch (TwitterException err) {
|
||||
this.err = err;
|
||||
return false;
|
||||
}
|
||||
catch(Exception err) {
|
||||
} catch (Exception err) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
@ -152,14 +153,14 @@ public class TweetLoader extends AsyncTask<Object, Void, Boolean> {
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Boolean success) {
|
||||
if(ui.get() == null)
|
||||
if (ui.get() == null)
|
||||
return;
|
||||
|
||||
if(success) {
|
||||
if (success) {
|
||||
adapter.setData(tweets);
|
||||
adapter.notifyDataSetChanged();
|
||||
} else {
|
||||
if(err != null)
|
||||
if (err != null)
|
||||
ErrorHandler.printError(ui.get().getContext(), err);
|
||||
}
|
||||
|
||||
@ -170,7 +171,7 @@ public class TweetLoader extends AsyncTask<Object, Void, Boolean> {
|
||||
|
||||
@Override
|
||||
protected void onCancelled() {
|
||||
if(ui.get() == null)
|
||||
if (ui.get() == null)
|
||||
return;
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
reload.setRefreshing(false);
|
||||
|
@ -26,6 +26,7 @@ public class UserLoader extends AsyncTask<Object, Void, Boolean> {
|
||||
FAVORIT,
|
||||
SEARCH
|
||||
}
|
||||
|
||||
private Mode mode;
|
||||
private WeakReference<View> ui;
|
||||
private TwitterEngine mTwitter;
|
||||
@ -45,7 +46,7 @@ public class UserLoader extends AsyncTask<Object, Void, Boolean> {
|
||||
|
||||
@Override
|
||||
protected void onPreExecute() {
|
||||
if(ui.get() == null)
|
||||
if (ui.get() == null)
|
||||
return;
|
||||
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
@ -56,30 +57,30 @@ public class UserLoader extends AsyncTask<Object, Void, Boolean> {
|
||||
@Override
|
||||
protected Boolean doInBackground(Object[] param) {
|
||||
try {
|
||||
switch(mode) {
|
||||
switch (mode) {
|
||||
case FOLLOWS:
|
||||
users = mTwitter.getFollower((long)param[0], -1);
|
||||
users = mTwitter.getFollower((long) param[0], -1);
|
||||
break;
|
||||
|
||||
case FRIENDS:
|
||||
users = mTwitter.getFollowing((long)param[0], -1);
|
||||
users = mTwitter.getFollowing((long) param[0], -1);
|
||||
break;
|
||||
|
||||
case RETWEET:
|
||||
users = mTwitter.getRetweeter((long)param[0], -1);
|
||||
users = mTwitter.getRetweeter((long) param[0], -1);
|
||||
break;
|
||||
|
||||
case FAVORIT:
|
||||
break;
|
||||
|
||||
case SEARCH:
|
||||
users = mTwitter.searchUsers((String)param[0]);
|
||||
users = mTwitter.searchUsers((String) param[0]);
|
||||
break;
|
||||
}
|
||||
} catch(TwitterException err) {
|
||||
} catch (TwitterException err) {
|
||||
this.err = err;
|
||||
return false;
|
||||
} catch(Exception err) {
|
||||
} catch (Exception err) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
@ -88,14 +89,14 @@ public class UserLoader extends AsyncTask<Object, Void, Boolean> {
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Boolean success) {
|
||||
if(ui.get() == null)
|
||||
if (ui.get() == null)
|
||||
return;
|
||||
|
||||
if(success) {
|
||||
if (success) {
|
||||
adapter.setData(users);
|
||||
adapter.notifyDataSetChanged();
|
||||
} else {
|
||||
if(err != null)
|
||||
if (err != null)
|
||||
ErrorHandler.printError(ui.get().getContext(), err);
|
||||
}
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
@ -105,7 +106,7 @@ public class UserLoader extends AsyncTask<Object, Void, Boolean> {
|
||||
|
||||
@Override
|
||||
protected void onCancelled() {
|
||||
if(ui.get() == null)
|
||||
if (ui.get() == null)
|
||||
return;
|
||||
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
|
@ -29,11 +29,7 @@ import org.nuclearfog.twidda.adapter.WorldIdAdapter;
|
||||
import org.nuclearfog.twidda.backend.TwitterEngine;
|
||||
import org.nuclearfog.twidda.database.GlobalSettings;
|
||||
|
||||
/**
|
||||
* App settings page
|
||||
*
|
||||
* @see GlobalSettings
|
||||
*/
|
||||
|
||||
public class AppSettings extends AppCompatActivity implements OnClickListener,
|
||||
OnDismissListener, OnItemSelectedListener, OnCheckedChangeListener {
|
||||
|
||||
|
@ -2,6 +2,7 @@ package org.nuclearfog.twidda.window;
|
||||
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.os.AsyncTask.Status;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.widget.SwipeRefreshLayout;
|
||||
import android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener;
|
||||
@ -18,19 +19,11 @@ import org.nuclearfog.twidda.R;
|
||||
import org.nuclearfog.twidda.adapter.MessageAdapter;
|
||||
import org.nuclearfog.twidda.adapter.MessageAdapter.OnItemSelected;
|
||||
import org.nuclearfog.twidda.backend.MessageLoader;
|
||||
import org.nuclearfog.twidda.backend.MessageLoader.Mode;
|
||||
import org.nuclearfog.twidda.backend.items.Message;
|
||||
import org.nuclearfog.twidda.database.GlobalSettings;
|
||||
|
||||
import static android.os.AsyncTask.Status.RUNNING;
|
||||
import static org.nuclearfog.twidda.backend.MessageLoader.Mode.DEL;
|
||||
import static org.nuclearfog.twidda.backend.MessageLoader.Mode.GET;
|
||||
import static org.nuclearfog.twidda.backend.MessageLoader.Mode.LDR;
|
||||
|
||||
/**
|
||||
* Direct Message page
|
||||
*
|
||||
* @see MessageLoader
|
||||
*/
|
||||
public class DirectMessage extends AppCompatActivity implements OnRefreshListener, OnItemSelected {
|
||||
|
||||
private MessageLoader messageAsync;
|
||||
@ -39,7 +32,6 @@ public class DirectMessage extends AppCompatActivity implements OnRefreshListene
|
||||
private GlobalSettings settings;
|
||||
private RecyclerView dmList;
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle b) {
|
||||
super.onCreate(b);
|
||||
@ -71,7 +63,7 @@ public class DirectMessage extends AppCompatActivity implements OnRefreshListene
|
||||
mAdapter.setColor(settings.getFontColor(), settings.getHighlightColor());
|
||||
mAdapter.setImageLoad(settings.getImageLoad());
|
||||
dmList.setAdapter(mAdapter);
|
||||
messageAsync = new MessageLoader(this, LDR);
|
||||
messageAsync = new MessageLoader(this, Mode.LDR);
|
||||
messageAsync.execute();
|
||||
}
|
||||
}
|
||||
@ -79,7 +71,7 @@ public class DirectMessage extends AppCompatActivity implements OnRefreshListene
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
if (messageAsync != null && messageAsync.getStatus() == RUNNING) {
|
||||
if (messageAsync != null && messageAsync.getStatus() == Status.RUNNING) {
|
||||
messageAsync.cancel(true);
|
||||
}
|
||||
super.onStop();
|
||||
@ -95,12 +87,10 @@ public class DirectMessage extends AppCompatActivity implements OnRefreshListene
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
if (messageAsync != null && messageAsync.getStatus() != RUNNING) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.message:
|
||||
Intent sendDm = new Intent(this, MessagePopup.class);
|
||||
startActivity(sendDm);
|
||||
break;
|
||||
if (messageAsync != null && messageAsync.getStatus() != Status.RUNNING) {
|
||||
if (item.getItemId() == R.id.message) {
|
||||
Intent sendDm = new Intent(this, MessagePopup.class);
|
||||
startActivity(sendDm);
|
||||
}
|
||||
}
|
||||
return super.onOptionsItemSelected(item);
|
||||
@ -128,7 +118,7 @@ public class DirectMessage extends AppCompatActivity implements OnRefreshListene
|
||||
.setPositiveButton(R.string.yes_confirm, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
messageAsync = new MessageLoader(DirectMessage.this, DEL);
|
||||
messageAsync = new MessageLoader(DirectMessage.this, Mode.DEL);
|
||||
messageAsync.execute(messageId);
|
||||
}
|
||||
}).show();
|
||||
@ -162,7 +152,7 @@ public class DirectMessage extends AppCompatActivity implements OnRefreshListene
|
||||
|
||||
@Override
|
||||
public void onRefresh() {
|
||||
messageAsync = new MessageLoader(this, GET);
|
||||
messageAsync = new MessageLoader(this, Mode.GET);
|
||||
messageAsync.execute();
|
||||
}
|
||||
}
|
@ -2,6 +2,7 @@ package org.nuclearfog.twidda.window;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Point;
|
||||
import android.os.AsyncTask.Status;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
@ -26,22 +27,17 @@ import java.util.Locale;
|
||||
|
||||
import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
|
||||
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
|
||||
import static android.os.AsyncTask.Status.RUNNING;
|
||||
import static android.support.v7.widget.LinearLayoutManager.HORIZONTAL;
|
||||
|
||||
|
||||
/**
|
||||
* @see ImageLoader
|
||||
*/
|
||||
public class ImageDetail extends AppCompatActivity implements OnImageClickListener {
|
||||
|
||||
boolean storable;
|
||||
private ImageLoader imageAsync;
|
||||
private ZoomView zoomImage;
|
||||
private String link[];
|
||||
private String[] link;
|
||||
private int width;
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle b) {
|
||||
super.onCreate(b);
|
||||
@ -78,7 +74,7 @@ public class ImageDetail extends AppCompatActivity implements OnImageClickListen
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
if (imageAsync != null && imageAsync.getStatus() == RUNNING)
|
||||
if (imageAsync != null && imageAsync.getStatus() == Status.RUNNING)
|
||||
imageAsync.cancel(true);
|
||||
super.onDestroy();
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.Uri;
|
||||
import android.os.AsyncTask.Status;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.view.View;
|
||||
@ -15,13 +16,7 @@ import android.widget.Toast;
|
||||
import org.nuclearfog.twidda.R;
|
||||
import org.nuclearfog.twidda.backend.Registration;
|
||||
|
||||
import static android.os.AsyncTask.Status.RUNNING;
|
||||
|
||||
/**
|
||||
* Login Page
|
||||
*
|
||||
* @see Registration
|
||||
*/
|
||||
public class LoginPage extends AppCompatActivity implements OnClickListener {
|
||||
|
||||
private Registration registerAsync;
|
||||
@ -40,7 +35,7 @@ public class LoginPage extends AppCompatActivity implements OnClickListener {
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
if (registerAsync != null && registerAsync.getStatus() == RUNNING)
|
||||
if (registerAsync != null && registerAsync.getStatus() == Status.RUNNING)
|
||||
registerAsync.cancel(true);
|
||||
super.onDestroy();
|
||||
}
|
||||
@ -55,7 +50,7 @@ public class LoginPage extends AppCompatActivity implements OnClickListener {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (registerAsync != null && registerAsync.getStatus() == RUNNING)
|
||||
if (registerAsync != null && registerAsync.getStatus() == Status.RUNNING)
|
||||
registerAsync.cancel(true);
|
||||
|
||||
switch (v.getId()) {
|
||||
|
@ -5,6 +5,7 @@ import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.database.Cursor;
|
||||
import android.os.AsyncTask.Status;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.provider.MediaStore;
|
||||
@ -21,13 +22,8 @@ import org.nuclearfog.twidda.backend.MessageUpload;
|
||||
import org.nuclearfog.twidda.database.GlobalSettings;
|
||||
|
||||
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
|
||||
import static android.os.AsyncTask.Status.RUNNING;
|
||||
|
||||
/**
|
||||
* Message Window
|
||||
*
|
||||
* @see MessageUpload
|
||||
*/
|
||||
|
||||
public class MessagePopup extends AppCompatActivity implements View.OnClickListener {
|
||||
|
||||
private MessageUpload messageAsync;
|
||||
@ -74,7 +70,7 @@ public class MessagePopup extends AppCompatActivity implements View.OnClickListe
|
||||
closeDialog.setPositiveButton(R.string.yes_confirm, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
if (messageAsync != null && messageAsync.getStatus() == RUNNING)
|
||||
if (messageAsync != null && messageAsync.getStatus() == Status.RUNNING)
|
||||
messageAsync.cancel(true);
|
||||
finish();
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.database.Cursor;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.AsyncTask.Status;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.provider.MediaStore;
|
||||
@ -22,22 +22,17 @@ import android.widget.Toast;
|
||||
|
||||
import org.nuclearfog.twidda.R;
|
||||
import org.nuclearfog.twidda.backend.ProfileEditor;
|
||||
import org.nuclearfog.twidda.backend.ProfileEditor.Mode;
|
||||
import org.nuclearfog.twidda.database.GlobalSettings;
|
||||
|
||||
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
|
||||
import static android.os.AsyncTask.Status.RUNNING;
|
||||
import static org.nuclearfog.twidda.backend.ProfileEditor.Mode.READ_DATA;
|
||||
import static org.nuclearfog.twidda.backend.ProfileEditor.Mode.WRITE_DATA;
|
||||
|
||||
/**
|
||||
* @see org.nuclearfog.twidda.backend.ProfileEditor
|
||||
*/
|
||||
|
||||
public class ProfileEdit extends AppCompatActivity implements View.OnClickListener {
|
||||
|
||||
private ProfileEditor editorAsync;
|
||||
private TextView txtImg;
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@ -62,7 +57,7 @@ public class ProfileEdit extends AppCompatActivity implements View.OnClickListen
|
||||
protected void onStart() {
|
||||
super.onStart();
|
||||
if (editorAsync == null) {
|
||||
editorAsync = new ProfileEditor(this, READ_DATA);
|
||||
editorAsync = new ProfileEditor(this, Mode.READ_DATA);
|
||||
editorAsync.execute();
|
||||
}
|
||||
}
|
||||
@ -70,7 +65,7 @@ public class ProfileEdit extends AppCompatActivity implements View.OnClickListen
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
if (editorAsync != null && editorAsync.getStatus() == AsyncTask.Status.RUNNING)
|
||||
if (editorAsync != null && editorAsync.getStatus() == Status.RUNNING)
|
||||
editorAsync.cancel(true);
|
||||
super.onStop();
|
||||
}
|
||||
@ -100,12 +95,9 @@ public class ProfileEdit extends AppCompatActivity implements View.OnClickListen
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.action_save:
|
||||
if (editorAsync == null || editorAsync.getStatus() != RUNNING) {
|
||||
save();
|
||||
}
|
||||
break;
|
||||
if (item.getItemId() == R.id.action_save) {
|
||||
if (editorAsync == null || editorAsync.getStatus() != Status.RUNNING)
|
||||
save();
|
||||
}
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
@ -147,9 +139,9 @@ public class ProfileEdit extends AppCompatActivity implements View.OnClickListen
|
||||
if (name.getText().toString().trim().isEmpty()) {
|
||||
Toast.makeText(this, R.string.edit_empty_name, Toast.LENGTH_SHORT).show();
|
||||
} else {
|
||||
if (editorAsync != null && editorAsync.getStatus() == RUNNING)
|
||||
if (editorAsync != null && editorAsync.getStatus() == Status.RUNNING)
|
||||
editorAsync.cancel(true);
|
||||
editorAsync = new ProfileEditor(this, WRITE_DATA);
|
||||
editorAsync = new ProfileEditor(this, Mode.WRITE_DATA);
|
||||
editorAsync.execute();
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package org.nuclearfog.twidda.window;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.design.widget.TabLayout;
|
||||
import android.support.design.widget.TabLayout.OnTabSelectedListener;
|
||||
import android.support.v4.view.ViewPager;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.SearchView;
|
||||
@ -13,18 +14,16 @@ import android.view.View;
|
||||
|
||||
import org.nuclearfog.twidda.BuildConfig;
|
||||
import org.nuclearfog.twidda.R;
|
||||
import org.nuclearfog.twidda.adapter.SearchTabAdapter;
|
||||
import org.nuclearfog.twidda.adapter.SearchPagerAdapter;
|
||||
import org.nuclearfog.twidda.database.GlobalSettings;
|
||||
|
||||
/**
|
||||
* Search Page
|
||||
*/
|
||||
public class SearchPage extends AppCompatActivity implements TabLayout.OnTabSelectedListener {
|
||||
|
||||
public class SearchPage extends AppCompatActivity implements OnTabSelectedListener {
|
||||
|
||||
private static final int[] icons = {R.drawable.search, R.drawable.user};
|
||||
|
||||
private ViewPager pager;
|
||||
private String search = "";
|
||||
private String search;
|
||||
private int tabIndex = 0;
|
||||
|
||||
@Override
|
||||
@ -33,8 +32,8 @@ public class SearchPage extends AppCompatActivity implements TabLayout.OnTabSele
|
||||
setContentView(R.layout.page_search);
|
||||
|
||||
Toolbar tool = findViewById(R.id.search_toolbar);
|
||||
View root = findViewById(R.id.search_layout);
|
||||
TabLayout tab = findViewById(R.id.search_tab);
|
||||
View root = findViewById(R.id.search_layout);
|
||||
pager = findViewById(R.id.search_pager);
|
||||
|
||||
setSupportActionBar(tool);
|
||||
@ -43,21 +42,23 @@ public class SearchPage extends AppCompatActivity implements TabLayout.OnTabSele
|
||||
|
||||
Bundle param = getIntent().getExtras();
|
||||
if (param != null) {
|
||||
if (BuildConfig.DEBUG && param.size() != 1)
|
||||
if (BuildConfig.DEBUG && !param.containsKey("search"))
|
||||
throw new AssertionError();
|
||||
search = param.getString("search");
|
||||
search = param.getString("search", "");
|
||||
}
|
||||
|
||||
GlobalSettings settings = GlobalSettings.getInstance(this);
|
||||
root.setBackgroundColor(settings.getBackgroundColor());
|
||||
SearchTabAdapter adapter = new SearchTabAdapter(getSupportFragmentManager(), search);
|
||||
pager.setAdapter(adapter);
|
||||
tab.setSelectedTabIndicatorColor(settings.getHighlightColor());
|
||||
|
||||
SearchPagerAdapter adapter = new SearchPagerAdapter(getSupportFragmentManager(), search);
|
||||
tab.setupWithViewPager(pager);
|
||||
tab.addOnTabSelectedListener(this);
|
||||
pager.setAdapter(adapter);
|
||||
|
||||
for(int i = 0 ; i < icons.length ; i++) {
|
||||
for (int i = 0; i < icons.length; i++) {
|
||||
TabLayout.Tab t = tab.getTabAt(i);
|
||||
if(t != null)
|
||||
if (t != null)
|
||||
t.setIcon(icons[i]);
|
||||
}
|
||||
}
|
||||
@ -117,9 +118,11 @@ public class SearchPage extends AppCompatActivity implements TabLayout.OnTabSele
|
||||
|
||||
|
||||
@Override
|
||||
public void onTabUnselected(TabLayout.Tab tab) { }
|
||||
public void onTabUnselected(TabLayout.Tab tab) {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onTabReselected(TabLayout.Tab tab) { }
|
||||
public void onTabReselected(TabLayout.Tab tab) {
|
||||
}
|
||||
}
|
@ -7,6 +7,7 @@ import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.Uri;
|
||||
import android.os.AsyncTask.Status;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.widget.SwipeRefreshLayout;
|
||||
import android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener;
|
||||
@ -30,24 +31,15 @@ import org.nuclearfog.twidda.R;
|
||||
import org.nuclearfog.twidda.adapter.OnItemClickListener;
|
||||
import org.nuclearfog.twidda.adapter.TweetAdapter;
|
||||
import org.nuclearfog.twidda.backend.StatusLoader;
|
||||
import org.nuclearfog.twidda.backend.StatusLoader.Mode;
|
||||
import org.nuclearfog.twidda.backend.items.Tweet;
|
||||
import org.nuclearfog.twidda.database.GlobalSettings;
|
||||
import org.nuclearfog.twidda.window.UserDetail.UserType;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import static android.os.AsyncTask.Status.RUNNING;
|
||||
import static org.nuclearfog.twidda.backend.StatusLoader.Mode.ANS;
|
||||
import static org.nuclearfog.twidda.backend.StatusLoader.Mode.DELETE;
|
||||
import static org.nuclearfog.twidda.backend.StatusLoader.Mode.FAVORITE;
|
||||
import static org.nuclearfog.twidda.backend.StatusLoader.Mode.LOAD;
|
||||
import static org.nuclearfog.twidda.backend.StatusLoader.Mode.RETWEET;
|
||||
|
||||
/**
|
||||
* Detailed Tweet Activity
|
||||
*
|
||||
* @see StatusLoader
|
||||
*/
|
||||
public class TweetDetail extends AppCompatActivity implements OnClickListener,
|
||||
OnItemClickListener, OnRefreshListener, OnTagClickListener {
|
||||
|
||||
@ -124,7 +116,7 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener,
|
||||
answerAdapter.toggleImage(settings.getImageLoad());
|
||||
answerAdapter.setColor(settings.getHighlightColor(), settings.getFontColor());
|
||||
answer_list.setAdapter(answerAdapter);
|
||||
statusAsync = new StatusLoader(this, LOAD);
|
||||
statusAsync = new StatusLoader(this, Mode.LOAD);
|
||||
statusAsync.execute(tweetID);
|
||||
}
|
||||
}
|
||||
@ -132,7 +124,7 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener,
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
if (statusAsync != null && statusAsync.getStatus() == RUNNING)
|
||||
if (statusAsync != null && statusAsync.getStatus() == Status.RUNNING)
|
||||
statusAsync.cancel(true);
|
||||
super.onStop();
|
||||
}
|
||||
@ -164,7 +156,7 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener,
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
if (statusAsync != null && statusAsync.getStatus() != RUNNING) {
|
||||
if (statusAsync != null && statusAsync.getStatus() != Status.RUNNING) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.delete_tweet:
|
||||
Builder deleteDialog = new Builder(this);
|
||||
@ -172,9 +164,9 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener,
|
||||
deleteDialog.setPositiveButton(R.string.yes_confirm, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
if (statusAsync != null && statusAsync.getStatus() == RUNNING)
|
||||
if (statusAsync != null && statusAsync.getStatus() == Status.RUNNING)
|
||||
statusAsync.cancel(true);
|
||||
statusAsync = new StatusLoader(TweetDetail.this, DELETE);
|
||||
statusAsync = new StatusLoader(TweetDetail.this, Mode.DELETE);
|
||||
statusAsync.execute(tweetID);
|
||||
}
|
||||
});
|
||||
@ -208,36 +200,32 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener,
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (statusAsync != null && statusAsync.getStatus() != RUNNING) {
|
||||
if (statusAsync != null && statusAsync.getStatus() != Status.RUNNING) {
|
||||
switch (v.getId()) {
|
||||
case R.id.rt_button_detail:
|
||||
if (statusAsync != null && statusAsync.getStatus() == RUNNING)
|
||||
statusAsync.cancel(true);
|
||||
statusAsync = new StatusLoader(this, RETWEET);
|
||||
statusAsync = new StatusLoader(this, Mode.RETWEET);
|
||||
statusAsync.execute(tweetID);
|
||||
Toast.makeText(this, R.string.loading, Toast.LENGTH_SHORT).show();
|
||||
break;
|
||||
|
||||
case R.id.fav_button_detail:
|
||||
if (statusAsync != null && statusAsync.getStatus() == RUNNING)
|
||||
statusAsync.cancel(true);
|
||||
statusAsync = new StatusLoader(this, FAVORITE);
|
||||
statusAsync = new StatusLoader(this, Mode.FAVORITE);
|
||||
statusAsync.execute(tweetID);
|
||||
Toast.makeText(this, R.string.loading, Toast.LENGTH_SHORT).show();
|
||||
break;
|
||||
|
||||
case R.id.no_rt_detail:
|
||||
Intent retweet = new Intent(this, UserDetail.class);
|
||||
retweet.putExtra("ID", tweetID);
|
||||
retweet.putExtra("mode", 2);
|
||||
startActivity(retweet);
|
||||
Intent userList = new Intent(this, UserDetail.class);
|
||||
userList.putExtra("ID", tweetID);
|
||||
userList.putExtra("mode", UserType.RETWEETS);
|
||||
startActivity(userList);
|
||||
break;
|
||||
|
||||
case R.id.no_fav_detail:
|
||||
Intent favorit = new Intent(this, UserDetail.class);
|
||||
favorit.putExtra("ID", tweetID);
|
||||
favorit.putExtra("mode", 3);
|
||||
startActivity(favorit);
|
||||
userList = new Intent(this, UserDetail.class);
|
||||
userList.putExtra("ID", tweetID);
|
||||
userList.putExtra("mode", UserType.FAVORITS);
|
||||
startActivity(userList);
|
||||
break;
|
||||
|
||||
case R.id.answer_button:
|
||||
@ -273,7 +261,7 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener,
|
||||
|
||||
@Override
|
||||
public void onRefresh() {
|
||||
statusAsync = new StatusLoader(this, ANS);
|
||||
statusAsync = new StatusLoader(this, Mode.ANS);
|
||||
statusAsync.execute(tweetID);
|
||||
}
|
||||
|
||||
|
@ -3,6 +3,7 @@ package org.nuclearfog.twidda.window;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.database.Cursor;
|
||||
import android.os.AsyncTask.Status;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.provider.MediaStore;
|
||||
@ -26,14 +27,9 @@ import java.util.List;
|
||||
import static android.Manifest.permission.READ_EXTERNAL_STORAGE;
|
||||
import static android.content.Intent.ACTION_PICK;
|
||||
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
|
||||
import static android.os.AsyncTask.Status.RUNNING;
|
||||
import static android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
|
||||
|
||||
/**
|
||||
* Tweet Window
|
||||
*
|
||||
* @see StatusUploader
|
||||
*/
|
||||
|
||||
public class TweetPopup extends AppCompatActivity implements OnClickListener {
|
||||
|
||||
private StatusUploader uploaderAsync;
|
||||
@ -84,7 +80,7 @@ public class TweetPopup extends AppCompatActivity implements OnClickListener {
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
if (uploaderAsync != null && uploaderAsync.getStatus() == RUNNING)
|
||||
if (uploaderAsync != null && uploaderAsync.getStatus() == Status.RUNNING)
|
||||
uploaderAsync.cancel(true);
|
||||
super.onDestroy();
|
||||
}
|
||||
@ -135,7 +131,7 @@ public class TweetPopup extends AppCompatActivity implements OnClickListener {
|
||||
switch (v.getId()) {
|
||||
case R.id.sendTweet:
|
||||
String tweetStr = tweet.getText().toString();
|
||||
if (uploaderAsync != null && uploaderAsync.getStatus() == RUNNING)
|
||||
if (uploaderAsync != null && uploaderAsync.getStatus() == Status.RUNNING)
|
||||
uploaderAsync.cancel(true);
|
||||
uploaderAsync = new StatusUploader(this, tweetStr, inReplyId);
|
||||
|
||||
|
@ -1,154 +1,81 @@
|
||||
package org.nuclearfog.twidda.window;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.widget.SwipeRefreshLayout;
|
||||
import android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener;
|
||||
import android.support.v4.view.ViewPager;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.view.View;
|
||||
|
||||
import org.nuclearfog.twidda.BuildConfig;
|
||||
import org.nuclearfog.twidda.R;
|
||||
import org.nuclearfog.twidda.adapter.OnItemClickListener;
|
||||
import org.nuclearfog.twidda.adapter.UserAdapter;
|
||||
import org.nuclearfog.twidda.backend.UserLoader;
|
||||
import org.nuclearfog.twidda.backend.items.TwitterUser;
|
||||
import org.nuclearfog.twidda.adapter.UserPagerAdapter;
|
||||
import org.nuclearfog.twidda.adapter.UserPagerAdapter.Mode;
|
||||
import org.nuclearfog.twidda.database.GlobalSettings;
|
||||
|
||||
import static android.os.AsyncTask.Status.RUNNING;
|
||||
import static org.nuclearfog.twidda.backend.UserLoader.Mode.FAVORIT;
|
||||
import static org.nuclearfog.twidda.backend.UserLoader.Mode.FOLLOWERS;
|
||||
import static org.nuclearfog.twidda.backend.UserLoader.Mode.FOLLOWING;
|
||||
import static org.nuclearfog.twidda.backend.UserLoader.Mode.RETWEET;
|
||||
|
||||
/**
|
||||
* User List Activity
|
||||
*
|
||||
* @see UserLoader
|
||||
*/
|
||||
public class UserDetail extends AppCompatActivity implements OnItemClickListener, OnRefreshListener {
|
||||
public class UserDetail extends AppCompatActivity {
|
||||
|
||||
private RecyclerView userList;
|
||||
private SwipeRefreshLayout userReload;
|
||||
private UserAdapter usrAdp;
|
||||
private GlobalSettings settings;
|
||||
private UserLoader userAsync;
|
||||
private int mode;
|
||||
public enum UserType {
|
||||
FOLLOWING,
|
||||
FOLLOWERS,
|
||||
RETWEETS,
|
||||
FAVORITS,
|
||||
}
|
||||
|
||||
private UserType mode;
|
||||
private long id;
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle b) {
|
||||
super.onCreate(b);
|
||||
setContentView(R.layout.page_userlist);
|
||||
|
||||
Bundle param = getIntent().getExtras();
|
||||
if (param != null) {
|
||||
if (BuildConfig.DEBUG && param.size() != 2)
|
||||
throw new AssertionError();
|
||||
mode = param.getInt("mode");
|
||||
if (param != null && param.size() == 2) {
|
||||
mode = (UserType) param.getSerializable("mode");
|
||||
id = param.getLong("ID");
|
||||
} else if (BuildConfig.DEBUG) {
|
||||
throw new AssertionError();
|
||||
}
|
||||
|
||||
UserPagerAdapter adapter;
|
||||
View root = findViewById(R.id.user_view);
|
||||
ViewPager pager = findViewById(R.id.user_pager);
|
||||
Toolbar toolbar = findViewById(R.id.user_toolbar);
|
||||
userReload = findViewById(R.id.user_refresh);
|
||||
userList = findViewById(R.id.userlist);
|
||||
userList.setLayoutManager(new LinearLayoutManager(this));
|
||||
|
||||
GlobalSettings settings = GlobalSettings.getInstance(this);
|
||||
root.setBackgroundColor(settings.getBackgroundColor());
|
||||
setSupportActionBar(toolbar);
|
||||
|
||||
settings = GlobalSettings.getInstance(this);
|
||||
root.setBackgroundColor(settings.getBackgroundColor());
|
||||
userReload.setProgressBackgroundColorSchemeColor(settings.getHighlightColor());
|
||||
|
||||
userReload.setRefreshing(true);
|
||||
userReload.setOnRefreshListener(this);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onStart() {
|
||||
super.onStart();
|
||||
if (userAsync == null) {
|
||||
int titleId;
|
||||
usrAdp = new UserAdapter(this);
|
||||
usrAdp.toggleImage(settings.getImageLoad());
|
||||
usrAdp.setColor(settings.getFontColor());
|
||||
userList.setAdapter(usrAdp);
|
||||
|
||||
switch (mode) {
|
||||
case 0:
|
||||
titleId = R.string.following;
|
||||
userAsync = new UserLoader(UserDetail.this, FOLLOWING);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
titleId = R.string.follower;
|
||||
userAsync = new UserLoader(UserDetail.this, FOLLOWERS);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
titleId = R.string.retweet;
|
||||
userAsync = new UserLoader(UserDetail.this, RETWEET);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
default:
|
||||
titleId = R.string.favorite;
|
||||
userAsync = new UserLoader(UserDetail.this, FAVORIT);
|
||||
break;
|
||||
}
|
||||
userAsync.execute(id, -1L);
|
||||
|
||||
if (getSupportActionBar() != null) {
|
||||
getSupportActionBar().setTitle(titleId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
if (userAsync != null && userAsync.getStatus() == RUNNING)
|
||||
userAsync.cancel(true);
|
||||
super.onStop();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onItemClick(RecyclerView rv, int position) {
|
||||
if (!userReload.isRefreshing() && usrAdp != null) {
|
||||
TwitterUser user = usrAdp.getData(position);
|
||||
long userID = user.getId();
|
||||
String username = user.getScreenname();
|
||||
Intent intent = new Intent(this, UserProfile.class);
|
||||
intent.putExtra("userID", userID);
|
||||
intent.putExtra("username", username);
|
||||
startActivity(intent);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onRefresh() {
|
||||
switch (mode) {
|
||||
case 0:
|
||||
userAsync = new UserLoader(UserDetail.this, FOLLOWING);
|
||||
case FOLLOWING:
|
||||
if (getSupportActionBar() != null)
|
||||
getSupportActionBar().setTitle(R.string.following);
|
||||
adapter = new UserPagerAdapter(getSupportFragmentManager(), Mode.FOLLOWING, id);
|
||||
pager.setAdapter(adapter);
|
||||
break;
|
||||
case 1:
|
||||
userAsync = new UserLoader(UserDetail.this, FOLLOWERS);
|
||||
case FOLLOWERS:
|
||||
if (getSupportActionBar() != null)
|
||||
getSupportActionBar().setTitle(R.string.follower);
|
||||
adapter = new UserPagerAdapter(getSupportFragmentManager(), Mode.FOLLOWERS, id);
|
||||
pager.setAdapter(adapter);
|
||||
break;
|
||||
case 2:
|
||||
userAsync = new UserLoader(UserDetail.this, RETWEET);
|
||||
case RETWEETS:
|
||||
if (getSupportActionBar() != null)
|
||||
getSupportActionBar().setTitle(R.string.retweet);
|
||||
adapter = new UserPagerAdapter(getSupportFragmentManager(), Mode.RETWEETER, id);
|
||||
pager.setAdapter(adapter);
|
||||
break;
|
||||
case FAVORITS:
|
||||
if (getSupportActionBar() != null)
|
||||
getSupportActionBar().setTitle(R.string.favorite);
|
||||
adapter = new UserPagerAdapter(getSupportFragmentManager(), Mode.FAVORS, id);
|
||||
pager.setAdapter(adapter);
|
||||
break;
|
||||
case 3:
|
||||
default:
|
||||
userAsync = new UserLoader(UserDetail.this, FAVORIT);
|
||||
if (BuildConfig.DEBUG)
|
||||
throw new AssertionError("mode failure");
|
||||
break;
|
||||
}
|
||||
userAsync.execute(id, -1L);
|
||||
}
|
||||
}
|
@ -2,6 +2,7 @@ package org.nuclearfog.twidda.window;
|
||||
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.os.AsyncTask.Status;
|
||||
import android.os.Bundle;
|
||||
import android.support.design.widget.TabLayout;
|
||||
import android.support.design.widget.TabLayout.OnTabSelectedListener;
|
||||
@ -14,35 +15,27 @@ import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.widget.TextView;
|
||||
|
||||
import org.nuclearfog.tag.Tagger.OnTagClickListener;
|
||||
import org.nuclearfog.twidda.BuildConfig;
|
||||
import org.nuclearfog.twidda.R;
|
||||
import org.nuclearfog.twidda.adapter.ProfileTabAdapter;
|
||||
import org.nuclearfog.twidda.adapter.ProfilePagerAdapter;
|
||||
import org.nuclearfog.twidda.backend.ProfileLoader;
|
||||
import org.nuclearfog.twidda.backend.ProfileLoader.Mode;
|
||||
import org.nuclearfog.twidda.database.GlobalSettings;
|
||||
|
||||
import java.text.NumberFormat;
|
||||
|
||||
import static android.os.AsyncTask.Status.RUNNING;
|
||||
import static org.nuclearfog.twidda.backend.ProfileLoader.Mode.LDR_PROFILE;
|
||||
import static org.nuclearfog.twidda.window.TweetDetail.STAT_CHANGED;
|
||||
|
||||
/**
|
||||
* User Profile Activity
|
||||
*
|
||||
* @see ProfileLoader
|
||||
*/
|
||||
public class UserProfile extends AppCompatActivity implements OnTagClickListener, OnTabSelectedListener {
|
||||
|
||||
private static final int TWEET = 1;
|
||||
public class UserProfile extends AppCompatActivity implements OnClickListener, OnTagClickListener, OnTabSelectedListener {
|
||||
|
||||
private ProfileLoader profileAsync;
|
||||
private ViewPager pager;
|
||||
private View[] icons;
|
||||
|
||||
private boolean home, isFollowing, isBlocked, isMuted, canDm, requested;
|
||||
private boolean home, isFriend, isBlocked, isMuted, isLocked, canDm, requested;
|
||||
private String username;
|
||||
private long userId;
|
||||
|
||||
@ -53,48 +46,53 @@ public class UserProfile extends AppCompatActivity implements OnTagClickListener
|
||||
super.onCreate(b);
|
||||
setContentView(R.layout.page_profile);
|
||||
|
||||
Bundle param = getIntent().getExtras();
|
||||
if (param != null && param.size() == 2) {
|
||||
userId = param.getLong("userID");
|
||||
username = param.getString("username");
|
||||
} else if (BuildConfig.DEBUG) {
|
||||
throw new AssertionError();
|
||||
}
|
||||
|
||||
Toolbar tool = findViewById(R.id.profile_toolbar);
|
||||
TabLayout tab = findViewById(R.id.profile_tab);
|
||||
TextView bioTxt = findViewById(R.id.bio);
|
||||
TextView lnkTxt = findViewById(R.id.links);
|
||||
View following = findViewById(R.id.following);
|
||||
View follower = findViewById(R.id.follower);
|
||||
View root = findViewById(R.id.user_view);
|
||||
TabLayout tab = findViewById(R.id.profile_tab);
|
||||
pager = findViewById(R.id.profile_pager);
|
||||
Toolbar tool = findViewById(R.id.profile_toolbar);
|
||||
|
||||
setSupportActionBar(tool);
|
||||
if (getSupportActionBar() != null)
|
||||
getSupportActionBar().setDisplayShowTitleEnabled(false);
|
||||
|
||||
Bundle param = getIntent().getExtras();
|
||||
if (param != null) {
|
||||
if (BuildConfig.DEBUG && param.size() != 2)
|
||||
throw new AssertionError();
|
||||
userId = param.getLong("userID");
|
||||
username = param.getString("username");
|
||||
}
|
||||
|
||||
GlobalSettings settings = GlobalSettings.getInstance(this);
|
||||
home = userId == settings.getUserId();
|
||||
|
||||
root.setBackgroundColor(settings.getBackgroundColor());
|
||||
bioTxt.setMovementMethod(ScrollingMovementMethod.getInstance());
|
||||
lnkTxt.setMovementMethod(ScrollingMovementMethod.getInstance());
|
||||
tab.setSelectedTabIndicatorColor(settings.getHighlightColor());
|
||||
bioTxt.setLinkTextColor(settings.getHighlightColor());
|
||||
lnkTxt.setLinkTextColor(settings.getHighlightColor());
|
||||
root.setBackgroundColor(settings.getBackgroundColor());
|
||||
|
||||
icons = new View[2];
|
||||
LayoutInflater inflater = LayoutInflater.from(this);
|
||||
icons[0] = inflater.inflate(R.layout.tab_tw, null);
|
||||
icons[1] = inflater.inflate(R.layout.tab_fa, null);
|
||||
|
||||
ProfileTabAdapter adapter = new ProfileTabAdapter(getSupportFragmentManager(), userId);
|
||||
ProfilePagerAdapter adapter = new ProfilePagerAdapter(getSupportFragmentManager(), userId);
|
||||
pager.setOffscreenPageLimit(2);
|
||||
pager.setAdapter(adapter);
|
||||
tab.setupWithViewPager(pager);
|
||||
tab.addOnTabSelectedListener(this);
|
||||
following.setOnClickListener(this);
|
||||
follower.setOnClickListener(this);
|
||||
|
||||
for(int i = 0 ; i < icons.length ; i++) {
|
||||
for (int i = 0; i < icons.length; i++) {
|
||||
TabLayout.Tab t = tab.getTabAt(i);
|
||||
if(t != null)
|
||||
if (t != null)
|
||||
t.setCustomView(icons[i]);
|
||||
}
|
||||
}
|
||||
@ -103,8 +101,8 @@ public class UserProfile extends AppCompatActivity implements OnTagClickListener
|
||||
@Override
|
||||
protected void onStart() {
|
||||
super.onStart();
|
||||
if(profileAsync == null) {
|
||||
profileAsync = new ProfileLoader(this, LDR_PROFILE);
|
||||
if (profileAsync == null) {
|
||||
profileAsync = new ProfileLoader(this, Mode.LDR_PROFILE);
|
||||
profileAsync.execute(userId);
|
||||
}
|
||||
}
|
||||
@ -112,20 +110,12 @@ public class UserProfile extends AppCompatActivity implements OnTagClickListener
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
if (profileAsync != null && profileAsync.getStatus() == RUNNING)
|
||||
if (profileAsync != null && profileAsync.getStatus() == Status.RUNNING)
|
||||
profileAsync.cancel(true);
|
||||
super.onStop();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int reqCode, int returnCode, Intent i) {
|
||||
if (reqCode == TWEET && returnCode == STAT_CHANGED)
|
||||
profileAsync = null;
|
||||
super.onActivityResult(reqCode, returnCode, i);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu m) {
|
||||
getMenuInflater().inflate(R.menu.profile, m);
|
||||
@ -147,7 +137,7 @@ public class UserProfile extends AppCompatActivity implements OnTagClickListener
|
||||
MenuItem muteIcon = m.findItem(R.id.profile_mute);
|
||||
MenuItem dmIcon = m.findItem(R.id.profile_message);
|
||||
|
||||
if (isFollowing) {
|
||||
if (isFriend) {
|
||||
followIcon.setIcon(R.drawable.follow_enabled);
|
||||
followIcon.setTitle(R.string.unfollow);
|
||||
} else if (requested) {
|
||||
@ -179,7 +169,7 @@ public class UserProfile extends AppCompatActivity implements OnTagClickListener
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
if (profileAsync != null && profileAsync.getStatus() != RUNNING) {
|
||||
if (profileAsync != null && profileAsync.getStatus() != Status.RUNNING) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.profile_tweet:
|
||||
Intent tweet = new Intent(this, TweetPopup.class);
|
||||
@ -190,7 +180,7 @@ public class UserProfile extends AppCompatActivity implements OnTagClickListener
|
||||
|
||||
case R.id.profile_follow:
|
||||
profileAsync = new ProfileLoader(this, ProfileLoader.Mode.ACTION_FOLLOW);
|
||||
if (!isFollowing) {
|
||||
if (!isFriend) {
|
||||
profileAsync.execute(userId);
|
||||
} else {
|
||||
new Builder(this).setMessage(R.string.confirm_unfollow)
|
||||
@ -267,6 +257,28 @@ public class UserProfile extends AppCompatActivity implements OnTagClickListener
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (!isLocked) {
|
||||
switch (v.getId()) {
|
||||
case R.id.following:
|
||||
Intent following = new Intent(this, UserDetail.class);
|
||||
following.putExtra("ID", userId);
|
||||
following.putExtra("mode", UserDetail.UserType.FOLLOWING);
|
||||
startActivity(following);
|
||||
break;
|
||||
|
||||
case R.id.follower:
|
||||
Intent follower = new Intent(this, UserDetail.class);
|
||||
follower.putExtra("ID", userId);
|
||||
follower.putExtra("mode", UserDetail.UserType.FOLLOWERS);
|
||||
startActivity(follower);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onTabSelected(TabLayout.Tab tab) {
|
||||
tabIndex = tab.getPosition();
|
||||
@ -274,11 +286,13 @@ public class UserProfile extends AppCompatActivity implements OnTagClickListener
|
||||
|
||||
|
||||
@Override
|
||||
public void onTabUnselected(TabLayout.Tab tab) { }
|
||||
public void onTabUnselected(TabLayout.Tab tab) {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onTabReselected(TabLayout.Tab tab) { }
|
||||
public void onTabReselected(TabLayout.Tab tab) {
|
||||
}
|
||||
|
||||
|
||||
public void setTweetCount(int tweets, int favors) {
|
||||
@ -290,10 +304,12 @@ public class UserProfile extends AppCompatActivity implements OnTagClickListener
|
||||
}
|
||||
|
||||
|
||||
public void setConnection(boolean isFollowing, boolean isMuted, boolean isBlocked, boolean canDm, boolean requested) {
|
||||
this.isFollowing = isFollowing;
|
||||
public void setConnection(boolean isFriend, boolean isMuted, boolean isBlocked,
|
||||
boolean isLocked, boolean canDm, boolean requested) {
|
||||
this.isFriend = isFriend;
|
||||
this.isMuted = isMuted;
|
||||
this.isBlocked = isBlocked;
|
||||
this.isLocked = isLocked;
|
||||
this.canDm = canDm;
|
||||
this.requested = requested;
|
||||
}
|
||||
|
@ -10,17 +10,10 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/bar_wide" />
|
||||
|
||||
<android.support.v4.widget.SwipeRefreshLayout
|
||||
android:id="@+id/user_refresh"
|
||||
<android.support.v4.view.ViewPager
|
||||
android:id="@+id/user_pager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<android.support.v7.widget.RecyclerView
|
||||
android:id="@+id/userlist"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
</android.support.v4.widget.SwipeRefreshLayout>
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
|
||||
</LinearLayout>
|
@ -20,7 +20,6 @@
|
||||
android:textSize="10sp" />
|
||||
|
||||
<View
|
||||
android:id="@+id/favor_divider"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="2dp"
|
||||
android:layout_marginTop="2dp" />
|
||||
|
@ -1,18 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
android:id="@android:id/icon"
|
||||
android:layout_width="@dimen/tab_icon_size"
|
||||
android:layout_height="@dimen/tab_icon_size" />
|
||||
|
||||
<TextView
|
||||
android:id="@android:id/text1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
</LinearLayout>
|
@ -1,22 +0,0 @@
|
||||
<?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:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center_horizontal"
|
||||
android:orientation="vertical"
|
||||
android:paddingTop="@dimen/tab_padding_top">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="@dimen/tab_icon_size"
|
||||
android:layout_height="@dimen/tab_icon_size"
|
||||
android:contentDescription="@string/profile_tweets"
|
||||
app:srcCompat="@drawable/search" />
|
||||
|
||||
<View
|
||||
android:id="@+id/ts_divider"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/tab_div_height"
|
||||
android:layout_marginTop="@dimen/tab_div_margin" />
|
||||
|
||||
</LinearLayout>
|
@ -20,7 +20,6 @@
|
||||
android:textSize="10sp" />
|
||||
|
||||
<View
|
||||
android:id="@+id/tweet_divider"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="2dp"
|
||||
android:layout_marginTop="2dp" />
|
||||
|
@ -1,22 +0,0 @@
|
||||
<?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:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center_horizontal"
|
||||
android:orientation="vertical"
|
||||
android:paddingTop="@dimen/tab_padding_top">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="@dimen/tab_icon_size"
|
||||
android:layout_height="@dimen/tab_icon_size"
|
||||
android:contentDescription="@string/profile_tweets"
|
||||
app:srcCompat="@drawable/user" />
|
||||
|
||||
<View
|
||||
android:id="@+id/us_divider"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/tab_div_height"
|
||||
android:layout_marginTop="@dimen/tab_div_margin" />
|
||||
|
||||
</LinearLayout>
|
@ -49,9 +49,6 @@
|
||||
<dimen name="editprofile_padding">20dp</dimen>
|
||||
|
||||
<!--Tabs-->
|
||||
<dimen name="tab_icon_size">24dp</dimen>
|
||||
<dimen name="tab_div_height">2dp</dimen>
|
||||
<dimen name="tab_div_margin">12dp</dimen>
|
||||
<dimen name="tab_padding_top">5dp</dimen>
|
||||
|
||||
<!--Text limitation-->
|
||||
|
@ -52,10 +52,6 @@
|
||||
<item name="android:fontFamily">RobotoTextView</item>
|
||||
</style>
|
||||
|
||||
<style name="CustomTabLayout" parent="Widget.Design.TabLayout">
|
||||
<item name="tabTextAppearance">@style/CustomTextAppearance</item>
|
||||
</style>
|
||||
|
||||
<style name="CustomTextAppearance" parent="TextAppearance.Design.Tab">
|
||||
<item name="android:textAllCaps">false</item>
|
||||
</style>
|
||||
|
@ -6,7 +6,7 @@ buildscript {
|
||||
google()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.4.0'
|
||||
classpath 'com.android.tools.build:gradle:3.3.1'
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user