/* * Copyright (C) 2016 Ferid Cafer * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.ferid.app.classroom.past_attendances; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.text.TextUtils; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.TextView; import com.ferid.app.classroom.R; import com.ferid.app.classroom.adapters.PastAttendancesAdapter; import com.ferid.app.classroom.database.DatabaseManager; import com.ferid.app.classroom.listeners.AdapterClickListener; import com.ferid.app.classroom.listeners.OnAlertClick; import com.ferid.app.classroom.material_dialog.CustomAlertDialog; import com.ferid.app.classroom.model.Attendance; import com.ferid.app.classroom.model.Classroom; import java.util.ArrayList; /** * Created by ferid.cafer on 4/16/2015.<br /> * Shows the list of past attendances. */ public class PastAttendancesListActivity extends AppCompatActivity { private Context context; private RecyclerView list; private ArrayList<Attendance> arrayList = new ArrayList<>(); private PastAttendancesAdapter adapter; private TextView emptyText; //empty list view text private Classroom classroom; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.editable_list); Bundle args = getIntent().getExtras(); if (args != null) { classroom = args.getParcelable("classroom"); } context = this; //toolbar setToolbar(); list = (RecyclerView) findViewById(R.id.list); adapter = new PastAttendancesAdapter(arrayList); list.setAdapter(adapter); list.setLayoutManager(new LinearLayoutManager(context)); list.setHasFixedSize(true); emptyText = (TextView) findViewById(R.id.emptyText); emptyText.setText(getString(R.string.emptyMessagePastAttendance)); addAdapterClickListener(); new SelectAttendances().execute(); } /** * Create toolbar and set its attributes */ private void setToolbar() { Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); } setTitle(getString(R.string.pastAttendances)); if (toolbar != null && classroom != null) { toolbar.setSubtitle(classroom.getName()); } } /** * Set empty list text */ private void setEmptyText() { if (emptyText != null) { if (arrayList.isEmpty()) { emptyText.setVisibility(View.VISIBLE); } else { emptyText.setVisibility(View.GONE); } } } /** * Show student attendance list of the selected item * @param dateTime Taken attendance date */ private void showAttendance(String dateTime) { Intent intent = new Intent(context, PastAttendanceActivity.class); intent.putExtra("classroom", classroom); intent.putExtra("dateTime", dateTime); startActivityForResult(intent, 0); overridePendingTransition(R.anim.move_in_from_bottom, R.anim.stand_still); } /** * List item click event */ private void addAdapterClickListener() { adapter.setAdapterClickListener(new AdapterClickListener() { @Override public void OnItemClick(int position) { if (arrayList != null && arrayList.size() > position) { showAttendance(arrayList.get(position).getDateTime()); } } }); } /** * Select from the list of taken attendances */ private class SelectAttendances extends AsyncTask<Void, Void, ArrayList<Attendance>> { @Override protected ArrayList<Attendance> doInBackground(Void... params) { DatabaseManager databaseManager = new DatabaseManager(context); ArrayList<Attendance> tmpList = databaseManager.selectAttendanceDates(classroom.getId()); return tmpList; } @Override protected void onPostExecute(ArrayList<Attendance> tmpList) { arrayList.clear(); if (tmpList != null) { arrayList.addAll(tmpList); adapter.notifyDataSetChanged(); setEmptyText(); } } } /** * Delete all attendances of given class */ private class DeleteAllAttendances extends AsyncTask<Void, Void, Boolean> { @Override protected Boolean doInBackground(Void... params) { DatabaseManager databaseManager = new DatabaseManager(context); boolean isSuccessful = databaseManager.deleteAllAttendancesOfClass(classroom.getId()); return isSuccessful; } @Override protected void onPostExecute(Boolean isSuccessful) { if (isSuccessful) { new SelectAttendances().execute(); } } } /** * Ask to delete all */ private void deleteAllAttendances() { //try to delete if there are items in the list if (!arrayList.isEmpty()) { //show alert before deleting CustomAlertDialog customAlertDialog = new CustomAlertDialog(context); customAlertDialog.setMessage(getString(R.string.allToDelete)); customAlertDialog.setPositiveButtonText(getString(R.string.delete)); customAlertDialog.setNegativeButtonText(getString(R.string.cancel)); customAlertDialog.setOnClickListener(new OnAlertClick() { @Override public void OnPositive() { new DeleteAllAttendances().execute(); } @Override public void OnNegative() { //do nothing } }); customAlertDialog.showDialog(); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == Activity.RESULT_OK) { String actionMessage = data.getStringExtra("actionMessage"); if (!TextUtils.isEmpty(actionMessage)) { Snackbar.make(list, actionMessage, Snackbar.LENGTH_LONG).show(); } new SelectAttendances().execute(); } } private void closeWindow() { finish(); overridePendingTransition(R.anim.stand_still, R.anim.move_out_to_bottom); } @Override public void onBackPressed() { closeWindow(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_delete, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar actions click switch (item.getItemId()) { case android.R.id.home: closeWindow(); return true; case R.id.delete: deleteAllAttendances(); return true; default: return super.onOptionsItemSelected(item); } } }