package com.dwdesign.tweetings.fragment;
import static com.dwdesign.tweetings.util.Utils.isMyActivatedUserName;
import static com.dwdesign.tweetings.util.Utils.parseString;
import java.util.List;
import com.dwdesign.tweetings.R;
import com.dwdesign.tweetings.loader.UserListsLoader;
import com.dwdesign.tweetings.model.ParcelableUserList;
import com.dwdesign.tweetings.util.ServiceInterface;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.content.Loader;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
public class UserListCreatedFragment extends BaseUserListsListFragment {
private DialogFragment mDialogFragment;
@Override
public Loader<List<ParcelableUserList>> newLoaderInstance(final long account_id, final long user_id, final String screen_name) {
return new UserListsLoader(getActivity(), account_id, user_id, screen_name, getCursor(), getData());
}
@Override
public void onActivityCreated(final Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setHasOptionsMenu(getAccountId() == getUserId() || isMyActivatedUserName(getActivity(), getScreenName()));
}
@Override
public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) {
inflater.inflate(R.menu.menu_user_list_created, menu);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(final MenuItem item) {
switch (item.getItemId()) {
case R.id.new_user_list: {
if (getAccountId() != getUserId() && !isMyActivatedUserName(getActivity(), getScreenName()))
return false;
if (mDialogFragment != null && mDialogFragment.isAdded()) {
mDialogFragment.dismiss();
}
mDialogFragment = new CreateUserListDialogFragment();
final Bundle args = new Bundle();
args.putLong(INTENT_KEY_ACCOUNT_ID, getAccountId());
mDialogFragment.setArguments(args);
mDialogFragment.show(getFragmentManager(), "create_list");
break;
}
}
return super.onOptionsItemSelected(item);
}
public static class CreateUserListDialogFragment extends BaseDialogFragment implements
DialogInterface.OnClickListener {
private EditText mEditName, mEditDescription;
private CheckBox mPublicCheckBox;
private String mName, mDescription;
private long mAccountId;
private boolean mIsPublic;
private ServiceInterface mService;
@Override
public void onClick(final DialogInterface dialog, final int which) {
if (mAccountId <= 0) return;
switch (which) {
case DialogInterface.BUTTON_POSITIVE: {
mName = parseString(mEditName.getText());
mDescription = parseString(mEditDescription.getText());
mIsPublic = mPublicCheckBox.isChecked();
if (mName == null || mName.length() <= 0) return;
mService.createUserList(mAccountId, mName, mIsPublic, mDescription);
break;
}
}
}
@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
mService = getApplication().getServiceInterface();
final Bundle bundle = savedInstanceState == null ? getArguments() : savedInstanceState;
mAccountId = bundle != null ? bundle.getLong(INTENT_KEY_ACCOUNT_ID, -1) : -1;
mName = bundle != null ? bundle.getString(INTENT_KEY_LIST_NAME) : null;
mDescription = bundle != null ? bundle.getString(INTENT_KEY_DESCRIPTION) : null;
mIsPublic = bundle != null ? bundle.getBoolean(INTENT_KEY_IS_PUBLIC, true) : true;
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
final View view = LayoutInflater.from(getActivity()).inflate(R.layout.user_list_detail_dialog_view, null);
builder.setView(view);
mEditName = (EditText) view.findViewById(R.id.name);
mEditDescription = (EditText) view.findViewById(R.id.description);
mPublicCheckBox = (CheckBox) view.findViewById(R.id.is_public);
if (mName != null) {
mEditName.setText(mName);
}
if (mDescription != null) {
mEditDescription.setText(mDescription);
}
mPublicCheckBox.setChecked(mIsPublic);
builder.setTitle(R.string.new_user_list);
builder.setPositiveButton(android.R.string.ok, this);
builder.setNegativeButton(android.R.string.cancel, this);
return builder.create();
}
@Override
public void onSaveInstanceState(final Bundle outState) {
outState.putLong(INTENT_KEY_ACCOUNT_ID, mAccountId);
outState.putString(INTENT_KEY_LIST_NAME, mName);
outState.putString(INTENT_KEY_DESCRIPTION, mDescription);
outState.putBoolean(INTENT_KEY_IS_PUBLIC, mIsPublic);
super.onSaveInstanceState(outState);
}
}
}