Skip to content

Commit

Permalink
Reworked attachments (PR #2106 by @harshad1)
Browse files Browse the repository at this point in the history
* Reworked how attachments are added
* Preserve keyboard state, fix formatting
* Tweaks to how keyboard is restored
* Improvements to keeping keyboard open after dialog
* Dramatic simplification to keyboard restore
* Using built in voice recorder
* Fixing issues with images not showing
* Tweaks to maintaining keyboard state

---------

Co-authored-by: Gregor Santner <[email protected]>
  • Loading branch information
harshad1 and gsantner authored Oct 10, 2023
1 parent 6966771 commit a20ea28
Show file tree
Hide file tree
Showing 24 changed files with 596 additions and 658 deletions.
6 changes: 5 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@
android:label="@string/app_name"
android:launchMode="singleTop"
android:taskAffinity=".activity.MainActivity"
android:windowSoftInputMode="stateAlwaysHidden|adjustResize">
android:windowSoftInputMode="stateUnchanged|adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

Expand Down Expand Up @@ -1095,6 +1095,10 @@
<package android:name="org.mozilla.klar" />
<package android:name="org.mozilla.focus" />

<intent>
<action android:name="android.media.action.IMAGE_CAPTURE" />
</intent>

<intent>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="https" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import net.gsantner.markor.format.plaintext.PlaintextActionButtons;
import net.gsantner.markor.format.todotxt.TodoTxtActionButtons;
import net.gsantner.markor.format.wikitext.WikitextActionButtons;
import net.gsantner.opoc.util.GsCollectionUtils;

import java.util.ArrayList;
import java.util.HashSet;
Expand Down Expand Up @@ -110,14 +111,8 @@ public boolean onOptionsItemSelected(MenuItem item) {
}

private void saveNewOrder() {
final ArrayList<String> reorderedKeys = new ArrayList<>();

for (final int i : _adapter.order) {
reorderedKeys.add(_keys.get(i));
}

_textActions.saveActionOrder(reorderedKeys);
_textActions.saveDisabledActions(new ArrayList<>(_adapter._disabled));
_textActions.saveActionOrder(GsCollectionUtils.map(_adapter.order, i -> _keys.get(i)));
_textActions.saveDisabledActions(_adapter._disabled);
}

@Override
Expand Down Expand Up @@ -238,8 +233,8 @@ private ReorderCallback(OrderAdapter adapter) {

@Override
public boolean onMove(@NonNull RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
final int from = viewHolder.getAdapterPosition();
final int to = target.getAdapterPosition();
final int from = viewHolder.getAbsoluteAdapterPosition();
final int to = target.getAbsoluteAdapterPosition();

final int value = _adapter.order.get(from);
_adapter.order.remove(from);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@
import android.view.SubMenu;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.webkit.JavascriptInterface;
import android.webkit.WebSettings;
import android.webkit.WebView;
Expand All @@ -43,8 +45,6 @@
import net.gsantner.markor.format.ActionButtonBase;
import net.gsantner.markor.format.FormatRegistry;
import net.gsantner.markor.format.TextConverterBase;
import net.gsantner.markor.frontend.AttachLinkOrFileDialog;
import net.gsantner.markor.frontend.DatetimeFormatDialog;
import net.gsantner.markor.frontend.DraggableScrollbarScrollView;
import net.gsantner.markor.frontend.FileInfoDialog;
import net.gsantner.markor.frontend.MarkorDialogFactory;
Expand Down Expand Up @@ -227,6 +227,27 @@ public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
updateUndoRedoIconStates();
});
_hlEditor.addTextChangedListener(GsTextWatcherAdapter.after(s -> debounced.run()));

// We set the keyboard to be hidden if it was hidden when we lost focus
// This works well to preserve keyboard state.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
final Window window = activity.getWindow();
final int adjustResize = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE;
final int unchanged = WindowManager.LayoutParams.SOFT_INPUT_STATE_UNCHANGED | adjustResize;
final int hidden = WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN | adjustResize;

_hlEditor.getViewTreeObserver().addOnWindowFocusChangeListener(hasFocus -> {
if (hasFocus) {
// Restore old state
_hlEditor.postDelayed(() -> window.setSoftInputMode(unchanged), 500);
} else {
final Boolean isOpen = TextViewUtils.isImeOpen(_hlEditor);
if (isOpen != null && !isOpen) {
window.setSoftInputMode(hidden);
}
}
});
}
}

@Override
Expand Down Expand Up @@ -294,7 +315,6 @@ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {

// Edit / Preview switch
menu.findItem(R.id.action_edit).setVisible(isText && _isPreviewVisible);
menu.findItem(R.id.submenu_attach).setVisible(false);
menu.findItem(R.id.action_preview).setVisible(isText && !_isPreviewVisible);
menu.findItem(R.id.action_search).setVisible(isText && !_isPreviewVisible);
menu.findItem(R.id.action_search_view).setVisible(isText && _isPreviewVisible);
Expand Down Expand Up @@ -518,24 +538,6 @@ public boolean onOptionsItemSelected(@NonNull final MenuItem item) {
_cu.draftEmail(getActivity(), "Debug Log " + getString(R.string.app_name_real), text, "[email protected]");
return true;
}

case R.id.action_attach_color: {
_format.getActions().showColorPickerDialog();
return true;
}
case R.id.action_attach_date: {
DatetimeFormatDialog.showDatetimeFormatDialog(activity, _hlEditor);
return true;
}
case R.id.action_attach_audio:
case R.id.action_attach_file:
case R.id.action_attach_image:
case R.id.action_attach_link: {
int actionId = (itemId == R.id.action_attach_audio ? 4 : (itemId == R.id.action_attach_image ? 2 : 3));
AttachLinkOrFileDialog.showInsertImageOrLinkDialog(actionId, _document.getFormat(), activity, _hlEditor, _document.getFile());
return true;
}

case R.id.action_load_epub: {
MarkorFileBrowserFactory.showFileDialog(new GsFileBrowserOptions.SelectionListenerAdapter() {
@Override
Expand Down
15 changes: 10 additions & 5 deletions app/src/main/java/net/gsantner/markor/activity/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -372,19 +372,18 @@ public String getPosTitle(final int pos) {
return null;
}

public void onViewPagerPageSelected(int pos) {
public void onViewPagerPageSelected(final int pos) {
_bottomNav.getMenu().getItem(pos).setChecked(true);

if (pos == tabIdToPos(R.id.nav_notebook)) {
_fab.show();
_cu.showSoftKeyboard(this, false);
} else {
_fab.hide();
}
setTitle(getPosTitle(pos));

if (pos != tabIdToPos(R.id.nav_notebook)) {
restoreDefaultToolbar();
}

setTitle(getPosTitle(pos));
}

private GsFileBrowserOptions.Options _filesystemDialogOptions = null;
Expand Down Expand Up @@ -468,6 +467,12 @@ protected void onStop() {
restoreDefaultToolbar();
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
_cu.extractResultFromActivityResult(this, requestCode, resultCode, data);
}

/**
* Restores the default toolbar. Used when changing the tab or moving to another activity
* while {@link GsFileBrowserFragment} action mode is active (e.g. when renaming a file)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,17 @@
import android.view.WindowManager;

import androidx.annotation.Nullable;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;

import net.gsantner.markor.ApplicationObject;
import net.gsantner.markor.R;
import net.gsantner.markor.model.AppSettings;
import net.gsantner.markor.util.MarkorContextUtils;
import net.gsantner.opoc.frontend.base.GsActivityBase;
import net.gsantner.opoc.util.GsCollectionUtils;

import java.util.List;

public abstract class MarkorBaseActivity extends GsActivityBase<AppSettings, MarkorContextUtils> {

Expand Down
Loading

0 comments on commit a20ea28

Please sign in to comment.