• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2016 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.dialer.app.calllog;
18 
19 import android.content.Intent;
20 import android.database.ContentObserver;
21 import android.media.AudioManager;
22 import android.os.Bundle;
23 import android.provider.CallLog;
24 import android.provider.VoicemailContract;
25 import android.view.LayoutInflater;
26 import android.view.View;
27 import android.view.ViewGroup;
28 import com.android.dialer.app.R;
29 import com.android.dialer.app.list.ListsFragment;
30 import com.android.dialer.app.voicemail.VoicemailAudioManager;
31 import com.android.dialer.app.voicemail.VoicemailErrorManager;
32 import com.android.dialer.app.voicemail.VoicemailPlaybackPresenter;
33 import com.android.dialer.common.LogUtil;
34 import com.android.dialer.logging.DialerImpression;
35 import com.android.dialer.logging.Logger;
36 import com.android.dialer.util.PermissionsUtil;
37 
38 public class VisualVoicemailCallLogFragment extends CallLogFragment {
39 
40   private final ContentObserver mVoicemailStatusObserver = new CustomContentObserver();
41   private VoicemailPlaybackPresenter mVoicemailPlaybackPresenter;
42 
43   private VoicemailErrorManager mVoicemailErrorManager;
44 
VisualVoicemailCallLogFragment()45   public VisualVoicemailCallLogFragment() {
46     super(CallLog.Calls.VOICEMAIL_TYPE);
47   }
48 
49   @Override
getVoicemailPlaybackPresenter()50   protected VoicemailPlaybackPresenter getVoicemailPlaybackPresenter() {
51     return mVoicemailPlaybackPresenter;
52   }
53 
54   @Override
onActivityCreated(Bundle savedInstanceState)55   public void onActivityCreated(Bundle savedInstanceState) {
56     mVoicemailPlaybackPresenter =
57         VoicemailPlaybackPresenter.getInstance(getActivity(), savedInstanceState);
58 
59     if (PermissionsUtil.hasReadVoicemailPermissions(getContext())
60         && PermissionsUtil.hasAddVoicemailPermissions(getContext())) {
61       getActivity()
62           .getContentResolver()
63           .registerContentObserver(
64               VoicemailContract.Status.CONTENT_URI, true, mVoicemailStatusObserver);
65     } else {
66       LogUtil.w(
67           "VisualVoicemailCallLogFragment.onActivityCreated",
68           "read voicemail permission unavailable.");
69     }
70     super.onActivityCreated(savedInstanceState);
71     mVoicemailErrorManager =
72         new VoicemailErrorManager(getContext(), getAdapter().getAlertManager(), mModalAlertManager);
73 
74     if (PermissionsUtil.hasReadVoicemailPermissions(getContext())
75         && PermissionsUtil.hasAddVoicemailPermissions(getContext())) {
76       getActivity()
77           .getContentResolver()
78           .registerContentObserver(
79               VoicemailContract.Status.CONTENT_URI,
80               true,
81               mVoicemailErrorManager.getContentObserver());
82     } else {
83       LogUtil.w(
84           "VisualVoicemailCallLogFragment.onActivityCreated",
85           "read voicemail permission unavailable.");
86     }
87   }
88 
89   @Override
onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState)90   public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
91     View view = inflater.inflate(R.layout.call_log_fragment, container, false);
92     setupView(view);
93     return view;
94   }
95 
96   @Override
onResume()97   public void onResume() {
98     super.onResume();
99     mVoicemailPlaybackPresenter.onResume();
100     mVoicemailErrorManager.onResume();
101   }
102 
103   @Override
onPause()104   public void onPause() {
105     mVoicemailPlaybackPresenter.onPause();
106     mVoicemailErrorManager.onPause();
107     super.onPause();
108   }
109 
110   @Override
onDestroy()111   public void onDestroy() {
112     getActivity()
113         .getContentResolver()
114         .unregisterContentObserver(mVoicemailErrorManager.getContentObserver());
115     mVoicemailPlaybackPresenter.onDestroy();
116     mVoicemailErrorManager.onDestroy();
117     getActivity().getContentResolver().unregisterContentObserver(mVoicemailStatusObserver);
118     super.onDestroy();
119   }
120 
121   @Override
onSaveInstanceState(Bundle outState)122   public void onSaveInstanceState(Bundle outState) {
123     super.onSaveInstanceState(outState);
124     mVoicemailPlaybackPresenter.onSaveInstanceState(outState);
125   }
126 
127   @Override
fetchCalls()128   public void fetchCalls() {
129     super.fetchCalls();
130     ((ListsFragment) getParentFragment()).updateTabUnreadCounts();
131   }
132 
133   @Override
onVisible()134   public void onVisible() {
135     LogUtil.enterBlock("VisualVoicemailCallLogFragment.onPageSelected");
136     super.onVisible();
137     if (getActivity() != null) {
138       Intent intent = new Intent(VoicemailContract.ACTION_SYNC_VOICEMAIL);
139       intent.setPackage(getActivity().getPackageName());
140       getActivity().sendBroadcast(intent);
141       Logger.get(getActivity()).logImpression(DialerImpression.Type.VVM_TAB_VIEWED);
142       getActivity().setVolumeControlStream(VoicemailAudioManager.PLAYBACK_STREAM);
143     }
144   }
145 
146   @Override
onNotVisible()147   public void onNotVisible() {
148     LogUtil.enterBlock("VisualVoicemailCallLogFragment.onPageUnselected");
149     super.onNotVisible();
150     if (getActivity() != null) {
151       getActivity().setVolumeControlStream(AudioManager.USE_DEFAULT_STREAM_TYPE);
152     }
153   }
154 }
155