package com.moez.QKSMS.ui.view;
import android.app.LoaderManager;
import android.content.Context;
import android.content.CursorLoader;
import android.content.Loader;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.graphics.PorterDuff;
import android.net.Uri;
import android.os.Bundle;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import com.moez.QKSMS.R;
import com.moez.QKSMS.common.LiveViewManager;
import com.moez.QKSMS.enums.QKPreference;
import com.moez.QKSMS.data.Contact;
import com.moez.QKSMS.data.ContactHelper;
import com.moez.QKSMS.ui.ThemeManager;
import com.moez.QKSMS.ui.base.QKActivity;
import com.moez.QKSMS.ui.settings.SettingsFragment;
public class StarredContactsView extends LinearLayout implements LoaderManager.LoaderCallbacks<Cursor>, View.OnClickListener {
private final String TAG = "StarredContactsView";
private QKActivity mContext;
private SharedPreferences mPrefs;
private Cursor mCursor;
private LinearLayout mFavoritesBackground;
private QKTextView mTitle;
private LinearLayout mFavorites;
private AutoCompleteContactView mRecipients;
private ComposeView mComposeView;
private View mToggle;
private ImageView mIndicator;
public StarredContactsView(Context context) {
super(context);
if (!isInEditMode()) {
init(context);
}
}
public StarredContactsView(Context context, AttributeSet attrs) {
super(context, attrs);
if (!isInEditMode()) {
init(context);
}
}
private void init(Context context) {
mContext = (QKActivity) context;
mPrefs = mContext.getPrefs();
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
mFavoritesBackground = (LinearLayout) findViewById(R.id.starred_contacts);
mFavoritesBackground.setBackgroundColor(ThemeManager.getBackgroundColor());
mTitle = (QKTextView) findViewById(R.id.title);
mFavorites = (LinearLayout) findViewById(R.id.favorites);
mToggle = findViewById(R.id.toggle);
mToggle.setOnClickListener(this);
mIndicator = (ImageView) findViewById(R.id.indicator);
if (mPrefs.getBoolean(SettingsFragment.COMPOSE_FAVORITES, true)) {
expand();
} else {
collapse();
}
LiveViewManager.registerView(QKPreference.BACKGROUND, this, key -> {
mIndicator.setColorFilter(ThemeManager.getTextOnBackgroundSecondary(), PorterDuff.Mode.SRC_ATOP);
mFavoritesBackground.setBackgroundColor(ThemeManager.getBackgroundColor());
});
}
public void setComposeScreenViews(AutoCompleteContactView recipients, ComposeView composeView) {
mRecipients = recipients;
mComposeView = composeView;
mContext.getLoaderManager().initLoader(0, null, this);
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
return new CursorLoader(mContext, ContactHelper.CONTACTS_URI, ContactHelper.Favorites.PROJECTION,
ContactHelper.Favorites.SELECTION, null, null);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
mCursor = data;
mFavorites.removeAllViews();
LayoutInflater inflater = LayoutInflater.from(mContext);
if (data.moveToFirst()) {
do {
// only add them to the favorites list if they have a phone number
if (mCursor.getInt(ContactHelper.Favorites.HAS_PHONE_NUMBER) > 0) {
final String photoUri = mCursor.getString(ContactHelper.Favorites.PHOTO_THUMBNAIL_URI);
final Contact contact = Contact.get(ContactHelper.getPhoneNumber(
mContext, mCursor.getString(ContactHelper.Favorites.ID)), true);
final View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
collapse();
mRecipients.submitItem(contact.getName(), contact.getNumber(),
photoUri == null ? null : Uri.parse(photoUri));
mComposeView.requestReplyTextFocus();
}
};
View view = inflater.inflate(R.layout.view_favorite_contact, null);
view.setOnClickListener(onClickListener);
AvatarView avatar = (AvatarView) view.findViewById(R.id.avatar);
avatar.setOnClickListener(onClickListener);
avatar.setImageDrawable(contact.getAvatar(mContext, null));
avatar.setContactName(contact.getName());
QKTextView name = (QKTextView) view.findViewById(R.id.name);
name.setOnClickListener(onClickListener);
name.setText(contact.getName());
mFavorites.addView(view);
}
} while (data.moveToNext());
}
if (mFavorites.getChildCount() > 0) {
mFavoritesBackground.setVisibility(View.VISIBLE);
}
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
mCursor = null;
}
public void toggle() {
if (mFavorites.getVisibility() == View.VISIBLE) {
collapse();
} else {
expand();
}
}
public void expand() {
mTitle.setTextColor(ThemeManager.getTextOnBackgroundPrimary());
mFavorites.setVisibility(View.VISIBLE);
mIndicator.setRotation(0f);
}
public void collapse() {
mTitle.setTextColor(ThemeManager.getTextOnBackgroundSecondary());
mFavorites.setVisibility(View.GONE);
mIndicator.setRotation(90f);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.toggle:
toggle();
break;
}
}
}