Search in sources :

Example 31 with User

use of com.polito.mad17.madmax.entities.User in project MadMax by deviz92.

the class NewMemberActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    Log.d(TAG, "onCreate di NewMemeberAcitivity");
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_new_member);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    buttonInvite = (Button) findViewById(R.id.btn_new_friend);
    Intent intent = getIntent();
    groupID = intent.getStringExtra("groupID");
    groupName = intent.getStringExtra("groupName");
    Log.d(TAG, groupID);
    friendsListView = (ListView) findViewById(R.id.lv_friends);
    friendsAdapter = new HashMapFriendsAdapter(friends);
    addedFriendsListView = (ListView) findViewById(R.id.lv_added_members);
    addedAdapter = new HashMapFriendsAdapter(alreadySelected);
    addedFriendsListView.setAdapter(addedAdapter);
    databaseReference.child("users").child(MainActivity.getCurrentUID()).child("friends").addListenerForSingleValueEvent(new ValueEventListener() {

        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Boolean alreadyAdded = false;
            for (DataSnapshot friendSnapshot : dataSnapshot.getChildren()) {
                if (friendSnapshot.hasChild("sharedGroups")) {
                    if (friendSnapshot.child("sharedGroups").hasChild(groupID)) {
                        alreadyAdded = friendSnapshot.child("sharedGroups").child(groupID).getValue(Boolean.class);
                    }
                }
                // se sono già nel gruppo => vengono inseriti nell'addedAdapter
                if (alreadyAdded) {
                    FirebaseUtils.getInstance().getFriendInviteToGroup(friendSnapshot.getKey(), groupID, alreadySelected, addedAdapter);
                } else // altrimenti vengono inseriti nella lista friendsAdapter degli amici disponibili
                {
                    FirebaseUtils.getInstance().getFriendInviteToGroup(friendSnapshot.getKey(), "", friends, friendsAdapter);
                }
            }
            friendsListView.setAdapter(friendsAdapter);
            addedFriendsListView.setAdapter(addedAdapter);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.w(TAG, databaseError.getMessage());
        }
    });
    // When i click on one friend of the list
    friendsListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            User item = friendsAdapter.getItem(position).getValue();
            friends.remove(item.getID());
            friendsAdapter.update(friends);
            friendsAdapter.notifyDataSetChanged();
            alreadySelected.put(item.getID(), item);
            addedAdapter.update(alreadySelected);
            addedAdapter.notifyDataSetChanged();
        }
    });
    // When i click on one added friend of the list
    addedFriendsListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            User item = addedAdapter.getItem(position).getValue();
            alreadySelected.remove(item.getID());
            addedAdapter.update(alreadySelected);
            addedAdapter.notifyDataSetChanged();
            friends.put(item.getID(), item);
            friendsAdapter.update(friends);
            friendsAdapter.notifyDataSetChanged();
        }
    });
    buttonInvite.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Log.d(TAG, "button clicked");
            Log.d(TAG, "invite a member to join the group");
            // String deepLink = getString(R.string.invitation_deep_link) + "?groupToBeAddedID=" + groupID+ "?inviterToGroupUID=" + MainActivity.getCurrentUID();
            Uri.Builder builder = Uri.parse(getString(R.string.invitation_deep_link)).buildUpon().appendQueryParameter("groupToBeAddedID", groupID).appendQueryParameter("inviterID", MainActivity.getCurrentUID());
            Intent intent = new AppInviteInvitation.IntentBuilder(getString(R.string.invitation_title)).setDeepLink(builder.build()).setMessage(// .setCustomImage(Uri.parse(getString(R.string.invitation_custom_image)))
            getString(R.string.invitationToGroup_message)).setCallToActionText(// todo vedere perchè non mostra questo link
            getString(R.string.invitationToGroup)).build();
            startActivityForResult(intent, MainActivity.REQUEST_INVITE_GROUP);
        }
    });
}
Also used : User(com.polito.mad17.madmax.entities.User) AppInviteInvitation(com.google.android.gms.appinvite.AppInviteInvitation) Intent(android.content.Intent) DataSnapshot(com.google.firebase.database.DataSnapshot) View(android.view.View) AdapterView(android.widget.AdapterView) ListView(android.widget.ListView) DatabaseError(com.google.firebase.database.DatabaseError) AdapterView(android.widget.AdapterView) ValueEventListener(com.google.firebase.database.ValueEventListener) Toolbar(android.support.v7.widget.Toolbar)

Example 32 with User

use of com.polito.mad17.madmax.entities.User in project MadMax by deviz92.

the class NewMemberActivity method onOptionsItemSelected.

// When I click SAVE
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int itemThatWasClickedId = item.getItemId();
    if (itemThatWasClickedId == R.id.action_save) {
        for (User newMemeber : alreadySelected.values()) {
            FirebaseUtils.getInstance().joinGroupFirebase(newMemeber.getID(), groupID);
            // add event for GROUP_MEMBER_ADD
            User currentUser = MainActivity.getCurrentUser();
            Event event = new Event(groupID, Event.EventType.GROUP_MEMBER_ADD, currentUser.getName() + " " + currentUser.getSurname(), newMemeber.getName() + " " + newMemeber.getSurname());
            event.setDate(new SimpleDateFormat("yyyy.MM.dd").format(new java.util.Date()));
            event.setTime(new SimpleDateFormat("HH:mm").format(new java.util.Date()));
            FirebaseUtils.getInstance().addEvent(event);
        }
        for (User user : friends.values()) {
            if (user.getIsInGroupForInvite().equals(groupID)) {
                FirebaseUtils.getInstance().removeMemberFirebase(user.getID(), groupID);
                // add event for GROUP_MEMBER_REMOVE
                User currentUser = MainActivity.getCurrentUser();
                Event event = new Event(groupID, Event.EventType.GROUP_MEMBER_REMOVE, currentUser.getName() + " " + currentUser.getSurname(), user.getName() + " " + user.getSurname());
                event.setDate(new SimpleDateFormat("yyyy.MM.dd").format(new java.util.Date()));
                event.setTime(new SimpleDateFormat("HH:mm").format(new java.util.Date()));
                FirebaseUtils.getInstance().addEvent(event);
            }
        }
        friends.clear();
        alreadySelected.clear();
        Toast.makeText(getApplicationContext(), getString(R.string.member_add), Toast.LENGTH_SHORT).show();
        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
        finish();
        return true;
    }
    return super.onOptionsItemSelected(item);
}
Also used : User(com.polito.mad17.madmax.entities.User) Event(com.polito.mad17.madmax.entities.Event) Intent(android.content.Intent) SimpleDateFormat(java.text.SimpleDateFormat)

Example 33 with User

use of com.polito.mad17.madmax.entities.User in project MadMax by deviz92.

the class PayExpenseActivity method onOptionsItemSelected.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    Intent intent;
    switch(item.getItemId()) {
        // Respond to the action bar's Up/Home button
        case android.R.id.home:
            Log.d(TAG, "Clicked up button");
            /*
                Intent intent = new Intent(this, GroupDetailActivity.class);
                intent.putExtra("groupID", groupID);
                intent.putExtra("userID", userID);
                startActivity(intent);
                */
            onBackPressed();
            return true;
        case R.id.action_save:
            Log.d(TAG, "Clicked pay expense");
            Double money = null;
            String text = amountEditText.getText().toString();
            if (!text.isEmpty()) {
                try {
                    // it means it is double
                    money = Double.parseDouble(text);
                } catch (Exception e1) {
                    // this means it is not double
                    e1.printStackTrace();
                }
            }
            if (money != null) {
                if (money > debt) {
                    Toast.makeText(PayExpenseActivity.this, getString(R.string.cannot_pay_more), Toast.LENGTH_SHORT).show();
                    return true;
                } else if (money <= 0) {
                    Toast.makeText(PayExpenseActivity.this, getString(R.string.invalid_amount), Toast.LENGTH_SHORT).show();
                    return true;
                } else {
                    Toast.makeText(PayExpenseActivity.this, getString(R.string.paid), Toast.LENGTH_SHORT).show();
                    payDebtForExpense(userID, expenseID, money);
                    // add event for USER_PAY
                    User currentUser = MainActivity.getCurrentUser();
                    String userID = currentUser.getID();
                    Event event = new Event(groupID, Event.EventType.USER_PAY, userID, money + " €");
                    event.setDate(new SimpleDateFormat("yyyy.MM.dd").format(new java.util.Date()));
                    event.setTime(new SimpleDateFormat("HH:mm").format(new java.util.Date()));
                    FirebaseUtils.getInstance().addEvent(event);
                    intent = new Intent(this, ExpenseDetailActivity.class);
                    intent.putExtra("groupID", groupID);
                    intent.putExtra("userID", userID);
                    intent.putExtra("expenseID", expenseID);
                    finish();
                    startActivity(intent);
                    return true;
                }
            } else {
                Log.d(TAG, "Error: money is null");
            }
            return true;
    }
    return super.onOptionsItemSelected(item);
}
Also used : User(com.polito.mad17.madmax.entities.User) Event(com.polito.mad17.madmax.entities.Event) Intent(android.content.Intent) SimpleDateFormat(java.text.SimpleDateFormat)

Example 34 with User

use of com.polito.mad17.madmax.entities.User in project MadMax by deviz92.

the class SplittersViewAdapter method onBindViewHolder.

@Override
public void onBindViewHolder(final SplittersViewAdapter.ItemSplittersViewAdapter holder, final int position) {
    final Map.Entry<String, User> item = getItem(position);
    String photo = item.getValue().getProfileImage();
    if (photo != null) {
        Glide.with(context).load(photo).placeholder(R.drawable.user_default).centerCrop().bitmapTransform(new CropCircleTransformation(context)).diskCacheStrategy(DiskCacheStrategy.ALL).into(holder.imageView);
    } else {
        Glide.with(context).load(R.drawable.user_default).centerCrop().bitmapTransform(new CropCircleTransformation(context)).diskCacheStrategy(DiskCacheStrategy.ALL).into(holder.imageView);
    }
    Log.d(TAG, "Nome: " + item.getValue().getName());
    Log.d(TAG, "Cognome: " + item.getValue().getSurname());
    holder.nameTextView.setText(item.getValue().getName() + " " + item.getValue().getSurname());
    holder.currencyTextView.setText(item.getValue().getExpenseCurrency());
    holder.amountEditText.setText(item.getValue().getSplitPart().toString());
    // update MyCustomEditTextListener every time we bind a new item
    // so that it knows what item in mDataset to update
    holder.myCustomEditTextListener.updateUser(item);
}
Also used : User(com.polito.mad17.madmax.entities.User) CropCircleTransformation(com.polito.mad17.madmax.entities.CropCircleTransformation) HashMap(java.util.HashMap) Map(java.util.Map)

Example 35 with User

use of com.polito.mad17.madmax.entities.User in project MadMax by deviz92.

the class EventsViewAdapter method onBindViewHolder.

@Override
public void onBindViewHolder(final EventViewHolder eventViewHolder, int position) {
    final Event event = getItem(position).getValue();
    User currentUser = MainActivity.getCurrentUser();
    DatabaseReference databaseReference = FirebaseUtils.getDatabaseReference();
    switch(event.getEventType()) {
        case GROUP_ADD:
            eventViewHolder.imageView.setImageResource(R.drawable.group_add);
            event.setDescription(event.getSubject() + " " + context.getString(R.string.GROUP_ADD) + " \"" + event.getObject() + "\"");
            break;
        /*case GROUP_REMOVE:
                eventViewHolder.imageView.setImageResource(R.drawable.group_remove);
                event.setDescription("\"" + event.getSubject() + "\" " + context.getString(R.string.GROUP_REMOVE) + " \"" + event.getObject() + "\"");
                break;*/
        case GROUP_EDIT:
            eventViewHolder.imageView.setImageResource(R.drawable.group_edit);
            event.setDescription(event.getSubject() + " " + context.getString(R.string.GROUP_EDIT) + " \"" + event.getObject() + "\"");
            break;
        case GROUP_MEMBER_ADD:
            eventViewHolder.imageView.setImageResource(R.drawable.user_add);
            event.setDescription(event.getSubject() + " " + context.getString(R.string.GROUP_MEMBER_ADD) + " " + event.getObject());
            break;
        case GROUP_MEMBER_REMOVE:
            eventViewHolder.imageView.setImageResource(R.drawable.user_remove);
            event.setDescription(event.getSubject() + " " + context.getString(R.string.GROUP_MEMBER_REMOVE) + " " + event.getObject());
            break;
        case EXPENSE_ADD:
            eventViewHolder.imageView.setImageResource(R.drawable.expense_add);
            event.setDescription(event.getSubject() + " " + context.getString(R.string.EXPENSE_ADD) + " \"" + event.getObject() + "\"");
            break;
        case EXPENSE_REMOVE:
            eventViewHolder.imageView.setImageResource(R.drawable.expense_remove);
            event.setDescription(event.getSubject() + " " + context.getString(R.string.EXPENSE_REMOVE) + " \"" + event.getObject() + "\"");
            break;
        case EXPENSE_EDIT:
            eventViewHolder.imageView.setImageResource(R.drawable.expense_edit);
            event.setDescription(event.getSubject() + " " + context.getString(R.string.EXPENSE_EDIT) + " \"" + event.getObject() + "\"");
            break;
        case PENDING_EXPENSE_ADD:
            eventViewHolder.imageView.setImageResource(R.drawable.expense_add);
            event.setDescription(event.getSubject() + " " + context.getString(R.string.PENDING_EXPENSE_ADD) + " \"" + event.getObject() + "\"");
            break;
        case PENDING_EXPENSE_REMOVE:
            eventViewHolder.imageView.setImageResource(R.drawable.expense_remove);
            event.setDescription(event.getSubject() + " " + context.getString(R.string.PENDING_EXPENSE_REMOVE) + " \"" + event.getObject() + "\"");
            break;
        case PENDING_EXPENSE_EDIT:
            eventViewHolder.imageView.setImageResource(R.drawable.expense_edit);
            event.setDescription(event.getSubject() + " " + context.getString(R.string.PENDING_EXPENSE_EDIT) + " \"" + event.getObject() + "\"");
            break;
        case PENDING_EXPENSE_VOTE_UP:
            eventViewHolder.imageView.setImageResource(R.drawable.thumb_up_black);
            event.setDescription(event.getSubject() + " " + context.getString(R.string.PENDING_EXPENSE_VOTE) + " \"" + event.getObject() + "\"");
            break;
        case PENDING_EXPENSE_VOTE_DOWN:
            eventViewHolder.imageView.setImageResource(R.drawable.thumb_down_black);
            event.setDescription(event.getSubject() + " " + context.getString(R.string.PENDING_EXPENSE_VOTE) + " \"" + event.getObject() + "\"");
            break;
        case PENDING_EXPENSE_APPROVED:
            eventViewHolder.imageView.setImageResource(R.drawable.expense_add);
            event.setDescription(context.getString(R.string.PENDING_EXPENSE) + " \"" + event.getObject() + "\" " + context.getString(R.string.PENDING_EXPENSE_APPROVED));
            break;
        case PENDING_EXPENSE_NEGLECTED:
            eventViewHolder.imageView.setImageResource(R.drawable.pending_expense_neglected);
            event.setDescription(context.getString(R.string.PENDING_EXPENSE) + " \"" + event.getObject() + "\" " + context.getString(R.string.PENDING_EXPENSE_NEGLECTED));
            break;
        /*case FRIEND_INVITE:
                eventViewHolder.imageView.setImageResource(R.drawable.user_add);
                event.setDescription(context.getString(R.string.FRIEND_INVITE) + " \"" + event.getObject() + "\"");
                break;*/
        case FRIEND_GROUP_INVITE:
            eventViewHolder.imageView.setImageResource(R.drawable.user_add);
            event.setDescription(context.getString(R.string.FRIEND_GROUP_INVITE) + " " + event.getObject());
            break;
        case // instead of the username the subject must be the ID of the user
        USER_PAY:
            eventViewHolder.imageView.setImageResource(R.drawable.user_pay);
            if (currentUser.getID().equals(event.getSubject())) {
                event.setDescription(context.getString(R.string.ME_PAY) + " " + event.getObject());
            } else {
                databaseReference.child("users").child(event.getSubject()).addListenerForSingleValueEvent(new ValueEventListener() {

                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        event.setDescription(dataSnapshot.child("name").getValue(String.class) + " " + dataSnapshot.child("surname").getValue(String.class) + " " + context.getString(R.string.FRIEND_PAY) + " " + event.getObject());
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {
                        Log.w(TAG, databaseError.toException());
                    }
                });
            }
            break;
        case // instead of the username the subject must be the ID of the user
        USER_COMMENT_ADD:
            eventViewHolder.imageView.setImageResource(R.drawable.user_comment);
            if (currentUser.getID().equals(event.getSubject())) {
                event.setDescription(context.getString(R.string.ME_COMMENT_ADD) + " \"" + event.getObject() + "\"");
            } else {
                databaseReference.child("users").child(event.getSubject()).addListenerForSingleValueEvent(new ValueEventListener() {

                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        event.setDescription(dataSnapshot.child("name").getValue(String.class) + " " + dataSnapshot.child("surname").getValue(String.class) + " " + context.getString(R.string.FRIEND_COMMENT_ADD) + " \"" + event.getObject() + "\"");
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {
                        Log.w(TAG, databaseError.toException());
                    }
                });
            }
            break;
        default:
            eventViewHolder.imageView.setImageResource(R.drawable.event_default);
            event.setDescription("\"" + event.getSubject() + "\" " + context.getString(R.string.did) + " \"" + event.getObject() + "\"");
    }
    eventViewHolder.descriptionTextView.setText(event.getDescription());
    eventViewHolder.timestampTextView.setText(context.getString(R.string.day) + " " + event.getDate() + " " + context.getString(R.string.at) + " " + event.getTime());
}
Also used : User(com.polito.mad17.madmax.entities.User) DatabaseError(com.google.firebase.database.DatabaseError) DatabaseReference(com.google.firebase.database.DatabaseReference) Event(com.polito.mad17.madmax.entities.Event) ValueEventListener(com.google.firebase.database.ValueEventListener) DataSnapshot(com.google.firebase.database.DataSnapshot)

Aggregations

User (com.polito.mad17.madmax.entities.User)27 Intent (android.content.Intent)17 DataSnapshot (com.google.firebase.database.DataSnapshot)16 DatabaseError (com.google.firebase.database.DatabaseError)16 ValueEventListener (com.google.firebase.database.ValueEventListener)16 Event (com.polito.mad17.madmax.entities.Event)15 SimpleDateFormat (java.text.SimpleDateFormat)14 View (android.view.View)8 HashMap (java.util.HashMap)8 Map (java.util.Map)8 ImageView (android.widget.ImageView)6 CropCircleTransformation (com.polito.mad17.madmax.entities.CropCircleTransformation)6 Bitmap (android.graphics.Bitmap)4 NonNull (android.support.annotation.NonNull)4 LinearLayoutManager (android.support.v7.widget.LinearLayoutManager)4 RecyclerView (android.support.v7.widget.RecyclerView)4 StorageReference (com.google.firebase.storage.StorageReference)4 UploadTask (com.google.firebase.storage.UploadTask)4 Group (com.polito.mad17.madmax.entities.Group)4 ByteArrayOutputStream (java.io.ByteArrayOutputStream)4