Removed gesture swipe and drag&drop gesture from server item in login

This commit is contained in:
CappielloAntonio 2021-08-10 09:20:58 +02:00
parent 677fe5dc60
commit 9bad7f6e77
8 changed files with 18 additions and 126 deletions

View file

@ -60,10 +60,6 @@ public class ServerAdapter extends RecyclerView.Adapter<ServerAdapter.ViewHolder
return servers.size(); return servers.size();
} }
public List<Server> getItems() {
return this.servers;
}
public void setItems(List<Server> servers) { public void setItems(List<Server> servers) {
this.servers = servers; this.servers = servers;
notifyDataSetChanged(); notifyDataSetChanged();
@ -73,7 +69,7 @@ public class ServerAdapter extends RecyclerView.Adapter<ServerAdapter.ViewHolder
return servers.get(id); return servers.get(id);
} }
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
TextView serverName; TextView serverName;
TextView serverAddress; TextView serverAddress;
@ -84,6 +80,7 @@ public class ServerAdapter extends RecyclerView.Adapter<ServerAdapter.ViewHolder
serverAddress = itemView.findViewById(R.id.server_address_text_view); serverAddress = itemView.findViewById(R.id.server_address_text_view);
itemView.setOnClickListener(this); itemView.setOnClickListener(this);
itemView.setOnLongClickListener(this);
serverName.setSelected(true); serverName.setSelected(true);
} }
@ -109,6 +106,18 @@ public class ServerAdapter extends RecyclerView.Adapter<ServerAdapter.ViewHolder
}); });
} }
@Override
public boolean onLongClick(View v) {
Bundle bundle = new Bundle();
bundle.putParcelable("server_object", servers.get(getBindingAdapterPosition()));
ServerSignupDialog dialog = new ServerSignupDialog();
dialog.setArguments(bundle);
dialog.show(mainActivity.getSupportFragmentManager(), null);
return true;
}
private void enter() { private void enter() {
mainActivity.goFromLogin(); mainActivity.goFromLogin();
} }

View file

@ -15,7 +15,7 @@ import com.cappielloantonio.play.model.Queue;
import com.cappielloantonio.play.model.RecentSearch; import com.cappielloantonio.play.model.RecentSearch;
import com.cappielloantonio.play.model.Server; import com.cappielloantonio.play.model.Server;
@Database(entities = {Queue.class, Server.class, RecentSearch.class, Download.class}, version = 13, exportSchema = false) @Database(entities = {Queue.class, Server.class, RecentSearch.class, Download.class}, version = 14, exportSchema = false)
public abstract class AppDatabase extends RoomDatabase { public abstract class AppDatabase extends RoomDatabase {
private static final String TAG = "AppDatabase"; private static final String TAG = "AppDatabase";

View file

@ -20,12 +20,6 @@ public interface ServerDao {
@Insert(onConflict = OnConflictStrategy.REPLACE) @Insert(onConflict = OnConflictStrategy.REPLACE)
void insert(Server server); void insert(Server server);
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertAll(List<Server> servers);
@Delete @Delete
void delete(Server server); void delete(Server server);
@Query("DELETE FROM server")
void deleteAll();
} }

View file

@ -41,20 +41,6 @@ public class ServerRepository {
thread.start(); thread.start();
} }
public void order(List<Server> servers) {
try {
final Thread delete = new Thread(new DeleteAllThreadSafe(serverDao));
final Thread insertAll = new Thread(new InsertAllThreadSafe(serverDao, servers));
delete.start();
delete.join();
insertAll.start();
insertAll.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
private static class InsertThreadSafe implements Runnable { private static class InsertThreadSafe implements Runnable {
private ServerDao serverDao; private ServerDao serverDao;
private Server server; private Server server;
@ -84,32 +70,4 @@ public class ServerRepository {
serverDao.delete(server); serverDao.delete(server);
} }
} }
private static class InsertAllThreadSafe implements Runnable {
private ServerDao serverDao;
private List<Server> servers;
public InsertAllThreadSafe(ServerDao queueDao, List<Server> servers) {
this.serverDao = queueDao;
this.servers = servers;
}
@Override
public void run() {
serverDao.insertAll(servers);
}
}
private static class DeleteAllThreadSafe implements Runnable {
private ServerDao serverDao;
public DeleteAllThreadSafe(ServerDao serverDao) {
this.serverDao = serverDao;
}
@Override
public void run() {
serverDao.deleteAll();
}
}
} }

View file

@ -98,58 +98,6 @@ public class LoginFragment extends Fragment {
if (bind != null) bind.serverListRecyclerView.setVisibility(View.GONE); if (bind != null) bind.serverListRecyclerView.setVisibility(View.GONE);
} }
}); });
new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP | ItemTouchHelper.DOWN, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
int originalPosition = -1;
int fromPosition = -1;
int toPosition = -1;
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
if (originalPosition == -1)
originalPosition = viewHolder.getBindingAdapterPosition();
fromPosition = viewHolder.getBindingAdapterPosition();
toPosition = target.getBindingAdapterPosition();
Collections.swap(serverAdapter.getItems(), fromPosition, toPosition);
recyclerView.getAdapter().notifyItemMoved(fromPosition, toPosition);
return false;
}
@Override
public void clearView(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
super.clearView(recyclerView, viewHolder);
loginViewModel.orderServer(serverAdapter.getItems());
originalPosition = -1;
fromPosition = -1;
toPosition = -1;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
switch (direction) {
case ItemTouchHelper.LEFT:
loginViewModel.deleteServer(serverAdapter.getItem(viewHolder.getBindingAdapterPosition()));
viewHolder.itemView.setBackgroundColor(Color.RED);
break;
case ItemTouchHelper.RIGHT:
Bundle bundle = new Bundle();
bundle.putParcelable("server_object", serverAdapter.getItem(viewHolder.getBindingAdapterPosition()));
ServerSignupDialog dialog = new ServerSignupDialog();
dialog.setArguments(bundle);
dialog.show(activity.getSupportFragmentManager(), null);
bind.serverListRecyclerView.getAdapter().notifyDataSetChanged();
break;
}
}
}
).attachToRecyclerView(bind.serverListRecyclerView);
} }
@Override @Override

View file

@ -53,10 +53,6 @@ public class LoginViewModel extends AndroidViewModel {
} }
} }
public void orderServer(List<Server> servers) {
serverRepository.order(servers);
}
public void setServerToEdit(Server server) { public void setServerToEdit(Server server) {
toEdit = server; toEdit = server;
} }

View file

@ -107,8 +107,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:layout_marginTop="12dp"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
android:text="Direct access" android:text="Direct access"/>
android:onClick="onCheckboxClicked"/>
</LinearLayout> </LinearLayout>

View file

@ -24,7 +24,7 @@
android:scrollHorizontally="true" android:scrollHorizontally="true"
android:text="@string/label_placeholder" android:text="@string/label_placeholder"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@+id/server_holder_image" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
@ -43,17 +43,6 @@
android:paddingEnd="12dp" android:paddingEnd="12dp"
android:text="@string/label_placeholder" android:text="@string/label_placeholder"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@+id/server_holder_image"
app:layout_constraintTop_toBottomOf="@+id/server_name_text_view" />
<ImageView
android:id="@+id/server_holder_image"
android:layout_width="36dp"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:layout_marginEnd="20dp"
android:src="@drawable/ic_drag_handle"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toBottomOf="@+id/server_name_text_view" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>