package treehou.se.habit.ui.control;
import android.graphics.PorterDuff;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import io.realm.Realm;
import treehou.se.habit.R;
import treehou.se.habit.core.db.model.controller.ControllerDB;
import treehou.se.habit.ui.colorpicker.ColorDialog;
public class EditControllerSettingsActivity extends AppCompatActivity implements ColorDialog.ColorDialogCallback {
public static final String ARG_ID = "ARG_ID";
private EditText txtName;
private Button btnColor;
private CheckBox cbxAsNotification;
private ControllerDB controller;
private Realm realm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_controller_settings);
realm = Realm.getDefaultInstance();
if (getIntent().getExtras() != null) {
long id = getIntent().getExtras().getLong(ARG_ID);
controller = ControllerDB.load(realm, id);
}
txtName = (EditText) findViewById(R.id.txt_name);
txtName.setText(controller.getName());
btnColor = (Button) findViewById(R.id.btn_color);
btnColor.setOnClickListener(v -> {
FragmentManager fragmentManager = getSupportFragmentManager();
Fragment fragment = ColorDialog.instance();
fragmentManager.beginTransaction()
.add(fragment, "colordialog")
.commit();
});
cbxAsNotification = (CheckBox) findViewById(R.id.as_notification);
cbxAsNotification.setChecked(controller.isShowNotification());
cbxAsNotification.setOnCheckedChangeListener((buttonView, isChecked) -> {
realm.beginTransaction();
controller.setShowNotification(isChecked);
realm.commitTransaction();
if(controller.isShowNotification()) {
ControlHelper.showNotification(EditControllerSettingsActivity.this, controller);
}else {
ControlHelper.hideNotification(EditControllerSettingsActivity.this, controller);
}
});
updateColorPalette(controller.getColor());
findViewById(R.id.container).setOnClickListener(v -> finish());
}
/**
* Update ui to match color set.
*
* @param color the color to use as base.
*/
public void updateColorPalette(int color){
btnColor.getBackground().setColorFilter(color, PorterDuff.Mode.MULTIPLY);
}
@Override
protected void onPause() {
super.onPause();
realm.beginTransaction();
controller.setName(txtName.getText().toString());
realm.commitTransaction();
finish();
}
@Override
protected void onDestroy() {
super.onDestroy();
realm.close();
}
@Override
public void finish() {
super.finish();
overridePendingTransition(0, 0);
}
@Override
public void setColor(int color) {
realm.beginTransaction();
controller.setColor(color);
realm.commitTransaction();
btnColor.getBackground().setColorFilter(color, PorterDuff.Mode.MULTIPLY);
}
}