package com.jackpf.apkdownloader;
import java.io.File;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ListView;
import com.actionbarsherlock.view.ActionMode;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
public class Helpers
{
/**
* Context menu action mode
*/
public static ActionMode mActionMode;
/**
* Add a long click triggered context menu to a listview
*
* @param list
* @param m
* @param callback
*/
public static void addContextMenu(final ListView list, final int m, final ContextMenuCallback callback)
{
final ActionMode.Callback mActionModeCallback = new ActionMode.Callback()
{
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(m, menu);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false; // Return false if nothing is done
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
if (callback.onActionItemClicked(mode, item)) {
mode.finish();
}
return true;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
mActionMode = null;
list.setItemChecked(-1, true);
}
};
list.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
if (mActionMode != null) {
return false;
}
mActionMode = callback.startActionMode(mActionModeCallback);
list.setItemChecked(position, true);
return true;
}
});
}
/**
* Context menu callback interface
*/
public interface ContextMenuCallback
{
public ActionMode startActionMode(ActionMode.Callback callback);
public boolean onActionItemClicked(ActionMode mode, MenuItem item);
}
/**
* Install a given file via package installer
*
* @param context
* @param file
*/
public static void installFile(Context context, File file)
{
if (file != null) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
}