@ -215,12 +215,10 @@ public class TagViewFragment extends TaskListFragment {
@Override
@Override
protected void addMenuItems ( Menu menu , Activity activity ) {
protected void addMenuItems ( Menu menu , Activity activity ) {
super . addMenuItems ( menu , activity ) ;
super . addMenuItems ( menu , activity ) ;
if ( ! Preferences . getBoolean ( R . string . p_show_list_members , true ) ) {
MenuItem item = menu . add ( Menu . NONE , MENU_LIST_SETTINGS_ID , 0 , R . string . tag_settings_title ) ;
MenuItem item = menu . add ( Menu . NONE , MENU_LIST_SETTINGS_ID , 0 , R . string . tag_settings_title ) ;
item . setIcon ( ThemeService . getDrawable ( R . drawable . list_settings ) ) ;
item . setIcon ( ThemeService . getDrawable ( R . drawable . list_settings ) ) ;
item . setShowAsAction ( MenuItem . SHOW_AS_ACTION_ALWAYS ) ;
item . setShowAsAction ( MenuItem . SHOW_AS_ACTION_ALWAYS ) ;
}
}
}
// --- data loading
// --- data loading
@ -434,234 +432,7 @@ public class TagViewFragment extends TaskListFragment {
}
}
protected void setUpMembersGallery ( ) {
protected void setUpMembersGallery ( ) {
if ( ! Preferences . getBoolean ( R . string . p_show_list_members , true ) ) {
getView ( ) . findViewById ( R . id . members_header ) . setVisibility ( View . GONE ) ;
getView ( ) . findViewById ( R . id . members_header ) . setVisibility ( View . GONE ) ;
return ;
}
if ( tagData = = null ) {
return ;
}
LinearLayout membersView = ( LinearLayout ) getView ( ) . findViewById ( R . id . shared_with ) ;
membersView . setOnClickListener ( settingsListener ) ;
boolean addedMembers = false ;
try {
String membersString = tagData . getValue ( TagData . MEMBERS ) ; // OK for legacy compatibility
if ( ! TextUtils . isEmpty ( membersString ) ) {
JSONArray members = new JSONArray ( membersString ) ;
if ( members . length ( ) > 0 ) {
addedMembers = true ;
membersView . setOnClickListener ( null ) ;
membersView . removeAllViews ( ) ;
for ( int i = 0 ; i < members . length ( ) ; i + + ) {
JSONObject member = members . getJSONObject ( i ) ;
addImageForMember ( membersView , member ) ;
}
}
} else {
TodorooCursor < User > users = userDao . query ( Query . select ( User . PROPERTIES )
. where ( User . UUID . in ( Query . select ( TagMemberMetadata . USER_UUID )
. from ( TagMetadata . TABLE )
. where ( Criterion . and ( TagMetadataCriteria . byTagAndWithKey ( tagData . getUuid ( ) , TagMemberMetadata . KEY ) , TagMetadata . DELETION_DATE . eq ( 0 ) ) ) ) ) ) ;
try {
addedMembers = users . getCount ( ) > 0 ;
if ( addedMembers ) {
membersView . setOnClickListener ( null ) ;
membersView . removeAllViews ( ) ;
}
User user = new User ( ) ;
for ( users . moveToFirst ( ) ; ! users . isAfterLast ( ) ; users . moveToNext ( ) ) {
user . clear ( ) ;
user . readFromCursor ( users ) ;
JSONObject member = new JSONObject ( ) ;
ActFmSyncService . JsonHelper . jsonFromUser ( member , user ) ;
addImageForMember ( membersView , member ) ;
}
} finally {
users . close ( ) ;
}
TodorooCursor < TagMetadata > byEmail = tagMetadataDao . query ( Query . select ( TagMemberMetadata . USER_UUID )
. where ( Criterion . and ( TagMetadataCriteria . byTagAndWithKey ( tagData . getUuid ( ) , TagMemberMetadata . KEY ) ,
TagMemberMetadata . USER_UUID . like ( "%@%" ) , TagMetadata . DELETION_DATE . eq ( 0 ) ) ) ) ; //$NON-NLS-1$
try {
if ( ! addedMembers & & byEmail . getCount ( ) > 0 ) {
membersView . setOnClickListener ( null ) ;
membersView . removeAllViews ( ) ;
}
addedMembers = addedMembers | | byEmail . getCount ( ) > 0 ;
TagMetadata tm = new TagMetadata ( ) ;
for ( byEmail . moveToFirst ( ) ; ! byEmail . isAfterLast ( ) ; byEmail . moveToNext ( ) ) {
tm . clear ( ) ;
tm . readFromCursor ( byEmail ) ;
String email = tm . getValue ( TagMemberMetadata . USER_UUID ) ;
if ( ! TextUtils . isEmpty ( email ) ) {
JSONObject member = new JSONObject ( ) ;
member . put ( "email" , email ) ; //$NON-NLS-1$
addImageForMember ( membersView , member ) ;
}
}
} finally {
byEmail . close ( ) ;
}
}
} catch ( JSONException e ) {
e . printStackTrace ( ) ;
}
if ( addedMembers ) {
try {
// Handle creator
JSONObject owner ;
if ( ! Task . USER_ID_SELF . equals ( tagData . getValue ( TagData . USER_ID ) ) ) {
String userString = tagData . getValue ( TagData . USER ) ;
if ( ! TextUtils . isEmpty ( userString ) ) {
owner = new JSONObject ( tagData . getValue ( TagData . USER ) ) ;
} else {
User user = userDao . fetch ( tagData . getValue ( TagData . USER_ID ) , User . PROPERTIES ) ;
if ( user ! = null ) {
owner = new JSONObject ( ) ;
ActFmSyncService . JsonHelper . jsonFromUser ( owner , user ) ;
} else {
owner = null ;
}
}
} else {
owner = ActFmPreferenceService . thisUser ( ) ;
}
if ( owner ! = null ) {
addImageForMember ( membersView , owner ) ;
}
JSONObject unassigned = new JSONObject ( ) ;
unassigned . put ( "id" , Task . USER_ID_UNASSIGNED ) ; //$NON-NLS-1$
unassigned . put ( "name" , getActivity ( ) . getString ( R . string . actfm_EPA_unassigned ) ) ; //$NON-NLS-1$
addImageForMember ( membersView , unassigned ) ;
} catch ( JSONException e ) {
e . printStackTrace ( ) ;
}
} else {
membersView . removeAllViews ( ) ;
membersView . setOnClickListener ( settingsListener ) ;
TextView textView = ( TextView ) getActivity ( ) . getLayoutInflater ( ) . inflate ( R . layout . no_members_text_view , null ) ;
membersView . addView ( textView ) ;
}
View filterAssigned = getView ( ) . findViewById ( R . id . filter_assigned ) ;
if ( filterAssigned ! = null ) {
filterAssigned . setOnClickListener ( new OnClickListener ( ) {
@Override
public void onClick ( View v ) {
resetAssignedFilter ( ) ;
}
} ) ;
}
}
@SuppressWarnings ( "nls" )
private void addImageForMember ( LinearLayout membersView , JSONObject member ) {
DisplayMetrics displayMetrics = new DisplayMetrics ( ) ;
getActivity ( ) . getWindowManager ( ) . getDefaultDisplay ( ) . getMetrics ( displayMetrics ) ;
AsyncImageView image = new AsyncImageView ( getActivity ( ) ) ;
image . setLayoutParams ( new LinearLayout . LayoutParams ( ( int ) ( 43 * displayMetrics . density ) ,
( int ) ( 43 * displayMetrics . density ) ) ) ;
image . setDefaultImageDrawable ( ResourceDrawableCache . getImageDrawableFromId ( resources , R . drawable . icn_default_person_image ) ) ;
if ( Task . USER_ID_UNASSIGNED . equals ( Long . toString ( member . optLong ( "id" , 0 ) ) ) ) {
image . setDefaultImageDrawable ( ResourceDrawableCache . getImageDrawableFromId ( resources , R . drawable . icn_anyone ) ) ;
}
image . setScaleType ( ImageView . ScaleType . FIT_CENTER ) ;
try {
final String id = Long . toString ( member . optLong ( "id" , - 2 ) ) ;
if ( ActFmPreferenceService . userId ( ) . equals ( id ) ) {
member = ActFmPreferenceService . thisUser ( ) ;
}
final JSONObject memberToUse = member ;
final String memberName = displayName ( memberToUse ) ;
if ( memberToUse . has ( "picture" ) & & ! TextUtils . isEmpty ( memberToUse . getString ( "picture" ) ) ) {
image . setUrl ( memberToUse . getString ( "picture" ) ) ;
}
image . setOnClickListener ( listenerForImage ( memberToUse , id , memberName ) ) ;
} catch ( JSONException e ) {
e . printStackTrace ( ) ;
}
int padding = ( int ) ( 3 * displayMetrics . density ) ;
image . setPadding ( padding , padding , padding , padding ) ;
membersView . addView ( image ) ;
}
private OnClickListener listenerForImage ( final JSONObject member , final String id , final String displayName ) {
return new OnClickListener ( ) {
final String email = member . optString ( "email" ) ; //$NON-NLS-1$
@SuppressWarnings ( "deprecation" )
@Override
public void onClick ( View v ) {
if ( currentId . equals ( id ) ) {
// Back to all
resetAssignedFilter ( ) ;
} else {
// New filter
currentId = id ;
Criterion assignedCriterion ;
if ( ActFmPreferenceService . userId ( ) . equals ( currentId ) ) {
assignedCriterion = Criterion . or ( Task . USER_ID . eq ( 0 ) , Task . USER_ID . eq ( id ) ) ;
} else if ( Task . userIdIsEmail ( currentId ) & & ! TextUtils . isEmpty ( email ) ) {
assignedCriterion = Criterion . or ( Task . USER_ID . eq ( email ) , Task . USER . like ( "%" + email + "%" ) ) ; //$NON-NLS-1$ //$NON-NLS-2$ // Deprecated field OK for backwards compatibility
} else {
assignedCriterion = Task . USER_ID . eq ( id ) ;
}
Criterion assigned = Criterion . and ( TaskCriteria . activeAndVisible ( ) , assignedCriterion ) ;
filter = TagFilterExposer . filterFromTag ( getActivity ( ) , new Tag ( tagData ) , assigned ) ;
TextView filterByAssigned = ( TextView ) getView ( ) . findViewById ( R . id . filter_assigned ) ;
if ( filterByAssigned ! = null ) {
filterByAssigned . setVisibility ( View . VISIBLE ) ;
if ( id = = Task . USER_ID_UNASSIGNED ) {
filterByAssigned . setText ( getString ( R . string . actfm_TVA_filter_by_unassigned ) ) ;
} else {
filterByAssigned . setText ( getString ( R . string . actfm_TVA_filtered_by_assign , displayName ) ) ;
}
}
isBeingFiltered . set ( true ) ;
setUpTaskList ( ) ;
}
}
} ;
}
private void resetAssignedFilter ( ) {
currentId = Task . USER_ID_IGNORE ;
isBeingFiltered . set ( false ) ;
filter = originalFilter ;
View filterAssigned = getView ( ) . findViewById ( R . id . filter_assigned ) ;
if ( filterAssigned ! = null ) {
filterAssigned . setVisibility ( View . GONE ) ;
}
setUpTaskList ( ) ;
}
@SuppressWarnings ( "nls" )
private String displayName ( JSONObject user ) {
String name = user . optString ( "name" ) ;
if ( ! TextUtils . isEmpty ( name ) & & ! "null" . equals ( name ) ) {
name = name . trim ( ) ;
int index = name . indexOf ( ' ' ) ;
if ( index > 0 ) {
return name . substring ( 0 , index ) ;
} else {
return name ;
}
} else {
String email = user . optString ( "email" ) ;
email = email . trim ( ) ;
int index = email . indexOf ( '@' ) ;
if ( index > 0 ) {
return email . substring ( 0 , index ) ;
} else {
return email ;
}
}
}
}
// --- receivers
// --- receivers