1d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov/*
2d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov * Copyright (C) 2010 The Android Open Source Project
3d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov *
4d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov * Licensed under the Apache License, Version 2.0 (the "License");
5d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov * you may not use this file except in compliance with the License.
6d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov * You may obtain a copy of the License at
7d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov *
8d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov *      http://www.apache.org/licenses/LICENSE-2.0
9d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov *
10d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov * Unless required by applicable law or agreed to in writing, software
11d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov * distributed under the License is distributed on an "AS IS" BASIS,
12d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov * See the License for the specific language governing permissions and
14d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov * limitations under the License.
15d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov */
16d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikovpackage com.android.contacts.list;
17d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov
18d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikovimport android.net.Uri;
19d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikovimport android.view.LayoutInflater;
20d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikovimport android.view.View;
21d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikovimport android.view.ViewGroup;
22d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov
23e0b2f1e2d01d1ac52ba207dc7ce76971d853298eChiao Chengimport com.android.contacts.R;
24a0233a048858f1593ea4924e9c5036f39aedbcddChiao Chengimport com.android.contacts.common.list.ContactEntryListAdapter;
25821a657d618285c04cbb3c440f1777a08381f868Chiao Chengimport com.android.contacts.common.list.ContactEntryListFragment;
26a0233a048858f1593ea4924e9c5036f39aedbcddChiao Chengimport com.android.contacts.common.list.DirectoryListLoader;
27e0b2f1e2d01d1ac52ba207dc7ce76971d853298eChiao Cheng
28d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov/**
29d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov * Fragment containing a postal address list for picking.
30d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov */
31d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikovpublic class PostalAddressPickerFragment
32c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov        extends ContactEntryListFragment<ContactEntryListAdapter> {
33d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov    private OnPostalAddressPickerActionListener mListener;
34d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov
35d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov    public PostalAddressPickerFragment() {
3698fa1b049f3bd5c84237169983e171fae345439bDmitri Plotnikov        setQuickContactEnabled(false);
37d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov        setPhotoLoaderEnabled(true);
38d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov        setSectionHeaderDisplayEnabled(true);
394d174aad97cd382f810e3bf1a7f1f4f4772be118Dmitri Plotnikov        setDirectorySearchMode(DirectoryListLoader.SEARCH_MODE_DATA_SHORTCUT);
40d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov    }
41d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov
42d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov    public void setOnPostalAddressPickerActionListener(
43d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov            OnPostalAddressPickerActionListener listener) {
44d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov        this.mListener = listener;
45d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov    }
46d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov
47d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov    @Override
48d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov    protected void onItemClick(int position, long id) {
49b831b14466d640fe260ba2e752c88c7fcd62a14bBrian Attwell        if (getAdapter().getItem(position) == null) {
50b831b14466d640fe260ba2e752c88c7fcd62a14bBrian Attwell            return;
51b831b14466d640fe260ba2e752c88c7fcd62a14bBrian Attwell        }
521ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov        if (!isLegacyCompatibilityMode()) {
53c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov            PostalAddressListAdapter adapter = (PostalAddressListAdapter)getAdapter();
54e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov            pickPostalAddress(adapter.getDataUri(position));
55c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov        } else {
56c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov            LegacyPostalAddressListAdapter adapter = (LegacyPostalAddressListAdapter)getAdapter();
57e124722daa8a4b31308d53e3f0457c3b66a20ae5Dmitri Plotnikov            pickPostalAddress(adapter.getContactMethodUri(position));
58c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov        }
59d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov    }
60d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov
61d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov    @Override
62c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov    protected ContactEntryListAdapter createListAdapter() {
631ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov        if (!isLegacyCompatibilityMode()) {
64c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov            PostalAddressListAdapter adapter = new PostalAddressListAdapter(getActivity());
65c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov            adapter.setSectionHeaderDisplayEnabled(true);
66c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov            adapter.setDisplayPhotos(true);
67c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov            return adapter;
68c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov        } else {
69c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov            LegacyPostalAddressListAdapter adapter =
70c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov                    new LegacyPostalAddressListAdapter(getActivity());
71c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov            adapter.setSectionHeaderDisplayEnabled(false);
72c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov            adapter.setDisplayPhotos(false);
73c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov            return adapter;
74c28390b65183a2e1bf85f381ba27bf846706c04aDmitri Plotnikov        }
75d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov    }
76d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov
77d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov    @Override
78d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov    protected View inflateView(LayoutInflater inflater, ViewGroup container) {
7934b901ca7781cf7fdd4f6275ef98ae73c95749c2Daisuke Miyakawa        return inflater.inflate(R.layout.contact_list_content, null);
80d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov    }
81d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov
82e231f1994a57b3ecaa3a1c73ed7ddfec40fbd235Daisuke Miyakawa    @Override
83e231f1994a57b3ecaa3a1c73ed7ddfec40fbd235Daisuke Miyakawa    protected void onCreateView(LayoutInflater inflater, ViewGroup container) {
84e231f1994a57b3ecaa3a1c73ed7ddfec40fbd235Daisuke Miyakawa        super.onCreateView(inflater, container);
85e231f1994a57b3ecaa3a1c73ed7ddfec40fbd235Daisuke Miyakawa
86e231f1994a57b3ecaa3a1c73ed7ddfec40fbd235Daisuke Miyakawa        setVisibleScrollbarEnabled(!isLegacyCompatibilityMode());
87e231f1994a57b3ecaa3a1c73ed7ddfec40fbd235Daisuke Miyakawa    }
88e231f1994a57b3ecaa3a1c73ed7ddfec40fbd235Daisuke Miyakawa
89c86ace78ca5c2e10dcb001a916386c8a9865e230Daniel Lehmann    private void pickPostalAddress(Uri uri) {
90d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov        mListener.onPickPostalAddressAction(uri);
91d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov    }
92d820cdbefa159bdf4c281ac8102805fe9a165379Dmitri Plotnikov}
93