package com.jasonette.seed.Component; import android.content.Context; import android.graphics.PorterDuff; import android.util.Log; import android.view.View; import android.widget.SeekBar; import com.jasonette.seed.Core.JasonViewActivity; import com.jasonette.seed.Helper.JasonHelper; import org.json.JSONObject; public class JasonSliderComponent { public static View build(View view, final JSONObject component, final JSONObject parent, final Context context) { if(view == null) { return new SeekBar(context); } else { try { view = JasonComponent.build(view, component, parent, context); SeekBar seekBar = ((SeekBar) view); if(component.has("name")){ String val = "0.5"; if(((JasonViewActivity) context).model.var.has(component.getString("name"))){ val = ((JasonViewActivity) context).model.var.getString(component.getString("name")); } else { // default value if(component.has("value")){ val = component.getString("value"); } } seekBar.setProgress((int)Math.round(Double.parseDouble(val)*100.0)); JasonSliderComponent.addListener(seekBar, context); } JSONObject style = JasonHelper.style(component, context); if (style.has("color")) { int color = JasonHelper.parse_color(style.getString("color")); seekBar.getProgressDrawable().setColorFilter(color, PorterDuff.Mode.SRC_IN); seekBar.getThumb().setColorFilter(color, PorterDuff.Mode.SRC_IN); } else { // maybe it's not necessary seekBar.getProgressDrawable().clearColorFilter(); // it's necessary seekBar.getThumb().clearColorFilter(); } view.requestLayout(); return view; } catch (Exception e){ Log.d("Error", e.toString()); return new View(context); } } } public static void addListener(final SeekBar view, final Context root_context){ SeekBar.OnSeekBarChangeListener seekListener = new SeekBar.OnSeekBarChangeListener() { public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { } public void onStartTrackingTouch(SeekBar seekBar) { } public void onStopTrackingTouch(SeekBar seekBar) { JSONObject component = (JSONObject)seekBar.getTag(); try { // don't work with int if progress == 0 String progress = Double.toString(seekBar.getProgress()/100.0); ((JasonViewActivity) root_context).model.var.put(component.getString("name"), progress); if (component.has("action")) { JSONObject action = component.getJSONObject("action"); ((JasonViewActivity) root_context).call(action.toString(), new JSONObject().toString(), "{}", view.getContext()); } } catch (Exception e) { Log.d("Error", e.toString()); } } }; view.setOnSeekBarChangeListener(seekListener); } }