Skip to content

Commit

Permalink
Refactor contact providers
Browse files Browse the repository at this point in the history
  • Loading branch information
J-Jamet committed Aug 5, 2017
1 parent 6a84089 commit d2f932b
Show file tree
Hide file tree
Showing 17 changed files with 405 additions and 471 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import com.kunzisoft.remembirthday.provider.ActionBirthdayInDatabaseTask;
import com.kunzisoft.remembirthday.provider.CalendarProvider;
import com.kunzisoft.remembirthday.provider.EventProvider;
import com.kunzisoft.remembirthday.provider.UpdateBirthdayToContactTask;

import java.util.ArrayList;

Expand Down Expand Up @@ -107,8 +106,8 @@ public OnClickDialogListener(Contact contact) {
@Override
public void onClickPositiveButton(DateUnknownYear dateUnknownYear) {
// Update current birthday in database
UpdateBirthdayToContactTask updateBirthdayToContactTask =
new UpdateBirthdayToContactTask(
ActionBirthdayInDatabaseTask.UpdateBirthdayToContactTask updateBirthdayToContactTask =
new ActionBirthdayInDatabaseTask.UpdateBirthdayToContactTask(
AbstractBuddyActivity.this,
contact.getDataAnniversaryId(),
contact.getBirthday(),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,8 @@
package com.kunzisoft.remembirthday.activity;

import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.support.v4.app.Fragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
Expand All @@ -18,32 +14,26 @@
import com.kunzisoft.remembirthday.R;
import com.kunzisoft.remembirthday.adapter.ContactAdapter;
import com.kunzisoft.remembirthday.factory.ContactSort;
import com.kunzisoft.remembirthday.provider.ContactLoader;

/**
* Fragment that retrieves and displays the list of contacts
*/
public abstract class AbstractListContactsFragment extends Fragment implements LoaderManager.LoaderCallbacks<Cursor> {
public abstract class AbstractListContactsFragment extends Fragment implements ContactLoader.LoaderContactCallbacks{

private static final String TAG = "AbstractListContactsFragment";

protected RecyclerView contactsListView;
protected ContactAdapter contactAdapter;
protected LinearLayoutManager linearLayoutManager;

// Connexion to content provider
protected Uri uri = ContactsContract.Contacts.CONTENT_URI;
protected String[] projection = {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.LOOKUP_KEY,
ContactsContract.Contacts.DISPLAY_NAME_PRIMARY,
ContactsContract.Contacts.PHOTO_THUMBNAIL_URI,
ContactsContract.Contacts.PHOTO_URI
};
protected String selection = null;
protected String[] selectionArgs = null;
protected String sortOrder = null;

protected ContactSort contactSort = ContactSort.CONTACT_SORT_BY_NAME;
protected ContactLoader contactLoader;

/**
* Must return a Loader of contacts
* @return ContactLoader
*/
protected abstract ContactLoader initializeLoader();

// A UI Fragment must inflate its View
@Override
Expand All @@ -59,6 +49,9 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
contactsListView.setLayoutManager(linearLayoutManager);

contactLoader = initializeLoader();
contactLoader.setLoaderContactCallback(this);

return rootView;
}

Expand All @@ -67,36 +60,21 @@ public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);

// Initializes the loader
getLoaderManager().initLoader(0, null, this);
}

@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {

if(contactSort != null && contactSort.getOrderByQuery() != null) {
sortOrder = contactSort.getOrderByQuery();
}
// Starts the query
return new CursorLoader(
getActivity(),
uri,
projection,
selection,
selectionArgs,
sortOrder
);
getLoaderManager().initLoader(0, null, contactLoader);
}

@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
public void onContactLoadFinished(Loader<Cursor> loader, android.database.Cursor cursor) {
contactAdapter.swapCursor(cursor);
ContactSort contactSort = contactLoader.getContactSort();
if(contactSort != null && contactSort.getContactComparator() != null)
contactAdapter.sortElements(contactSort.getContactComparator());
contactAdapter.notifyDataSetChanged();
}

@Override
public void onLoaderReset(Loader<Cursor> loader) {
public void onContactLoaderReset(Loader<Cursor> loader) {
contactAdapter.resetCursor();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -156,14 +156,14 @@ public void afterActionBirthdayInDatabase(DateUnknownYear birthday, Action actio
}

/**
* Deselect any contact in ListBuddiesFragment
* Deselect any contact in ListContactsBirthdayFragment
*/
private void deselectContactInListForDualPanel() {
ListBuddiesFragment listBuddiesFragment =
(ListBuddiesFragment) getSupportFragmentManager()
ListContactsBirthdayFragment listContactsBirthdayFragment =
(ListContactsBirthdayFragment) getSupportFragmentManager()
.findFragmentByTag(getString(R.string.tag_list_birthdays));
if(listBuddiesFragment!=null) {
listBuddiesFragment.deselectForDualPanel();
if(listContactsBirthdayFragment !=null) {
listContactsBirthdayFragment.deselectForDualPanel();
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,9 @@
import com.kunzisoft.remembirthday.factory.MenuContactCreator;
import com.kunzisoft.remembirthday.preference.PreferencesManager;
import com.kunzisoft.remembirthday.provider.ActionBirthdayInDatabaseTask;
import com.kunzisoft.remembirthday.provider.ContactBuild;
import com.kunzisoft.remembirthday.provider.ContactProvider;
import com.kunzisoft.remembirthday.provider.EventProvider;
import com.kunzisoft.remembirthday.provider.ReminderProvider;
import com.kunzisoft.remembirthday.provider.RemoveBirthdayFromContactTask;
import com.kunzisoft.remembirthday.provider.RetrievePhoneNumberFromContactTask;
import com.kunzisoft.remembirthday.utility.IntentCall;
import com.kunzisoft.remembirthday.utility.Utility;
Expand Down Expand Up @@ -130,7 +129,7 @@ else if(getArguments()!=null) {
// For save memory get RawId only when showMessage details
setHasOptionsMenu(true);

ContactBuild.assignRawContactIdToContact(getContext(), contact);
ContactProvider.assignRawContactIdToContact(getContext(), contact);

selectBirthdayButton.setOnClickListener(new View.OnClickListener() {
@Override
Expand Down Expand Up @@ -357,8 +356,8 @@ public boolean onOptionsItemSelected(MenuItem item) {
builderDialog.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// Delete anniversary in database
RemoveBirthdayFromContactTask removeBirthdayFromContactTask =
new RemoveBirthdayFromContactTask(
ActionBirthdayInDatabaseTask.RemoveBirthdayFromContactTask removeBirthdayFromContactTask =
new ActionBirthdayInDatabaseTask.RemoveBirthdayFromContactTask(
getActivity(),
contact.getDataAnniversaryId(),
contact.getBirthday());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
import com.kunzisoft.remembirthday.element.Reminder;
import com.kunzisoft.remembirthday.preference.PreferencesManager;
import com.kunzisoft.remembirthday.provider.ActionBirthdayInDatabaseTask;
import com.kunzisoft.remembirthday.provider.AddBirthdayToContactTask;
import com.kunzisoft.remembirthday.provider.CalendarProvider;
import com.kunzisoft.remembirthday.provider.ContactProvider;
import com.kunzisoft.remembirthday.provider.EventProvider;
Expand Down Expand Up @@ -80,8 +79,8 @@ public void onClickPositiveButton(DateUnknownYear dateUnknownYear) {
ArrayList<ContentProviderOperation> allOperationList = new ArrayList<>();

// Add new birthday in database
AddBirthdayToContactTask addBirthdayToContactTask =
new AddBirthdayToContactTask(
ActionBirthdayInDatabaseTask.AddBirthdayToContactTask addBirthdayToContactTask =
new ActionBirthdayInDatabaseTask.AddBirthdayToContactTask(
ListContactsActivity.this,
contactWithRawIdSelected.getRawId(),
dateUnknownYear);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,52 +19,33 @@
import com.kunzisoft.remembirthday.adapter.OnClickItemContactListener;
import com.kunzisoft.remembirthday.element.Contact;
import com.kunzisoft.remembirthday.preference.PreferencesManager;
import com.kunzisoft.remembirthday.provider.ContactLoader;

/**
* Created by joker on 08/01/17.
*/
public class ListBuddiesFragment extends AbstractListContactsFragment implements OnClickItemContactListener {
public class ListContactsBirthdayFragment extends AbstractListContactsFragment implements OnClickItemContactListener {

public final static String TAG_DETAILS_FRAGMENT = "TAG_DETAILS_FRAGMENT";
private final static String CONTACT_KEY = "CONTACT_KEY";
private final static String CONTACT_POSITION_KEY = "CONTACT_POSITION_KEY";
private static final String TAG = "ListBuddiesFragment";
private static final String TAG = "ListContactsBirthdayFragment";

private Contact currentContact;
private int currentContactPosition = ContactAdapter.POSITION_UNDEFINED;

private boolean dualPanel;

@Override
protected ContactLoader initializeLoader() {
return new ContactLoader.ContactBirthdayLoader(getContext());
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);

// Redefined Query
uri = ContactsContract.Data.CONTENT_URI;
projection = new String[]{
ContactsContract.Contacts._ID,
ContactsContract.Contacts.LOOKUP_KEY,
ContactsContract.Contacts.DISPLAY_NAME_PRIMARY,
ContactsContract.Contacts.PHOTO_THUMBNAIL_URI,
ContactsContract.Contacts.PHOTO_URI,
ContactsContract.Contacts.Data._ID,
ContactsContract.CommonDataKinds.Event.START_DATE,
ContactsContract.CommonDataKinds.Event.TYPE
};
selection =
ContactsContract.Data.MIMETYPE + "= ? AND (" +
ContactsContract.CommonDataKinds.Event.TYPE + "=" +
ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY + //" OR " +
//ContactsContract.CommonDataKinds.Event.TYPE + "=" +
//ContactsContract.CommonDataKinds.Event.TYPE_ANNIVERSARY +
" ) ";
selectionArgs = new String[] {
ContactsContract.CommonDataKinds.Event.CONTENT_ITEM_TYPE
};
// Define the default sort
contactSort = PreferencesManager.getDefaultContactSort(getContext());

View rootView = inflater.inflate(R.layout.fragment_list_buddies, container, false);

// List buddies
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@
import com.kunzisoft.remembirthday.R;
import com.kunzisoft.remembirthday.adapter.ContactAdapter;
import com.kunzisoft.remembirthday.adapter.OnClickItemContactListener;
import com.kunzisoft.remembirthday.provider.ContactBuild;
import com.kunzisoft.remembirthday.element.Contact;
import com.kunzisoft.remembirthday.provider.ContactLoader;
import com.kunzisoft.remembirthday.provider.ContactProvider;

/**
* Fragment that retrieves and displays the list of contacts
Expand All @@ -23,6 +24,11 @@ public class ListContactsFragment extends AbstractListContactsFragment

private static final String TAG = "ListContactsFragment";

@Override
protected ContactLoader initializeLoader() {
return new ContactLoader.ContactBaseLoader(getContext());
}

// A UI Fragment must inflate its View
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Expand Down Expand Up @@ -52,7 +58,7 @@ public void onActivityCreated(Bundle savedInstanceState) {
@Override
public void onItemContactClick(View view, Contact contact, Cursor cursor, int position) {
// Get raw contact id if undefined
long contactRawId = ContactBuild.assignRawContactIdToContact(getContext(), contact);
long contactRawId = ContactProvider.assignRawContactIdToContact(getContext(), contact);
// TODO Verify if already a birthday
contact.setRawId(contactRawId);

Expand Down
Loading

0 comments on commit d2f932b

Please sign in to comment.