Guest User

Untitled

a guest
Jun 20th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.00 KB | None | 0 0
  1. private void switchToListMode(String text) {
  2. mEditTextList.removeAllViews();
  3. String[] items = text.split("n");
  4. int index = 0;
  5. for (String item : items) {
  6. if(!TextUtils.isEmpty(item)) {
  7. mEditTextList.addView(getListItem(item, index));
  8. index++;
  9. }
  10. }
  11. mEditTextList.addView(getListItem("", index));
  12. mEditTextList.getChildAt(index).findViewById(R.id.et_edit_text).requestFocus();
  13.  
  14. mNoteEditor.setVisibility(View.GONE);
  15. mEditTextList.setVisibility(View.VISIBLE);
  16. }
  17.  
  18. private Spannable getHighlightQueryResult(String fullText, String userQuery) {
  19. SpannableString spannable = new SpannableString(fullText == null ? "" : fullText);
  20. if (!TextUtils.isEmpty(userQuery)) {
  21. mPattern = Pattern.compile(userQuery);
  22. Matcher m = mPattern.matcher(fullText);
  23. int start = 0;
  24. while (m.find(start)) {
  25. spannable.setSpan(
  26. new BackgroundColorSpan(this.getResources().getColor(
  27. R.color.user_query_highlight)), m.start(), m.end(),
  28. Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
  29. start = m.end();
  30. }
  31. }
  32. return spannable;
  33. }
  34.  
  35. private View getListItem(String item, int index) {
  36. View view = LayoutInflater.from(this).inflate(R.layout.note_edit_list_item, null);
  37. final NoteEditText edit = (NoteEditText) view.findViewById(R.id.et_edit_text);
  38. edit.setTextAppearance(this, TextAppearanceResources.getTexAppearanceResource(mFontSizeId));
  39. CheckBox cb = ((CheckBox) view.findViewById(R.id.cb_edit_item));
  40. cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
  41. public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
  42. if (isChecked) {
  43. edit.setPaintFlags(edit.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
  44. } else {
  45. edit.setPaintFlags(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG);
  46. }
  47. }
  48. });
  49.  
  50. if (item.startsWith(TAG_CHECKED)) {
  51. cb.setChecked(true);
  52. edit.setPaintFlags(edit.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
  53. item = item.substring(TAG_CHECKED.length(), item.length()).trim();
  54. } else if (item.startsWith(TAG_UNCHECKED)) {
  55. cb.setChecked(false);
  56. edit.setPaintFlags(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG);
  57. item = item.substring(TAG_UNCHECKED.length(), item.length()).trim();
  58. }
  59.  
  60. edit.setOnTextViewChangeListener(this);
  61. edit.setIndex(index);
  62. edit.setText(getHighlightQueryResult(item, mUserQuery));
  63. return view;
  64. }
  65.  
  66. public void onTextChange(int index, boolean hasText) {
  67. if (index >= mEditTextList.getChildCount()) {
  68. Log.e(TAG, "Wrong index, should not happen");
  69. return;
  70. }
  71. if(hasText) {
  72. mEditTextList.getChildAt(index).findViewById(R.id.cb_edit_item).setVisibility(View.VISIBLE);
  73. } else {
  74. mEditTextList.getChildAt(index).findViewById(R.id.cb_edit_item).setVisibility(View.GONE);
  75. }
  76. }
  77.  
  78. public void onCheckListModeChanged(int oldMode, int newMode) {
  79. if (newMode == TextNote.MODE_CHECK_LIST) {
  80. switchToListMode(mNoteEditor.getText().toString());
  81. } else {
  82. if (!getWorkingText()) {
  83. mWorkingNote.setWorkingText(mWorkingNote.getContent().replace(TAG_UNCHECKED + " ",
  84. ""));
  85. }
  86. mNoteEditor.setText(getHighlightQueryResult(mWorkingNote.getContent(), mUserQuery));
  87. mEditTextList.setVisibility(View.GONE);
  88. mNoteEditor.setVisibility(View.VISIBLE);
  89. }
  90. }
  91.  
  92. private boolean getWorkingText() {
  93. boolean hasChecked = false;
  94. if (mWorkingNote.getCheckListMode() == TextNote.MODE_CHECK_LIST) {
  95. StringBuilder sb = new StringBuilder();
  96. for (int i = 0; i < mEditTextList.getChildCount(); i++) {
  97. View view = mEditTextList.getChildAt(i);
  98. NoteEditText edit = (NoteEditText) view.findViewById(R.id.et_edit_text);
  99. if (!TextUtils.isEmpty(edit.getText())) {
  100. if (((CheckBox) view.findViewById(R.id.cb_edit_item)).isChecked()) {
  101. sb.append(TAG_CHECKED).append(" ").append(edit.getText()).append("n");
  102. hasChecked = true;
  103. } else {
  104. sb.append(TAG_UNCHECKED).append(" ").append(edit.getText()).append("n");
  105.  
  106. }
  107. }
  108. }
  109. mWorkingNote.setWorkingText(sb.toString());
  110. } else {
  111. mWorkingNote.setWorkingText(mNoteEditor.getText().toString());
  112. }
  113. return hasChecked;
  114. }
  115.  
  116. private boolean saveNote() {
  117. getWorkingText();
  118. boolean saved = mWorkingNote.saveNote();
  119. if (saved) {
  120. /**
  121. * There are two modes from List view to edit view, open one note,
  122. * create/edit a node. Opening node requires to the original
  123. * position in the list when back from edit view, while creating a
  124. * new node requires to the top of the list. This code
  125. * {@link #RESULT_OK} is used to identify the create/edit state
  126. */
  127. setResult(RESULT_OK);
  128. }
  129. return saved;
  130. }
Add Comment
Please, Sign In to add comment