misp-bump/app/src/main/java/lu/circl/mispbump/activities/HomeActivity.java

161 lines
5.4 KiB
Java
Raw Normal View History

2019-05-29 14:52:00 +02:00
package lu.circl.mispbump.activities;
2019-05-27 16:06:07 +02:00
import android.content.Intent;
import android.os.Bundle;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import com.google.gson.Gson;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.appcompat.widget.Toolbar;
2019-05-27 16:06:07 +02:00
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
2019-06-04 20:48:24 +02:00
import java.util.List;
2019-05-29 14:52:00 +02:00
import lu.circl.mispbump.R;
2019-06-04 20:48:24 +02:00
import lu.circl.mispbump.adapters.SyncAdapter;
import lu.circl.mispbump.auxiliary.DialogManager;
2019-05-27 16:06:07 +02:00
import lu.circl.mispbump.auxiliary.PreferenceManager;
import lu.circl.mispbump.interfaces.IOnItemClickListener;
2019-06-04 20:48:24 +02:00
import lu.circl.mispbump.models.UploadInformation;
2019-05-27 16:06:07 +02:00
public class HomeActivity extends AppCompatActivity {
2019-06-04 20:48:24 +02:00
public static final String TAG = "Home";
private CoordinatorLayout layout;
private RecyclerView recyclerView;
private PreferenceManager preferenceManager;
2019-06-11 14:52:41 +02:00
private View.OnClickListener onFabClicked = new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent sync = new Intent(HomeActivity.this, SyncActivity.class);
startActivity(sync);
}
};
2019-06-04 20:48:24 +02:00
2019-05-27 16:06:07 +02:00
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
2019-06-04 20:48:24 +02:00
preferenceManager = PreferenceManager.getInstance(this);
2019-06-11 14:52:41 +02:00
initializeViews();
}
2019-05-27 16:06:07 +02:00
2019-06-11 14:52:41 +02:00
@Override
protected void onResume() {
super.onResume();
initializeRecyclerView();
refreshSyncInformation();
2019-05-27 16:06:07 +02:00
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
2019-06-11 14:52:41 +02:00
if (item.getItemId() == R.id.menu_settings) {
startActivity(new Intent(HomeActivity.this, PreferenceActivity.class));
2019-06-04 20:48:24 +02:00
return true;
}
2019-05-27 16:06:07 +02:00
2019-06-11 14:52:41 +02:00
if (item.getItemId() == R.id.menu_profile) {
startActivity(new Intent(HomeActivity.this, ProfileActivity.class));
2019-06-04 20:48:24 +02:00
return true;
2019-05-27 16:06:07 +02:00
}
2019-06-04 20:48:24 +02:00
// invoke superclass to handle unrecognized item (eg. homeAsUp)
return super.onOptionsItemSelected(item);
2019-05-27 16:06:07 +02:00
}
2019-06-11 14:52:41 +02:00
private void initializeViews() {
layout = findViewById(R.id.rootLayout);
2019-05-27 16:06:07 +02:00
2019-06-11 14:52:41 +02:00
// populate Toolbar (Actionbar)
Toolbar myToolbar = findViewById(R.id.toolbar);
setSupportActionBar(myToolbar);
2019-05-27 16:06:07 +02:00
2019-06-11 14:52:41 +02:00
ActionBar ab = getSupportActionBar();
if (ab != null) {
ab.setDisplayHomeAsUpEnabled(false);
}
2019-05-27 16:06:07 +02:00
2019-06-11 14:52:41 +02:00
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
2019-06-04 20:48:24 +02:00
2019-06-11 14:52:41 +02:00
FloatingActionButton sync_fab = findViewById(R.id.home_fab);
sync_fab.setOnClickListener(onFabClicked);
2019-06-04 20:48:24 +02:00
}
private void refreshSyncInformation () {
2019-06-04 20:48:24 +02:00
List<UploadInformation> uploadInformationList = preferenceManager.getUploadInformation();
2019-06-11 14:52:41 +02:00
TextView empty = findViewById(R.id.emtpy);
2019-05-27 16:06:07 +02:00
// no sync information available
2019-06-11 14:52:41 +02:00
if (uploadInformationList == null) {
empty.setVisibility(View.VISIBLE);
recyclerView.setVisibility(View.GONE);
return;
}
// sync information available
2019-06-11 14:52:41 +02:00
empty.setVisibility(View.GONE);
recyclerView.setVisibility(View.VISIBLE);
SyncAdapter adapter = (SyncAdapter) recyclerView.getAdapter();
assert adapter != null;
adapter.setUploadInformationList(uploadInformationList);
}
private void initializeRecyclerView() {
SyncAdapter syncAdapter = new SyncAdapter(HomeActivity.this);
syncAdapter.setOnDeleteClickListener(new IOnItemClickListener<UploadInformation>() {
@Override
public void onItemClick(final UploadInformation clickedObject) {
DialogManager.deleteSyncInformationDialog(HomeActivity.this, new DialogManager.IDialogFeedback() {
@Override
public void positive() {
boolean status = preferenceManager.removeUploadInformation(clickedObject.getId());
if (status) {
Snackbar.make(layout, "Successfully deleted sync information", Snackbar.LENGTH_LONG).show();
refreshSyncInformation();
} else {
Snackbar.make(layout, "Failed to delete sync information", Snackbar.LENGTH_LONG).show();
}
}
@Override
public void negative() { }
});
}
});
syncAdapter.setOnRetryClickListener(new IOnItemClickListener<UploadInformation>() {
@Override
public void onItemClick(UploadInformation clickedObject) {
Intent upload = new Intent(HomeActivity.this, UploadActivity.class);
upload.putExtra(UploadActivity.EXTRA_UPLOAD_INFO, new Gson().toJson(clickedObject));
startActivity(upload);
}
});
2019-06-11 14:52:41 +02:00
recyclerView.setAdapter(syncAdapter);
2019-06-04 20:48:24 +02:00
}
2019-05-27 16:06:07 +02:00
}