package biz.shadowservices.DegreesToolbox.Preferences;
import com.actionbarsherlock.app.SherlockActivity;
import yuku.ambilwarna.AmbilWarnaDialog;
import yuku.ambilwarna.AmbilWarnaDialog.OnAmbilWarnaListener;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import biz.shadowservices.DegreesToolbox.R;
import biz.shadowservices.DegreesToolbox.UpdateWidgetService;
import biz.shadowservices.DegreesToolbox.Values;
import biz.shadowservices.DegreesToolbox.WidgetInstance;
public class WidgetPreferencesActivity extends SherlockActivity {
private static String TAG = "2DegreesPreferencesActivity";
private WidgetInstance widget;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.widget_preferences);
Button save = (Button) findViewById(R.id.widgetPrefsSave);
save.setOnClickListener(saveListener);
Button cancel = (Button) findViewById(R.id.widgetPrefsCancel);
cancel.setOnClickListener(cancelListener);
SeekBar s = (SeekBar) findViewById(R.id.transparencySeekBar);
s.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
TextView transparencyTextView = (TextView) ((View) seekBar.getParent()).findViewById(R.id.transparencyPercentageText);
transparencyTextView.setText(Integer.toString(progress));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {}
});
Gallery g = (Gallery) findViewById(R.id.gallery);
g.setAdapter(new ImageAdapter(this));
g.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
//Toast.makeText(WidgetPreferencesActivity.this, "" + position, Toast.LENGTH_SHORT).show();
View parentObj = (View) parent.getParent();
if (parent != null) {
ImageView preview = (ImageView) parentObj.findViewById(R.id.previewImage);
preview.setImageResource(Values.backgroundIds[position]);
}
}
});
Button editTextColour = (Button) findViewById(R.id.widgetPreferencesSetTextColor);
editTextColour.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
AmbilWarnaDialog dialog = new AmbilWarnaDialog(v.getContext(), widget.getTextColor(v.getContext()), onColorSelected );
dialog.show();
}
});
}
@Override
public void onResume() {
super.onResume();
widget = (WidgetInstance) getIntent().getSerializableExtra("widget");
TextView widgetName = (TextView) findViewById(R.id.WidgetName);
widgetName.setText(widget.toString());
Gallery g = (Gallery) findViewById(R.id.gallery);
Log.d(TAG, "background:" + widget.getSelectedBackgroundId(this));
int background = widget.getSelectedBackgroundId(this);
g.setSelection(background);
ImageView preview = (ImageView) findViewById(R.id.previewImage);
preview.setImageResource(Values.backgroundIds[background]);
SeekBar s = (SeekBar) findViewById(R.id.transparencySeekBar);
s.setProgress(widget.getTransparency(this));
}
@Override
public void onPause() {
super.onPause();
saveChanges();
}
private void saveChanges() {
Gallery g = (Gallery) findViewById(R.id.gallery);
widget.setSelectedBackgroundId(this, g.getSelectedItemPosition());
SeekBar s = (SeekBar) findViewById(R.id.transparencySeekBar);
widget.setTransparency(this, s.getProgress());
Log.d(TAG, "Started from preferences activity.");
startService(new Intent(this, UpdateWidgetService.class));
}
private OnAmbilWarnaListener onColorSelected = new OnAmbilWarnaListener() {
@Override
public void onOk(AmbilWarnaDialog dialog, int color) {
widget.setTextColor(WidgetPreferencesActivity.this, color);
}
@Override
public void onCancel(AmbilWarnaDialog dialog) {
// cancel was selected by the user
}
};
private OnClickListener saveListener = new OnClickListener() {
public void onClick(View v) {
saveChanges();
finish();
}
};
private OnClickListener cancelListener = new OnClickListener() {
public void onClick(View v) {
finish();
}
};
}
class ImageAdapter extends BaseAdapter {
int mGalleryItemBackground;
private Context mContext;
public ImageAdapter(Context c) {
mContext = c;
/* TypedArray a = obtainStyledAttributes(R.styleable.HelloGallery);
mGalleryItemBackground = a.getResourceId(
R.styleable.HelloGallery_android_galleryItemBackground, 0);
a.recycle();*/
}
public int getCount() {
return Values.backgroundIds.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView i = new ImageView(mContext);
i.setImageResource(Values.backgroundIds[position]);
i.setLayoutParams(new Gallery.LayoutParams(150, 100));
i.setScaleType(ImageView.ScaleType.FIT_XY);
i.setBackgroundResource(mGalleryItemBackground);
return i;
}
}