package com.quemb.qmbform.sample.controller;
import com.quemb.qmbform.FormManager;
import com.quemb.qmbform.OnFormRowClickListener;
import com.quemb.qmbform.annotation.FormDescriptorAnnotationFactory;
import com.quemb.qmbform.descriptor.CellDescriptor;
import com.quemb.qmbform.descriptor.FormDescriptor;
import com.quemb.qmbform.descriptor.FormItemDescriptor;
import com.quemb.qmbform.descriptor.OnFormRowValueChangedListener;
import com.quemb.qmbform.descriptor.RowDescriptor;
import com.quemb.qmbform.descriptor.Value;
import com.quemb.qmbform.sample.R;
import com.quemb.qmbform.sample.model.Entry;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
/**
* Created by tonimoeckel on 17.07.14.
*/
public class SampleAnnotationFormFragment extends Fragment implements OnFormRowValueChangedListener,
OnFormRowClickListener{
private ListView mListView;
private HashMap<String, Value<?>> mChangesMap = new HashMap<String, Value<?>>();;
private MenuItem mSaveMenuItem;
public static String TAG = "SampleFormFragment";
public static final SampleAnnotationFormFragment newInstance()
{
SampleAnnotationFormFragment f = new SampleAnnotationFormFragment();
return f;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.form_sample, container, false);
mListView = (ListView) v.findViewById(R.id.list);
return v;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Entry entry = new Entry();
entry.display = "Its me";
entry.title = "Hello";
entry.description = "World";
entry.date = new Date();
entry.dateInline = new Date();
entry.multiValue = new ArrayList<String>();
entry.multiValue.add("multiple");
entry.multiValue.add("tags");
entry.multiValue.add("allowed");
// More styles and colors for cells
//HashMap<String, Object> cellConfig = new HashMap<>(8);
// TextAppearance for section, label, value and button
//cellConfig.put(CellDescriptor.APPEARANCE_SECTION, Integer.valueOf(R.style.TextAppearance_Form_Section));
//cellConfig.put(CellDescriptor.APPEARANCE_TEXT_LABEL, Integer.valueOf(R.style.TextAppearance_Form_Label));
//cellConfig.put(CellDescriptor.APPEARANCE_TEXT_VALUE, Integer.valueOf(R.style.TextAppearance_Form_Value));
//cellConfig.put(CellDescriptor.APPEARANCE_BUTTON, Integer.valueOf(R.style.TextAppearance_Form_Button));
// color for label and value
//cellConfig.put(CellDescriptor.COLOR_LABEL, Integer.valueOf(0x80C0FFC0));
//cellConfig.put(CellDescriptor.COLOR_VALUE, Integer.valueOf(0xC0C0FFC0));
// Disabled color for label and value
//cellConfig.put(CellDescriptor.COLOR_LABEL_DISABLED, Integer.valueOf(0x80FFC0C0));
//cellConfig.put(CellDescriptor.COLOR_VALUE_DISABLED, Integer.valueOf(0xC0FFC0C0));
FormDescriptorAnnotationFactory factory = new FormDescriptorAnnotationFactory(getActivity());
FormDescriptor descriptor = factory.createFormDescriptorFromAnnotatedClass(entry);
//FormDescriptor descriptor = factory.createFormDescriptorFromAnnotatedClass(entry, cellConfig);
FormManager formManager = new FormManager();
formManager.setup(descriptor, mListView, getActivity());
formManager.setOnFormRowClickListener(this);
formManager.setOnFormRowValueChangedListener(this);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.sample, menu);
mSaveMenuItem = menu.findItem(R.id.action_save);
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
updateSaveItem();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item == mSaveMenuItem){
mChangesMap.clear();
updateSaveItem();
}
return super.onOptionsItemSelected(item);
}
@Override
public void onFormRowClick(FormItemDescriptor itemDescriptor) {
}
@Override
public void onValueChanged(RowDescriptor rowDescriptor, Value<?> oldValue, Value<?> newValue) {
Log.d(TAG, "Value Changed: " + rowDescriptor.getTitle());
// Log.d(TAG, "Old Value: "+oldValue);
// Log.d(TAG, "New Value: "+newValue);
mChangesMap.put(rowDescriptor.getTag(), newValue);
updateSaveItem();
}
private void updateSaveItem() {
mSaveMenuItem.setVisible(mChangesMap.size()>0);
}
}