package it.geosolutions.android.map.activities;
import it.geosolutions.android.map.BuildConfig;
import it.geosolutions.android.map.R;
import android.content.Intent;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import com.actionbarsherlock.app.SherlockActivity;
/**
* shows a seekbar to select the opacity for MBTiles Layer
*
* between 25 % and 100 %
*
* @author Robert Oehler
*
*/
public class MBTilesLayerOpacitySettingActivity extends SherlockActivity implements OnSeekBarChangeListener{
public static String MBTILES_OPACITY_ID = "mbtiles_opacity";
private TextView seekbar_tv;
private SeekBar seekbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mbtiles_opacity_setting_layout);
seekbar = (SeekBar) findViewById(R.id.opacity_setting_seekBar);
seekbar_tv = (TextView) findViewById(R.id.opacity_setting_seekbar_textView);
final Button confirmButton = (Button) findViewById(R.id.opacity_setting_confirmbutton);
final int currentValue = PreferenceManager.getDefaultSharedPreferences(getBaseContext()).getInt(MBTILES_OPACITY_ID, 192);
//there is no setMin, so the value has to be converted always
seekbar.setMax(75);
final double percent = ((double) currentValue / 256) * 100;
seekbar_tv.setText(String.format("%.0f %%", percent));
seekbar.setProgress(((int) percent) - 25 );
if(BuildConfig.DEBUG){
Log.d(MBTilesLayerOpacitySettingActivity.class.getSimpleName(), "current "+currentValue+" percent "+percent);
}
seekbar.setOnSeekBarChangeListener(this);
confirmButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//save new
saveCurrentValue();
finish();
}
});
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {
int newRealValue = progress + 25;
seekbar_tv.setText(String.format("%d %%", newRealValue));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) { }
@Override
public void onStopTrackingTouch(SeekBar seekBar) { }
@Override
public void onBackPressed() {
saveCurrentValue();
super.onBackPressed();
}
private void saveCurrentValue() {
final Editor ed = PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit();
final int valueInPercent = seekbar.getProgress() + 25;
final int valueInBit = (int) (256 * ((double)valueInPercent / 100));
ed.putInt(MBTILES_OPACITY_ID, valueInBit);
ed.commit();
if(BuildConfig.DEBUG){
Log.d(MBTilesLayerOpacitySettingActivity.class.getSimpleName(), "saved percent "+valueInPercent+" to bit "+valueInBit);
}
Intent returnIntent = new Intent();
setResult(RESULT_OK,returnIntent);
finish();
}
}