Issue #903 - Undo action
This commit is contained in:
parent
20c66087a7
commit
96fb867740
|
@ -42,6 +42,8 @@ import fr.gouv.etalab.mastodon.helper.Helper;
|
||||||
import fr.gouv.etalab.mastodon.helper.itemtouchhelper.OnStartDragListener;
|
import fr.gouv.etalab.mastodon.helper.itemtouchhelper.OnStartDragListener;
|
||||||
import fr.gouv.etalab.mastodon.helper.itemtouchhelper.OnUndoListener;
|
import fr.gouv.etalab.mastodon.helper.itemtouchhelper.OnUndoListener;
|
||||||
import fr.gouv.etalab.mastodon.helper.itemtouchhelper.SimpleItemTouchHelperCallback;
|
import fr.gouv.etalab.mastodon.helper.itemtouchhelper.SimpleItemTouchHelperCallback;
|
||||||
|
import fr.gouv.etalab.mastodon.sqlite.InstancesDAO;
|
||||||
|
import fr.gouv.etalab.mastodon.sqlite.SearchDAO;
|
||||||
import fr.gouv.etalab.mastodon.sqlite.Sqlite;
|
import fr.gouv.etalab.mastodon.sqlite.Sqlite;
|
||||||
import fr.gouv.etalab.mastodon.sqlite.TimelinesDAO;
|
import fr.gouv.etalab.mastodon.sqlite.TimelinesDAO;
|
||||||
|
|
||||||
|
@ -63,7 +65,7 @@ public class ReorderTimelinesActivity extends BaseActivity implements OnStartDra
|
||||||
private TextView undo_action;
|
private TextView undo_action;
|
||||||
private List<ManageTimelines> timelines;
|
private List<ManageTimelines> timelines;
|
||||||
private ReorderTabAdapter adapter;
|
private ReorderTabAdapter adapter;
|
||||||
|
private boolean actionCanBeApplied;
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
@ -138,19 +140,35 @@ public class ReorderTimelinesActivity extends BaseActivity implements OnStartDra
|
||||||
public void onUndo(ManageTimelines manageTimelines, int position) {
|
public void onUndo(ManageTimelines manageTimelines, int position) {
|
||||||
undo_container.setVisibility(View.VISIBLE);
|
undo_container.setVisibility(View.VISIBLE);
|
||||||
undo_action.setPaintFlags(undo_action.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
|
undo_action.setPaintFlags(undo_action.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
|
||||||
|
actionCanBeApplied = true;
|
||||||
undo_action.setOnClickListener(new View.OnClickListener() {
|
undo_action.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
timelines.add(position, manageTimelines);
|
timelines.add(position, manageTimelines);
|
||||||
adapter.notifyItemInserted(position);
|
adapter.notifyItemInserted(position);
|
||||||
undo_container.setVisibility(View.GONE);
|
undo_container.setVisibility(View.GONE);
|
||||||
|
actionCanBeApplied = false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
final Handler handler = new Handler();
|
Handler handler = new Handler();
|
||||||
handler.postDelayed(new Runnable() {
|
handler.postDelayed(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
undo_container.setVisibility(View.GONE);
|
undo_container.setVisibility(View.GONE);
|
||||||
|
SQLiteDatabase db = Sqlite.getInstance(getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
|
||||||
|
if( actionCanBeApplied){
|
||||||
|
switch (manageTimelines.getType()){
|
||||||
|
case TAG:
|
||||||
|
new SearchDAO(getApplicationContext(), db).remove(manageTimelines.getTagTimeline().getName());
|
||||||
|
new TimelinesDAO(getApplicationContext(), db).remove(manageTimelines);
|
||||||
|
break;
|
||||||
|
case INSTANCE:
|
||||||
|
new InstancesDAO(getApplicationContext(), db).remove(manageTimelines.getRemoteInstance().getId());
|
||||||
|
new TimelinesDAO(getApplicationContext(), db).remove(manageTimelines);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
updated = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}, 2000);
|
}, 2000);
|
||||||
|
|
||||||
|
|
|
@ -539,7 +539,7 @@ public class ManageTimelines {
|
||||||
final boolean[] show_nsfw = {sharedpreferences.getBoolean(Helper.SET_ART_WITH_NSFW, false)};
|
final boolean[] show_nsfw = {sharedpreferences.getBoolean(Helper.SET_ART_WITH_NSFW, false)};
|
||||||
final MenuItem itemShowNSFW = menu.findItem(R.id.action_show_nsfw);
|
final MenuItem itemShowNSFW = menu.findItem(R.id.action_show_nsfw);
|
||||||
final MenuItem itemMedia = menu.findItem(R.id.action_show_media_only);
|
final MenuItem itemMedia = menu.findItem(R.id.action_show_media_only);
|
||||||
final MenuItem itemDelete = menu.findItem(R.id.action_delete);
|
//final MenuItem itemDelete = menu.findItem(R.id.action_delete);
|
||||||
|
|
||||||
final MenuItem itemAny = menu.findItem(R.id.action_any);
|
final MenuItem itemAny = menu.findItem(R.id.action_any);
|
||||||
final MenuItem itemAll = menu.findItem(R.id.action_all);
|
final MenuItem itemAll = menu.findItem(R.id.action_all);
|
||||||
|
@ -550,7 +550,7 @@ public class ManageTimelines {
|
||||||
itemNone.setVisible(false);
|
itemNone.setVisible(false);
|
||||||
action_displayname.setVisible(false);
|
action_displayname.setVisible(false);
|
||||||
itemMedia.setVisible(false);
|
itemMedia.setVisible(false);
|
||||||
itemDelete.setVisible(false);
|
// itemDelete.setVisible(false);
|
||||||
itemShowNSFW.setChecked(show_nsfw[0]);
|
itemShowNSFW.setChecked(show_nsfw[0]);
|
||||||
final boolean[] changes = {false};
|
final boolean[] changes = {false};
|
||||||
popup.setOnDismissListener(new PopupMenu.OnDismissListener() {
|
popup.setOnDismissListener(new PopupMenu.OnDismissListener() {
|
||||||
|
@ -941,7 +941,7 @@ public class ManageTimelines {
|
||||||
alertDialog = dialogBuilder.create();
|
alertDialog = dialogBuilder.create();
|
||||||
alertDialog.show();
|
alertDialog.show();
|
||||||
break;
|
break;
|
||||||
case R.id.action_delete:
|
/*case R.id.action_delete:
|
||||||
dialogBuilder = new AlertDialog.Builder(context, style);
|
dialogBuilder = new AlertDialog.Builder(context, style);
|
||||||
dialogBuilder.setPositiveButton(R.string.validate, new DialogInterface.OnClickListener() {
|
dialogBuilder.setPositiveButton(R.string.validate, new DialogInterface.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -971,7 +971,7 @@ public class ManageTimelines {
|
||||||
if( alertDialog.getWindow() != null )
|
if( alertDialog.getWindow() != null )
|
||||||
alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
|
alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
|
||||||
alertDialog.show();
|
alertDialog.show();
|
||||||
return false;
|
return false;*/
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,6 @@ import android.database.sqlite.SQLiteDatabase;
|
||||||
import android.graphics.PorterDuff;
|
import android.graphics.PorterDuff;
|
||||||
import android.support.v4.content.ContextCompat;
|
import android.support.v4.content.ContextCompat;
|
||||||
import android.support.v7.widget.RecyclerView;
|
import android.support.v7.widget.RecyclerView;
|
||||||
import android.util.Log;
|
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
@ -205,9 +204,18 @@ public class ReorderTabAdapter extends RecyclerView.Adapter<ReorderTabAdapter.It
|
||||||
@Override
|
@Override
|
||||||
public void onItemDismiss(int position) {
|
public void onItemDismiss(int position) {
|
||||||
ManageTimelines item = mItems.get(position);
|
ManageTimelines item = mItems.get(position);
|
||||||
mUndoListener.onUndo(item, position);
|
if( item.getType() == ManageTimelines.Type.TAG || item.getType() == ManageTimelines.Type.INSTANCE ) {
|
||||||
mItems.remove(position);
|
mUndoListener.onUndo(item, position);
|
||||||
notifyItemRemoved(position);
|
mItems.remove(position);
|
||||||
|
notifyItemRemoved(position);
|
||||||
|
}else{
|
||||||
|
notifyItemChanged(position);
|
||||||
|
if( item.getType() == ManageTimelines.Type.LIST ){
|
||||||
|
Toasty.info(context, context.getString(R.string.warning_list_deletion), Toast.LENGTH_SHORT).show();
|
||||||
|
}else{
|
||||||
|
Toasty.info(context, context.getString(R.string.warning_main_timeline), Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
android:id="@+id/lv_reorder_tabs"
|
android:id="@+id/lv_reorder_tabs"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingBottom="?attr/actionBarSize"
|
|
||||||
android:scrollbars="none"
|
android:scrollbars="none"
|
||||||
>
|
>
|
||||||
</android.support.v7.widget.RecyclerView>
|
</android.support.v7.widget.RecyclerView>
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
android:id="@+id/action_none"
|
android:id="@+id/action_none"
|
||||||
app:showAsAction="always"
|
app:showAsAction="always"
|
||||||
android:title="@string/none_tags" />
|
android:title="@string/none_tags" />
|
||||||
<item
|
<!-- <item
|
||||||
android:id="@+id/action_delete"
|
android:id="@+id/action_delete"
|
||||||
app:showAsAction="always"
|
app:showAsAction="always"
|
||||||
android:title="@string/delete" />
|
android:title="@string/delete" /> -->
|
||||||
</menu>
|
</menu>
|
||||||
|
|
|
@ -930,6 +930,8 @@
|
||||||
<string name="undo">Undo</string>
|
<string name="undo">Undo</string>
|
||||||
<string name="visible_tabs_needed">You need to keep two visible tabs!</string>
|
<string name="visible_tabs_needed">You need to keep two visible tabs!</string>
|
||||||
<string name="action_reorder_timeline">Reorder timelines</string>
|
<string name="action_reorder_timeline">Reorder timelines</string>
|
||||||
|
<string name="warning_list_deletion">Use the list entry for deleting this list!</string>
|
||||||
|
<string name="warning_main_timeline">Main timelines can only be hidden!</string>
|
||||||
|
|
||||||
<plurals name="number_of_vote">
|
<plurals name="number_of_vote">
|
||||||
<item quantity="one">%d vote</item>
|
<item quantity="one">%d vote</item>
|
||||||
|
|
Loading…
Reference in New Issue