From 577c3ce56b5bfa868b2b529fd5427cff661ae20e Mon Sep 17 00:00:00 2001 From: Krocks Date: Wed, 5 Jul 2017 17:23:18 +0300 Subject: [PATCH 1/6] added recycler view lib, made some styles, fragment, dealing with mvp now. working commit --- app/build.gradle | 1 + .../com/ninja/mobile/data/DataManager.java | 8 +++ .../ninja/mobile/data/models/mqtt/Person.java | 48 +++++++++++++ .../AddContactsFromPhonePresenter.java | 14 ++++ .../mvp/view/AddContactsFromPhoneView.java | 10 +++ .../contacts/AddContactFromPhoneFragment.java | 48 +++++++++++++ .../com/ninja/mobile/utils/ContactsUtil.java | 69 +++++++++++++++++++ .../main/res/drawable/red_round_button.xml | 7 ++ .../fragment_add_contact_from_phone.xml | 7 ++ .../item_add_contacts_from_phone_recycler.xml | 45 ++++++++++++ app/src/main/res/values/dimen.xml | 7 ++ app/src/main/res/values/strings.xml | 4 ++ app/src/main/res/values/styles.xml | 7 ++ 13 files changed, 275 insertions(+) create mode 100644 app/src/main/java/com/ninja/mobile/mvp/presenters/AddContactsFromPhonePresenter.java create mode 100644 app/src/main/java/com/ninja/mobile/mvp/view/AddContactsFromPhoneView.java create mode 100644 app/src/main/java/com/ninja/mobile/ui/fragments/contacts/AddContactFromPhoneFragment.java create mode 100644 app/src/main/java/com/ninja/mobile/utils/ContactsUtil.java create mode 100644 app/src/main/res/drawable/red_round_button.xml create mode 100644 app/src/main/res/layout/fragment_add_contact_from_phone.xml create mode 100644 app/src/main/res/layout/item_add_contacts_from_phone_recycler.xml create mode 100644 app/src/main/res/values/dimen.xml diff --git a/app/build.gradle b/app/build.gradle index 001fc97e34..59fbd3d15c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -92,6 +92,7 @@ dependencies { compile "com.android.support:design:$supportLibraryVersion" compile 'com.android.support.constraint:constraint-layout:1.0.2' compile 'com.android.support:multidex:1.0.1' + compile 'com.android.support:recyclerview-v7:25.3.1' compile 'com.google.android.gms:play-services-maps:11.0.1' diff --git a/app/src/main/java/com/ninja/mobile/data/DataManager.java b/app/src/main/java/com/ninja/mobile/data/DataManager.java index e5d5ad3049..134ba6b974 100644 --- a/app/src/main/java/com/ninja/mobile/data/DataManager.java +++ b/app/src/main/java/com/ninja/mobile/data/DataManager.java @@ -2,8 +2,12 @@ package com.ninja.mobile.data; import android.content.Context; +import com.ninja.mobile.data.models.mqtt.Person; import com.ninja.mobile.injection.ApplicationContext; import com.ninja.mobile.intetfaces.APIManager; +import com.ninja.mobile.utils.ContactsUtil; + +import java.util.List; import javax.inject.Inject; import javax.inject.Singleton; @@ -38,4 +42,8 @@ public class DataManager { helper.parseCountries(mContext); return helper; } + + public List getContactsFromPhone(){ + return ContactsUtil.getContacts(mContext); + } } diff --git a/app/src/main/java/com/ninja/mobile/data/models/mqtt/Person.java b/app/src/main/java/com/ninja/mobile/data/models/mqtt/Person.java index ecaf808e4c..22a9066cda 100644 --- a/app/src/main/java/com/ninja/mobile/data/models/mqtt/Person.java +++ b/app/src/main/java/com/ninja/mobile/data/models/mqtt/Person.java @@ -23,4 +23,52 @@ public class Person extends BaseModelMQQT{ @Override public Object encode() { return null; } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getSurname() { + return surname; + } + + public void setSurname(String surname) { + this.surname = surname; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public List getPhonelist() { + return phonelist; + } + + public void setPhonelist(List phonelist) { + this.phonelist = phonelist; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } } diff --git a/app/src/main/java/com/ninja/mobile/mvp/presenters/AddContactsFromPhonePresenter.java b/app/src/main/java/com/ninja/mobile/mvp/presenters/AddContactsFromPhonePresenter.java new file mode 100644 index 0000000000..8c20a94096 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/mvp/presenters/AddContactsFromPhonePresenter.java @@ -0,0 +1,14 @@ +package com.ninja.mobile.mvp.presenters; + +import com.ninja.mobile.data.models.mqtt.Person; +import com.ninja.mobile.mvp.view.AddContactsFromPhoneView; + +import java.util.List; + +public class AddContactsFromPhonePresenter extends BasePresenter { + public void getAllContactsFromPhone(){ + List contacts = mDataManager.getContactsFromPhone(); + getViewState().setAllContacts(contacts); + } + +} diff --git a/app/src/main/java/com/ninja/mobile/mvp/view/AddContactsFromPhoneView.java b/app/src/main/java/com/ninja/mobile/mvp/view/AddContactsFromPhoneView.java new file mode 100644 index 0000000000..8c1f5af0d0 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/mvp/view/AddContactsFromPhoneView.java @@ -0,0 +1,10 @@ +package com.ninja.mobile.mvp.view; + +import com.arellomobile.mvp.MvpView; +import com.ninja.mobile.data.models.mqtt.Person; + +import java.util.List; + +public interface AddContactsFromPhoneView extends MvpView{ + void setAllContacts(List contacts); +} diff --git a/app/src/main/java/com/ninja/mobile/ui/fragments/contacts/AddContactFromPhoneFragment.java b/app/src/main/java/com/ninja/mobile/ui/fragments/contacts/AddContactFromPhoneFragment.java new file mode 100644 index 0000000000..c55b40479a --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/ui/fragments/contacts/AddContactFromPhoneFragment.java @@ -0,0 +1,48 @@ +package com.ninja.mobile.ui.fragments.contacts; + +import android.Manifest; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.arellomobile.mvp.presenter.InjectPresenter; +import com.ninja.mobile.R; +import com.ninja.mobile.data.models.mqtt.Person; +import com.ninja.mobile.mvp.presenters.AddContactsFromPhonePresenter; +import com.ninja.mobile.mvp.view.AddContactsFromPhoneView; +import com.ninja.mobile.ui.base.BaseFragment; + +import java.util.List; + +public class AddContactFromPhoneFragment extends BaseFragment implements AddContactsFromPhoneView{ + + @InjectPresenter AddContactsFromPhonePresenter mPresenter; + + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_add_contact_from_phone, container, false); + } + + + + + private void getAllContacts(){ + rxPermissions + .request(Manifest.permission.READ_CONTACTS) + .subscribe(granted -> { + if (granted) { + mPresenter.getAllContactsFromPhone(); + } else { + //// FIXME: 29.06.2017 message? + } + }); + } + + @Override public void setAllContacts(List contacts) { + + } +} diff --git a/app/src/main/java/com/ninja/mobile/utils/ContactsUtil.java b/app/src/main/java/com/ninja/mobile/utils/ContactsUtil.java new file mode 100644 index 0000000000..86208469a8 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/utils/ContactsUtil.java @@ -0,0 +1,69 @@ +package com.ninja.mobile.utils; + +import android.content.Context; +import android.database.Cursor; +import android.provider.ContactsContract; + +import com.ninja.mobile.data.models.mqtt.Person; + +import java.util.ArrayList; +import java.util.List; + +public class ContactsUtil { + + public static List getContacts(Context ctx) { + List list = new ArrayList<>(); +// ContentResolver contentResolver = ctx.getContentResolver(); +// Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); +// if (cursor.getCount() > 0) { +// while (cursor.moveToNext()) { +// String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); +// if (cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)) > 0) { +// Cursor cursorInfo = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, +// ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[]{id}, null); +// InputStream inputStream = ContactsContract.Contacts.openContactPhotoInputStream(ctx.getContentResolver(), +// ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long.valueOf(id))); +// +// Uri person = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long.valueOf(id)); +// Uri pURI = Uri.withAppendedPath(person, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY); +// +// while (cursorInfo.moveToNext()) { +// Person info = new Person(); +// info.setName(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME))); +// +// info.setPhonelist(); +//// info.setMobileNumber(cursorInfo.getString(cursorInfo.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))); +// list.add(info); +// } +// +// cursorInfo.close(); +// } +// } +// } + Cursor phones = ctx.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null); + while (phones.moveToNext()) { + String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); + String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); + addContact(list, name, phoneNumber); + } + phones.close(); + return list; + } + + + private static void addContact(List persons, String name, String phone){ + for (Person person:persons){ + if (person.getName() != null && person.getName().equals(name)){ + List phones = person.getPhonelist(); + phones.add(phone); + } else { + Person newPerson = new Person(); + newPerson.setName(name); + List phones = new ArrayList<>(); + phones.add(phone); + newPerson.setPhonelist(phones); + } + } + + } +} diff --git a/app/src/main/res/drawable/red_round_button.xml b/app/src/main/res/drawable/red_round_button.xml new file mode 100644 index 0000000000..071a15b38c --- /dev/null +++ b/app/src/main/res/drawable/red_round_button.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_add_contact_from_phone.xml b/app/src/main/res/layout/fragment_add_contact_from_phone.xml new file mode 100644 index 0000000000..9f9fce8a7f --- /dev/null +++ b/app/src/main/res/layout/fragment_add_contact_from_phone.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_add_contacts_from_phone_recycler.xml b/app/src/main/res/layout/item_add_contacts_from_phone_recycler.xml new file mode 100644 index 0000000000..041e8b4179 --- /dev/null +++ b/app/src/main/res/layout/item_add_contacts_from_phone_recycler.xml @@ -0,0 +1,45 @@ + + + + + + + + + +