18b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov/* 28b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov * Copyright (C) 2010 The Android Open Source Project 38b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov * 48b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov * Licensed under the Apache License, Version 2.0 (the "License"); 58b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov * you may not use this file except in compliance with the License. 68b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov * You may obtain a copy of the License at 78b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov * 88b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov * http://www.apache.org/licenses/LICENSE-2.0 98b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov * 108b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov * Unless required by applicable law or agreed to in writing, software 118b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov * distributed under the License is distributed on an "AS IS" BASIS, 128b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov * See the License for the specific language governing permissions and 148b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov * limitations under the License. 158b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov */ 168b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikovpackage com.android.contacts.list; 178b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov 188b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikovimport android.app.Fragment; 19d8fa716e5428791f79f54437087df3005cc907bfMakoto Onukiimport android.content.Context; 208b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikovimport android.os.Bundle; 218b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikovimport android.provider.ContactsContract.ProviderStatus; 228b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikovimport android.view.Gravity; 238b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikovimport android.view.LayoutInflater; 248b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikovimport android.view.View; 258b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikovimport android.view.View.OnClickListener; 268b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikovimport android.view.ViewGroup; 278b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikovimport android.widget.Button; 288b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikovimport android.widget.ProgressBar; 298b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikovimport android.widget.TextView; 308b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov 31e0b2f1e2d01d1ac52ba207dc7ce76971d853298eChiao Chengimport com.android.contacts.R; 32e0b2f1e2d01d1ac52ba207dc7ce76971d853298eChiao Cheng 338b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov/** 348b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov * Fragment shown when contacts are unavailable. It contains provider status 358b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov * messaging as well as instructions for the user. 368b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov */ 378b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikovpublic class ContactsUnavailableFragment extends Fragment implements OnClickListener { 388b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov 398b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov private View mView; 408b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov private TextView mMessageView; 41a1bbf6139bb1e0d30078fe6c99effaf45f7416efIsaac Katzenelson private TextView mSecondaryMessageView; 428b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov private Button mCreateContactButton; 438b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov private Button mAddAccountButton; 448b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov private Button mImportContactsButton; 458b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov private Button mUninstallAppsButton; 468b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov private Button mRetryUpgradeButton; 478b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov private ProgressBar mProgress; 4866606b648d7eee16b6e5a55506bbee141887b55eIsaac Katzenelson private int mNoContactsMsgResId = -1; 49a1bbf6139bb1e0d30078fe6c99effaf45f7416efIsaac Katzenelson private int mNSecNoContactsMsgResId = -1; 508b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov 518b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov private OnContactsUnavailableActionListener mListener; 528b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov 53d8fa716e5428791f79f54437087df3005cc907bfMakoto Onuki private ProviderStatusWatcher.Status mProviderStatus; 54d8fa716e5428791f79f54437087df3005cc907bfMakoto Onuki 558b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov @Override 56c2bd6138e19fdcf734843eb55c83d6ffe00e91daMakoto Onuki public void onCreate(Bundle savedInstanceState) { 57c2bd6138e19fdcf734843eb55c83d6ffe00e91daMakoto Onuki super.onCreate(savedInstanceState); 58c2bd6138e19fdcf734843eb55c83d6ffe00e91daMakoto Onuki } 59c2bd6138e19fdcf734843eb55c83d6ffe00e91daMakoto Onuki 60c2bd6138e19fdcf734843eb55c83d6ffe00e91daMakoto Onuki @Override 618b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov public View onCreateView( 628b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 638b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mView = inflater.inflate(R.layout.contacts_unavailable_fragment, null); 648b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mMessageView = (TextView) mView.findViewById(R.id.message); 65a1bbf6139bb1e0d30078fe6c99effaf45f7416efIsaac Katzenelson mSecondaryMessageView = (TextView) mView.findViewById(R.id.secondary_message); 668b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mCreateContactButton = (Button) mView.findViewById(R.id.create_contact_button); 678b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mCreateContactButton.setOnClickListener(this); 688b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mAddAccountButton = (Button) mView.findViewById(R.id.add_account_button); 698b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mAddAccountButton.setOnClickListener(this); 708b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mImportContactsButton = (Button) mView.findViewById(R.id.import_contacts_button); 718b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mImportContactsButton.setOnClickListener(this); 728b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mUninstallAppsButton = (Button) mView.findViewById(R.id.import_failure_uninstall_button); 738b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mUninstallAppsButton.setOnClickListener(this); 748b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mRetryUpgradeButton = (Button) mView.findViewById(R.id.import_failure_retry_button); 758b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mRetryUpgradeButton.setOnClickListener(this); 768b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mProgress = (ProgressBar) mView.findViewById(R.id.progress); 77d8fa716e5428791f79f54437087df3005cc907bfMakoto Onuki 78d8fa716e5428791f79f54437087df3005cc907bfMakoto Onuki if (mProviderStatus != null) { 79d8fa716e5428791f79f54437087df3005cc907bfMakoto Onuki updateStatus(mProviderStatus); 80d8fa716e5428791f79f54437087df3005cc907bfMakoto Onuki } 81d8fa716e5428791f79f54437087df3005cc907bfMakoto Onuki 828b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov return mView; 838b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov } 848b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov 858b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov public void setOnContactsUnavailableActionListener( 868b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov OnContactsUnavailableActionListener listener) { 878b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mListener = listener; 888b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov } 898b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov 90d8fa716e5428791f79f54437087df3005cc907bfMakoto Onuki public void updateStatus(ProviderStatusWatcher.Status providerStatus) { 91d8fa716e5428791f79f54437087df3005cc907bfMakoto Onuki mProviderStatus = providerStatus; 92d8fa716e5428791f79f54437087df3005cc907bfMakoto Onuki if (mView == null) { 93d8fa716e5428791f79f54437087df3005cc907bfMakoto Onuki // The view hasn't been inflated yet. 94d8fa716e5428791f79f54437087df3005cc907bfMakoto Onuki return; 95d8fa716e5428791f79f54437087df3005cc907bfMakoto Onuki } 96d8fa716e5428791f79f54437087df3005cc907bfMakoto Onuki switch (providerStatus.status) { 97c3f2a52067b799e223f0964207a2d1957165e960Dmitri Plotnikov case ProviderStatus.STATUS_NO_ACCOUNTS_NO_CONTACTS: 98a1bbf6139bb1e0d30078fe6c99effaf45f7416efIsaac Katzenelson setMessageText(mNoContactsMsgResId, mNSecNoContactsMsgResId); 99c3f2a52067b799e223f0964207a2d1957165e960Dmitri Plotnikov mCreateContactButton.setVisibility(View.VISIBLE); 100c3f2a52067b799e223f0964207a2d1957165e960Dmitri Plotnikov mAddAccountButton.setVisibility(View.VISIBLE); 101c3f2a52067b799e223f0964207a2d1957165e960Dmitri Plotnikov mImportContactsButton.setVisibility(View.VISIBLE); 102c3f2a52067b799e223f0964207a2d1957165e960Dmitri Plotnikov mUninstallAppsButton.setVisibility(View.GONE); 103c3f2a52067b799e223f0964207a2d1957165e960Dmitri Plotnikov mRetryUpgradeButton.setVisibility(View.GONE); 104c3f2a52067b799e223f0964207a2d1957165e960Dmitri Plotnikov mProgress.setVisibility(View.GONE); 105c3f2a52067b799e223f0964207a2d1957165e960Dmitri Plotnikov break; 106c3f2a52067b799e223f0964207a2d1957165e960Dmitri Plotnikov 1078b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov case ProviderStatus.STATUS_CHANGING_LOCALE: 1088b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mMessageView.setText(R.string.locale_change_in_progress); 1098b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mMessageView.setGravity(Gravity.CENTER_HORIZONTAL); 110c3f2a52067b799e223f0964207a2d1957165e960Dmitri Plotnikov mMessageView.setVisibility(View.VISIBLE); 1118b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mCreateContactButton.setVisibility(View.GONE); 1128b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mAddAccountButton.setVisibility(View.GONE); 1138b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mImportContactsButton.setVisibility(View.GONE); 1148b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mUninstallAppsButton.setVisibility(View.GONE); 1158b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mRetryUpgradeButton.setVisibility(View.GONE); 1168b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mProgress.setVisibility(View.VISIBLE); 1178b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov break; 118c3f2a52067b799e223f0964207a2d1957165e960Dmitri Plotnikov 1198b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov case ProviderStatus.STATUS_UPGRADING: 1208b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mMessageView.setText(R.string.upgrade_in_progress); 1218b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mMessageView.setGravity(Gravity.CENTER_HORIZONTAL); 122c3f2a52067b799e223f0964207a2d1957165e960Dmitri Plotnikov mMessageView.setVisibility(View.VISIBLE); 1238b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mCreateContactButton.setVisibility(View.GONE); 1248b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mAddAccountButton.setVisibility(View.GONE); 1258b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mImportContactsButton.setVisibility(View.GONE); 1268b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mUninstallAppsButton.setVisibility(View.GONE); 1278b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mRetryUpgradeButton.setVisibility(View.GONE); 1288b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mProgress.setVisibility(View.VISIBLE); 1298b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov break; 130c3f2a52067b799e223f0964207a2d1957165e960Dmitri Plotnikov 1318b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov case ProviderStatus.STATUS_UPGRADE_OUT_OF_MEMORY: 1328b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov String message = getResources().getString(R.string.upgrade_out_of_memory, 133d8fa716e5428791f79f54437087df3005cc907bfMakoto Onuki new Object[] { providerStatus.data}); 1348b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mMessageView.setText(message); 1357d3b91577f84a4f5092d28ed0f3cfe7e0df32696Fabrice Di Meglio mMessageView.setGravity(Gravity.START); 136c3f2a52067b799e223f0964207a2d1957165e960Dmitri Plotnikov mMessageView.setVisibility(View.VISIBLE); 1378b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mCreateContactButton.setVisibility(View.GONE); 1388b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mAddAccountButton.setVisibility(View.GONE); 1398b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mImportContactsButton.setVisibility(View.GONE); 1408b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mUninstallAppsButton.setVisibility(View.VISIBLE); 1418b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mRetryUpgradeButton.setVisibility(View.VISIBLE); 1428b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mProgress.setVisibility(View.GONE); 1438b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov break; 1448b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov } 1458b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov } 1468b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov 1478b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov @Override 1488b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov public void onClick(View v) { 1498b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov if (mListener == null) { 1508b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov return; 1518b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov } 1528b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov switch (v.getId()) { 1538b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov case R.id.create_contact_button: 1548b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mListener.onCreateNewContactAction(); 1558b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov break; 1568b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov case R.id.add_account_button: 1578b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mListener.onAddAccountAction(); 1588b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov break; 1598b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov case R.id.import_contacts_button: 1608b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mListener.onImportContactsFromFileAction(); 1618b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov break; 1628b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov case R.id.import_failure_uninstall_button: 1638b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov mListener.onFreeInternalStorageAction(); 1648b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov break; 1658b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov case R.id.import_failure_retry_button: 166d8fa716e5428791f79f54437087df3005cc907bfMakoto Onuki final Context context = getActivity(); 167d8fa716e5428791f79f54437087df3005cc907bfMakoto Onuki if (context != null) { // Just in case. 168d8fa716e5428791f79f54437087df3005cc907bfMakoto Onuki ProviderStatusWatcher.retryUpgrade(context); 169d8fa716e5428791f79f54437087df3005cc907bfMakoto Onuki } 1708b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov break; 1718b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov } 1728b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov } 17366606b648d7eee16b6e5a55506bbee141887b55eIsaac Katzenelson /** 174a1bbf6139bb1e0d30078fe6c99effaf45f7416efIsaac Katzenelson * Set the message to be shown if no data is available for the selected tab 17566606b648d7eee16b6e5a55506bbee141887b55eIsaac Katzenelson * 176a1bbf6139bb1e0d30078fe6c99effaf45f7416efIsaac Katzenelson * @param resId - String resource ID of the message , -1 means view will not be visible 17766606b648d7eee16b6e5a55506bbee141887b55eIsaac Katzenelson */ 178a1bbf6139bb1e0d30078fe6c99effaf45f7416efIsaac Katzenelson public void setMessageText(int resId, int secResId) { 17966606b648d7eee16b6e5a55506bbee141887b55eIsaac Katzenelson mNoContactsMsgResId = resId; 180a1bbf6139bb1e0d30078fe6c99effaf45f7416efIsaac Katzenelson mNSecNoContactsMsgResId = secResId; 181d8fa716e5428791f79f54437087df3005cc907bfMakoto Onuki if ((mMessageView != null) && (mProviderStatus != null) && 182d8fa716e5428791f79f54437087df3005cc907bfMakoto Onuki (mProviderStatus.status == ProviderStatus.STATUS_NO_ACCOUNTS_NO_CONTACTS)) { 183a1bbf6139bb1e0d30078fe6c99effaf45f7416efIsaac Katzenelson if (resId != -1) { 184a1bbf6139bb1e0d30078fe6c99effaf45f7416efIsaac Katzenelson mMessageView.setText(mNoContactsMsgResId); 185a1bbf6139bb1e0d30078fe6c99effaf45f7416efIsaac Katzenelson mMessageView.setGravity(Gravity.CENTER_HORIZONTAL); 186a1bbf6139bb1e0d30078fe6c99effaf45f7416efIsaac Katzenelson mMessageView.setVisibility(View.VISIBLE); 187a1bbf6139bb1e0d30078fe6c99effaf45f7416efIsaac Katzenelson if (secResId != -1) { 188a1bbf6139bb1e0d30078fe6c99effaf45f7416efIsaac Katzenelson mSecondaryMessageView.setText(mNSecNoContactsMsgResId); 189a1bbf6139bb1e0d30078fe6c99effaf45f7416efIsaac Katzenelson mSecondaryMessageView.setGravity(Gravity.CENTER_HORIZONTAL); 190a1bbf6139bb1e0d30078fe6c99effaf45f7416efIsaac Katzenelson mSecondaryMessageView.setVisibility(View.VISIBLE); 191a1bbf6139bb1e0d30078fe6c99effaf45f7416efIsaac Katzenelson } else { 192a1bbf6139bb1e0d30078fe6c99effaf45f7416efIsaac Katzenelson mSecondaryMessageView.setVisibility(View.INVISIBLE); 193a1bbf6139bb1e0d30078fe6c99effaf45f7416efIsaac Katzenelson } 194a1bbf6139bb1e0d30078fe6c99effaf45f7416efIsaac Katzenelson } else { 195a1bbf6139bb1e0d30078fe6c99effaf45f7416efIsaac Katzenelson mSecondaryMessageView.setVisibility(View.GONE); 196a1bbf6139bb1e0d30078fe6c99effaf45f7416efIsaac Katzenelson mMessageView.setVisibility(View.GONE); 197a1bbf6139bb1e0d30078fe6c99effaf45f7416efIsaac Katzenelson } 19866606b648d7eee16b6e5a55506bbee141887b55eIsaac Katzenelson } 19966606b648d7eee16b6e5a55506bbee141887b55eIsaac Katzenelson } 2008b8264620f9362e089322d1e3a7cc5620900e6f9Dmitri Plotnikov} 201