package com.V4Creations.vtulife.view.activity; import java.util.ArrayList; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.ActionBarActivity; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.Window; import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import com.V4Creations.vtulife.R; import com.V4Creations.vtulife.controller.adapters.NotificationAdapter; import com.V4Creations.vtulife.controller.db.VTULifeDataBase; import com.V4Creations.vtulife.model.VTULifeNotification; import com.V4Creations.vtulife.model.interfaces.NotificationFromDBListener; import com.V4Creations.vtulife.util.BugSenseManager; import com.V4Creations.vtulife.util.GoogleAnalyticsManager; import de.keyboardsurfer.android.widget.crouton.Crouton; import de.keyboardsurfer.android.widget.crouton.Style; import de.timroes.swipetodismiss.SwipeDismissList; import de.timroes.swipetodismiss.SwipeDismissList.SwipeDirection; public class VTULifeNotificationActivity extends ActionBarActivity { private NotificationAdapter mNotificationAdapter; private SwipeDismissList mSwipeList; private ListView mListView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); BugSenseManager.initBugSense(this); requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); setContentView(R.layout.activity_notification); setSupportProgressBarIndeterminateVisibility(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); initViews(); VTULifeDataBase.getInstance(getApplicationContext()).getNotifications( new NotificationFromDBListener() { @Override public void notificationListCreated( ArrayList<VTULifeNotification> notifications) { mNotificationAdapter.supportAddAll(notifications); setSupportProgressBarIndeterminateVisibility(false); } }); } private void initViews() { TextView noteTextView = (TextView) findViewById(R.id.noteTextView); noteTextView.setSelected(true); initListView(); } private void initListView() { mListView = (ListView) findViewById(R.id.listView); mListView.setEmptyView(findViewById(R.id.emptyView)); mNotificationAdapter = new NotificationAdapter(this); mListView.setAdapter(mNotificationAdapter); initSwipeToDelete(); mListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { mNotificationAdapter.getItem(position).toggelNotificationSaw(); mNotificationAdapter.notifyDataSetChanged(); new Handler().postDelayed(new Runnable() { @Override public void run() { mNotificationAdapter.notifyDataSetChanged(); } }, 500); } }); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; case R.id.menu_clear: clearNotifications(); return true; } return super.onOptionsItemSelected(item); } private void clearNotifications() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage(R.string.are_you_sure) .setCancelable(false) .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { processClearNotification(); } }) .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alert = builder.create(); alert.setTitle(R.string.clear_all_notifications); alert.setIcon(android.R.drawable.ic_dialog_alert); alert.show(); } protected void processClearNotification() { if (VTULifeDataBase.getInstance(getApplicationContext()) .clearAllNotifications()) { Crouton.makeText(this, R.string.notification_cleared, Style.INFO) .show(); mNotificationAdapter.clear(); } else Toast.makeText(getApplicationContext(), R.string.no_notification_to_clear, Toast.LENGTH_SHORT) .show(); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.clear_menu, menu); return true; } @Override protected void onStart() { super.onStart(); GoogleAnalyticsManager.startGoogleAnalyticsForActivity(this); } @Override protected void onStop() { super.onStop(); GoogleAnalyticsManager.stopGoogleAnalyticsForActivity(this); mSwipeList.discardUndo(); } private void initSwipeToDelete() { SwipeDismissList.OnDismissCallback callback = new SwipeDismissList.OnDismissCallback() { public SwipeDismissList.Undoable onDismiss(AbsListView listView, final int position) { final VTULifeNotification deletedItem = mNotificationAdapter .getItem(position); mNotificationAdapter.remove(deletedItem); return new SwipeDismissList.Undoable() { public void undo() { mNotificationAdapter.insert(deletedItem, position); } public String getTitle() { return getString(R.string.notification_deleted, deletedItem.toString()); } public void discard() { deletedItem.delete(); } }; } }; mSwipeList = new SwipeDismissList(mListView, callback); mSwipeList.setSwipeDirection(SwipeDirection.START); } }