Android Open Source - wiki-contacts-android Image Upload Form






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.form;
/*from   w  w w. j  a v a2s.  c  o m*/
import java.io.InputStream;

import com.kahkong.wikicontacts.R;
import com.kahkong.wikicontacts.callback.OnChangeListener;
import com.kahkong.wikicontacts.service.ImageService;
import com.kahkong.wikicontacts.service.ImageServiceImpl;
import com.kahkong.wikicontacts.service.IntentService;
import com.kahkong.wikicontacts.service.IntentServiceImpl;
import com.kahkong.wikicontacts.service.ResourceService;
import com.kahkong.wikicontacts.service.ResourceServiceImpl;

import android.content.Context;
import android.graphics.Bitmap;
import android.util.AttributeSet;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;

/**
 * 
 * @author Poh Kah Kong
 *
 */
public class ImageUploadForm extends RelativeLayout implements OnChangeListener {
  private static enum State { NOIMAGE, HASIMAGE, CHANGED };
  private static final int REQUEST_CODE = (int) (Math.random()*Integer.MAX_VALUE);
  
  private ImageService imageService = ImageServiceImpl.getInstance();
  private ResourceService resourceService = ResourceServiceImpl.getInstance();
  private IntentService intentService = IntentServiceImpl.getInstance();
  
  private boolean spam = false;
  private Bitmap image = null;
  private State state = State.NOIMAGE;
  
  private ImageView imageIV;
  private Button selectBtn;
  private Button rotateBtn;

  public ImageUploadForm(Context context, AttributeSet attrs) {
    super(context, attrs);
    if (isInEditMode()) {
      return;
    }
    
    inflate(context, R.layout.contact_edit_image, this);
    imageIV = (ImageView) findViewById(R.id.editImageViewIUF);
    selectBtn = (Button) findViewById(R.id.editSelectBtnIUF);
    rotateBtn = (Button) findViewById(R.id.editRotateBtnIUF);    
    rotateBtn.setVisibility(View.GONE);
    
    selectBtn.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View view) {        
        intentService.startImageChooserActivity(REQUEST_CODE);
      }      
    });
    
    rotateBtn.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View view) {
        image = imageService.rotateImage(image);
        imageIV.setImageBitmap(image);
        state = State.CHANGED;
      }      
    });
  }
  
  public int getRequestCode() {
    return REQUEST_CODE;
  }
  
  public void setImage(Bitmap image, boolean spam) {
    this.image = image;
    this.spam = spam;    
    if (image!=null) {
      state = State.HASIMAGE;
    } else {
      state = State.NOIMAGE;
    }    
    updateImage();
  }
  
  public void setImage(InputStream inputStream) {
    if (inputStream==null) {
      return;
    }

    if (image!=null) {
      image.recycle();
    }
    image = imageService.processImage(inputStream, 100);
    imageIV.setImageBitmap(image);
    state = State.CHANGED;
    rotateBtn.setVisibility(View.VISIBLE);
  }  
  
  public Bitmap getImage() {
    if (spam || state!=State.CHANGED) {
      return null;
    }
    return image;
  }

  @Override
  public void onChange(Object object) {  
    this.spam = (Boolean) object;  
    updateImage();
  }
  
  private void updateImage() {
    if (!spam) {
      if (state==State.NOIMAGE) {
        imageIV.setImageBitmap(resourceService.getNewImage());
        rotateBtn.setVisibility(View.GONE);
      } else {
        imageIV.setImageBitmap(image);
        rotateBtn.setVisibility(View.VISIBLE);        
      }
      selectBtn.setVisibility(View.VISIBLE);
    } else { // spam
      imageIV.setImageBitmap(resourceService.getSpamImage());
      selectBtn.setVisibility(View.GONE);
      rotateBtn.setVisibility(View.GONE);
    }    
  }  
}




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