11ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov/*
21ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov * Copyright (C) 2010 The Android Open Source Project
31ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov *
41ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov * Licensed under the Apache License, Version 2.0 (the "License");
51ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov * you may not use this file except in compliance with the License.
61ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov * You may obtain a copy of the License at
71ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov *
81ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov *      http://www.apache.org/licenses/LICENSE-2.0
91ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov *
101ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov * Unless required by applicable law or agreed to in writing, software
111ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov * distributed under the License is distributed on an "AS IS" BASIS,
121ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov * See the License for the specific language governing permissions and
141ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov * limitations under the License.
151ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov */
161ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikovpackage com.android.contacts.interactions;
171ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov
189d730dd9d9efe125c9102b298f897577157ffecdDmitri Plotnikovimport android.app.Activity;
191ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikovimport android.app.FragmentManager;
209d730dd9d9efe125c9102b298f897577157ffecdDmitri Plotnikovimport android.content.Intent;
211ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikovimport android.os.Bundle;
221ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikovimport android.widget.EditText;
231ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov
24e0b2f1e2d01d1ac52ba207dc7ce76971d853298eChiao Chengimport com.android.contacts.ContactSaveService;
25e0b2f1e2d01d1ac52ba207dc7ce76971d853298eChiao Chengimport com.android.contacts.R;
26851222a96b5d68602fb361ea3527101e893f67e3Maurice Chuimport com.android.contacts.model.account.AccountWithDataSet;
27e0b2f1e2d01d1ac52ba207dc7ce76971d853298eChiao Cheng
281ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov/**
291ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov * A dialog for creating a new group.
301ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov */
311ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikovpublic class GroupCreationDialogFragment extends GroupNameDialogFragment {
321ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov    private static final String ARG_ACCOUNT_TYPE = "accountType";
331ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov    private static final String ARG_ACCOUNT_NAME = "accountName";
342b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro    private static final String ARG_DATA_SET = "dataSet";
351ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov
36b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu    public static final String FRAGMENT_TAG = "createGroupDialog";
37b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu
38b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu    private final OnGroupCreatedListener mListener;
39b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu
40b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu    public interface OnGroupCreatedListener {
41b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu        public void onGroupCreated();
42b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu    }
43b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu
441ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov    public static void show(
452b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro            FragmentManager fragmentManager, String accountType, String accountName,
46b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu            String dataSet, OnGroupCreatedListener listener) {
47b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu        GroupCreationDialogFragment dialog = new GroupCreationDialogFragment(listener);
481ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov        Bundle args = new Bundle();
491ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov        args.putString(ARG_ACCOUNT_TYPE, accountType);
501ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov        args.putString(ARG_ACCOUNT_NAME, accountName);
512b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro        args.putString(ARG_DATA_SET, dataSet);
521ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov        dialog.setArguments(args);
53b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu        dialog.show(fragmentManager, FRAGMENT_TAG);
54b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu    }
55b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu
56b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu    public GroupCreationDialogFragment() {
57b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu        super();
58b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu        mListener = null;
59b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu    }
60b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu
61b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu    private GroupCreationDialogFragment(OnGroupCreatedListener listener) {
62b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu        super();
63b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu        mListener = listener;
64b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu    }
65b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu
66b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu    public OnGroupCreatedListener getOnGroupCreatedListener() {
67b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu        return mListener;
681ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov    }
691ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov
701ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov    @Override
711ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov    protected void initializeGroupLabelEditText(EditText editText) {
721ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov    }
731ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov
741ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov    @Override
751ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov    protected int getTitleResourceId() {
761ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov        return R.string.create_group_dialog_title;
771ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov    }
781ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov
791ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov    @Override
801ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov    protected void onCompleted(String groupLabel) {
811ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov        Bundle arguments = getArguments();
821ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov        String accountType = arguments.getString(ARG_ACCOUNT_TYPE);
831ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov        String accountName = arguments.getString(ARG_ACCOUNT_NAME);
842b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro        String dataSet = arguments.getString(ARG_DATA_SET);
851ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov
86b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu        // Indicate to the listener that a new group will be created.
87b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu        // If the device is rotated, mListener will become null, so that the
88b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu        // popup from GroupMembershipView will not be shown.
89b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu        if (mListener != null) {
90b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu            mListener.onGroupCreated();
91b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu        }
92b03e6a266e3a4181d22e6be4f3fa0c5dd158d7e1Maurice Chu
939d730dd9d9efe125c9102b298f897577157ffecdDmitri Plotnikov        Activity activity = getActivity();
949d730dd9d9efe125c9102b298f897577157ffecdDmitri Plotnikov        activity.startService(ContactSaveService.createNewGroupIntent(activity,
952b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro                new AccountWithDataSet(accountName, accountType, dataSet), groupLabel,
96717e343811088da922cd84fb0d196de85fba7fe9Katherine Kuan                null /* no new members to add */,
979d730dd9d9efe125c9102b298f897577157ffecdDmitri Plotnikov                activity.getClass(), Intent.ACTION_EDIT));
981ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov    }
991ac58b6f2a925c5a4f759346e5244dfd174acd08Dmitri Plotnikov}
100