Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 37d1839c authored by Wysie's avatar Wysie
Browse files

Added ability to see groups when viewing contact info.

parent 47c3ee4d
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -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>

@@ -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>
+67 −3
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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) {
@@ -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;
@@ -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) {