diff options
Diffstat (limited to 'src/com/android/calendar/agenda/AgendaWindowAdapter.java')
-rw-r--r-- | src/com/android/calendar/agenda/AgendaWindowAdapter.java | 60 |
1 files changed, 58 insertions, 2 deletions
diff --git a/src/com/android/calendar/agenda/AgendaWindowAdapter.java b/src/com/android/calendar/agenda/AgendaWindowAdapter.java index 9fd59f0f..97822f98 100644 --- a/src/com/android/calendar/agenda/AgendaWindowAdapter.java +++ b/src/com/android/calendar/agenda/AgendaWindowAdapter.java @@ -50,6 +50,7 @@ import com.android.calendar.Utils; import java.util.Date; import java.util.Formatter; +import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.Locale; @@ -74,7 +75,7 @@ Check for leaks and excessive allocations */ public class AgendaWindowAdapter extends BaseAdapter - implements StickyHeaderListView.HeaderIndexer, StickyHeaderListView.HeaderHeightListener{ + implements StickyHeaderListView.HeaderIndexer, StickyHeaderListView.HeaderHeightListener { static final boolean BASICLOG = false; static final boolean DEBUGLOG = false; @@ -228,6 +229,10 @@ public class AgendaWindowAdapter extends BaseAdapter private final int mSelectedItemTextColor; private final float mItemRightMargin; + private boolean mLaunchedInShareMode; + private boolean mShouldSelectSingleEvent; + private HashSet<Long> mSharedEvents = new HashSet<Long>(); + // Types of Query private static final int QUERY_TYPE_OLDER = 0; // Query for older events private static final int QUERY_TYPE_NEWER = 1; // Query for newer events @@ -369,6 +374,12 @@ public class AgendaWindowAdapter extends BaseAdapter mAgendaListView.addHeaderView(mHeaderView); } + // "share mode" is off by default + public void launchInShareMode(boolean inShareMode, boolean selectSingleEvent) { + mLaunchedInShareMode = inShareMode; + mShouldSelectSingleEvent = selectSingleEvent; + } + // Method in Adapter @Override public int getViewTypeCount() { @@ -485,6 +496,25 @@ public class AgendaWindowAdapter extends BaseAdapter pastPresentDivider.setVisibility(View.GONE); } } + + if (mLaunchedInShareMode) { + Object tag = v.getTag(); + if (tag instanceof AgendaAdapter.ViewHolder) { + AgendaAdapter.ViewHolder vh = (AgendaAdapter.ViewHolder) tag; + + // toggle visibility of share checkbox + vh.selectedForSharing.setVisibility(View.VISIBLE); + vh.selectedForSharing.setClickable(false); + + // set 'checked' status + if (mSharedEvents.contains(vh.instanceId)) { + vh.selectedForSharing.setChecked(true); + } else { + vh.selectedForSharing.setChecked(false); + } + } + } + } else { // TODO Log.e(TAG, "BUG: getAdapterInfoByPosition returned null!!! " + position); @@ -1310,10 +1340,32 @@ public class AgendaWindowAdapter extends BaseAdapter Object vh = v.getTag(); if (vh instanceof AgendaAdapter.ViewHolder) { mSelectedVH = (AgendaAdapter.ViewHolder) vh; + boolean datasetChanged = false; + + if (mLaunchedInShareMode) { + + if (mShouldSelectSingleEvent) { + mSharedEvents.clear(); + mSharedEvents.add(mSelectedVH.instanceId); + } else { + + if (mSharedEvents.contains(mSelectedVH.instanceId)) { + mSharedEvents.remove(mSelectedVH.instanceId); + } else { + mSharedEvents.add(mSelectedVH.instanceId); + } + + } + + datasetChanged = true; + } + if (mSelectedInstanceId != mSelectedVH.instanceId) { mSelectedInstanceId = mSelectedVH.instanceId; - notifyDataSetChanged(); + datasetChanged = true; } + + if (datasetChanged) notifyDataSetChanged(); } } } @@ -1397,6 +1449,10 @@ public class AgendaWindowAdapter extends BaseAdapter return -1; } + public boolean isEventInShareList(long id) { + return mSharedEvents.contains(id); + } + @Override public void OnHeaderHeightChanged(int height) { mStickyHeaderSize = height; |