package com.xda.one.ui.thread;
import com.xda.one.R;
import com.xda.one.api.inteface.ThreadClient;
import com.xda.one.constants.XDAConstants;
import com.xda.one.model.augmented.AugmentedUnifiedThread;
import com.xda.one.ui.BaseActivity;
import com.xda.one.ui.ThreadAdapter;
import com.xda.one.ui.helper.ActionModeHelper;
import com.xda.one.util.AccountUtils;
import com.xda.one.util.UIUtils;
import android.app.Activity;
import android.content.Intent;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.view.ActionMode;
import android.support.v7.widget.ShareActionProvider;
import android.view.Menu;
import android.view.MenuItem;
public class ThreadActionModeHelper extends ActionModeHelper.RecyclerViewActionModeCallback {
private final Activity mActivity;
private final ThreadClient mThreadClient;
private ActionModeHelper mModeHelper;
private ThreadAdapter mAdapter;
private ShareActionProvider mShareActionProvider;
private MenuItem mSubscribeItem;
public ThreadActionModeHelper(final Activity activity,
final ThreadClient threadClient) {
mActivity = activity;
mThreadClient = threadClient;
}
public void setAdapter(final ThreadAdapter adapter) {
mAdapter = adapter;
}
@Override
public boolean onCreateActionMode(final ActionMode actionMode, final Menu menu) {
final BaseActivity baseActivity = UIUtils.getBaseActivity(mActivity);
baseActivity.getMenuInflater().inflate(R.menu.thread_fragment_cab, menu);
final MenuItem shareMenuItem = menu.findItem(R.id.thread_fragment_cab_share);
// Fetch and store ShareActionProvider
mShareActionProvider = (ShareActionProvider) MenuItemCompat
.getActionProvider(shareMenuItem);
// Get the subscribed menu item
mSubscribeItem = menu.findItem(R.id.thread_fragment_cab_subscribe);
return true;
}
@Override
public boolean onPrepareActionMode(final ActionMode actionMode, final Menu menu) {
if (mModeHelper.getCheckedItemCount() == 1) {
updateShareIntent();
final boolean visible = AccountUtils.isAccountAvailable(mActivity);
mSubscribeItem.setVisible(visible);
if (visible) {
final boolean subscribed = getCheckedThread().isSubscribed();
mSubscribeItem.setIcon(subscribed
? R.drawable.ic_action_star
: R.drawable.ic_action_star_outline);
}
}
return true;
}
private void updateShareIntent() {
final Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_SUBJECT, getCheckedThread().getTitle());
sendIntent.putExtra(Intent.EXTRA_TEXT, XDAConstants.XDA_FORUM_URL +
getCheckedThread().getWebUri());
sendIntent.setType("text/plain");
mShareActionProvider.setShareIntent(sendIntent);
}
public AugmentedUnifiedThread getCheckedThread() {
return mAdapter.getThread(mModeHelper.getCheckedPositions().get(0));
}
@Override
public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.thread_fragment_cab_subscribe:
mThreadClient.toggleSubscribeAsync(getCheckedThread());
break;
}
actionMode.finish();
return true;
}
@Override
public void onCheckedStateChanged(final ActionMode actionMode, final int position,
final boolean isNowChecked) {
actionMode.invalidate();
}
public void setModeHelper(final ActionModeHelper modeHelper) {
mModeHelper = modeHelper;
}
}