package info.justaway; import android.app.ActionBar; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v4.view.ViewPager; import android.view.Menu; import android.view.MenuItem; import android.widget.TextView; import butterknife.ButterKnife; import butterknife.Bind; import butterknife.OnClick; import info.justaway.adapter.SimplePagerAdapter; import info.justaway.fragment.list.UserListStatusesFragment; import info.justaway.fragment.list.UserMemberFragment; import info.justaway.model.TwitterManager; import info.justaway.model.UserListCache; import info.justaway.util.MessageUtil; import info.justaway.util.ThemeUtil; import twitter4j.ResponseList; import twitter4j.UserList; public class UserListActivity extends FragmentActivity { @Bind(R.id.users_label) TextView mUsersLabel; @Bind(R.id.tweets_label) TextView mTweetsLabel; @Bind(R.id.list_pager) ViewPager mListPager; private UserList mUserList; private Boolean mIsFollowing; private int mCurrentPosition = 0; private int mColorBlue; private int mColorWhite; private final static int MENU_CREATE = 1; private final static int MENU_DESTROY = 2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ThemeUtil.setTheme(this); setContentView(R.layout.activity_user_list); ButterKnife.bind(this); ActionBar actionBar = getActionBar(); if (actionBar != null) { actionBar.setHomeButtonEnabled(true); actionBar.setDisplayHomeAsUpEnabled(true); } Intent intent = getIntent(); mUserList = (UserList) intent.getSerializableExtra("userList"); if (mUserList == null) { return; } mIsFollowing = mUserList.isFollowing(); mColorBlue = ThemeUtil.getThemeTextColor(R.attr.holo_blue); mColorWhite = ThemeUtil.getThemeTextColor(R.attr.text_color); mUsersLabel.setTextColor(mColorBlue); setTitle(mUserList.getFullName()); /** * スワイプで動かせるタブを実装するのに最低限必要な実装 */ SimplePagerAdapter pagerAdapter = new SimplePagerAdapter(this, mListPager); Bundle args = new Bundle(); args.putLong("listId", mUserList.getId()); pagerAdapter.addTab(UserMemberFragment.class, args); pagerAdapter.addTab(UserListStatusesFragment.class, args); pagerAdapter.notifyDataSetChanged(); mListPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { if (position == 0) { mUsersLabel.setTextColor(mColorBlue); } else { mTweetsLabel.setTextColor(mColorBlue); } if (mCurrentPosition == 0) { mUsersLabel.setTextColor(mColorWhite); } else { mTweetsLabel.setTextColor(mColorWhite); } mCurrentPosition = position; } }); } @OnClick(R.id.users_label) void onClickUsersLabel() { mListPager.setCurrentItem(0); } @OnClick(R.id.tweets_label) void onClickTweetsLabel() { mListPager.setCurrentItem(1); } @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(Menu.NONE, MENU_CREATE, Menu.NONE, R.string.menu_create_user_list_subscription); menu.add(Menu.NONE, MENU_DESTROY, Menu.NONE, R.string.menu_destroy_user_list_subscription); return true; } @Override public boolean onPrepareOptionsMenu(Menu menu) { MenuItem create = menu.findItem(MENU_CREATE); MenuItem destroy = menu.findItem(MENU_DESTROY); if (create == null || destroy == null) { return false; } if (mIsFollowing) { create.setVisible(false); destroy.setVisible(true); } else { create.setVisible(true); destroy.setVisible(false); } return super.onPrepareOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); break; case MENU_CREATE: new AsyncTask<Void, Void, Boolean>() { @Override protected Boolean doInBackground(Void... params) { try { TwitterManager.getTwitter().createUserListSubscription(mUserList.getId()); return true; } catch (Exception e) { e.printStackTrace(); return false; } } @Override protected void onPostExecute(Boolean success) { if (success) { MessageUtil.showToast(R.string.toast_create_user_list_subscription_success); mIsFollowing = true; ResponseList<UserList> userLists = UserListCache.getUserLists(); if (userLists != null) { userLists.add(0, mUserList); } } else { MessageUtil.showToast(R.string.toast_create_user_list_subscription_failure); } } }.execute(); break; case MENU_DESTROY: new AsyncTask<Void, Void, Boolean>() { @Override protected Boolean doInBackground(Void... params) { try { TwitterManager.getTwitter().destroyUserListSubscription(mUserList.getId()); return true; } catch (Exception e) { e.printStackTrace(); return false; } } @Override protected void onPostExecute(Boolean success) { if (success) { MessageUtil.showToast(R.string.toast_destroy_user_list_subscription_success); mIsFollowing = false; ResponseList<UserList> userLists = UserListCache.getUserLists(); if (userLists != null) { userLists.remove(mUserList); } } else { MessageUtil.showToast(R.string.toast_destroy_user_list_subscription_failure); } } }.execute(); break; } return true; } }