diff --git a/app/src/main/java/org/houxg/leamonax/editor/Editor.java b/app/src/main/java/org/houxg/leamonax/editor/Editor.java index 007729a..d0ee342 100644 --- a/app/src/main/java/org/houxg/leamonax/editor/Editor.java +++ b/app/src/main/java/org/houxg/leamonax/editor/Editor.java @@ -57,6 +57,10 @@ public abstract class Editor { public abstract void toggleItalic(); + public abstract void toggleQuote(); + + public abstract void toggleHeading(); + public interface EditorListener { void onPageLoaded(); void onClickedLink(String title, String url); diff --git a/app/src/main/java/org/houxg/leamonax/editor/MarkdownEditor.java b/app/src/main/java/org/houxg/leamonax/editor/MarkdownEditor.java index 566fa16..516d500 100644 --- a/app/src/main/java/org/houxg/leamonax/editor/MarkdownEditor.java +++ b/app/src/main/java/org/houxg/leamonax/editor/MarkdownEditor.java @@ -115,4 +115,14 @@ public class MarkdownEditor extends Editor { public void toggleItalic() { execJs("ZSSEditor.setItalic();"); } + + @Override + public void toggleQuote() { + execJs("ZSSEditor.setBlockquote();"); + } + + @Override + public void toggleHeading() { + execJs("ZSSEditor.setHeading();"); + } } diff --git a/app/src/main/java/org/houxg/leamonax/editor/RichTextEditor.java b/app/src/main/java/org/houxg/leamonax/editor/RichTextEditor.java index 1f438b4..3877f36 100644 --- a/app/src/main/java/org/houxg/leamonax/editor/RichTextEditor.java +++ b/app/src/main/java/org/houxg/leamonax/editor/RichTextEditor.java @@ -128,6 +128,16 @@ public class RichTextEditor extends Editor implements OnJsEditorStateChangedList execJs("ZSSEditor.setItalic();"); } + @Override + public void toggleQuote() { + execJs("ZSSEditor.setBlockquote();"); + } + + @Override + public void toggleHeading() { + execJs("ZSSEditor.setHeading();"); + } + private String appendPTag(String source) { String[] segments = source.split("\n\n"); StringBuilder contentBuilder = new StringBuilder(); diff --git a/app/src/main/java/org/houxg/leamonax/ui/edit/EditorFragment.java b/app/src/main/java/org/houxg/leamonax/ui/edit/EditorFragment.java index fd6dcdc..5c693f6 100644 --- a/app/src/main/java/org/houxg/leamonax/ui/edit/EditorFragment.java +++ b/app/src/main/java/org/houxg/leamonax/ui/edit/EditorFragment.java @@ -32,6 +32,7 @@ import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; +import butterknife.Optional; public class EditorFragment extends Fragment implements Editor.EditorListener { @@ -44,13 +45,22 @@ public class EditorFragment extends Fragment implements Editor.EditorListener { private EditorFragmentListener mListener; private Editor mEditor; - @BindView(R.id.fl_tools) + @BindView(R.id.fl_container) View mToolContainer; + @Nullable @BindView(R.id.btn_bold) ToggleImageButton mBoldBtn; + @Nullable @BindView(R.id.btn_italic) ToggleImageButton mItalicBtn; + @Nullable + @BindView(R.id.btn_heading) + ToggleImageButton mHeadingBtn; + @Nullable + @BindView(R.id.btn_quote) + ToggleImageButton mQuoteBtn; + @BindView(R.id.btn_order_list) ToggleImageButton mOrderListBtn; @BindView(R.id.btn_unorder_list) @@ -92,19 +102,25 @@ public class EditorFragment extends Fragment implements Editor.EditorListener { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_editor, container, false); - ButterKnife.bind(this, view); + Bundle arguments = savedInstanceState == null ? getArguments() : savedInstanceState; mIsEditingEnabled = arguments.getBoolean(ARG_ENABLE_EDIT, false); boolean isMarkdown = arguments.getBoolean(ARG_IS_MARKDOWN, true); - mToolContainer.setVisibility(mIsEditingEnabled ? View.VISIBLE : View.GONE); - + int formatRestId; if (isMarkdown) { mEditor = new MarkdownEditor(this); + formatRestId = R.layout.format_bar_markdown; } else { mEditor = new RichTextEditor(this); + formatRestId = R.layout.format_bar_richtext; } + ViewGroup formatBarContainer = (ViewGroup) view.findViewById(R.id.fl_container); + View formatBar = inflater.inflate(formatRestId, formatBarContainer, false); + formatBarContainer.addView(formatBar, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); + ButterKnife.bind(this, view); + mToolContainer.setVisibility(mIsEditingEnabled ? View.VISIBLE : View.GONE); mEditor.init(mWebView); return view; } @@ -191,16 +207,30 @@ public class EditorFragment extends Fragment implements Editor.EditorListener { mEditor.toggleUnorderList(); } + @Optional @OnClick(R.id.btn_bold) void toggleBold() { mEditor.toggleBold(); } + @Optional @OnClick(R.id.btn_italic) void toggleItalic() { mEditor.toggleItalic(); } + @Optional + @OnClick(R.id.btn_heading) + void toggleHeading() { + mEditor.toggleHeading(); + } + + @Optional + @OnClick(R.id.btn_quote) + void toggleQuote() { + mEditor.toggleQuote(); + } + @OnClick(R.id.btn_undo) void undo() { mEditor.undo(); diff --git a/app/src/main/res/drawable-xxhdpi/ic_format_quote_black_disable.png b/app/src/main/res/drawable-xxhdpi/ic_format_quote_disable.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/ic_format_quote_black_disable.png rename to app/src/main/res/drawable-xxhdpi/ic_format_quote_disable.png diff --git a/app/src/main/res/drawable-xxhdpi/ic_format_quote_black_enable.png b/app/src/main/res/drawable-xxhdpi/ic_format_quote_enable.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/ic_format_quote_black_enable.png rename to app/src/main/res/drawable-xxhdpi/ic_format_quote_enable.png diff --git a/app/src/main/res/drawable-xxhdpi/ic_heading_disable.png b/app/src/main/res/drawable-xxhdpi/ic_heading_disable.png new file mode 100644 index 0000000..587127e Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_heading_disable.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_heading_enable.png b/app/src/main/res/drawable-xxhdpi/ic_heading_enable.png new file mode 100644 index 0000000..2174890 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_heading_enable.png differ diff --git a/app/src/main/res/layout/format_bar_markdown.xml b/app/src/main/res/layout/format_bar_markdown.xml new file mode 100755 index 0000000..c05b027 --- /dev/null +++ b/app/src/main/res/layout/format_bar_markdown.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/format_bar_richtext.xml b/app/src/main/res/layout/format_bar_richtext.xml new file mode 100755 index 0000000..c3109ab --- /dev/null +++ b/app/src/main/res/layout/format_bar_richtext.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_editor.xml b/app/src/main/res/layout/fragment_editor.xml index ccee21c..ebd3a60 100755 --- a/app/src/main/res/layout/fragment_editor.xml +++ b/app/src/main/res/layout/fragment_editor.xml @@ -1,65 +1,17 @@ - - - - - - - - - - - - - - - - - - + android:layout_alignParentBottom="true" /> + android:layout_above="@id/fl_container" />