Android Open Source - wiki-contacts-android View Contact Dialog






From Project

Back to project page wiki-contacts-android.

License

The source code is released under:

Apache License

If you think the Android project wiki-contacts-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.kahkong.wikicontacts.subcontroller;
// w  w  w . ja v  a2  s  .c  o  m
import com.kahkong.wikicontacts.R;
import com.kahkong.wikicontacts.callback.OnCompleteListener;
import com.kahkong.wikicontacts.callback.OnEventListener;
import com.kahkong.wikicontacts.link.EmailLink;
import com.kahkong.wikicontacts.link.NumberLink;
import com.kahkong.wikicontacts.link.TagLink;
import com.kahkong.wikicontacts.link.UrlLink;
import com.kahkong.wikicontacts.modal.ContactAndImage;
import com.kahkong.wikicontacts.service.ImageService;
import com.kahkong.wikicontacts.service.ImageServiceImpl;

import android.app.Dialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TableRow;
import android.widget.TextView;

/**
 * 
 * @author Poh Kah Kong
 *
 */
public class ViewContactDialog extends Dialog {
  private ImageService imageService = ImageServiceImpl.getInstance();
  
  public static enum Event {EDIT_CLICK, TAG_CLICK};
  
  private Context context;
  private ContactAndImage contactAndImage;
  private OnEventListener onEventListener;

  private TableRow numberTR;
  private TableRow emailTR;
  private TableRow descriptionTR;
  private TableRow tagsTR;
  private TableRow addressTR;
  private TableRow websiteTR;  

  private TextView nameTV;
  private FlowLayout numberFL;
  private FlowLayout emailFL;
  private TextView descriptionTV;
  private FlowLayout tagsFL;
  private TextView addressTV;
  private LinearLayout websiteLL;
  private ImageView imageIV;
  private Button editBtn;
  private Button closeBtn;

  public ViewContactDialog(Context context) {
    super(context, R.style.dialogLightNoTitleBar);
  }

  public ViewContactDialog(Context context, final ContactAndImage contactAndImage, final OnEventListener onEventListener) {
    super(context, R.style.dialogLightNoTitleBar);    
    if (contactAndImage==null) {
      return;
    }    
    setContentView(R.layout.contact_view);
    this.context = context;
    this.contactAndImage = contactAndImage;
    this.onEventListener = onEventListener;
    
    numberTR = (TableRow) findViewById(R.id.viewNumberTR);
    emailTR = (TableRow) findViewById(R.id.viewEmailTR);
    descriptionTR = (TableRow) findViewById(R.id.viewDescriptionTR);
    tagsTR = (TableRow) findViewById(R.id.viewTagsTR);
    addressTR = (TableRow) findViewById(R.id.viewAddressTR);
    websiteTR = (TableRow) findViewById(R.id.viewWebsiteTR);

    nameTV = (TextView) findViewById(R.id.viewNameTV);
    numberFL = (FlowLayout) findViewById(R.id.viewNumberFL);
    emailFL = (FlowLayout) findViewById(R.id.viewEmailFL);
    descriptionTV = (TextView) findViewById(R.id.viewDescriptionTV);
    tagsFL = (FlowLayout) findViewById(R.id.viewTagsFL);
    addressTV = (TextView) findViewById(R.id.viewAddressTV);
    websiteLL = (LinearLayout) findViewById(R.id.viewWebsiteLL);      
    imageIV = (ImageView) findViewById(R.id.viewImageIV);
    editBtn = (Button) findViewById(R.id.viewEditBtn);
    closeBtn = (Button) findViewById(R.id.viewCloseBtn);

    init();    
  }
  
  private void init() {
    nameTV.setText(contactAndImage.getName());
    if (contactAndImage.getNumber()!=null) {
      TextView textView = new TextView(context);      
      textView.setText("(" + contactAndImage.getCountryCode().subSequence(0, 2) + ")");
      textView.setTextAppearance(context, android.R.style.TextAppearance_DeviceDefault_Medium);
      textView.setPadding(0, 0, 5, 0);
      numberFL.addView(textView);
      String[] number = contactAndImage.getNumber();
      String countryCode = contactAndImage.getCountryCode().substring(2);
      for (int i=0; i<number.length; i++) {
        numberFL.addView(new NumberLink(context, number[i], countryCode));
      }      
    } else {
      numberTR.setVisibility(View.GONE);
    }
    if (contactAndImage.getEmail()!=null) {
      String[] email = contactAndImage.getEmail();
      for (int i=0; i<email.length; i++) {
        emailFL.addView(new EmailLink(context, email[i]));
      }
    } else {
      emailTR.setVisibility(View.GONE);
    }  

    if (contactAndImage.getDescription()!=null) {
      descriptionTV.setText(contactAndImage.getDescription());  
    } else {
      descriptionTR.setVisibility(View.GONE);
    }
    if (contactAndImage.getTags()!=null) {
      String[] tags = contactAndImage.getTags();
      for (int i=0; i<tags.length; i++) {
        tagsFL.addView(new TagLink(context, tags[i], new com.kahkong.wikicontacts.callback.OnClickListener() {
          @Override
          public void onClick(Object object) {
            onEventListener.onEvent(Event.TAG_CLICK, object);
            dismiss();
          }          
        }));        
      }  
    } else {
      tagsTR.setVisibility(View.GONE);
    }
    if (contactAndImage.getAddress()!=null) {
      addressTV.setText(contactAndImage.getAddress());  
    } else {
      addressTR.setVisibility(View.GONE);
    }
    if (contactAndImage.getWebsite()!=null) {
      websiteLL.addView(new UrlLink(context, contactAndImage.getWebsite()));
    } else {
      websiteTR.setVisibility(View.GONE);
    }
    if (contactAndImage.getImage()!=null) {
      imageIV.setImageBitmap(contactAndImage.getImage());
    } else {
      imageService.getImage(contactAndImage.isSpam(), contactAndImage.getImageUrl(), new OnCompleteListener() {
        @Override
        public void onComplete(Object[] objects) {  
          Bitmap image = (Bitmap) objects[0];
          contactAndImage.setImage(image);
          imageIV.setImageBitmap(image);
        }          
      });  
    }

    editBtn.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
        onEventListener.onEvent(Event.EDIT_CLICK, null);
        ViewContactDialog.this.dismiss();
      }    
    });

    closeBtn.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
        ViewContactDialog.this.dismiss();
      }    
    });
  }
}




Java Source Code List

com.kahkong.wikicontacts.callback.OnChangeListener.java
com.kahkong.wikicontacts.callback.OnClickListener.java
com.kahkong.wikicontacts.callback.OnCompleteListener.java
com.kahkong.wikicontacts.callback.OnEventListener.java
com.kahkong.wikicontacts.callback.OnTimeOutListener.java
com.kahkong.wikicontacts.callback.Validator.java
com.kahkong.wikicontacts.controller.AddEditContactActivity.java
com.kahkong.wikicontacts.controller.CallDetectService.java
com.kahkong.wikicontacts.controller.EditContactActivity.java
com.kahkong.wikicontacts.controller.SearchActivity.java
com.kahkong.wikicontacts.controller.TestActivity.java
com.kahkong.wikicontacts.controller.UpdateEditContactActivity.java
com.kahkong.wikicontacts.form.EditTextForm.java
com.kahkong.wikicontacts.form.ImageUploadForm.java
com.kahkong.wikicontacts.form.MultiEditTextForm.java
com.kahkong.wikicontacts.form.OptionsForm.java
com.kahkong.wikicontacts.form.RadioGroupForm.java
com.kahkong.wikicontacts.form.SpinnerForm.java
com.kahkong.wikicontacts.form.TagsForm.java
com.kahkong.wikicontacts.link.EmailLink.java
com.kahkong.wikicontacts.link.Link.java
com.kahkong.wikicontacts.link.NumberLink.java
com.kahkong.wikicontacts.link.TagLink.java
com.kahkong.wikicontacts.link.UrlLink.java
com.kahkong.wikicontacts.modal.ContactAndImage.java
com.kahkong.wikicontacts.modal.Contact.java
com.kahkong.wikicontacts.modal.CountryCode.java
com.kahkong.wikicontacts.modal.CountryCodesWithSelect.java
com.kahkong.wikicontacts.service.ContactServiceImpl.java
com.kahkong.wikicontacts.service.ContactService.java
com.kahkong.wikicontacts.service.CountryCodeServiceImpl.java
com.kahkong.wikicontacts.service.CountryCodeService.java
com.kahkong.wikicontacts.service.ImageServiceImpl.java
com.kahkong.wikicontacts.service.ImageService.java
com.kahkong.wikicontacts.service.IntentServiceImpl.java
com.kahkong.wikicontacts.service.IntentService.java
com.kahkong.wikicontacts.service.NotificationServiceImpl.java
com.kahkong.wikicontacts.service.NotificationService.java
com.kahkong.wikicontacts.service.PhoneBookServiceImpl.java
com.kahkong.wikicontacts.service.PhoneBookService.java
com.kahkong.wikicontacts.service.PreferencesServiceImpl.java
com.kahkong.wikicontacts.service.PreferencesService.java
com.kahkong.wikicontacts.service.ResourceServiceImpl.java
com.kahkong.wikicontacts.service.ResourceService.java
com.kahkong.wikicontacts.service.ValidationServiceImpl.java
com.kahkong.wikicontacts.service.ValidationService.java
com.kahkong.wikicontacts.service.WebServiceImpl.java
com.kahkong.wikicontacts.service.WebService.java
com.kahkong.wikicontacts.subcontroller.CallStateListener.java
com.kahkong.wikicontacts.subcontroller.FlowLayout.java
com.kahkong.wikicontacts.subcontroller.IncomingContactLayout.java
com.kahkong.wikicontacts.subcontroller.InfoDialog.java
com.kahkong.wikicontacts.subcontroller.LoadingDialog.java
com.kahkong.wikicontacts.subcontroller.ResultAdaptor.java
com.kahkong.wikicontacts.subcontroller.ViewContactDialog.java
com.kahkong.wikicontacts.subcontroller.ViewFormatter.java