package com.mygeopay.wallet.util;
import android.app.Activity;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.ShareCompat;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.view.ActionMode;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;
import com.mygeopay.core.coins.CoinType;
import com.mygeopay.core.util.GenericUtils;
import com.mygeopay.wallet.AddressBookProvider;
import com.mygeopay.wallet.R;
import com.mygeopay.wallet.ui.EditAddressBookEntryFragment;
import org.bitcoinj.core.Address;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author John L. Jegutanis
*/
public class UiUtils {
private static final Logger log = LoggerFactory.getLogger(UiUtils.class);
static public void share(Activity activity, String text) {
ShareCompat.IntentBuilder builder = ShareCompat.IntentBuilder.from(activity)
.setType("text/plain")
.setText(text);
activity.startActivity(Intent.createChooser(
builder.getIntent(),
activity.getString(R.string.action_share)));
}
public static class AddressActionModeCallback implements ActionMode.Callback {
private final Address address;
private final Context context;
private final FragmentManager fragmentManager;
public AddressActionModeCallback(final Address address,
final Context context,
final FragmentManager fragmentManager) {
this.address = address;
this.context = context;
this.fragmentManager = fragmentManager;
}
public Address getAddress() {
return address;
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
mode.getMenuInflater().inflate(R.menu.address_options, menu);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
final String label = AddressBookProvider.resolveLabel(context, address);
mode.setTitle(label != null ? label : GenericUtils.addressSplitToGroups(address));
return true;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.action_edit_label:
EditAddressBookEntryFragment.edit(fragmentManager, address);
mode.finish();
return true;
case R.id.action_copy:
UiUtils.copy(context, address.toString());
mode.finish();
return true;
}
return false;
}
@Override public void onDestroyActionMode(ActionMode actionMode) { }
}
public static ActionMode startActionMode(final Activity activity, final ActionMode.Callback callback) {
if (activity == null || !(activity instanceof ActionBarActivity)) {
log.warn("To show action mode, your activity must extend " + ActionBarActivity.class);
return null;
}
return ((ActionBarActivity) activity).startSupportActionMode(callback);
}
public static ActionMode startAddressActionMode(final Address address,
final Activity activity,
final FragmentManager fragmentManager) {
return startActionMode(activity,
new AddressActionModeCallback(address, activity, fragmentManager));
}
public static void copy(Context context, String string) {
Object clipboardService = context.getSystemService(Context.CLIPBOARD_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
ClipboardManager clipboard = (ClipboardManager) clipboardService;
clipboard.setPrimaryClip(ClipData.newPlainText("simple text", string));
} else {
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) clipboardService;
clipboard.setText(string);
}
Toast.makeText(context, R.string.copied_to_clipboard, Toast.LENGTH_SHORT).show();
}
public static void setVisible(View view) {
setVisibility(view, View.VISIBLE);
}
public static void setInvisible(View view) {
setVisibility(view, View.INVISIBLE);
}
public static void setGone(View view) {
setVisibility(view, View.GONE);
}
public static void setVisibility(View view, int visibility) {
if (view.getVisibility() != visibility) view.setVisibility(visibility);
}
}