mirror of
https://github.com/beemdevelopment/Aegis.git
synced 2025-05-14 05:52:52 +00:00
Save the database after a drag-drop event and stop saving it on onStop
This commit is contained in:
parent
17378937a9
commit
dbc79b49e8
4 changed files with 32 additions and 13 deletions
|
@ -56,6 +56,11 @@ public class KeyProfileAdapter extends RecyclerView.Adapter<KeyProfileAdapter.Ke
|
|||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemDrop(int position) {
|
||||
_listener.onKeyProfileDrop(_keyProfiles.get(position));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemMove(int firstPosition, int secondPosition) {
|
||||
// notify the database first
|
||||
|
@ -177,5 +182,6 @@ public class KeyProfileAdapter extends RecyclerView.Adapter<KeyProfileAdapter.Ke
|
|||
void onKeyProfileClick(KeyProfile profile);
|
||||
boolean onLongKeyProfileClick(KeyProfile profile);
|
||||
void onKeyProfileMove(KeyProfile profile1, KeyProfile profile2);
|
||||
void onKeyProfileDrop(KeyProfile profile);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -344,12 +344,6 @@ public class MainActivity extends AppCompatActivity implements KeyProfileAdapter
|
|||
setPreferredTheme();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
saveDatabase();
|
||||
super.onStop();
|
||||
}
|
||||
|
||||
private BottomSheetDialog createBottomSheet(KeyProfile profile) {
|
||||
View bottomSheetView = getLayoutInflater().inflate(R.layout.bottom_sheet_edit_profile, null);
|
||||
LinearLayout copyLayout = bottomSheetView.findViewById(R.id.copy_button);
|
||||
|
@ -474,16 +468,11 @@ public class MainActivity extends AppCompatActivity implements KeyProfileAdapter
|
|||
}
|
||||
|
||||
if (restart) {
|
||||
finish();
|
||||
startActivity(new Intent(this, this.getClass()));
|
||||
recreate();
|
||||
}
|
||||
}
|
||||
|
||||
private void saveDatabase() {
|
||||
if (!_db.isDecrypted()) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
_db.save();
|
||||
} catch (Exception e) {
|
||||
|
@ -536,4 +525,9 @@ public class MainActivity extends AppCompatActivity implements KeyProfileAdapter
|
|||
throw new UndeclaredThrowableException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onKeyProfileDrop(KeyProfile profile) {
|
||||
saveDatabase();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,4 +30,11 @@ public interface ItemTouchHelperAdapter {
|
|||
* @see RecyclerView.ViewHolder#getAdapterPosition()
|
||||
*/
|
||||
void onItemDismiss(int position);
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when an item has been dropped after a drag.
|
||||
*
|
||||
* @param position The position of the moved item.
|
||||
*/
|
||||
void onItemDrop(int position);
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import android.support.v7.widget.helper.ItemTouchHelper;
|
|||
public class SimpleItemTouchHelperCallback extends ItemTouchHelper.Callback {
|
||||
|
||||
private final ItemTouchHelperAdapter _adapter;
|
||||
private boolean _positionChanged = false;
|
||||
|
||||
public SimpleItemTouchHelperCallback(ItemTouchHelperAdapter adapter) {
|
||||
_adapter = adapter;
|
||||
|
@ -32,6 +33,7 @@ public class SimpleItemTouchHelperCallback extends ItemTouchHelper.Callback {
|
|||
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder,
|
||||
RecyclerView.ViewHolder target) {
|
||||
_adapter.onItemMove(viewHolder.getAdapterPosition(), target.getAdapterPosition());
|
||||
_positionChanged = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -39,4 +41,14 @@ public class SimpleItemTouchHelperCallback extends ItemTouchHelper.Callback {
|
|||
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
|
||||
_adapter.onItemDismiss(viewHolder.getAdapterPosition());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
|
||||
super.clearView(recyclerView, viewHolder);
|
||||
|
||||
if (_positionChanged) {
|
||||
_adapter.onItemDrop(viewHolder.getAdapterPosition());
|
||||
_positionChanged = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue