package org.softeg.slartus.forpdaplus.classes;
import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.LinearLayout;
import org.softeg.slartus.forpdaplus.classes.common.ExtBitmap;
import java.io.IOException;
import java.io.InputStream;
/**
* Created by IntelliJ IDEA.
* User: slinkin
* Date: 17.10.12
* Time: 9:42
* To change this template use File | Settings | File Templates.
*/
public abstract class BbCodesBasePanel {
protected Context mContext;
private IGetBitmap m_GetBitmapFunc;
protected LinearLayout lnrBbCodes;
protected EditText txtPost;
public interface IGetBitmap {
Bitmap getBitmap(Context context, String filePath) throws IOException;
}
public Context getContext() {
return mContext;
}
public BbCodesBasePanel(Context context, Gallery gallery, EditText editText) {
this(context, gallery, editText, new IGetBitmap() {
@Override
public Bitmap getBitmap(Context context, String filePath) throws IOException {
return ExtBitmap.getBitmapFromAsset(context, filePath);
}
});
}
public BbCodesBasePanel(Context context, Gallery gallery, EditText editText,
IGetBitmap getBitmap) {
mContext = context;
m_GetBitmapFunc = getBitmap;
initVars();
gallery.setAdapter(new ImageAdapter(context, getImages()));
txtPost = editText;
gallery.setSelection(3, true);
}
protected void initVars() {
}
protected abstract BbImage[] getImages();
/**
* Helper Functions
*
* @throws IOException
*/
protected Bitmap getBitmapFromAsset(String strName) throws IOException {
AssetManager assetManager = mContext.getAssets();
// BufferedInputStream buf = new BufferedInputStream(assetManager.open(strName));
InputStream istr = assetManager.open(strName);
Bitmap bitmap = BitmapFactory.decodeStream(istr);
return bitmap;
}
public class ImageAdapter extends BaseAdapter {
/**
* The parent context
*/
private Context myContext;
private float m_Density;
// Put some images to project-folder: /res/drawable/
// format: jpg, gif, png, bmp, ...
private BbImage[] m_Images = null;
/**
* Simple Constructor saving the 'parent' context.
*/
public ImageAdapter(Context c, BbImage[] images) {
this.myContext = c;
m_Images = images;
m_Density = mContext.getResources().getDisplayMetrics().density;
}
// inherited abstract methods - must be implemented
// Returns count of images, and individual IDs
public int getCount() {
return m_Images.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
// Returns a new ImageView to be displayed,
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
// Get a View to display image data
convertView = new ImageView(this.myContext);
((ImageView) convertView).setScaleType(ImageView.ScaleType.FIT_END);
// Set the Width & Height of the individual images
convertView.setLayoutParams(new Gallery.LayoutParams((int) (m_Density * 30), (int) (m_Density * 30)));
}
try {
((ImageView) convertView).setImageBitmap(m_GetBitmapFunc.getBitmap(mContext, m_Images[position].FilePath));
convertView.setTag(m_Images[position]);
} catch (IOException e) {
e.printStackTrace();
}
return convertView;
}
}
}