/*
 * Copyright 2014 A.C.R. Development
 */
package acr.browser.lightning;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.RelativeLayout;

public class DisplaySettingsActivity extends ThemableSettingsActivity {

	// mPreferences variables
	private PreferenceManager mPreferences;
	private CheckBox cbHideStatusBar, cbFullScreen, cbWideViewPort, cbOverView, cbTextReflow,
			cbDarkTheme;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.display_settings);

		Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
		setSupportActionBar(toolbar);
		getSupportActionBar().setDisplayHomeAsUpEnabled(true);

		mPreferences = PreferenceManager.getInstance();
		initialize();
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		finish();
		return true;
	}

	private void initialize() {

		RelativeLayout rHideStatusBar, rFullScreen, rWideViewPort, rOverView, rTextReflow, rTextSize, rDarkTheme;
		LayoutClickListener clickListener = new LayoutClickListener();
		CheckBoxToggleListener toggleListener = new CheckBoxToggleListener();

		rHideStatusBar = (RelativeLayout) findViewById(R.id.rHideStatusBar);
		rFullScreen = (RelativeLayout) findViewById(R.id.rFullScreen);
		rWideViewPort = (RelativeLayout) findViewById(R.id.rWideViewPort);
		rOverView = (RelativeLayout) findViewById(R.id.rOverView);
		rTextReflow = (RelativeLayout) findViewById(R.id.rTextReflow);
		rTextSize = (RelativeLayout) findViewById(R.id.rTextSize);
		rDarkTheme = (RelativeLayout) findViewById(R.id.rDarkTheme);
		
		rHideStatusBar.setOnClickListener(clickListener);
		rFullScreen.setOnClickListener(clickListener);
		rWideViewPort.setOnClickListener(clickListener);
		rOverView.setOnClickListener(clickListener);
		rTextReflow.setOnClickListener(clickListener);
		rTextSize.setOnClickListener(clickListener);
		rDarkTheme.setOnClickListener(clickListener);

		cbHideStatusBar = (CheckBox) findViewById(R.id.cbHideStatusBar);
		cbFullScreen = (CheckBox) findViewById(R.id.cbFullScreen);
		cbWideViewPort = (CheckBox) findViewById(R.id.cbWideViewPort);
		cbOverView = (CheckBox) findViewById(R.id.cbOverView);
		cbTextReflow = (CheckBox) findViewById(R.id.cbTextReflow);
		cbDarkTheme = (CheckBox) findViewById(R.id.cbDarkTheme);

		cbHideStatusBar.setChecked(mPreferences.getHideStatusBarEnabled());
		cbFullScreen.setChecked(mPreferences.getFullScreenEnabled());
		cbWideViewPort.setChecked(mPreferences.getUseWideViewportEnabled());
		cbOverView.setChecked(mPreferences.getOverviewModeEnabled());
		cbTextReflow.setChecked(mPreferences.getTextReflowEnabled());
		cbDarkTheme.setChecked(mPreferences.getUseDarkTheme());

		cbHideStatusBar.setOnCheckedChangeListener(toggleListener);
		cbFullScreen.setOnCheckedChangeListener(toggleListener);
		cbWideViewPort.setOnCheckedChangeListener(toggleListener);
		cbOverView.setOnCheckedChangeListener(toggleListener);
		cbTextReflow.setOnCheckedChangeListener(toggleListener);
		cbDarkTheme.setOnCheckedChangeListener(toggleListener);
	}

	private class LayoutClickListener implements OnClickListener {

		@Override
		public void onClick(View v) {
			switch (v.getId()) {
				case R.id.rHideStatusBar:
					cbHideStatusBar.setChecked(!cbHideStatusBar.isChecked());
					break;
				case R.id.rFullScreen:
					cbFullScreen.setChecked(!cbFullScreen.isChecked());
					break;
				case R.id.rWideViewPort:
					cbWideViewPort.setChecked(!cbWideViewPort.isChecked());
					break;
				case R.id.rOverView:
					cbOverView.setChecked(!cbOverView.isChecked());
					break;
				case R.id.rTextReflow:
					cbTextReflow.setChecked(!cbTextReflow.isChecked());
					break;
				case R.id.rTextSize:
					textSizePicker();
					break;
				case R.id.rDarkTheme:
					cbDarkTheme.setChecked(!cbDarkTheme.isChecked());
					break;
			}
		}

	}

	private class CheckBoxToggleListener implements OnCheckedChangeListener {

		@Override
		public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
			switch (buttonView.getId()) {
				case R.id.cbHideStatusBar:
					mPreferences.setHideStatusBarEnabled(isChecked);
					break;
				case R.id.cbFullScreen:
					mPreferences.setFullScreenEnabled(isChecked);
					break;
				case R.id.cbWideViewPort:
					mPreferences.setUseWideViewportEnabled(isChecked);
					break;
				case R.id.cbOverView:
					mPreferences.setOverviewModeEnabled(isChecked);
					break;
				case R.id.cbTextReflow:
					mPreferences.setTextReflowEnabled(isChecked);
					break;
				case R.id.cbDarkTheme:
					mPreferences.setUseDarkTheme(isChecked);
					restart();
					break;
			}
		}

	}

	private void textSizePicker() {
		AlertDialog.Builder picker = new AlertDialog.Builder(DisplaySettingsActivity.this);
		picker.setTitle(getResources().getString(R.string.title_text_size));

		int n = mPreferences.getTextSize();

		picker.setSingleChoiceItems(R.array.text_size, n - 1,
				new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						mPreferences.setTextSize(which + 1);
					}
				});
		picker.setNeutralButton(getResources().getString(R.string.action_ok),
				new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {

					}
				});
		picker.show();
	}
}
