Lots of new logic for acknowledging waiting on mes from task edit

pull/14/head
Sam Bosley 12 years ago
parent 1813b07dff
commit 7e1a24adb1

@ -114,7 +114,7 @@ public final class CoreFilterExposer extends BroadcastReceiver implements Astrid
FilterWithCustomIntent waitingOnMe = new FilterWithCustomIntent(r.getString(R.string.BFE_waiting_on_me), r.getString(R.string.BFE_waiting_on_me),
new QueryTemplate().join(Join.inner(WaitingOnMe.TABLE, Task.UUID.eq(WaitingOnMe.TASK_UUID))).where(
Criterion.and(TaskCriteria.activeVisibleMine(),
WaitingOnMe.DELETED_AT.eq(0))), null);
WaitingOnMe.DELETED_AT.eq(0), WaitingOnMe.ACKNOWLEDGED.eq(0))).groupBy(Task.UUID), null);
waitingOnMe.customTaskList = new ComponentName(ContextManager.getContext(), WaitingOnMeFragment.class);
int themeFlags = ThemeService.getFilterThemeFlags();
waitingOnMe.listingIcon = ((BitmapDrawable) r.getDrawable(

@ -12,6 +12,37 @@
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/waiting_on_me"
android:layout_width="fill_parent"
android:layout_height="43dip"
android:gravity="center_vertical"
android:visibility="gone"
android:background="?attr/asMembersHeaderBackground">
<TextView
android:id="@+id/wom_message"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:layout_weight="1"/>
<TextView
android:id="@+id/wom_dismiss"
android:layout_width="fill_parent"
android:layout_height="20dip"
android:textColor="@android:color/white"
android:background="#707070"
android:text="@string/wom_dismiss"/>
<TextView
android:id="@+id/wom_acknowledge"
android:layout_width="fill_parent"
android:layout_height="20dip"
android:textColor="@android:color/white"
android:background="?attr/asThemeTextColor"
android:text="@string/wom_acknowledge"/>
</LinearLayout>
<com.todoroo.astrid.ui.NestableScrollView
android:id="@+id/edit_scroll"
style="@style/Content_EditScroll"

@ -941,6 +941,18 @@
<!-- Widget configuration activity title: select a filter -->
<string name="WCA_title">Select tasks to view...</string>
<!-- ======================================================== Waiting on me -->
<string name="wom_commented">%s made a comment</string>
<string name="wom_mentioned">%s mentioned you</string>
<string name="wom_assigned">%s assigned this to you</string>
<string name="wom_raised_pri">%s raised the priority</string>
<string name="wom_changed_due">%s changed the due date</string>
<string name="wom_default">%s wants your attention</string>
<string name="wom_dismiss">Dismiss</string>
<string name="wom_acknowledge">I\'ve read this</string>
<!-- ============================================================= About == -->

@ -70,10 +70,14 @@ import com.todoroo.astrid.actfm.sync.ActFmPreferenceService;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.dao.TaskAttachmentDao;
import com.todoroo.astrid.dao.TaskOutstandingDao;
import com.todoroo.astrid.dao.UserDao;
import com.todoroo.astrid.dao.WaitingOnMeDao;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskAttachment;
import com.todoroo.astrid.data.TaskOutstanding;
import com.todoroo.astrid.data.User;
import com.todoroo.astrid.data.WaitingOnMe;
import com.todoroo.astrid.files.AACRecordingActivity;
import com.todoroo.astrid.files.FileExplore;
import com.todoroo.astrid.files.FileUtilities;
@ -211,6 +215,12 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
@Autowired
private ActFmPreferenceService actFmPreferenceService;
@Autowired
private WaitingOnMeDao waitingOnMeDao;
@Autowired
private UserDao userDao;
// --- UI components
private ImageButton voiceAddNoteButton;
@ -733,6 +743,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
if (model != null) {
// came from bundle
setIsNewTask(model.getValue(Task.TITLE).length() == 0);
setupWaitingOnMe();
return;
}
@ -766,7 +777,9 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
} else {
StatisticsService.reportEvent(StatisticsConstants.EDIT_TASK);
}
setIsNewTask(model.getValue(Task.TITLE).length() == 0);
setupWaitingOnMe();
if (model == null) {
exceptionService.reportError("task-edit-no-task",
@ -780,6 +793,63 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
}
private void setupWaitingOnMe() {
if (!isNewTask) {
WaitingOnMe wom = waitingOnMeDao.findByTask(model.getUuid());
if (wom != null) {
final View waitingOnMe = getView().findViewById(R.id.waiting_on_me);
waitingOnMe.setVisibility(View.VISIBLE);
waitingOnMe.findViewById(R.id.wom_dismiss).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
WaitingOnMe template = new WaitingOnMe();
template.setValue(WaitingOnMe.DELETED_AT, DateUtilities.now());
waitingOnMeDao.update(WaitingOnMe.TASK_UUID.eq(model.getUuid()), template);
waitingOnMe.setVisibility(View.GONE);
}
});
waitingOnMe.findViewById(R.id.wom_acknowledge).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
WaitingOnMe template = new WaitingOnMe();
template.setValue(WaitingOnMe.ACKNOWLEDGED, 1);
waitingOnMeDao.update(WaitingOnMe.TASK_UUID.eq(model.getUuid()), template);
waitingOnMe.setVisibility(View.GONE);
}
});
TextView womText = (TextView) waitingOnMe.findViewById(R.id.wom_message);
womText.setText(getWomText(wom));
}
}
}
private String getWomText(WaitingOnMe wom) {
int resource;
String type = wom.getValue(WaitingOnMe.WAIT_TYPE);
if (WaitingOnMe.WAIT_TYPE_ASSIGNED.equals(type))
resource = R.string.wom_assigned;
else if (WaitingOnMe.WAIT_TYPE_CHANGED_DUE.equals(type))
resource = R.string.wom_changed_due;
else if (WaitingOnMe.WAIT_TYPE_COMMENTED.equals(type))
resource = R.string.wom_commented;
else if (WaitingOnMe.WAIT_TYPE_MENTIONED.equals(type))
resource = R.string.wom_mentioned;
else if (WaitingOnMe.WAIT_TYPE_RAISED_PRI.equals(type))
resource = R.string.wom_raised_pri;
else
resource = R.string.wom_default;
String userString = null;
User user = userDao.fetch(wom.getValue(WaitingOnMe.WAITING_USER_ID), User.PROPERTIES);
if (user != null)
userString = user.getDisplayName();
if (TextUtils.isEmpty(userString))
userString = getString(R.string.ENA_no_user);
return getString(resource, userString);
}
public long getTaskIdInProgress() {
if (model != null && model.getId() > 0)
return model.getId();

@ -1,7 +1,10 @@
package com.todoroo.astrid.dao;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query;
import com.todoroo.astrid.actfm.sync.messages.NameMaps;
import com.todoroo.astrid.data.WaitingOnMe;
@ -20,4 +23,10 @@ public class WaitingOnMeDao extends RemoteModelDao<WaitingOnMe> {
protected boolean shouldRecordOutstandingEntry(String columnName, Object value) {
return NameMaps.shouldRecordOutstandingColumnForTable(NameMaps.TABLE_ID_WAITING_ON_ME, columnName);
}
public WaitingOnMe findByTask(String taskUuid) {
TodorooCursor<WaitingOnMe> cursor = query(Query.select(WaitingOnMe.PROPERTIES).where(
Criterion.and(WaitingOnMe.TASK_UUID.eq(taskUuid), WaitingOnMe.ACKNOWLEDGED.eq(0), WaitingOnMe.DELETED_AT.eq(0))));
return returnFetchResult(cursor);
}
}

Loading…
Cancel
Save