Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0c2a0a81 authored by Steve McKay's avatar Steve McKay
Browse files

Performe save when ENTER is pressed.

Push save enabling logic into SaveFragment, let it figure it out.
Don't assume DirectoryFragment is present in BaseActivity.
Permit DirectoryFragment#get to return null when not present.

Bug: 24305559
Bug: 24955068
Change-Id: Ib50d674b16ba48dcefb6e5b73055120c3e7c6dba
parent d416d886
Loading
Loading
Loading
Loading
+12 −8
Original line number Diff line number Diff line
@@ -469,15 +469,19 @@ abstract class BaseActivity extends Activity {
    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (DEBUG) Log.d(mTag, "onKeyUp: keycode = " + keyCode);
        DirectoryFragment dir = DirectoryFragment.get(getFragmentManager());

        // TODO: Support for RecentsCreateFragment.
        DirectoryFragment fragment = DirectoryFragment.get(getFragmentManager());
        if (fragment != null) {
            switch (keyCode) {
                case KeyEvent.KEYCODE_MOVE_HOME:
                dir.focusFirstFile();
                    fragment.focusFirstFile();
                    return true;
                case KeyEvent.KEYCODE_MOVE_END:
                dir.focusLastFile();
                    fragment.focusLastFile();
                    return true;
            }
        }
        return super.onKeyUp(keyCode, event);
    }

+5 −2
Original line number Diff line number Diff line
@@ -205,9 +205,12 @@ public class DirectoryFragment extends Fragment {
        return builder.toString();
    }

    public static DirectoryFragment get(FragmentManager fm) {
    public static @Nullable DirectoryFragment get(FragmentManager fm) {
        // TODO: deal with multiple directories shown at once
        return (DirectoryFragment) fm.findFragmentById(R.id.container_directory);
        Fragment fragment = fm.findFragmentById(R.id.container_directory);
        return fragment instanceof DirectoryFragment
                ? (DirectoryFragment) fragment
                : null;
    }

    @Override
+1 −1
Original line number Diff line number Diff line
@@ -337,7 +337,7 @@ public class DocumentsActivity extends BaseActivity {

        if (mState.action == ACTION_CREATE) {
            final FragmentManager fm = getFragmentManager();
            SaveFragment.get(fm).setSaveEnabled(cwd != null && cwd.isCreateSupported());
            SaveFragment.get(fm).prepareForDirectory(cwd);
        }

        Menus.disableHiddenItems(menu);
+30 −9
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.content.Context;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -79,6 +80,17 @@ public class SaveFragment extends Fragment {
        mDisplayName = (EditText) view.findViewById(android.R.id.title);
        mDisplayName.addTextChangedListener(mDisplayNameWatcher);
        mDisplayName.setText(getArguments().getString(EXTRA_DISPLAY_NAME));
        mDisplayName.setOnKeyListener(
                new View.OnKeyListener() {
                    @Override
                    public boolean onKey(View v, int keyCode, KeyEvent event) {
                        if (keyCode == KeyEvent.KEYCODE_ENTER && mSave.isEnabled()) {
                            performSave();
                            return true;
                        }
                        return false;
                    }
                });

        mSave = (Button) view.findViewById(android.R.id.button1);
        mSave.setOnClickListener(mSaveListener);
@@ -113,6 +125,12 @@ public class SaveFragment extends Fragment {
    private View.OnClickListener mSaveListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            performSave();
        }

    };

    private void performSave() {
        final DocumentsActivity activity = DocumentsActivity.get(SaveFragment.this);
        if (mReplaceTarget != null) {
            activity.onSaveRequested(mReplaceTarget);
@@ -122,7 +140,6 @@ public class SaveFragment extends Fragment {
            activity.onSaveRequested(mimeType, displayName);
        }
    }
    };

    /**
     * Set given document as target for in-place writing if user hits save
@@ -139,7 +156,11 @@ public class SaveFragment extends Fragment {
        }
    }

    public void setSaveEnabled(boolean enabled) {
    public void prepareForDirectory(DocumentInfo cwd) {
        setSaveEnabled(cwd != null && cwd.isCreateSupported());
    }

    private void setSaveEnabled(boolean enabled) {
        mSave.setEnabled(enabled);
    }