package com.openerp.addons.note; import java.util.ArrayList; import java.util.List; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.text.method.ScrollingMovementMethod; 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.Toast; import com.openerp.R; import com.openerp.addons.message.MessageComposeActivity; import com.openerp.addons.note.Note.NoteToggleStatus; import com.openerp.orm.OEDataRow; import com.openerp.orm.OEHelper; import com.openerp.support.BaseFragment; import com.openerp.support.fragment.FragmentListener; import com.openerp.util.HTMLHelper; import com.openerp.util.controls.OETextView; import com.openerp.util.drawer.DrawerItem; import com.openerp.util.tags.MultiTagsTextView.TokenListener; import com.openerp.util.tags.TagsItem; import com.openerp.util.tags.TagsView; public class NoteDetail extends BaseFragment implements TokenListener { public static final String TAG = "com.openerp.addons.note.NoteDetail"; View mView = null; Bundle mArgument = null; OETextView mNoteDetailTitle; OETextView mNoteDetailMemo; TagsView mNoteTags = null; int mStageColor = 0; String mPadURL = ""; String mNoteMemo = ""; String mMessageBody = ""; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { setHasOptionsMenu(true); mView = inflater.inflate(R.layout.fragment_note_detail, container, false); return mView; } @Override public void onStart() { super.onStart(); Bundle bundle = getArguments(); if (bundle != null) { mArgument = bundle; if (mArgument.containsKey("stage_color")) { View vStageColor = (View) mView .findViewById(R.id.viewNoteStageColor); vStageColor.setBackgroundColor(mArgument.getInt("stage_color")); mStageColor = mArgument.getInt("stage_color"); } } } private void showNoteDetails(int note_id) { mNoteDetailTitle = (OETextView) mView .findViewById(R.id.txvNoteDetailTitle); mNoteDetailMemo = (OETextView) mView .findViewById(R.id.txvNoteDetailMemo); mNoteTags = (TagsView) mView.findViewById(R.id.edtNoteTagsView); mNoteTags.setTokenListener(this); mNoteTags.setCustomTagView(new TagsView.CustomTagViewListener() { @Override public View getViewForTags(LayoutInflater layoutInflater, Object object, ViewGroup tagsViewGroup) { View view = (View) layoutInflater.inflate( R.layout.custom_note_tagsview_item, tagsViewGroup, false); TagsItem item = (TagsItem) object; OETextView txvTitle = (OETextView) view .findViewById(R.id.txvCustomNoteTagsViewItem); txvTitle.setText(item.getSubject()); txvTitle.setBackgroundColor(mStageColor); return view; } }); for (Object tag : mNoteTags.getObjects()) { mNoteTags.removeObject(tag); } mNoteTags.allowDuplicates(false); mNoteDetailMemo.setMovementMethod(new ScrollingMovementMethod()); OEDataRow result = db().select(note_id); if (!result.getString("note_pad_url").equals("false")) { mPadURL = result.getString("note_pad_url"); } mNoteMemo = result.getString("memo"); List<TagsItem> noteTags = new ArrayList<TagsItem>(); mNoteTags.showImage(false); for (OEDataRow tag : result.getM2MRecord("tag_ids").browseEach()) { TagsItem tag_item = new TagsItem(tag.getInt("id"), tag.getString("name"), null); noteTags.add(tag_item); mNoteTags.addObject(tag_item); } if (noteTags.size() == 0) { mNoteTags.setVisibility(View.GONE); } mMessageBody = result.getString("memo"); mNoteDetailTitle.setText(result.getString("name")); mNoteDetailMemo.setText(HTMLHelper.stringToHtml(result .getString("memo"))); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_fragment_note_detail, menu); // disabling the Compose Note option cause you are already in that menu if (getArguments() != null) { mArgument = getArguments(); boolean open = mArgument.getBoolean("row_status"); if (open) { MenuItem mark_as_open = menu .findItem(R.id.menu_note_mark_asopen); mark_as_open.setVisible(false); } else { MenuItem mark_as_done = menu .findItem(R.id.menu_note_mark_asdone); mark_as_done.setVisible(false); } } } @Override public boolean onOptionsItemSelected(MenuItem item) { NoteToggleStatus status = null; Note note = new Note(); switch (item.getItemId()) { case R.id.menu_note_followers: NoteFollowers noteFollowers = new NoteFollowers(); Bundle args = new Bundle(); args.putInt("note_id", mArgument.getInt("note_id")); args.putString("note_name", mNoteDetailTitle.getText().toString()); noteFollowers.setArguments(args); FragmentListener mFragment = (FragmentListener) getActivity(); mFragment.startDetailFragment(noteFollowers); return true; case R.id.menu_note_forward_asmail: Intent sendAsMail = new Intent(getActivity(), MessageComposeActivity.class); sendAsMail.putExtra("note_body", mMessageBody); getActivity().startActivity(sendAsMail); return true; case R.id.menu_note_mark_asdone: status = note.new NoteToggleStatus(mArgument.getInt("note_id"), true, getActivity()); status.execute(); return true; case R.id.menu_note_mark_asopen: status = note.new NoteToggleStatus(mArgument.getInt("note_id"), false, getActivity()); status.execute(); return true; case R.id.menu_note_edit: Intent manageNote = new Intent(getActivity(), NoteComposeActivity.class); Bundle noteArgs = new Bundle(); noteArgs.putInt("note_id", mArgument.getInt("note_id")); manageNote.putExtras(noteArgs); startActivity(manageNote); return true; case R.id.menu_note_delete: confirmDeleteNote(mArgument.getInt("note_id")); return true; default: return super.onOptionsItemSelected(item); } } public void confirmDeleteNote(final int id) { AlertDialog.Builder deleteDialogConfirm = new AlertDialog.Builder( getActivity()); deleteDialogConfirm.setTitle("Delete"); deleteDialogConfirm.setMessage("Are you sure want to delete ?"); deleteDialogConfirm.setCancelable(true); deleteDialogConfirm.setPositiveButton("Delete", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { OEHelper oe = db().getOEInstance(); if (oe != null) { oe.delete(id); getActivity().getSupportFragmentManager() .popBackStack(); } else { Toast.makeText(getActivity(), "Operation aborted. No connection.", Toast.LENGTH_LONG).show(); } } }); deleteDialogConfirm.setNegativeButton("Cancel", null); deleteDialogConfirm.show(); } @Override public void onResume() { super.onResume(); showNoteDetails(getArguments().getInt("note_id")); } @Override public Object databaseHelper(Context context) { return new NoteDB(context); } @Override public List<DrawerItem> drawerMenus(Context context) { return null; } @Override public void onTokenAdded(Object token, View view) { } @Override public void onTokenSelected(Object token, View view) { } @Override public void onTokenRemoved(Object token) { mNoteTags.addObject(token); } }