Android Open Source - PkRequestManager Request Settings






From Project

Back to project page PkRequestManager.

License

The source code is released under:

MIT License

If you think the Android project PkRequestManager 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

/*
 * The MIT License (MIT)/*from  w  w w .j ava  2 s .  co m*/
 * 
 * Copyright (c) 2014 Pkmmte Xeleon
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

package com.pkmmte.requestmanager;

import java.util.ArrayList;
import java.util.List;

import android.graphics.Bitmap.CompressFormat;
import android.os.Environment;

/** Custom settings data. I find this much neater  than having it all stored in the Manager itself. */
public class RequestSettings
{
  private String[] emailAddresses;
  private String emailSubject;
  private String emailPrecontent;
  private String saveLocation;
  private String saveLocation2;
  private String appfilterName;
  private CompressFormat compressFormat;
  private boolean appendInformation;
  private boolean createAppfilter;
  private boolean createZip;
  private boolean filterAutomatic;
  private boolean filterDefined;
  private int byteBuffer;
  private int compressQuality;
  
  public RequestSettings() {
    this.emailAddresses = null;
    this.emailSubject = "No Subject";
    this.emailPrecontent = "";
    this.saveLocation = Environment.getExternalStorageDirectory().getAbsolutePath() + "/.icon_request";
    this.saveLocation2 = this.saveLocation + "/files";
    this.appfilterName = "appfilter.xml";
    this.compressFormat = CompressFormat.PNG;
    this.appendInformation = true;
    this.createAppfilter = true;
    this.createZip = true;
    this.filterAutomatic = true;
    this.filterDefined = true;
    this.byteBuffer = 2048;
    this.compressQuality = 100;
  }
  
  private RequestSettings(Builder builder) {
    this.emailAddresses = builder.emailAddresses.toArray(new String[builder.emailAddresses.size()]);
    this.emailSubject = builder.emailSubject;
    this.emailPrecontent = builder.emailPrecontent;
    this.saveLocation = builder.saveLocation;
    this.saveLocation2 = builder.saveLocation2;
    this.appfilterName = builder.appfilterName;
    this.compressFormat = builder.compressFormat;
    this.appendInformation = builder.appendInformation;
    this.createAppfilter = builder.createAppfilter;
    this.createZip = builder.createZip;
    this.filterAutomatic = builder.filterAutomatic;
    this.filterDefined = builder.filterDefined;
    this.byteBuffer = builder.byteBuffer;
    this.compressQuality = builder.compressQuality;
  }
  
  public void setEmailAddresses(String[] emailAddresses) {
    this.emailAddresses = emailAddresses;
  }
  
  public void setEmailSubject(String emailSubject) {
    this.emailSubject = emailSubject;
  }
  
  public void setEmailPrecontent(String emailPrecontent) {
    this.emailPrecontent = emailPrecontent;
  }
  
  public void setSaveLocation(String saveLocation) {
    this.saveLocation = saveLocation;
    this.saveLocation2 = this.saveLocation + "/files";
  }
  
  public void setAppfilterName(String appfilterName) {
    this.appfilterName = appfilterName;
  }
  
  public void setCompressFormat(CompressFormat compressFormat) {
    this.compressFormat = compressFormat;
  }
  
  public void setAppendInformation(boolean appendInformation) {
    this.appendInformation = appendInformation;
  }
  
  public void setCreateAppsfilter(boolean createAppfilter) {
    this.createAppfilter = createAppfilter;
  }
  
  public void setCreateZip(boolean createZip) {
    this.createZip = createZip;
  }
  
  public void setFilterAutomatic(boolean filterAutomatic) {
    this.filterAutomatic = filterAutomatic;
  }
  
  public void setFilterDefined(boolean filterDefined) {
    this.filterDefined = filterDefined;
  }
  
  public void setByteBuffer(int byteBuffer) {
    this.byteBuffer = byteBuffer;
  }
  
  public void setCompressQuality(int compressQuality) {
    this.compressQuality = compressQuality;
  }
  
  public String[] getEmailAddresses() {
    return this.emailAddresses;
  }
  
  public String getEmailSubject() {
    return this.emailSubject;
  }
  
  public String getEmailPrecontent() {
    return this.emailPrecontent;
  }
  
  public String getSaveLocation() {
    return this.saveLocation;
  }
  
  public String getSaveLocation2() {
    return this.saveLocation2;
  }
  
  public String getAppfilterName() {
    return this.appfilterName;
  }
  
  public CompressFormat getCompressFormat() {
    return this.compressFormat;
  }
  
  public boolean getAppendInformation() {
    return this.appendInformation;
  }
  
  public boolean getCreateAppfilter() {
    return this.createAppfilter;
  }
  
  public boolean getCreateZip() {
    return this.createZip;
  }
  
  public boolean getFilterAutomatic() {
    return this.filterAutomatic;
  }
  
  public boolean getFilterDefined() {
    return this.filterDefined;
  }
  
  public int getByteBuffer() {
    return this.byteBuffer;
  }
  
  public int getCompressQuality() {
    return this.compressQuality;
  }
  
  @Override
  public String toString() {
    StringBuilder builder = new StringBuilder();
    
    builder.append("Email Addresses: " + (this.emailAddresses == null ? "null" : this.emailAddresses.toString()) + "\n");
    builder.append("Email Subject: " + this.emailSubject + "\n");
    builder.append("Email Precontent: " + this.emailPrecontent + "\n");
    builder.append("Save Location: " + this.saveLocation + "\n");
    builder.append("Save Location 2: " + this.saveLocation2 + "\n");
    builder.append("Appfilter Name: " + this.appfilterName + "\n");
    builder.append("Compress Format: " + this.compressFormat.toString() + "\n");
    builder.append("Append Information: " + this.appendInformation + "\n");
    builder.append("Create Appfilter: " + this.createAppfilter + "\n");
    builder.append("Create Zip: " + this.createZip + "\n");
    builder.append("Filter Automatic: " + this.filterAutomatic + "\n");
    builder.append("Filter Defined: " + this.filterDefined + "\n");
    builder.append("Byte Buffer: " + this.byteBuffer + "\n");
    builder.append("Compress Quality: " + this.compressQuality + "\n");
    
    return builder.toString();
  }
  
  public static class Builder
  {
    private List<String> emailAddresses;
    private String emailSubject;
    private String emailPrecontent;
    private String saveLocation;
    private String saveLocation2;
    private String appfilterName;
    private CompressFormat compressFormat;
    private boolean appendInformation;
    private boolean createAppfilter;
    private boolean createZip;
    private boolean filterAutomatic;
    private boolean filterDefined;
    private int byteBuffer;
    private int compressQuality;
    
    /**
     * Creates a RequestSettings Builder object for easily 
     * assigning custom settings.
     */
    public Builder() {
      this.emailAddresses = new ArrayList<String>();
      this.emailSubject = "No Subject";
      this.emailPrecontent = "";
      this.saveLocation = Environment.getExternalStorageDirectory().getAbsolutePath() + "/.icon_request";
      this.saveLocation2 = this.saveLocation + "/files";
      this.appfilterName = "appfilter.xml";
      this.compressFormat = CompressFormat.PNG;
      this.appendInformation = true;
      this.createAppfilter = true;
      this.createZip = true;
      this.filterAutomatic = true;
      this.filterDefined = true;
      this.byteBuffer = 2048;
      this.compressQuality = 100;
    }
    
    /**
     * This is where your icon request will be sent to. You can add 
     * multiple emails by repeating this call.
     * <p>
     * <b>Default:</b> <code>null</code>
     * 
     * @param emailAddress
     * @return
     */
    public Builder addEmailAddress(String emailAddress) {
      this.emailAddresses.add(emailAddress);
      return this;
    }
    
    /**
     * Subject for the email request.
     * <p>
     * <b>Default:</b> <code>"No Subject"</code>
     * 
     * @param emailSubject
     * @return
     */
    public Builder emailSubject(String emailSubject) {
      this.emailSubject = emailSubject;
      return this;
    }
    
    /**
     * Content text ahead of the main email. Set this to whatever you want... 
     * or nothing at all. This may be instructions for your user to hit "send" 
     * or simply text letting you know what this is.
     * <p>
     * <b>Default:</b> <code>""</code>
     * 
     * @param emailPrecontent
     * @return
     */
    public Builder emailPrecontent(String emailPrecontent) {
      this.emailPrecontent = emailPrecontent;
      return this;
    }
    
    /**
     * The location where sent zips and temporary files are located. 
     * These get deleted every time a new request is sent but you can 
     * also manually delete them using the <b>deleteRequestData<b> method.
     * <p>
     * <b>Default:</b> <code>Environment.getExternalStorageDirectory().getAbsolutePath() + "/.icon_request"</code>
     * 
     * @param saveLocation
     * @return
     */
    public Builder saveLocation(String saveLocation) {
      this.saveLocation = saveLocation;
      this.saveLocation2 = this.saveLocation + "/files";
      return this;
    }
    
    /**
     * Specify exactly how your appfilter file is called. You normally 
     * don't need to touch this setting.
     * <p>
     * <b>Default:</b> <code>"appfilter.xml"</code>
     * 
     * @param appfilterName
     * @return
     */
    public Builder appfilterName(String appfilterName) {
      this.appfilterName = appfilterName;
      return this;
    }
    
    /**
     * Specify a format to compress all attached app icons. Formats 
     * compatible:
     * <ul>
     * <li><code>PkRequestManager.PNG</code>
     * <li><code>PkRequestManager.JPEG</code>
     * <li><code>PkRequestManager.WEBP</code>
     * </ul>
     * <p>
     * <b>Default:</b> <code>PkRequestManager.PNG</code>
     * 
     * @param compressFormat
     * @return
     */
    public Builder compressFormat(CompressFormat compressFormat) {
      this.compressFormat = compressFormat;
      return this;
    }
    
    /**
     * Attach user's device information near the beginning of 
     * the request email. This may include things such as OS version, 
     * model number, manufacturer, build, etc.
     * <p>
     * <b>Default:</b> <code>true</code>
     * 
     * @param appendInformation
     * @return
     */
    public Builder appendInformation(boolean appendInformation) {
      this.appendInformation = appendInformation;
      return this;
    }
    
    /**
     * Automatically generate appfilter.xml values for each app. 
     * This is later attached in the request email.
     * <p>
     * <b>Default:</b> <code>true</code>
     * 
     * @param createAppfilter
     * @return
     */
    public Builder createAppfilter(boolean createAppfilter) {
      this.createAppfilter = createAppfilter;
      return this;
    }
    
    /**
     * Automatically create a .zip folder containing all requested 
     * app icons. This may be useful but can take a while to create and attach.
     * <p>
     * <b>Default:</b> <code>true</code>
     * 
     * @param createZip
     * @return
     */
    public Builder createZip(boolean createZip) {
      this.createZip = createZip;
      return this;
    }
    
    /**
     * Filter apps already defined in your appfilter. This setting only 
     * applies when sending an automatic request.
     * <p>
     * <b>Default:</b> <code>true</code>
     * 
     * @param filterAutomatic
     * @return
     */
    public Builder filterAutomatic(boolean filterAutomatic) {
      this.filterAutomatic = filterAutomatic;
      return this;
    }
    
    /**
     * Filter apps already defined in your appfilter.
     * <p>
     * <b>Default:</b> <code>true</code>
     * 
     * @param filterDefined
     * @return
     */
    public Builder filterDefined(boolean filterDefined) {
      this.filterDefined = filterDefined;
      return this;
    }
    
    /**
     * Buffer size in bytes. This is for writing to memory.
     * <p>
     * <b>Default:</b> <code>2048</code>
     * 
     * @param byteBuffer
     * @return
     */
    public Builder byteBuffer(int byteBuffer) {
      this.byteBuffer = byteBuffer;
      return this;
    }
    
    /**
     * Compress quality (0 to 100) for attached app icons. Higher 
     * quality takes up more space. This setting is ignored for 
     * lossless image formats such as PNG.
     * <p>
     * <b>Default:</b> <code>100</code>
     * 
     * @param compressQuality
     * @return
     */
    public Builder compressQuality(int compressQuality) {
      this.compressQuality = compressQuality;
      return this;
    }
    
    /**
     * Build a RequestSettings object based on this builder.
     * 
     * @return
     */
    public RequestSettings build() {
      return new RequestSettings(this);
    }
  }
}




Java Source Code List

com.pkmmte.requestmanager.AppFilterListener.java
com.pkmmte.requestmanager.AppInfo.java
com.pkmmte.requestmanager.AppLoadListener.java
com.pkmmte.requestmanager.InstalledAppLoadListener.java
com.pkmmte.requestmanager.PkRequestManager.java
com.pkmmte.requestmanager.RequestSettings.java
com.pkmmte.requestmanager.SendRequestListener.java
com.pkmmte.requestmanager.Static.java
com.pkmmte.requestmanager.sample.AdvancedActivity.java
com.pkmmte.requestmanager.sample.AutomaticActivity.java
com.pkmmte.requestmanager.sample.BasicActivity.java
com.pkmmte.requestmanager.sample.IntermediateActivity.java
com.pkmmte.requestmanager.sample.MainActivity.java
com.pkmmte.requestmanager.sample.QuickScroll.java