package org.theotech.ceaselessandroid.fragment;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import com.google.android.gms.analytics.Tracker;
import com.tokenautocomplete.TokenCompleteTextView;
import org.theotech.ceaselessandroid.CeaselessApplication;
import org.theotech.ceaselessandroid.R;
import org.theotech.ceaselessandroid.cache.CacheManager;
import org.theotech.ceaselessandroid.cache.LocalDailyCacheManagerImpl;
import org.theotech.ceaselessandroid.note.NoteManager;
import org.theotech.ceaselessandroid.note.NoteManagerImpl;
import org.theotech.ceaselessandroid.person.PersonManager;
import org.theotech.ceaselessandroid.person.PersonManagerImpl;
import org.theotech.ceaselessandroid.realm.pojo.NotePOJO;
import org.theotech.ceaselessandroid.realm.pojo.PersonPOJO;
import org.theotech.ceaselessandroid.util.AnalyticsUtils;
import org.theotech.ceaselessandroid.util.CommonUtils;
import org.theotech.ceaselessandroid.util.Constants;
import org.theotech.ceaselessandroid.view.PersonsCompletionView;
import java.util.ArrayList;
import java.util.List;
import butterknife.Bind;
import butterknife.ButterKnife;
public class AddNoteFragment extends Fragment {
@Bind(R.id.note_tags)
PersonsCompletionView noteTags;
@Bind(R.id.add_note_text)
EditText noteText;
@Bind(R.id.cancel_note)
Button cancelNote;
@Bind(R.id.save_note)
Button saveNote;
private List<PersonPOJO> taggedPeople = new ArrayList<>();
private PersonManager personManager = null;
private NoteManager noteManager = null;
private CacheManager cacheManager = null;
private String noteId = null;
private Tracker mTracker;
private static final String TAG = AddNoteFragment.class.getSimpleName();
public AddNoteFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(false);
taggedPeople = new ArrayList<>();
personManager = PersonManagerImpl.getInstance(getActivity());
noteManager = NoteManagerImpl.getInstance(getActivity());
cacheManager = LocalDailyCacheManagerImpl.getInstance(getActivity());
CeaselessApplication application = (CeaselessApplication) getActivity().getApplication();
mTracker = application.getDefaultTracker();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// set title
getActivity().setTitle(getString(R.string.person_add_note));
// create view and bind
View view = inflater.inflate(R.layout.fragment_add_note, container, false);
ButterKnife.bind(this, view);
// add current person to the list of taggedPeople (if we're on a page that shows a person)
Bundle bundle = getArguments();
if (bundle != null) {
if (bundle.containsKey(Constants.PERSON_ID_BUNDLE_ARG)) {
String personId = bundle.getString(Constants.PERSON_ID_BUNDLE_ARG);
if (personId != null) {
noteTags.addObject(personManager.getPerson(personId));
}
}
if (bundle.containsKey(Constants.NOTE_ID_BUNDLE_ARG)) {
noteId = bundle.getString(Constants.NOTE_ID_BUNDLE_ARG);
NotePOJO note = noteManager.getNote(noteId);
noteText.setText(note.getText());
if (note.getPeopleTagged() != null) {
for (String personId : note.getPeopleTagged()) {
noteTags.addObject(personManager.getPerson(personId));
}
}
}
}
// wire the note tags
List<PersonPOJO> allPersonPOJOs = personManager.getActivePeople();
noteTags.setAdapter(new ArrayAdapter<>(getActivity(), android.R.layout.simple_dropdown_item_1line, allPersonPOJOs));
noteTags.setTokenListener(new TokenCompleteTextView.TokenListener<PersonPOJO>() {
@Override
public void onTokenAdded(PersonPOJO token) {
taggedPeople.add(token);
}
@Override
public void onTokenRemoved(PersonPOJO token) {
taggedPeople.remove(token);
}
});
// wire the buttons
saveNote.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
hideKeyboard();
if (noteId != null) {
noteManager.editNote(noteId, null, noteText.getText().toString(), taggedPeople);
} else {
noteManager.addNote(null, noteText.getText().toString(), taggedPeople);
}
// simulate back button press to exit this fragment
getActivity().onBackPressed();
}
});
cancelNote.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
hideKeyboard();
// simulate back button press to exit this fragment
getActivity().onBackPressed();
}
});
return view;
}
private void hideKeyboard() {
CommonUtils.hideKeyboard(getActivity());
}
@Override
public void onResume() {
super.onResume();
AnalyticsUtils.sendScreenViewHit(mTracker, "NoteScreen");
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
}
@Override
public void onPause() {
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
super.onPause();
}
}