Created
July 2, 2015 15:36
-
-
Save ntorvik/366c6952a86b081371c7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class MainActivity extends Activity { | |
Application application = (Application) MyApplication.getStaticContext(); | |
MyApplication app = (MyApplication) application; | |
Database database; | |
RecyclerView mRecyclerView; | |
MyTaskListAdapter mTaskListAdapter; | |
private static FloatingActionMenu actionMenu; | |
private static boolean mSubMenuOpen; | |
private static final String DOC_TYPE_EMAIL = "email"; | |
private static final String DOC_TYPE_SMS = "sms"; | |
private static final String BHM_VIEW = "bhm_view"; | |
private Query queryTasks; | |
private void registerViews() { | |
com.couchbase.lite.View tasksView = database.getView(BHM_VIEW); | |
tasksView.setMap(new Mapper() { | |
@Override | |
public void map(Map<String, Object> document, Emitter emitter) { | |
if (DOC_TYPE_EMAIL.equals(document.get("type"))) { | |
emitter.emit(document.get("created_at"), document); | |
} | |
if (DOC_TYPE_SMS.equals(document.get("type"))) { | |
emitter.emit(document.get("created_at"), document); | |
} | |
// emitter.emit(document.get("_id"), document); | |
} | |
}, "2"); | |
} | |
@Override | |
public void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.fragment_list_main_new); | |
setFAB(); | |
mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view); | |
database = app.getDatabase(); | |
registerViews(); | |
mTaskListAdapter = new MyTaskListAdapter(this, new ArrayList<Task>(), database); | |
mRecyclerView.setAdapter(mTaskListAdapter); | |
mRecyclerView.setHasFixedSize(true); | |
mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); | |
DefaultItemAnimator animator = new DefaultItemAnimator(); | |
mRecyclerView.setItemAnimator(animator); | |
// mRecyclerView.setItemAnimator(new OvershootInRightAnimator()); | |
// mRecyclerView.getItemAnimator().setAddDuration(200); | |
// mRecyclerView.getItemAnimator().setRemoveDuration(200); | |
// mRecyclerView.getItemAnimator().setMoveDuration(200); | |
// mRecyclerView.getItemAnimator().setChangeDuration(200); | |
mTaskListAdapter.SetOnItemClickListener(new MyTaskListAdapter.OnItemClickListener() { | |
@Override | |
public void onItemClick(View view, Task task, int pos) { | |
String docID = (String) task.getTask_id(); | |
onTaskInteraction(view, docID, false, pos); | |
} | |
}); | |
queryTasks = database.getView(BHM_VIEW).createQuery(); | |
redrawTaskView(queryTasks); | |
database.addChangeListener(new Database.ChangeListener() { | |
@Override | |
public void changed(Database.ChangeEvent event) { | |
redrawTaskView(queryTasks); | |
// | |
// runOnUiThread(new Runnable() { | |
// @Override | |
// public void run() { | |
// mRecyclerView.getAdapter().notifyDataSetChanged(); | |
// } | |
// }); | |
} | |
}); | |
} | |
@Override | |
protected void onActivityResult(int requestCode, int resultCode, Intent data) { | |
Log.d("TAG", "*** Inside onActivtiyResult: resultCode = "+String.valueOf(resultCode)); | |
switch (resultCode) { | |
case 10: mTaskListAdapter.notifyItemInserted(0); | |
break; | |
case 20: mTaskListAdapter.notifyDataSetChanged(); | |
break; | |
} | |
super.onActivityResult(requestCode, resultCode, data); | |
} | |
private void redrawTaskView(Query queryTasks) { | |
QueryEnumerator rows = null; | |
try { | |
rows = queryTasks.run(); | |
} catch (CouchbaseLiteException e) { | |
e.printStackTrace(); | |
} | |
List<Task> task = new ArrayList<>(); | |
for (Iterator<QueryRow> it = rows; it.hasNext(); ) { | |
QueryRow row = it.next(); | |
// Log.e("TAG", row.getValue().toString()); | |
Map<String, Object> properties = database.getDocument(row.getDocumentId()).getProperties(); | |
Log.d("TAG", "properties: " + String.valueOf(properties)); | |
task.add(new Task((LazyJsonObject) row.getValue())); | |
} | |
mTaskListAdapter.dataSet = task; | |
} | |
public void deleteTask(int pos, String docID) { | |
mTaskListAdapter.dataSet.remove(pos); | |
CBHelper cbh = new CBHelper(docID); | |
try { | |
cbh.deleteDoc(); | |
} catch (CouchbaseLiteException e) { | |
e.printStackTrace(); | |
} | |
mTaskListAdapter.notifyItemRemoved(pos); | |
} | |
private void setFAB() { | |
/ ** FAB Code removed for brevity ** / | |
} | |
@Override | |
public boolean onCreateOptionsMenu(Menu menu) { | |
getMenuInflater().inflate(R.menu.menu_main, menu); | |
return true; | |
} | |
public void onTaskInteraction(View view, final String docID, boolean longClick, final int pos) { | |
Log.d("TAG","Position = "+String.valueOf(pos)); | |
final CBHelper cbh = new CBHelper(docID); | |
Log.d("TAG","TaskType = "+cbh.getTask_type()); | |
app.setSavedDocID(docID); | |
final String status = cbh.getTask_status(); | |
if (mSubMenuOpen) { | |
actionMenu.close(true); | |
} | |
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { | |
@Override | |
public void onClick(DialogInterface dialog, int which) { | |
switch (which) { | |
case 0: | |
if (status.equals("active")) { | |
cbh.setTask_status_disabled(); | |
} | |
if (status.equals("disabled")) { | |
cbh.setTask_status_active(); | |
} | |
mTaskListAdapter.notifyDataSetChanged(); | |
break; | |
case 1: | |
deleteTask(pos, docID); | |
break; | |
case 2: | |
try { | |
cbh.cloneTask(); | |
} catch (CouchbaseLiteException e) { | |
e.printStackTrace(); | |
} | |
mTaskListAdapter.notifyItemInserted(pos); | |
break; | |
case 3: | |
cbh.sendNow(); | |
break; | |
case 4: { | |
Intent intent = new Intent(); | |
intent.setClass(getApplicationContext(), EditTaskWizardActivity.class); | |
startActivityForResult(intent, 20); | |
} | |
break; | |
case DialogInterface.BUTTON_POSITIVE: | |
//Yes button clicked | |
break; | |
case DialogInterface.BUTTON_NEGATIVE: | |
//No button clicked | |
break; | |
} | |
} | |
}; | |
final CharSequence[] items = {getString(R.string.context_toggle_status) | |
+ (status.equals("active") ? "DISABLED" : "ACTIVE"), | |
getString(R.string.context_task_delete), | |
getString(R.string.context_task_clone), | |
getString(R.string.context_task_sendNow), | |
getString(R.string.context_task_edit)}; | |
AlertDialog.Builder builder = new AlertDialog.Builder(this); | |
builder.setTitle(R.string.dialog_task_option) | |
.setItems(items, dialogClickListener) | |
.setNegativeButton(R.string.Cancel, dialogClickListener) | |
.show(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment