Loading app/src/main/java/it/niedermann/owncloud/notes/android/fragment/NoteEditFragment.java +20 −18 Original line number Diff line number Diff line Loading @@ -3,7 +3,6 @@ package it.niedermann.owncloud.notes.android.fragment; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import androidx.annotation.Nullable; import android.text.Editable; import android.text.TextWatcher; import android.util.Log; Loading @@ -18,12 +17,14 @@ import com.yydcdut.markdown.syntax.edit.EditFactory; import com.yydcdut.rxmarkdown.RxMDEditText; import com.yydcdut.rxmarkdown.RxMarkdown; import androidx.annotation.Nullable; import butterknife.BindView; import butterknife.ButterKnife; import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.model.CloudNote; import it.niedermann.owncloud.notes.util.ICallback; import it.niedermann.owncloud.notes.util.MarkDownUtil; import it.niedermann.owncloud.notes.util.StyleCallback; import rx.Subscriber; public class NoteEditFragment extends BaseNoteFragment { Loading Loading @@ -137,6 +138,7 @@ public class NoteEditFragment extends BaseNoteFragment { editContent.setText(charSequence, TextView.BufferType.SPANNABLE); } }); editContent.setCustomSelectionActionModeCallback(new StyleCallback(this.editContent)); } @Override Loading app/src/main/java/it/niedermann/owncloud/notes/android/fragment/NotePreviewFragment.java +1 −5 Original line number Diff line number Diff line package it.niedermann.owncloud.notes.android.fragment; import android.os.Bundle; import androidx.annotation.Nullable; import androidx.core.content.res.ResourcesCompat; import androidx.core.content.res.TypedArrayUtils; import androidx.core.text.TextUtilsCompat; import android.text.method.LinkMovementMethod; import android.util.Log; import android.view.LayoutInflater; Loading @@ -18,6 +13,7 @@ import com.yydcdut.markdown.syntax.text.TextFactory; import com.yydcdut.rxmarkdown.RxMDTextView; import com.yydcdut.rxmarkdown.RxMarkdown; import androidx.annotation.Nullable; import butterknife.BindView; import butterknife.ButterKnife; import it.niedermann.owncloud.notes.R; Loading app/src/main/java/it/niedermann/owncloud/notes/util/StyleCallback.java 0 → 100644 +68 −0 Original line number Diff line number Diff line package it.niedermann.owncloud.notes.util; import android.graphics.Typeface; import android.text.SpannableStringBuilder; import android.text.style.StyleSpan; import android.view.ActionMode; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.widget.TextView; import it.niedermann.owncloud.notes.R; public class StyleCallback implements ActionMode.Callback { private TextView textView; public StyleCallback(TextView textView) { this.textView = textView; } @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { MenuInflater inflater = mode.getMenuInflater(); inflater.inflate(R.menu.style, menu); menu.removeItem(android.R.id.selectAll); return true; } @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) { return false; } @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { int start = textView.getSelectionStart(); int end = textView.getSelectionEnd(); SpannableStringBuilder ssb = new SpannableStringBuilder(textView.getText()); final String markdown; switch(item.getItemId()) { case R.id.bold: markdown = "**"; ssb.insert(end, markdown); ssb.insert(start, markdown); textView.getText().charAt(start); textView.getText().charAt(start + 1); end += markdown.length() * 2; ssb.setSpan(new StyleSpan(Typeface.BOLD), start, end, 1); textView.setText(ssb); break; case R.id.italic: markdown = "*"; ssb.insert(end, markdown); ssb.insert(start, markdown); end += markdown.length() * 2; ssb.setSpan(new StyleSpan(Typeface.ITALIC), start, end, 1); textView.setText(ssb); } return false; } @Override public void onDestroyActionMode(ActionMode mode) { } } app/src/main/res/drawable/ic_format_bold_black_24dp.xml 0 → 100644 +5 −0 Original line number Diff line number Diff line <vector android:autoMirrored="true" android:height="24dp" android:tint="#666666" android:viewportHeight="24.0" android:viewportWidth="24.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> <path android:fillColor="#FF000000" android:pathData="M15.6,10.79c0.97,-0.67 1.65,-1.77 1.65,-2.79 0,-2.26 -1.75,-4 -4,-4L7,4v14h7.04c2.09,0 3.71,-1.7 3.71,-3.79 0,-1.52 -0.86,-2.82 -2.15,-3.42zM10,6.5h3c0.83,0 1.5,0.67 1.5,1.5s-0.67,1.5 -1.5,1.5h-3v-3zM13.5,15.5L10,15.5v-3h3.5c0.83,0 1.5,0.67 1.5,1.5s-0.67,1.5 -1.5,1.5z"/> </vector> app/src/main/res/drawable/ic_format_italic_black_24dp.xml 0 → 100644 +5 −0 Original line number Diff line number Diff line <vector android:autoMirrored="true" android:height="24dp" android:tint="#666666" android:viewportHeight="24.0" android:viewportWidth="24.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> <path android:fillColor="#FF000000" android:pathData="M10,4v3h2.21l-3.42,8H6v3h8v-3h-2.21l3.42,-8H18V4z"/> </vector> Loading
app/src/main/java/it/niedermann/owncloud/notes/android/fragment/NoteEditFragment.java +20 −18 Original line number Diff line number Diff line Loading @@ -3,7 +3,6 @@ package it.niedermann.owncloud.notes.android.fragment; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import androidx.annotation.Nullable; import android.text.Editable; import android.text.TextWatcher; import android.util.Log; Loading @@ -18,12 +17,14 @@ import com.yydcdut.markdown.syntax.edit.EditFactory; import com.yydcdut.rxmarkdown.RxMDEditText; import com.yydcdut.rxmarkdown.RxMarkdown; import androidx.annotation.Nullable; import butterknife.BindView; import butterknife.ButterKnife; import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.model.CloudNote; import it.niedermann.owncloud.notes.util.ICallback; import it.niedermann.owncloud.notes.util.MarkDownUtil; import it.niedermann.owncloud.notes.util.StyleCallback; import rx.Subscriber; public class NoteEditFragment extends BaseNoteFragment { Loading Loading @@ -137,6 +138,7 @@ public class NoteEditFragment extends BaseNoteFragment { editContent.setText(charSequence, TextView.BufferType.SPANNABLE); } }); editContent.setCustomSelectionActionModeCallback(new StyleCallback(this.editContent)); } @Override Loading
app/src/main/java/it/niedermann/owncloud/notes/android/fragment/NotePreviewFragment.java +1 −5 Original line number Diff line number Diff line package it.niedermann.owncloud.notes.android.fragment; import android.os.Bundle; import androidx.annotation.Nullable; import androidx.core.content.res.ResourcesCompat; import androidx.core.content.res.TypedArrayUtils; import androidx.core.text.TextUtilsCompat; import android.text.method.LinkMovementMethod; import android.util.Log; import android.view.LayoutInflater; Loading @@ -18,6 +13,7 @@ import com.yydcdut.markdown.syntax.text.TextFactory; import com.yydcdut.rxmarkdown.RxMDTextView; import com.yydcdut.rxmarkdown.RxMarkdown; import androidx.annotation.Nullable; import butterknife.BindView; import butterknife.ButterKnife; import it.niedermann.owncloud.notes.R; Loading
app/src/main/java/it/niedermann/owncloud/notes/util/StyleCallback.java 0 → 100644 +68 −0 Original line number Diff line number Diff line package it.niedermann.owncloud.notes.util; import android.graphics.Typeface; import android.text.SpannableStringBuilder; import android.text.style.StyleSpan; import android.view.ActionMode; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.widget.TextView; import it.niedermann.owncloud.notes.R; public class StyleCallback implements ActionMode.Callback { private TextView textView; public StyleCallback(TextView textView) { this.textView = textView; } @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { MenuInflater inflater = mode.getMenuInflater(); inflater.inflate(R.menu.style, menu); menu.removeItem(android.R.id.selectAll); return true; } @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) { return false; } @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { int start = textView.getSelectionStart(); int end = textView.getSelectionEnd(); SpannableStringBuilder ssb = new SpannableStringBuilder(textView.getText()); final String markdown; switch(item.getItemId()) { case R.id.bold: markdown = "**"; ssb.insert(end, markdown); ssb.insert(start, markdown); textView.getText().charAt(start); textView.getText().charAt(start + 1); end += markdown.length() * 2; ssb.setSpan(new StyleSpan(Typeface.BOLD), start, end, 1); textView.setText(ssb); break; case R.id.italic: markdown = "*"; ssb.insert(end, markdown); ssb.insert(start, markdown); end += markdown.length() * 2; ssb.setSpan(new StyleSpan(Typeface.ITALIC), start, end, 1); textView.setText(ssb); } return false; } @Override public void onDestroyActionMode(ActionMode mode) { } }
app/src/main/res/drawable/ic_format_bold_black_24dp.xml 0 → 100644 +5 −0 Original line number Diff line number Diff line <vector android:autoMirrored="true" android:height="24dp" android:tint="#666666" android:viewportHeight="24.0" android:viewportWidth="24.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> <path android:fillColor="#FF000000" android:pathData="M15.6,10.79c0.97,-0.67 1.65,-1.77 1.65,-2.79 0,-2.26 -1.75,-4 -4,-4L7,4v14h7.04c2.09,0 3.71,-1.7 3.71,-3.79 0,-1.52 -0.86,-2.82 -2.15,-3.42zM10,6.5h3c0.83,0 1.5,0.67 1.5,1.5s-0.67,1.5 -1.5,1.5h-3v-3zM13.5,15.5L10,15.5v-3h3.5c0.83,0 1.5,0.67 1.5,1.5s-0.67,1.5 -1.5,1.5z"/> </vector>
app/src/main/res/drawable/ic_format_italic_black_24dp.xml 0 → 100644 +5 −0 Original line number Diff line number Diff line <vector android:autoMirrored="true" android:height="24dp" android:tint="#666666" android:viewportHeight="24.0" android:viewportWidth="24.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> <path android:fillColor="#FF000000" android:pathData="M10,4v3h2.21l-3.42,8H6v3h8v-3h-2.21l3.42,-8H18V4z"/> </vector>