package ru.bsuirhelper.android.ui.notes; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.Spinner; import com.google.analytics.tracking.android.EasyTracker; import ru.bsuirhelper.android.ApplicationSettings; import ru.bsuirhelper.android.R; import ru.bsuirhelper.android.core.notes.Note; import ru.bsuirhelper.android.core.notes.NoteDatabase; import ru.bsuirhelper.android.core.schedule.Lesson; import ru.bsuirhelper.android.core.schedule.ScheduleDatabase; import java.util.ArrayList; import java.util.HashSet; import java.util.Set; /** * Created by Влад on 01.11.13. */ public class ActivityEditNote extends ActionBarActivity { public static final int REQUEST_CODE_ADD_NOTE = 0; public static final int REQUEST_CODE_EDIT_NOTE = 1; private NoteDatabase mNoteDatabase; private ScheduleDatabase mScheduleDatabase; private EditText noteTitle; private EditText noteText; private int mNoteId = -1; private int mLessonId = -1; private Note mNoteEditable; private Spinner mSpinner; private int mRequestCode; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_editnote); mNoteDatabase = NoteDatabase.getInstance(getApplicationContext()); mScheduleDatabase = new ScheduleDatabase(getApplicationContext()); noteTitle = (EditText) findViewById(R.id.edittext_createnotetitle); noteText = (EditText) findViewById(R.id.edittext_createnotetext); createSpinnerFromLessons(); Intent startIntent = getIntent(); mRequestCode = startIntent.getIntExtra("REQUEST_CODE", 0); mNoteId = startIntent.getIntExtra("note_id", -1); mLessonId = startIntent.getIntExtra("lesson_id", -1); if (mRequestCode == REQUEST_CODE_EDIT_NOTE) { mNoteEditable = mNoteDatabase.fetchNote(mNoteId); noteTitle.setText(mNoteEditable.title); noteText.setText(mNoteEditable.text); if (mSpinner.getVisibility() != View.INVISIBLE) { ArrayAdapter<String> adapter = (ArrayAdapter<String>) mSpinner.getAdapter(); int position = adapter.getPosition(mNoteEditable.subject); mSpinner.setSelection(position); //Disable spinner because note for lesson from schedule if (mLessonId != -1) { mSpinner.setEnabled(false); } } } else if (mRequestCode == REQUEST_CODE_ADD_NOTE && mSpinner.getVisibility() != View.INVISIBLE) { if (mLessonId != -1) { String subject = startIntent.getStringExtra("lesson_subject"); ArrayAdapter<String> adapter = (ArrayAdapter<String>) mSpinner.getAdapter(); int position = adapter.getPosition(subject); mSpinner.setSelection(position); mSpinner.setEnabled(false); } } } @Override public void onResume() { super.onResume(); } @Override public void onStart() { super.onStart(); EasyTracker.getInstance(this).activityStart(this); } @Override public void onStop() { super.onStop(); EasyTracker.getInstance(this).activityStop(this); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_createnote_activity_actions, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem menu) { switch (menu.getItemId()) { case R.id.action_cancelcreatenote: finish(); return true; case R.id.action_createnote: if (noteTitle.getText().length() != 0) { Note note = new Note(noteTitle.getText().toString(), noteText.getText().toString(), mSpinner.getVisibility() == View.INVISIBLE ? "" : mSpinner.getSelectedItem().toString(), System.currentTimeMillis()); note.lesson_id = mLessonId; if (mRequestCode == REQUEST_CODE_EDIT_NOTE) { mNoteDatabase.updateNote(mNoteId, note); } else if (mRequestCode == REQUEST_CODE_ADD_NOTE) { mNoteDatabase.addNote(note); } } finish(); return true; default: return super.onOptionsItemSelected(menu); } } private void createSpinnerFromLessons() { String groupId = ApplicationSettings.getInstance( getApplicationContext()).getString("defaultgroup", null); mSpinner = (Spinner) findViewById(R.id.spinner_subjects); if (groupId != null) { ArrayList<Lesson> lessons = mScheduleDatabase.fetchAllLessons(groupId); Set<String> subjects = new HashSet<String>(lessons.size()); ArrayList<String> list = new ArrayList<String>(subjects); for (Lesson lesson : lessons) { subjects.add(lesson.fields.get("subject") + " " + lesson.fields.get("subjectType")); } list.addAll(subjects); ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, list); mSpinner.setAdapter(spinnerAdapter); mSpinner.setVisibility(View.VISIBLE); } else { mSpinner.setVisibility(View.INVISIBLE); } } }