Status.java :  » Client » android-gadu » pl » szpadel » android » gadu » Android Open Source

Android Open Source » Client » android gadu 
android gadu » pl » szpadel » android » gadu » Status.java
package pl.szpadel.android.gadu;

/// Holds and interprets GG status and status description
public class Status {

  /// Raw GG status value
  private int mStatus;
  
  /// status description
  private String mDescription;
  
  /// Initializes from description and GG status value
  public Status(int s, String desc) {
    mStatus = s;
    mDescription = desc;
  }
  
  /// Initializes from description and config string
  public Status(String s, String desc) {
    if (s == "fcc") mStatus = GG_STATUS_FFC;
    else if (s.equals("avail")) mStatus = GG_STATUS_AVAIL;
    else if (s.equals("busy")) mStatus = GG_STATUS_BUSY;
    else if (s.equals("invisible")) mStatus = GG_STATUS_INVISIBLE;
    else if (s.equals("dns")) mStatus = GG_STATUS_DND;
    else mStatus = GG_STATUS_AVAIL; // default
    
    mDescription = desc;
  }
  
  /// Initializes with empty values
  public Status() {
    mDescription = "";
    mStatus = -1;
  }
  
  /// Returns description
  public String getDescription() {
    return mDescription;
  }
  
  /// Convenience - is online (that is not offline and not invisible and not unknown)
  public boolean isOnline() {
    if (mStatus == -1) return false;
    if (getGGStatusNoDesc() == GG_STATUS_NOT_AVAIL) return false;
    if (getGGStatusNoDesc() == GG_STATUS_INVISIBLE) return false;
    
    return true;
  }
  
  /// Returns icon resource corresponding with status
  public int getIcon() {
    switch(mStatus) {
    case GG_STATUS_FFC:
    case GG_STATUS_FFC_DESCR:
    case GG_STATUS_AVAIL:
    case GG_STATUS_AVAIL_DESCR:
      return android.R.drawable.presence_online;
    case GG_STATUS_BUSY:
    case GG_STATUS_BUSY_DESCR:
      return android.R.drawable.presence_away; 
    case GG_STATUS_DND:
    case GG_STATUS_DND_DESCR:
      return android.R.drawable.presence_busy;
    default:
      return android.R.drawable.presence_offline;
    }
  }
  
  /// Returns GG status in non _descr version (used when no status description is set)
  public int getGGStatusNoDesc() {
    switch(mStatus) {
    case GG_STATUS_FFC_DESCR:
        return GG_STATUS_FFC;
    case GG_STATUS_AVAIL_DESCR:
      return GG_STATUS_AVAIL;
    case GG_STATUS_BUSY_DESCR:
      return GG_STATUS_BUSY;
    case GG_STATUS_DND_DESCR:
      return GG_STATUS_DND;
    case GG_STATUS_INVISIBLE_DESCR:
      return GG_STATUS_INVISIBLE;
    case GG_STATUS_NOT_AVAIL_DESCR:
      return GG_STATUS_NOT_AVAIL;

    default:
      return mStatus;
    }
  }
  
  /// Returns GG status in _descr version (used when status description is set)
  public int getGGStatusDesc() {
    switch(mStatus) {
    case GG_STATUS_FFC:
        return GG_STATUS_FFC_DESCR;
    case GG_STATUS_AVAIL:
      return GG_STATUS_AVAIL_DESCR;
    case GG_STATUS_BUSY:
      return GG_STATUS_BUSY_DESCR;
    case GG_STATUS_DND:
      return GG_STATUS_DND_DESCR;
    case GG_STATUS_INVISIBLE:
      return GG_STATUS_INVISIBLE_DESCR;
    case GG_STATUS_NOT_AVAIL:
      return GG_STATUS_NOT_AVAIL_DESCR;

    default:
      return mStatus;
    }
  }
  
  /// Returns GG status (modified for existence (or not) of the description
  public int getGGStatus() {
    if (mDescription.length() > 0){
      return getGGStatusDesc();
    } else {
      return getGGStatusNoDesc();
    }
  }
  
  /// Returns human-readable status description used in config and debugging
  public String toConfigString() {
    switch(getGGStatusNoDesc()){
      case GG_STATUS_FFC:
        return "ffc";
      case GG_STATUS_AVAIL:
        return "avail";
      case GG_STATUS_BUSY:
        return "busy";
      case GG_STATUS_DND:
        return "dnd";
      case GG_STATUS_INVISIBLE:
      case GG_STATUS_NOT_AVAIL: // connection status is controlled separately
        return "invisible";
    
      default:
        return "unknown";
    }
  }
  
  /// Serialization
  public String toString() {
    return "Status [ " + toConfigString() + "(0x" + Integer.toHexString(mStatus) + "), " + mDescription + " ]";
  }
  
  // GG values
  public static final int GG_STATUS_NOT_AVAIL  = 0x0001;  
  public static final int GG_STATUS_NOT_AVAIL_DESCR  = 0x0015;  
  public static final int GG_STATUS_FFC  = 0x0017;
  public static final int GG_STATUS_FFC_DESCR  = 0x0018;  
  public static final int GG_STATUS_AVAIL  = 0x0002;  
  public static final int GG_STATUS_AVAIL_DESCR  = 0x0004;  
  public static final int GG_STATUS_BUSY  = 0x0003;  
  public static final int GG_STATUS_BUSY_DESCR  = 0x0005;  
  public static final int GG_STATUS_DND  = 0x0021;  
  public static final int GG_STATUS_DND_DESCR  = 0x0022;  
  public static final int GG_STATUS_INVISIBLE  = 0x0014;  
  public static final int GG_STATUS_INVISIBLE_DESCR = 0x0016;
  public static final int GG_STATUS_BLOCKED  = 0x0006;  
  public static final int GG_STATUS_IMAGE_MASK  = 0x0100;
  public static final int GG_STATUS_ADAPT_STATUS_MASK  = 0x0400;  
  public static final int GG_STATUS_DESCR_MASK  = 0x4000;  
  public static final int GG_STATUS_FRIENDS_MASK  = 0x8000;  
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.