[Android] Re,pve Prompt.java
This commit is contained in:
parent
1046540866
commit
5a62e305f6
|
@ -1,159 +0,0 @@
|
||||||
/****************************************************************************
|
|
||||||
* *
|
|
||||||
* Project64 - A Nintendo 64 emulator. *
|
|
||||||
* http://www.pj64-emu.com/ *
|
|
||||||
* Copyright (C) 2012 Project64. All rights reserved. *
|
|
||||||
* *
|
|
||||||
* License: *
|
|
||||||
* GNU/GPLv2 http://www.gnu.org/licenses/gpl-2.0.html *
|
|
||||||
* *
|
|
||||||
****************************************************************************/
|
|
||||||
package emu.project64.dialog;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import emu.project64.R;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.text.TextUtils;
|
|
||||||
import android.view.LayoutInflater;
|
|
||||||
import android.view.View;
|
|
||||||
import android.view.ViewGroup;
|
|
||||||
import android.widget.ArrayAdapter;
|
|
||||||
import android.widget.ImageView;
|
|
||||||
import android.widget.TextView;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A utility class that generates dialogs to prompt the user for information.
|
|
||||||
*/
|
|
||||||
public final class Prompt
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* An interface that simplifies the population of list items.
|
|
||||||
*
|
|
||||||
* @param <T> The type of the data to be wrapped.
|
|
||||||
* @see Prompt#createAdapter(Context, List, int, int, ListItemPopulator)
|
|
||||||
*/
|
|
||||||
public interface ListItemPopulator<T>
|
|
||||||
{
|
|
||||||
public void onPopulateListItem( T item, int position, View view );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An interface that simplifies the population of list items having two text fields and an icon.
|
|
||||||
*
|
|
||||||
* @param <T> The type of the data to be wrapped.
|
|
||||||
* @see Prompt#createAdapter(Context, List, ListItemTwoTextIconPopulator)
|
|
||||||
*/
|
|
||||||
public interface ListItemTwoTextIconPopulator<T>
|
|
||||||
{
|
|
||||||
public void onPopulateListItem( T item, int position, TextView text1, TextView text2,
|
|
||||||
ImageView icon );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a {@link ListAdapter} where each list item has a specified layout.
|
|
||||||
*
|
|
||||||
* @param <T> The type of the data to be wrapped.
|
|
||||||
* @param context The current context.
|
|
||||||
* @param items The data source for the list items.
|
|
||||||
* @param layoutResId The layout resource to be used for each list item.
|
|
||||||
* @param textResId The {@link TextView} resource within the layout to be populated by default.
|
|
||||||
* @param populator The object to populate the fields in each list item.
|
|
||||||
*
|
|
||||||
* @return An adapter that can be used to create list dialogs.
|
|
||||||
*/
|
|
||||||
public static <T> ArrayAdapter<T> createAdapter( Context context, List<T> items,
|
|
||||||
final int layoutResId, final int textResId, final ListItemPopulator<T> populator )
|
|
||||||
{
|
|
||||||
return new ArrayAdapter<T>( context, layoutResId, textResId, items )
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public View getView( int position, View convertView, ViewGroup parent )
|
|
||||||
{
|
|
||||||
View row;
|
|
||||||
if( convertView == null )
|
|
||||||
{
|
|
||||||
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(
|
|
||||||
Context.LAYOUT_INFLATER_SERVICE );
|
|
||||||
row = (View) inflater.inflate( layoutResId, null );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
row = (View) convertView;
|
|
||||||
}
|
|
||||||
|
|
||||||
populator.onPopulateListItem( getItem( position ), position, row );
|
|
||||||
return row;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a {@link ListAdapter} where each list item has two text fields and an icon.
|
|
||||||
*
|
|
||||||
* @param <T> The type of the data to be wrapped.
|
|
||||||
* @param context The activity context.
|
|
||||||
* @param items The data source for list items.
|
|
||||||
* @param populator The object to populate the fields in each list item.
|
|
||||||
*
|
|
||||||
* @return An adapter that can be used to create list dialogs.
|
|
||||||
*/
|
|
||||||
public static <T> ArrayAdapter<T> createAdapter( Context context, List<T> items,
|
|
||||||
final ListItemTwoTextIconPopulator<T> populator )
|
|
||||||
{
|
|
||||||
return createAdapter( context, items, R.layout.list_item_two_text_icon, R.id.text1,
|
|
||||||
new ListItemPopulator<T>()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void onPopulateListItem( T item, int position, View view )
|
|
||||||
{
|
|
||||||
TextView text1 = (TextView) view.findViewById( R.id.text1 );
|
|
||||||
TextView text2 = (TextView) view.findViewById( R.id.text2 );
|
|
||||||
ImageView icon = (ImageView) view.findViewById( R.id.icon );
|
|
||||||
populator.onPopulateListItem( item, position, text1, text2, icon );
|
|
||||||
}
|
|
||||||
} );
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ArrayAdapter<String> createFilenameAdapter( Context context, List<String> paths,
|
|
||||||
final List<CharSequence> names )
|
|
||||||
{
|
|
||||||
return createAdapter( context, paths, new ListItemTwoTextIconPopulator<String>()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void onPopulateListItem( String path, int position, TextView text1,
|
|
||||||
TextView text2, ImageView icon )
|
|
||||||
{
|
|
||||||
if( !TextUtils.isEmpty( path ) )
|
|
||||||
{
|
|
||||||
String name = names.get( position ).toString();
|
|
||||||
if( name.equals( ".." ) )
|
|
||||||
{
|
|
||||||
text1.setText( R.string.pathPreference_parentFolder );
|
|
||||||
icon.setVisibility( View.VISIBLE );
|
|
||||||
icon.setImageResource( R.drawable.ic_arrow_u );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
File file = new File( path );
|
|
||||||
text1.setText( name );
|
|
||||||
if( file.isDirectory() )
|
|
||||||
{
|
|
||||||
icon.setVisibility( View.VISIBLE );
|
|
||||||
icon.setImageResource( R.drawable.ic_folder );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
icon.setVisibility( View.GONE );
|
|
||||||
icon.setImageResource( 0 );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
text2.setVisibility( View.GONE );
|
|
||||||
text2.setText( null );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} );
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue