Android Open Source - ribbit Inbox Fragment






From Project

Back to project page ribbit.

License

The source code is released under:

MIT License

If you think the Android project ribbit 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.lleshiart.ribbit;
/*  w ww.  j ava2 s. co  m*/
import java.util.ArrayList;
import java.util.List;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

import com.parse.FindCallback;
import com.parse.ParseException;
import com.parse.ParseFile;
import com.parse.ParseObject;
import com.parse.ParseQuery;
import com.parse.ParseUser;

public class InboxFragment extends ListFragment {

  protected List<ParseObject> mMessages;
  
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_inbox, container,
        false);
    
    return rootView;
  }
  
  @Override
  public void onResume() {
    super.onResume();
    
    getActivity().setProgressBarIndeterminateVisibility(true);
    
    ParseQuery<ParseObject> query = new ParseQuery<ParseObject>(ParseConstants.CLASS_MESSAGES);
    query.whereEqualTo(ParseConstants.KEY_RECIPIENT_IDS, ParseUser.getCurrentUser().getObjectId());
    query.orderByDescending(ParseConstants.KEY_CREATED_AT);
    query.findInBackground(new FindCallback<ParseObject>() {
      
      @Override
      public void done(List<ParseObject> messages, ParseException e) {
        getActivity().setProgressBarIndeterminateVisibility(false);
        
        if (e == null) {
          // We found messages!
          mMessages = messages;
          
          String [] usernames = new String[mMessages.size()];
          int i = 0;
          for (ParseObject message : mMessages) {
            usernames[i] = message.getString(ParseConstants.KEY_SENDER_NAME);
            i++;
          }
          if (getListView().getAdapter() == null) {
            MessageAdapter adapter = new MessageAdapter(
                getListView().getContext(),
                mMessages);
            setListAdapter(adapter);
          }
          else {
            // refill the adapter!
            ((MessageAdapter)getListView().getAdapter()).refill(mMessages);
          }
        }
      }
    });
  }
  
  @Override
  public void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    
    ParseObject message = mMessages.get(position);
    String messageType = message.getString(ParseConstants.KEY_FILE_TYPE);
    
    if (messageType.equals(ParseConstants.TYPE_IMAGE)) {
      // View Image
      ParseFile file = message.getParseFile(ParseConstants.KEY_FILE);
      Uri fileUri = Uri.parse(file.getUrl());
      Intent intent = new Intent (getActivity(), ViewImageActivity.class);
      intent.setData(fileUri);
      startActivity(intent);
    } 
    else if (messageType.equals(ParseConstants.TYPE_VIDEO)){
      // View video
      ParseFile file = message.getParseFile(ParseConstants.KEY_FILE);
      Uri fileUri = Uri.parse(file.getUrl());
      Intent intent = new Intent(Intent.ACTION_VIEW, fileUri);
      intent.setDataAndType(fileUri, "video/*");
      startActivity(intent);
    }
    else {
      // View text message
      String textMessage = message.getString(ParseConstants.KEY_MESSAGE);
      
      AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
      builder.setTitle("Message from: " + message.getString(ParseConstants.KEY_SENDER_NAME))
        
        .setMessage(textMessage)
        .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
          
          @Override
          public void onClick(DialogInterface dialog, int which) {
            if (which == DialogInterface.BUTTON_POSITIVE) {
              onResume();
              dialog.dismiss();
            }
          }
        });
      AlertDialog dialog = builder.create();
      dialog.show();
    }
    
    // Delete it!
    List<String> ids = message.getList(ParseConstants.KEY_RECIPIENT_IDS);
    
    if (ids.size() == 1) {
      // Last recipient - delete the whole thing
      message.deleteInBackground();
    }
    else {
      // Remove recipient and save
      ids.remove(ParseUser.getCurrentUser().getObjectId());
      
      ArrayList<String> idsToRemove = new ArrayList<String>();
      idsToRemove.add(ParseUser.getCurrentUser().getObjectId());
      
      message.removeAll(ParseConstants.KEY_RECIPIENT_IDS, idsToRemove);
      message.saveInBackground();
    }
  }
  
}




Java Source Code List

com.lleshiart.ribbit.EditFriendsActivity.java
com.lleshiart.ribbit.FileHelper.java
com.lleshiart.ribbit.ForgotPasswordActivity.java
com.lleshiart.ribbit.FriendsFragment.java
com.lleshiart.ribbit.ImageResizer.java
com.lleshiart.ribbit.InboxFragment.java
com.lleshiart.ribbit.LoginActivity.java
com.lleshiart.ribbit.MainActivity.java
com.lleshiart.ribbit.MessageAdapter.java
com.lleshiart.ribbit.NewMessageActivity.java
com.lleshiart.ribbit.ParseConstants.java
com.lleshiart.ribbit.RecipientsActivity.java
com.lleshiart.ribbit.SectionsPagerAdapter.java
com.lleshiart.ribbit.SignUpActivity.java
com.lleshiart.ribbit.ViewImageActivity.java