wedroid/app/src/main/java/it/unisannio/ding/ids/wedroid/app/view/WListsListActivity.java

119 lines
4.3 KiB
Java

package it.unisannio.ding.ids.wedroid.app.view;
import android.content.Intent;
import android.content.res.ColorStateList;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import java.util.List;
import java.util.Objects;
import it.unisannio.ding.ids.wedroid.app.R;
import it.unisannio.ding.ids.wedroid.app.data.entity.WList;
import it.unisannio.ding.ids.wedroid.app.util.SharedPreferenceHelper;
import it.unisannio.ding.ids.wedroid.app.view.adapter.WListsAdapter;
import it.unisannio.ding.ids.wedroid.app.viewmodel.WListsListViewModel;
public class WListsListActivity extends AppCompatActivity {
Toolbar myToolbar;
int barColor;
WListsListViewModel viewModel;
RecyclerView recyclerView;
//SwipeRefreshLayout swipeRefreshLayout;
SharedPreferenceHelper sp;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wlists_view);
myToolbar = findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);
//swipeRefreshLayout = findViewById(R.id.pullToRefresh);
sp = new SharedPreferenceHelper(this);
Intent i = getIntent();
String boardTitle = i.getStringExtra("barTitle");
Objects.requireNonNull(getSupportActionBar()).setTitle(boardTitle);
barColor = i.getIntExtra("barColor", 0);
setResult(WListsListActivity.RESULT_OK, i);
myToolbar.setBackgroundColor(barColor);
recyclerView = findViewById(R.id.recyclerviewWList);
initializeUi(sp.getBoardId());
FloatingActionButton fab = findViewById(R.id.synchronize);
fab.setBackgroundTintList(ColorStateList.valueOf(barColor));
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
viewModel.refresh();
}
});
}
private void initializeUi(final String idBoard) {
final WListsAdapter adapter = new WListsAdapter(this);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this,
LinearLayoutManager.HORIZONTAL, false));
//recyclerView.setHasFixedSize(true);
viewModel = new ViewModelProvider(this).get(WListsListViewModel.class);
viewModel.getAllWLists().observe(this, new Observer<List<WList>>() {
@Override
public void onChanged(List<WList> wLists) {
adapter.setWLists(wLists);
}
});
swipeBottomToDelete(idBoard);
/* BUG REPORT: Refresh of page enter in conflict with swipe down for delete list
* swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
viewModel.refresh();
}
});*/
}
private void swipeBottomToDelete(final String idBoard) {
ItemTouchHelper.SimpleCallback simpleCallback = new ItemTouchHelper.SimpleCallback(0,
ItemTouchHelper.DOWN) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView,
@NonNull RecyclerView.ViewHolder viewHolder,
@NonNull RecyclerView.ViewHolder target) {
return true;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
int pos = viewHolder.getAdapterPosition();
viewModel.deleteWList(pos, idBoard);
Toast.makeText(getApplicationContext(), "List deleted", Toast.LENGTH_LONG).show();
}
};
new ItemTouchHelper(simpleCallback).attachToRecyclerView(recyclerView);
}
}