/*
* Copyright (c) 2012 Hai Bison
*
* See the file LICENSE at the root directory of this project for copying
* permission.
*/
package group.pals.android.lib.ui.filechooser.utils.ui;
import group.pals.android.lib.ui.filechooser.IFileAdapter;
import group.pals.android.lib.ui.filechooser.IFileDataModel;
import group.pals.android.lib.ui.filechooser.R;
import group.pals.android.lib.ui.filechooser.io.IFile;
import group.pals.android.lib.ui.filechooser.services.IFileProvider;
import group.pals.android.lib.ui.filechooser.services.IFileProvider.FilterMode;
import group.pals.android.lib.ui.filechooser.utils.history.History;
import java.util.ArrayList;
import java.util.List;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
/**
* Utilities for editor context menu.
*
* @author Hai Bison
* @since v4.3 beta
*
*/
public class ViewFilesContextMenuUtils {
/**
* Shows history contents to the user. He can clear all items.
*
* @param context
* {@link Context}
* @param fileProvider
* {@link IFileProvider}
* @param history
* {@link History} of {@link IFile}.
* @param currentLocation
* current location, will not be shown.
* @param listener
* will be notified after the user closed the dialog, or when the
* user selects an item.
*/
public static void doShowHistoryContents(final Context context, final IFileProvider fileProvider,
final History<IFile> history, IFile currentLocation, final TaskListener listener) {
if (history.isEmpty())
return;
final AlertDialog _dialog = Dlg.newDlg(context);
// don't use Cancel button
_dialog.setButton(DialogInterface.BUTTON_NEGATIVE, null, (DialogInterface.OnClickListener) null);
_dialog.setIcon(android.R.drawable.ic_dialog_info);
_dialog.setTitle(R.string.afc_title_history);
List<IFileDataModel> data = new ArrayList<IFileDataModel>();
ArrayList<IFile> items = history.items();
for (int i = items.size() - 1; i >= 0; i--) {
IFile f = items.get(i);
if (f == currentLocation)
continue;
// check for duplicates
boolean duplicated = false;
for (int j = 0; j < data.size(); j++) {
if (f.equalsToPath(data.get(j).getFile())) {
duplicated = true;
break;
}
}
if (!duplicated)
data.add(new IFileDataModel(f));
}
final IFileAdapter _adapter = new IFileAdapter(context, data, FilterMode.DirectoriesOnly, false);
ListView listView = (ListView) LayoutInflater.from(context).inflate(R.layout.afc_listview_files, null);
listView.setBackgroundResource(0);
listView.setFastScrollEnabled(true);
listView.setAdapter(_adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (listener != null) {
_dialog.dismiss();
listener.onFinish(true, _adapter.getItem(position).getFile());
}
}
});// OnItemClickListener
_dialog.setView(listView);
_dialog.setButton(DialogInterface.BUTTON_POSITIVE, context.getString(R.string.afc_cmd_clear),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
history.clear();
}
});
_dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
if (listener != null)
listener.onFinish(true, null);
}
});
_dialog.show();
}// doShowHistoryContents()
}