0
0
mirror of https://github.com/ankidroid/Anki-Android.git synced 2024-09-20 12:02:16 +02:00

Added card repositioning (#4763)

Can now reposition the card from the note edit context menu
This commit is contained in:
Jordan Cleeve 2018-03-08 19:58:44 +13:00 committed by Tim Rae
parent 2c8adfab51
commit 161ef99ab3
5 changed files with 61 additions and 1 deletions

View File

@ -53,6 +53,7 @@ import android.widget.TextView;
import com.afollestad.materialdialogs.MaterialDialog;
import com.ichi2.anim.ActivityTransitionAnimation;
import com.ichi2.anki.dialogs.NoteEditorRescheduleCard;
import com.ichi2.anki.dialogs.NoteEditorRepositionCard;
import com.ichi2.anki.dialogs.ConfirmationDialog;
import com.ichi2.anki.dialogs.TagsDialog;
import com.ichi2.anki.dialogs.TagsDialog.TagsDialogListener;
@ -806,7 +807,9 @@ public class NoteEditor extends AnkiActivity {
menu.findItem(R.id.action_add_card_from_card_editor).setVisible(true);
menu.findItem(R.id.action_reset_card_progress).setVisible(true);
menu.findItem(R.id.action_reschedule_card).setVisible(true);
menu.findItem(R.id.action_reset_card_progress).setVisible(true);
if (mCurrentEditedCard.getType() == Card.TYPE_NEW) {
menu.findItem(R.id.action_reposition_card).setVisible(true);
}
}
if (mEditFields != null) {
for (int i = 0; i < mEditFields.size(); i++) {
@ -874,6 +877,10 @@ public class NoteEditor extends AnkiActivity {
Timber.i("NoteEditor:: Reschedule button pressed");
showDialogFragment(NoteEditorRescheduleCard.newInstance());
return true;
case R.id.action_reposition_card:
Timber.i("NoteEditor:: Reposition button pressed");
showDialogFragment(NoteEditorRepositionCard.newInstance());
return true;
default:
return super.onOptionsItemSelected(item);
@ -981,6 +988,14 @@ public class NoteEditor extends AnkiActivity {
getResources().getString(R.string.reschedule_card_dialog_acknowledge), true);
}
public void onRepositionCard(int position) {
Timber.i("Reposition card");
getCol().getSched().sortCards(new long[] { mCurrentEditedCard.getId() }, position, 1, false, true);
getCol().reset();
mReloadRequired = true;
UIUtils.showThemedToast(NoteEditor.this,
getResources().getString(R.string.reposition_card_dialog_acknowledge), true);
}
private void showTagsDialog() {
if (mSelectedTags == null) {

View File

@ -0,0 +1,37 @@
package com.ichi2.anki.dialogs;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.text.InputType;
import com.afollestad.materialdialogs.MaterialDialog;
import com.ichi2.anki.NoteEditor;
import com.ichi2.anki.R;
public class NoteEditorRepositionCard extends DialogFragment {
public static NoteEditorRepositionCard newInstance() {
return new NoteEditorRepositionCard();
}
@Override
public MaterialDialog onCreateDialog(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
return new MaterialDialog.Builder(getActivity())
.title(R.string.reposition_card_dialog_title)
.positiveText(getResources().getString(R.string.dialog_ok))
.negativeText(R.string.cancel)
.inputType(InputType.TYPE_CLASS_NUMBER)
.inputRange(1, 5) // max 5 characters (i.e., 99999)
.input(R.string.reposition_card_dialog_message, R.string.empty_string, new MaterialDialog.InputCallback() {
@Override
public void onInput(MaterialDialog dialog, CharSequence text) {
int position = Integer.parseInt(text.toString());
((NoteEditor) getActivity()).onRepositionCard(position);
}
})
.show();
}
}

View File

@ -14,6 +14,10 @@
android:id="@+id/action_copy_card"
android:enabled="false"
android:title="@string/card_editor_copy_card"/>
<item
android:id="@+id/action_reposition_card"
android:title="@string/card_editor_reposition_card"
android:visible="false"/>
<item
android:id="@+id/action_reset_card_progress"
android:title="@string/card_editor_reset_card"

View File

@ -114,6 +114,7 @@
<string name="fact_adder_intent_title">AnkiDroid card</string>
<string name="card_editor_add_card">Add note</string>
<string name="card_editor_copy_card">Copy card</string>
<string name="card_editor_reposition_card">Reposition</string>
<string name="card_editor_reset_card">Reset progress</string>
<string name="card_editor_reschedule_card">Reschedule card</string>
<string name="card_editor_preview_card">Preview</string>

View File

@ -43,6 +43,9 @@
</string-array>
<string name="preview_title">Preview</string>
<string name="reposition_card_dialog_title">Reposition new card</string>
<string name="reposition_card_dialog_message">Start position:</string>
<string name="reposition_card_dialog_acknowledge">Card repositioned</string>
<string name="reset_card_dialog_title">Reset card progress</string>
<string name="reset_card_dialog_message">This card will be placed at the end of the new card queue</string>
<string name="reset_card_dialog_acknowledge">Card reset</string>