public CommonState getCommonState() {
    boolean disabled = false;
    boolean offline = false;
    boolean waiting = false;
    boolean connecting = false;
    boolean roster = false;
    boolean online = false;

    for (AccountItem accountItem : accountItems.values()) {
      ConnectionState state = accountItem.getState();
      if (state == ConnectionState.connected) online = true;
      if (RosterManager.getInstance().isRosterReceived(accountItem.getAccount())) roster = true;
      if (state == ConnectionState.connecting || state == ConnectionState.authentication)
        connecting = true;
      if (state == ConnectionState.waiting) waiting = true;
      if (accountItem.isEnabled()) offline = true;
      disabled = true;
    }
    if (online) return CommonState.online;
    else if (roster) return CommonState.roster;
    else if (connecting) return CommonState.connecting;
    if (waiting) return CommonState.waiting;
    else if (offline) return CommonState.offline;
    else if (disabled) return CommonState.disabled;
    else return CommonState.empty;
  }