Loading res/values/strings.xml +7 −0 Original line number Diff line number Diff line Loading @@ -341,6 +341,8 @@ <!-- Section header in the Edit Contacts screen for other options, such as setting ringtone --> <string name="listSeparatorOtherInformation_edit">Other options</string> <string name="listSeparatorGroup">Group(s)</string> <!-- Section header in the Edit Contacts screen for the "Add more items" button --> <string name="listSeparatorMore_edit">More</string> Loading Loading @@ -799,4 +801,9 @@ <string name="alert_clear_freq_called">Clear frequently called</string> <string name="alert_clear_freq_called_msg">Are you sure you want to clear all frequently called entries?</string> <!-- Wysie_Soh: View contact strings --> <string name="view_contact_navigate">Navigate to</string> <string name="view_contact_groups">Groups</string> </resources> src/com/android/contacts/ViewContactActivity.java +67 −3 Original line number Diff line number Diff line Loading @@ -75,6 +75,8 @@ import android.os.SystemProperties; import android.provider.Contacts; import android.provider.Im; import android.provider.Contacts.ContactMethods; import android.provider.Contacts.Groups; import android.provider.Contacts.GroupMembership; import android.provider.Contacts.Organizations; import android.provider.Contacts.People; import android.provider.Contacts.Phones; Loading Loading @@ -150,6 +152,9 @@ public class ViewContactActivity extends ListActivity /* package */ ArrayList<ViewEntry> mOrganizationEntries = new ArrayList<ViewEntry>(); /* package */ ArrayList<ViewEntry> mOtherEntries = new ArrayList<ViewEntry>(); /* package */ ArrayList<ArrayList<ViewEntry>> mSections = new ArrayList<ArrayList<ViewEntry>>(); /* Wysie_Soh */ ArrayList<ViewEntry> mGroupEntries = new ArrayList<ViewEntry>(); /* Wysie_Soh */ ArrayList<String> groupNamesArray = new ArrayList<String>(); //Global variable, might use it for dialog or something in future private Cursor mCursor; private boolean mObserverRegistered; Loading Loading @@ -260,6 +265,7 @@ public class ViewContactActivity extends ListActivity mSections.add(mNavigationEntries); mSections.add(mOrganizationEntries); mSections.add(mOtherEntries); mSections.add(mGroupEntries); //TODO Read this value from a preference mShowSmsLinksForAllPhones = true; Loading Loading @@ -733,7 +739,7 @@ public class ViewContactActivity extends ListActivity separator = new ViewEntry(); separator.kind = ViewEntry.KIND_SEPARATOR; separator.data = getString(R.string.listSeparatorNaviAddress); mPostalEntries.add(separator); mNavigationEntries.add(separator); separator = new ViewEntry(); separator.kind = ViewEntry.KIND_SEPARATOR; Loading @@ -744,6 +750,11 @@ public class ViewContactActivity extends ListActivity separator.kind = ViewEntry.KIND_SEPARATOR; separator.data = getString(R.string.listSeparatorOtherInformation); mOtherEntries.add(separator); separator = new ViewEntry(); separator.kind = ViewEntry.KIND_SEPARATOR; separator.data = getString(R.string.listSeparatorGroup); mGroupEntries.add(separator); } private Uri constructImToUrl(String host, String data) { Loading Loading @@ -878,7 +889,7 @@ public class ViewContactActivity extends ListActivity //Wysie_Soh: Navigation portion ViewEntry entry2 = new ViewEntry(); entry2.label = "Navigate to"; entry2.label = getString(R.string.view_contact_navigate); entry2.data = data; entry2.maxLines = 4; entry2.actionIcon = R.drawable.sym_action_navi; Loading Loading @@ -1070,6 +1081,59 @@ public class ViewContactActivity extends ListActivity entry.actionIcon = R.drawable.sym_send_to_voicemail; mOtherEntries.add(entry); } //Wysie_Soh: Group entries stuffs final String[] GROUP_MEMBERSHIP_PROJECTION = new String[] { GroupMembership.GROUP_ID, GroupMembership.PERSON_ID }; final String[] GROUPS_PROJECTION = new String[] { Groups.SYSTEM_ID, // 0 Groups.NAME, // 1 }; Cursor groupCursor = mResolver.query(GroupMembership.CONTENT_URI, GROUP_MEMBERSHIP_PROJECTION, GroupMembership.PERSON_ID + "='" + personId + "'", null, null); Cursor cur = null; if (groupCursor.moveToFirst()) { do { cur = mResolver.query(Groups.CONTENT_URI, GROUPS_PROJECTION, Contacts.Groups._ID + "='" + groupCursor.getString(groupCursor.getColumnIndex(GroupMembership.GROUP_ID)) + "'", null, null); if (cur != null) { if (cur.moveToFirst()) { groupNamesArray.add(cur.getString(cur.getColumnIndex(Groups.NAME))); } } } while (groupCursor.moveToNext()); cur.close(); //sort group names by alphabetical ascending order java.util.Collections.sort(groupNamesArray); StringBuilder groups = new StringBuilder(); for (int i = 0; i < groupNamesArray.size(); i++) { if (i == 0) groups.append(groupNamesArray.get(i)); else groups.append("\n" + groupNamesArray.get(i)); } ViewEntry entry = new ViewEntry(); entry.label = getString(R.string.view_contact_groups); entry.data = groups.toString(); entry.actionIcon = com.android.internal.R.drawable.ic_menu_allfriends; entry.maxLines = 10; mGroupEntries.add(entry); } groupCursor.close(); } String buildActionString(int actionResId, CharSequence type, boolean lowerCase) { Loading Loading
res/values/strings.xml +7 −0 Original line number Diff line number Diff line Loading @@ -341,6 +341,8 @@ <!-- Section header in the Edit Contacts screen for other options, such as setting ringtone --> <string name="listSeparatorOtherInformation_edit">Other options</string> <string name="listSeparatorGroup">Group(s)</string> <!-- Section header in the Edit Contacts screen for the "Add more items" button --> <string name="listSeparatorMore_edit">More</string> Loading Loading @@ -799,4 +801,9 @@ <string name="alert_clear_freq_called">Clear frequently called</string> <string name="alert_clear_freq_called_msg">Are you sure you want to clear all frequently called entries?</string> <!-- Wysie_Soh: View contact strings --> <string name="view_contact_navigate">Navigate to</string> <string name="view_contact_groups">Groups</string> </resources>
src/com/android/contacts/ViewContactActivity.java +67 −3 Original line number Diff line number Diff line Loading @@ -75,6 +75,8 @@ import android.os.SystemProperties; import android.provider.Contacts; import android.provider.Im; import android.provider.Contacts.ContactMethods; import android.provider.Contacts.Groups; import android.provider.Contacts.GroupMembership; import android.provider.Contacts.Organizations; import android.provider.Contacts.People; import android.provider.Contacts.Phones; Loading Loading @@ -150,6 +152,9 @@ public class ViewContactActivity extends ListActivity /* package */ ArrayList<ViewEntry> mOrganizationEntries = new ArrayList<ViewEntry>(); /* package */ ArrayList<ViewEntry> mOtherEntries = new ArrayList<ViewEntry>(); /* package */ ArrayList<ArrayList<ViewEntry>> mSections = new ArrayList<ArrayList<ViewEntry>>(); /* Wysie_Soh */ ArrayList<ViewEntry> mGroupEntries = new ArrayList<ViewEntry>(); /* Wysie_Soh */ ArrayList<String> groupNamesArray = new ArrayList<String>(); //Global variable, might use it for dialog or something in future private Cursor mCursor; private boolean mObserverRegistered; Loading Loading @@ -260,6 +265,7 @@ public class ViewContactActivity extends ListActivity mSections.add(mNavigationEntries); mSections.add(mOrganizationEntries); mSections.add(mOtherEntries); mSections.add(mGroupEntries); //TODO Read this value from a preference mShowSmsLinksForAllPhones = true; Loading Loading @@ -733,7 +739,7 @@ public class ViewContactActivity extends ListActivity separator = new ViewEntry(); separator.kind = ViewEntry.KIND_SEPARATOR; separator.data = getString(R.string.listSeparatorNaviAddress); mPostalEntries.add(separator); mNavigationEntries.add(separator); separator = new ViewEntry(); separator.kind = ViewEntry.KIND_SEPARATOR; Loading @@ -744,6 +750,11 @@ public class ViewContactActivity extends ListActivity separator.kind = ViewEntry.KIND_SEPARATOR; separator.data = getString(R.string.listSeparatorOtherInformation); mOtherEntries.add(separator); separator = new ViewEntry(); separator.kind = ViewEntry.KIND_SEPARATOR; separator.data = getString(R.string.listSeparatorGroup); mGroupEntries.add(separator); } private Uri constructImToUrl(String host, String data) { Loading Loading @@ -878,7 +889,7 @@ public class ViewContactActivity extends ListActivity //Wysie_Soh: Navigation portion ViewEntry entry2 = new ViewEntry(); entry2.label = "Navigate to"; entry2.label = getString(R.string.view_contact_navigate); entry2.data = data; entry2.maxLines = 4; entry2.actionIcon = R.drawable.sym_action_navi; Loading Loading @@ -1070,6 +1081,59 @@ public class ViewContactActivity extends ListActivity entry.actionIcon = R.drawable.sym_send_to_voicemail; mOtherEntries.add(entry); } //Wysie_Soh: Group entries stuffs final String[] GROUP_MEMBERSHIP_PROJECTION = new String[] { GroupMembership.GROUP_ID, GroupMembership.PERSON_ID }; final String[] GROUPS_PROJECTION = new String[] { Groups.SYSTEM_ID, // 0 Groups.NAME, // 1 }; Cursor groupCursor = mResolver.query(GroupMembership.CONTENT_URI, GROUP_MEMBERSHIP_PROJECTION, GroupMembership.PERSON_ID + "='" + personId + "'", null, null); Cursor cur = null; if (groupCursor.moveToFirst()) { do { cur = mResolver.query(Groups.CONTENT_URI, GROUPS_PROJECTION, Contacts.Groups._ID + "='" + groupCursor.getString(groupCursor.getColumnIndex(GroupMembership.GROUP_ID)) + "'", null, null); if (cur != null) { if (cur.moveToFirst()) { groupNamesArray.add(cur.getString(cur.getColumnIndex(Groups.NAME))); } } } while (groupCursor.moveToNext()); cur.close(); //sort group names by alphabetical ascending order java.util.Collections.sort(groupNamesArray); StringBuilder groups = new StringBuilder(); for (int i = 0; i < groupNamesArray.size(); i++) { if (i == 0) groups.append(groupNamesArray.get(i)); else groups.append("\n" + groupNamesArray.get(i)); } ViewEntry entry = new ViewEntry(); entry.label = getString(R.string.view_contact_groups); entry.data = groups.toString(); entry.actionIcon = com.android.internal.R.drawable.ic_menu_allfriends; entry.maxLines = 10; mGroupEntries.add(entry); } groupCursor.close(); } String buildActionString(int actionResId, CharSequence type, boolean lowerCase) { Loading