From b9634570a760a318469bec77bdd9288b1b860f76 Mon Sep 17 00:00:00 2001 From: Krocks Date: Mon, 24 Jul 2017 16:06:09 +0300 Subject: [PATCH 1/3] added history things, working commit, need to add equal statuses --- .../data/models/mqtt/Contact.java | 4 +- .../mvp/presenters/HistoryPresenter.java | 31 +++++++ .../communicator/mvp/view/HistoryView.java | 16 ++++ .../ui/activities/HomeActivity.java | 13 +++ .../ui/adapters/HistoryAdapter.java | 35 +++++++ .../ui/adapters/viewholders/HistoryVh.java | 48 ++++++++++ .../fragments/contacts/HistoryFragment.java | 66 ++++++++++++++ app/src/main/res/layout/fragment_history.xml | 24 +++++ app/src/main/res/layout/item_history.xml | 91 +++++++++++++++++++ 9 files changed, 326 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/HistoryPresenter.java create mode 100644 app/src/main/java/com/ninja/mobile/communicator/mvp/view/HistoryView.java create mode 100644 app/src/main/java/com/ninja/mobile/communicator/ui/adapters/HistoryAdapter.java create mode 100644 app/src/main/java/com/ninja/mobile/communicator/ui/adapters/viewholders/HistoryVh.java create mode 100644 app/src/main/java/com/ninja/mobile/communicator/ui/fragments/contacts/HistoryFragment.java create mode 100644 app/src/main/res/layout/fragment_history.xml create mode 100644 app/src/main/res/layout/item_history.xml diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Contact.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Contact.java index 75f278be23..2c757be2c6 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Contact.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Contact.java @@ -33,8 +33,8 @@ public class Contact extends BaseModelMQQT implements Parcelable { } public String getPhone() { - if (!TextUtils.isEmpty(person_id)) { - String[] split = person_id.split("_"); + if (!TextUtils.isEmpty(phoneId)) { + String[] split = phoneId.split("_"); return split[0]; } return null; diff --git a/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/HistoryPresenter.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/HistoryPresenter.java new file mode 100644 index 0000000000..9b0d1a5044 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/HistoryPresenter.java @@ -0,0 +1,31 @@ +package com.ninja.mobile.communicator.mvp.presenters; + +import com.arellomobile.mvp.InjectViewState; +import com.ninja.mobile.communicator.data.models.LocalContact; +import com.ninja.mobile.communicator.data.models.mqtt.Contact; +import com.ninja.mobile.communicator.data.models.mqtt.Response; +import com.ninja.mobile.communicator.mvp.view.HistoryView; + + +@InjectViewState +public class HistoryPresenter extends BasePresenter { + + + + @Override protected Class[] getFilter() { + //TODO HZ + return new Class[0]; + } + + @Override protected void handleResponse(Response response) { + //TODO HZ + } + + public void getHistory(){ + getViewState().setAllContacts(mDataManager.getProfile().getRoster().userlist); + } + + public void acceptContact(Contact item) { + //TODO + } +} diff --git a/app/src/main/java/com/ninja/mobile/communicator/mvp/view/HistoryView.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/view/HistoryView.java new file mode 100644 index 0000000000..f0cde78ea5 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/view/HistoryView.java @@ -0,0 +1,16 @@ +package com.ninja.mobile.communicator.mvp.view; + +import com.arellomobile.mvp.MvpView; +import com.ninja.mobile.communicator.data.models.LocalContact; +import com.ninja.mobile.communicator.data.models.mqtt.Contact; + +import java.util.List; + +public interface HistoryView extends MvpView { + + void setAllContacts(List contactList); + + void showLocalProgress(); + + void hideLocalProgress(); +} diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/activities/HomeActivity.java b/app/src/main/java/com/ninja/mobile/communicator/ui/activities/HomeActivity.java index c74bdb53b3..8599818540 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/ui/activities/HomeActivity.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/activities/HomeActivity.java @@ -15,6 +15,7 @@ import com.ninja.mobile.communicator.ui.base.BaseActivity; import com.ninja.mobile.communicator.ui.base.BaseFragment; import com.ninja.mobile.communicator.ui.fragments.contacts.AddContactByPhoneFragment; import com.ninja.mobile.communicator.ui.fragments.contacts.ContactsFragment; +import com.ninja.mobile.communicator.ui.fragments.contacts.HistoryFragment; import com.ninja.mobile.communicator.ui.fragments.profile.MyProfileFragment; import com.ninja.mobile.communicator.ui.fragments.profile.UserProfileFragment; import com.ninja.mobile.communicator.ui.views.CascadeWheel; @@ -74,6 +75,10 @@ public class HomeActivity extends BaseActivity implements HomeView { navigateToContacts(); break; + case Chats: + havigateToHistory(); + break; + case Search: navigateToAddContact(); break; @@ -114,6 +119,12 @@ public class HomeActivity extends BaseActivity implements HomeView { NynjaApp.getRouter().replaceScreen(MyProfileFragment.class.getSimpleName()); } + + //TODO add at wheel lvl 2 + private void havigateToHistory(){ + NynjaApp.getRouter().replaceScreen(HistoryFragment.class.getSimpleName()); + } + @Override public void showInternetError() { } @@ -157,6 +168,8 @@ public class HomeActivity extends BaseActivity implements HomeView { Object transitionData = replace.getTransitionData(); if (transitionData instanceof Contact) fragment = UserProfileFragment.newInstance((Contact) transitionData); + } else if (HistoryFragment.class.getSimpleName().equalsIgnoreCase(screenKey)){ + fragment = HistoryFragment.newInstance(); } return fragment; } diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/HistoryAdapter.java b/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/HistoryAdapter.java new file mode 100644 index 0000000000..44b198c248 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/HistoryAdapter.java @@ -0,0 +1,35 @@ +package com.ninja.mobile.communicator.ui.adapters; + +import android.view.ViewGroup; + +import com.ninja.mobile.communicator.data.models.mqtt.Contact; +import com.ninja.mobile.communicator.intetfaces.OnItemClickListener; +import com.ninja.mobile.communicator.ui.adapters.viewholders.HistoryVh; +import com.ninja.mobile.communicator.ui.base.BaseAdapter; +import com.ninja.mobile.communicator.ui.base.BaseViewHolder; + +import java.util.List; + +public class HistoryAdapter extends BaseAdapter { + + + public HistoryAdapter(List list) { + super(list); + } + + public HistoryAdapter(List list, OnItemClickListener onItemClickListener) { + super(list, onItemClickListener); + } + + @Override + public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + return new HistoryVh(parent); + } + + @Override + public void onBindViewHolder(BaseViewHolder holder, int position) { + holder.setData(getItem(position)); + } + + +} diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/viewholders/HistoryVh.java b/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/viewholders/HistoryVh.java new file mode 100644 index 0000000000..422585ec6e --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/viewholders/HistoryVh.java @@ -0,0 +1,48 @@ +package com.ninja.mobile.communicator.ui.adapters.viewholders; + +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import com.bumptech.glide.Glide; +import com.ninja.mobile.communicator.R; +import com.ninja.mobile.communicator.data.models.mqtt.Contact; +import com.ninja.mobile.communicator.intetfaces.OnItemClickListener; +import com.ninja.mobile.communicator.ui.base.BaseViewHolder; + +import butterknife.BindView; + +public class HistoryVh extends BaseViewHolder { + @BindView(R.id.li_histore_tv_name) TextView mName; + @BindView(R.id.li_history_tv_phone) TextView mPhone; + @BindView(R.id.li_history_tv_status) TextView mAdd; + @BindView(R.id.li_history_iv_photo) ImageView mPhoto; + + public HistoryVh(ViewGroup parent) { + super(LayoutInflater.from(parent.getContext()) + .inflate(R.layout.item_history, parent, false)); + } + + @Override public void setData(Contact item) { + mName.setText(item.getFullName()); + mPhone.setText(item.getPhone()); + +// String status = item.status.toString(); + + //TODO CODE STATUS CONST +// if (getAdapterPosition() % 2 == 0) { +// mAdd.setText(getContext().getString(R.string.contact_li_text_added)); +// mAdd.setGravity(Gravity.END | Gravity.CENTER_VERTICAL); +// mAdd.setBackground(null); +// } else { +// mAdd.setText(getContext().getString(R.string.contact_li_text_add)); +// mAdd.setGravity(Gravity.CENTER); +// mAdd.setBackgroundResource(R.drawable.red_round_button); +// } + + Glide.with(getContext()).load(item.avatar).into(mPhoto); + } +} diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/contacts/HistoryFragment.java b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/contacts/HistoryFragment.java new file mode 100644 index 0000000000..d4a1e828d2 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/contacts/HistoryFragment.java @@ -0,0 +1,66 @@ +package com.ninja.mobile.communicator.ui.fragments.contacts; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ProgressBar; + +import com.arellomobile.mvp.presenter.InjectPresenter; +import com.ninja.mobile.communicator.R; +import com.ninja.mobile.communicator.data.models.mqtt.Contact; +import com.ninja.mobile.communicator.data.models.mqtt.History; +import com.ninja.mobile.communicator.mvp.presenters.HistoryPresenter; +import com.ninja.mobile.communicator.mvp.view.HistoryView; +import com.ninja.mobile.communicator.ui.adapters.HistoryAdapter; +import com.ninja.mobile.communicator.ui.base.BaseFragment; + +import java.util.List; + +import butterknife.BindView; + +public class HistoryFragment extends BaseFragment implements HistoryView { + + @BindView(R.id.f_history_recycler) RecyclerView mRecyclerView; + @BindView(R.id.f_history_progress) ProgressBar mProgressBar; + + @InjectPresenter HistoryPresenter mPresenter; + + private HistoryAdapter mAdapter; + + public static HistoryFragment newInstance(){ + return new HistoryFragment(); + } + + @Nullable @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_history, container, false); + } + + + @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + getHistory(); + } + + private void getHistory() { + mPresenter.getHistory(); + } + + @Override public void setAllContacts(List contactList) { + mAdapter = new HistoryAdapter(contactList, (item, position) -> mPresenter.acceptContact(item)); + mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext())); + mRecyclerView.setAdapter(mAdapter); + } + + @Override public void showLocalProgress() { + mProgressBar.setVisibility(View.VISIBLE); + } + + @Override public void hideLocalProgress() { + mProgressBar.setVisibility(View.GONE); + } +} diff --git a/app/src/main/res/layout/fragment_history.xml b/app/src/main/res/layout/fragment_history.xml new file mode 100644 index 0000000000..305a09be23 --- /dev/null +++ b/app/src/main/res/layout/fragment_history.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_history.xml b/app/src/main/res/layout/item_history.xml new file mode 100644 index 0000000000..ff53579f75 --- /dev/null +++ b/app/src/main/res/layout/item_history.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file -- GitLab From 38015a5441f9559764d441f512e48992d6dd4c94 Mon Sep 17 00:00:00 2001 From: Krocks Date: Mon, 24 Jul 2017 16:48:37 +0300 Subject: [PATCH 2/3] added statuses, temp background, strings --- .../data/models/mqtt/Contact.java | 3 ++ .../ui/adapters/viewholders/HistoryVh.java | 38 ++++++++++++------- .../temp_shadow_history_background.xml | 20 ++++++++++ app/src/main/res/layout/item_history.xml | 3 +- app/src/main/res/values/strings.xml | 5 +++ 5 files changed, 54 insertions(+), 15 deletions(-) create mode 100644 app/src/main/res/drawable/temp_shadow_history_background.xml diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Contact.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Contact.java index 2c757be2c6..9eed21849e 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Contact.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Contact.java @@ -12,6 +12,9 @@ import java.util.Random; import java.util.UUID; public class Contact extends BaseModelMQQT implements Parcelable { + public static final String FRIEND = "friend"; + public static final String REQUESTED = "not_confirmed"; + public static final String ACCEPT = "confirm"; @Order(1) public String phoneId; @Order(2) public String avatar; diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/viewholders/HistoryVh.java b/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/viewholders/HistoryVh.java index 422585ec6e..cef9ae2cbe 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/viewholders/HistoryVh.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/viewholders/HistoryVh.java @@ -30,19 +30,29 @@ public class HistoryVh extends BaseViewHolder { mName.setText(item.getFullName()); mPhone.setText(item.getPhone()); -// String status = item.status.toString(); - - //TODO CODE STATUS CONST -// if (getAdapterPosition() % 2 == 0) { -// mAdd.setText(getContext().getString(R.string.contact_li_text_added)); -// mAdd.setGravity(Gravity.END | Gravity.CENTER_VERTICAL); -// mAdd.setBackground(null); -// } else { -// mAdd.setText(getContext().getString(R.string.contact_li_text_add)); -// mAdd.setGravity(Gravity.CENTER); -// mAdd.setBackgroundResource(R.drawable.red_round_button); -// } - - Glide.with(getContext()).load(item.avatar).into(mPhoto); + if (item.status != null){ + String status = item.status.toString(); + + if (status.equalsIgnoreCase(Contact.FRIEND)) { + mAdd.setText(getContext().getString(R.string.history_added)); + mAdd.setGravity(Gravity.END | Gravity.CENTER_VERTICAL); + mAdd.setBackground(null); + mAdd.setTextColor(getContext().getResources().getColor(R.color.white)); + } else if (status.equalsIgnoreCase(Contact.ACCEPT)){ + mAdd.setText(getContext().getString(R.string.history_accept)); + mAdd.setGravity(Gravity.CENTER); + mAdd.setBackgroundResource(R.drawable.red_round_button); + mAdd.setTextColor(getContext().getResources().getColor(R.color.pencil_color)); + } else if (status.equalsIgnoreCase(Contact.REQUESTED)){ + mAdd.setText(getContext().getString(R.string.history_requested)); + mAdd.setGravity(Gravity.END | Gravity.CENTER_VERTICAL); + mAdd.setBackground(null); + mAdd.setTextColor(getContext().getResources().getColor(R.color.colorAccent)); + } + } + + +// Glide.with(getContext()).load(item.avatar).into(mPhoto); + Glide.with(getContext()).load("").placeholder(R.drawable.contact_placeholder).into(mPhoto); } } diff --git a/app/src/main/res/drawable/temp_shadow_history_background.xml b/app/src/main/res/drawable/temp_shadow_history_background.xml new file mode 100644 index 0000000000..2b832d904d --- /dev/null +++ b/app/src/main/res/drawable/temp_shadow_history_background.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_history.xml b/app/src/main/res/layout/item_history.xml index ff53579f75..54af86ad2d 100644 --- a/app/src/main/res/layout/item_history.xml +++ b/app/src/main/res/layout/item_history.xml @@ -3,7 +3,8 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:layout_height="wrap_content"> + android:layout_height="wrap_content" + android:background="@drawable/temp_shadow_history_background"> Enter Phone Number User is not found. + + Accept + Added + Requested + -- GitLab From b2fa615e102d6459db79ee38514d80ead72129a3 Mon Sep 17 00:00:00 2001 From: Krocks Date: Mon, 24 Jul 2017 17:01:48 +0300 Subject: [PATCH 3/3] changed temp background --- .../drawable/temp_shadow_history_background.xml | 17 ++++++++--------- app/src/main/res/layout/item_history.xml | 3 ++- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/src/main/res/drawable/temp_shadow_history_background.xml b/app/src/main/res/drawable/temp_shadow_history_background.xml index 2b832d904d..b00f8088c0 100644 --- a/app/src/main/res/drawable/temp_shadow_history_background.xml +++ b/app/src/main/res/drawable/temp_shadow_history_background.xml @@ -2,19 +2,18 @@ - - + + - + android:bottom="3dp" + android:left="0.5dp" + android:right="3dp" + android:top="0.5dp"> - - + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_history.xml b/app/src/main/res/layout/item_history.xml index 54af86ad2d..cc1aed6633 100644 --- a/app/src/main/res/layout/item_history.xml +++ b/app/src/main/res/layout/item_history.xml @@ -4,7 +4,8 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@drawable/temp_shadow_history_background"> + android:background="@drawable/temp_shadow_history_background" + android:layout_margin="12dp">