package im.actor.sdk.controllers.dialogs;
import android.app.Activity;
import android.os.Bundle;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.TextView;
import im.actor.core.entity.Dialog;
import im.actor.runtime.generic.mvvm.BindedDisplayList;
import im.actor.sdk.ActorSDK;
import im.actor.sdk.R;
import im.actor.sdk.controllers.dialogs.view.DialogHolder;
import im.actor.sdk.controllers.dialogs.view.DialogsAdapter;
import im.actor.sdk.controllers.DisplayListFragment;
import im.actor.sdk.util.Screen;
import im.actor.sdk.view.adapters.OnItemClickedListener;
import im.actor.runtime.android.view.BindedListAdapter;
import static im.actor.sdk.util.ActorSDKMessenger.messenger;
import static im.actor.sdk.util.ActorSDKMessenger.users;
public abstract class BaseDialogFragment extends DisplayListFragment<Dialog, DialogHolder> {
private View emptyDialogs;
public BaseDialogFragment() {
setRetainInstance(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
BindedDisplayList<Dialog> displayList = messenger().getDialogsDisplayList();
if (displayList.getListProcessor() == null) {
displayList.setListProcessor((items, previous) -> {
for (Dialog d : items) {
if (d.getSenderId() != 0) {
users().get(d.getSenderId());
}
}
return null;
});
}
View res = inflate(inflater, container, R.layout.fragment_dialogs, displayList);
res.setBackgroundColor(ActorSDK.sharedActor().style.getMainBackgroundColor());
// Footer
FrameLayout footer = new FrameLayout(getActivity());
footer.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, Screen.dp(160)));
footer.setBackgroundColor(ActorSDK.sharedActor().style.getMainBackgroundColor());
addFooterView(footer);
// Header
View header = new View(getActivity());
header.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, Screen.dp(ActorSDK.sharedActor().style.getDialogsPaddingTopDp())));
header.setBackgroundColor(ActorSDK.sharedActor().style.getMainBackgroundColor());
addHeaderView(header);
// Empty View
emptyDialogs = res.findViewById(R.id.emptyDialogs);
bind(messenger().getAppState().getIsDialogsEmpty(), (val, Value) -> {
if (val) {
emptyDialogs.setVisibility(View.VISIBLE);
} else {
emptyDialogs.setVisibility(View.GONE);
}
});
((TextView) res.findViewById(R.id.add_contact_hint_text)).setTextColor(ActorSDK.sharedActor().style.getTextSecondaryColor());
((TextView) emptyDialogs.findViewById(R.id.empty_dialogs_text)).setTextColor(ActorSDK.sharedActor().style.getMainColor());
emptyDialogs.findViewById(R.id.empty_dialogs_bg).setBackgroundColor(ActorSDK.sharedActor().style.getMainColor());
return res;
}
@Override
protected BindedListAdapter<Dialog, DialogHolder> onCreateAdapter(BindedDisplayList<Dialog> displayList, Activity activity) {
return new DialogsAdapter(displayList, new OnItemClickedListener<Dialog>() {
@Override
public void onClicked(Dialog item) {
onItemClick(item);
}
@Override
public boolean onLongClicked(Dialog item) {
return onItemLongClick(item);
}
}, activity);
}
@Override
public void onResume() {
super.onResume();
messenger().onDialogsOpen();
}
protected void onItemClick(Dialog item) {
}
protected boolean onItemLongClick(final Dialog dialog) {
return false;
}
@Override
public void onPause() {
super.onPause();
messenger().onDialogsClosed();
}
}