119 lines
4.3 KiB
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);
|
|
}
|
|
}
|