@Override
    public int compare(TableAnoni lhs, TableAnoni rhs) {

      if (lhs.getUpdated_at() > rhs.getUpdated_at()) return -1;
      if (lhs.getUpdated_at() == rhs.getUpdated_at()) return 0;
      if (lhs.getUpdated_at() < rhs.getUpdated_at()) return 1;

      return 0;
    }
  private List<TableAnoni> filterHideConvs(List<TableAnoni> fullTableANoni) {
    List<TableAnoni> tableAnoni = new ArrayList<TableAnoni>();

    for (TableAnoni t : fullTableANoni) {
      if (t.isHidden() == false) {
        tableAnoni.add(t);
      }
    }

    return tableAnoni;
  }
  @Override
  protected void onResume() {
    Log.v(TAG, "onResume()");

    if (et_search_text != null) et_search_text.setText("");

    if (mResume == true) Log.v(TAG, "resume true");
    else Log.v(TAG, "resume false");
    if (mResume == true) {
      mAnoni = new CommonQueries(mContext).queryGetAllAnoni();
      /*
      int count = 0;
      for(TableAnoni t : mAnoni) {
      	for(int i=0; i < t.getMessages().size(); i++) {
      		if(t.getMessages().get(i).getRead().equals("") == true) {
      			count++;
      		}
      	}
      }

      Log.e(TAG, "Count READ state: " + Integer.toString(count));
      */
      Log.v(TAG, "Count of Anoni after Resume: " + Integer.toString(mAnoni.size()));

      if (mAnoni != null)
        if (mAnoni.size() > 0) {
          int count_of_messages = 0;
          for (TableAnoni t : mAnoni) {
            count_of_messages = count_of_messages + t.getMessages().size();
          }

          Log.v(TAG, "Count of msgs in resume: " + Integer.toString(count_of_messages));
        }
    }
    mResume = true;

    Collections.sort(mAnoni, new AnoniComparator());
    adapter =
        new ConversationsAdapter(
            mContext,
            ConversationsActivity.this,
            R.layout.row_event,
            filterHideConvs(mAnoni),
            mProfiles);
    ConversationsActivity.this.setListAdapter(adapter);
    // }
    if (adapter != null) {
      adapter.notifyDataSetChanged();
    }

    super.onResume();
  }
  private void setSecondData() {

    if (mAllConversations.getmResponseCode() == 200) {
      JsonAnonis jAnoni = new JsonAnonis(mAllConversations.getmResponseData());

      List<TableAnoni> incomeAnoni = jAnoni.getJsonArrayResponse();

      if (incomeAnoni != null)
        if (incomeAnoni.size() > 0) {
          int count_of_messages = 0;
          for (TableAnoni t : incomeAnoni) {
            count_of_messages = count_of_messages + t.getMessages().size();
          }

          Utils.updateCountOfMessages(count_of_messages);
        }

      if (adapter != null) {

        if (adapter.isEmpty() == true) Log.v(TAG, "Adapter: is Empty");
        // if(adapter.isEmpty() == true) {
        adapter =
            new ConversationsAdapter(
                mContext,
                ConversationsActivity.this,
                R.layout.row_event,
                filterHideConvs(mAnoni),
                mProfiles);
        ConversationsActivity.this.setListAdapter(adapter);
        // }
        adapter.notifyDataSetChanged();
      } else {
        adapter =
            new ConversationsAdapter(
                mContext,
                ConversationsActivity.this,
                R.layout.row_event,
                filterHideConvs(mAnoni),
                mProfiles);
        ConversationsActivity.this.setListAdapter(adapter);
        adapter.notifyDataSetChanged();
      }
    }
  }
  private List<TableAnoni> searchEngine(String search_word) {
    List<TableAnoni> new_anoni = new CommonQueries(mContext).queryGetAllAnoni();
    List<TableAnoni> search_anoni = new ArrayList<TableAnoni>();

    for (TableAnoni conv : new_anoni) {
      for (TableMessage msg : conv.getMessages()) {
        if (msg.getBody().contains(search_word) == true) {
          boolean include = false;
          for (TableAnoni co : search_anoni)
            if (co.equals(conv) == true) {
              include = true;
            }
          if (include == false) search_anoni.add(conv);
        }
      }
    }

    return search_anoni;
  }
  /**
   * 1 - Parse conversations list string and save it to Array. 2 - Set array to adapter. View data
   * as List of conversations.
   */
  private void setData() {

    if (mResponseUsers.getmResponseCode() == 200) {
      JsonProfiles profile = new JsonProfiles(mResponseUsers.getmResponseData());
      List<TableProfile> requestProfiles = new LinkedList<TableProfile>();
      requestProfiles = profile.getJsonObjectResponse();

      if (requestProfiles != null)
        if (requestProfiles.size() > 0) {
          mProfiles = requestProfiles;

          new CommonQueries(mContext).queryCreateUsersProfiles(requestProfiles);
        }
    }

    if (mAllConversations.getmResponseCode() == 200) {
      JsonAnonis jAnoni = new JsonAnonis(mAllConversations.getmResponseData());

      List<TableAnoni> incomeAnoni = jAnoni.getJsonArrayResponse();

      new CommonQueries(mContext).queryCreateAllAnoni(incomeAnoni);

      if (incomeAnoni != null)
        if (incomeAnoni.size() > 0) {
          int count_of_messages = 0;
          for (TableAnoni t : incomeAnoni) {
            count_of_messages = count_of_messages + t.getMessages().size();
          }

          Utils.updateCountOfMessages(count_of_messages);
        }

      if (incomeAnoni != null) {
        if (mAnoni.size() != 0 & incomeAnoni.size() != 0) {

          for (TableAnoni a : incomeAnoni) {
            boolean contain = false;
            for (int i = 0; i < mAnoni.size(); i++) {
              if (mAnoni.get(i).getId() == a.getId()) {
                contain = true;
                for (int j = 0; j < a.getMessages().size(); j++) {
                  mAnoni.get(i).getMessages().add(a.getMessages().get(j));
                }
              }
            }

            if (contain == false) {
              mAnoni.add(a);
            }
          }
        }

        if (mAnoni.size() == 0) {
          mAnoni = incomeAnoni;
        }
      }

      // new CommonQueries(mContext).queryCreateOfUpdateAllAnoni(mAnoni);
      // saveAllConversationsInThread(mAnoni);

      // Collections.sort(mAnoni, new AnoniComparator());

      if (adapter != null) {

        if (adapter.isEmpty() == true) Log.v(TAG, "Adapter: is Empty");
        // if(adapter.isEmpty() == true) {
        adapter =
            new ConversationsAdapter(
                mContext,
                ConversationsActivity.this,
                R.layout.row_event,
                filterHideConvs(mAnoni),
                mProfiles);
        ConversationsActivity.this.setListAdapter(adapter);
        // }
        adapter.notifyDataSetChanged();
      } else {
        adapter =
            new ConversationsAdapter(
                mContext,
                ConversationsActivity.this,
                R.layout.row_event,
                filterHideConvs(mAnoni),
                mProfiles);
        ConversationsActivity.this.setListAdapter(adapter);
        adapter.notifyDataSetChanged();
      }

      long time_to_save = 0;
      if (mAnoni != null)
        if (mAnoni.size() > 0)
          for (int i = 0; i < mAnoni.size(); i++) {
            if (mAnoni.get(i).getUpdated_at() > time_to_save) {
              time_to_save = mAnoni.get(i).getUpdated_at();
            }
          }
      Log.v(TAG, "Time first save in MS: " + time_to_save);
      SharedPreferences prefs = mContext.getSharedPreferences(Const.PREFS_NAME, 0);
      SharedPreferences.Editor editor = prefs.edit();
      editor.putLong(Const.GLOBAL_DATE, time_to_save);
      editor.putBoolean(Const.START_SYNC_MESSAGES, true);
      editor.commit();
    }
  }
  private void setDataInThread() {
    if (mResponseUsers.getmResponseCode() == 200) {
      JsonUserProfiles profile = new JsonUserProfiles(mResponseUsers.getmResponseData());
      LinkedList<TableProfile> requestProfiles = profile.getJsonObjectResponse();

      if (requestProfiles != null)
        if (requestProfiles.size() > 0) {
          new CommonQueries(mContext).queryCreateUsersProfiles(requestProfiles);
        }
    }

    if (mAllConversations.getmResponseCode() == 200) {
      JsonAnonis jAnoni = new JsonAnonis(mAllConversations.getmResponseData());
      List<TableAnoni> incomeAnoni = jAnoni.getJsonArrayResponse();

      if (incomeAnoni != null) {
        if (mAnoni.size() != 0 & incomeAnoni.size() != 0) {
          for (TableAnoni a : incomeAnoni) {
            boolean contain = false;
            for (int i = 0; i < mAnoni.size(); i++) {
              if (mAnoni.get(i).getId() == a.getId()) {
                contain = true;
                if (mAnoni.get(i).getMessages().size() < a.getMessages().size()) {
                  for (int j = 0; j < a.getMessages().size(); j++) {
                    boolean message_contain = false;
                    for (int k = 0; k < mAnoni.get(i).getMessages().size(); k++) {
                      if (a.getMessages().get(j).equals(mAnoni.get(i).getMessages().get(k))
                          == true) {
                        message_contain = true;
                      }
                    }
                    if (message_contain == false) ;
                    mAnoni.get(i).getMessages().add(a.getMessages().get(j));
                  }
                }
              }
            }

            if (contain == false) {
              mAnoni.add(a);
            }
          }
        }

        if (mAnoni.size() == 0) {
          mAnoni = incomeAnoni;
        }
      }

      new CommonQueries(mContext).queryCreateOfUpdateAllAnoni(mAnoni);

      Collections.sort(mAnoni, new AnoniComparator());

      // Need find last update
      long time_to_save = 0;
      if (mAnoni != null)
        if (mAnoni.size() > 0) {
          for (int i = 0; i < mAnoni.size(); i++) {
            if (mAnoni.get(i).getUpdated_at() > time_to_save)
              time_to_save = mAnoni.get(i).getUpdated_at();
          }
        }
      SharedPreferences prefs = mContext.getSharedPreferences(Const.PREFS_NAME, 0);
      SharedPreferences.Editor editor = prefs.edit();
      editor.putLong(Const.GLOBAL_DATE, time_to_save);
      editor.commit();
    }
  }
    @Override
    public void onReceive(Context arg0, Intent arg1) {

      TableAnoni an = new TableAnoni();
      TableProfile pro = new TableProfile();

      an = (TableAnoni) arg1.getExtras().getSerializable(Const.SERIALIZE_NEW_MESSAGE);
      pro = (TableProfile) arg1.getExtras().getSerializable(Const.SERIALIZE_NEW_REVELS);

      if (an == null) an = new TableAnoni();
      if (pro == null) pro = new TableProfile();

      Log.e(TAG, "We received msg to Conversations");
      if (an != null & pro != null) {

        if (an.getId() != 0 & pro.getId() == 0) {

          if (mAnoni != null) {
            if (mAnoni.size() > 0) {
              boolean contain = false;

              for (int i = 0; i < mAnoni.size(); i++) {
                if (mAnoni.get(i).getId() == an.getId()) {
                  contain = true;

                  //	Log.e(TAG, "Step 1 conv");

                  // Need to prevent duplicates
                  if (mAnoni.get(i).getMessages() != null)
                    if (mAnoni.get(i).getMessages().size() > 0) {
                      for (int k = 0; k < an.getMessages().size(); k++) {
                        boolean msg_contain = false;
                        //	Log.e(TAG, "Step 2 conv");
                        for (int j = 0; j < mAnoni.get(i).getMessages().size(); j++) {
                          if (mAnoni.get(i).getMessages().get(j).getId()
                              == an.getMessages().get(k).getId()) {
                            msg_contain = true;
                            //	Log.e(TAG, "Step 3 conv");
                          }
                        }

                        if (msg_contain == false) {
                          //	Log.e(TAG, "Only 1 msg");
                          mAnoni.get(i).getMessages().add(an.getMessages().get(k));
                        }
                      }
                    }

                  mAnoni.get(i).setUpdated_at(an.getUpdated_at());
                  /*TableAnoni temp = new TableAnoni();
                  temp = mAnoni.get(i);
                  mAnoni.remove(i);
                  mAnoni.add(0, temp);
                  */
                  break;
                }
              }

              if (contain == false) {
                mAnoni.add(0, an);
              }
            }

            if (mAnoni.size() == 0) {
              mAnoni.add(an);
            }
          }
        }

        if (an.getId() == 0 & pro.getId() != 0) {

          Log.v(TAG, "Update profile revelations");

          if (mProfiles != null) {
            if (mProfiles.size() > 0) {

              for (int i = 0; i < mProfiles.size(); i++) {
                if (mProfiles.get(i).getId() == pro.getId()) {
                  mProfiles.set(i, pro);
                }
              }

            } else {
              mProfiles.add(pro);
            }
          }
        }
        /*
        if(an.getId() == 0 & pro.getId() != 0) {
        	if(mProfiles != null) {
        		for(int i=0; i < mProfiles.size(); i++) {
        			boolean contain = false;
        			if(mProfiles.get(i).getId() == pro.getId()) {
        				contain = true;
        			}

        			if(contain == false) {
        				mProfiles.add(pro);
        			}
        		}
        	}
        }*/

        Collections.sort(mAnoni, new AnoniComparator());

        /* if(adapter != null) {
        	if(adapter.isEmpty() == true) {
        		adapter = new ConversationsAdapter(mContext, ConversationsActivity.this, R.layout.row_event, filterHideConvs(mAnoni), mProfiles);
        		ConversationsActivity.this.setListAdapter(adapter);
        	}
        } else {*/
        adapter =
            new ConversationsAdapter(
                mContext,
                ConversationsActivity.this,
                R.layout.row_event,
                filterHideConvs(mAnoni),
                mProfiles);
        ConversationsActivity.this.setListAdapter(adapter);
        // }
        adapter.notifyDataSetChanged();
      }
      // Log.e("Receiver","We are geting ths message");
    }