Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b255456e authored by Nancy Chen's avatar Nancy Chen Committed by Android (Google) Code Review
Browse files

Merge "Mark voicemails as old after they are read." into mnc-dev

parents 2478ea44 f153bf42
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
import com.android.contacts.common.GeoUtil;
import com.android.contacts.common.CallUtil;
import com.android.dialer.calllog.CallDetailHistoryAdapter;
import com.android.dialer.calllog.CallLogNotificationsService;
import com.android.dialer.calllog.CallTypeHelper;
import com.android.dialer.calllog.ContactInfo;
import com.android.dialer.calllog.ContactInfoHelper;
@@ -280,6 +281,9 @@ public class CallDetailActivity extends Activity implements ProximitySensorAware
                values.put(Voicemails.IS_READ, true);
                getContentResolver().update(voicemailUri, values,
                        Voicemails.IS_READ + " = 0", null);
                Intent intent = new Intent(getBaseContext(), CallLogNotificationsService.class);
                intent.setAction(CallLogNotificationsService.ACTION_MARK_NEW_VOICEMAILS_AS_OLD);
                getBaseContext().startService(intent);
                return null;
            }
        });
+4 −3
Original line number Diff line number Diff line
@@ -56,7 +56,7 @@ public class CallLogNotificationsService extends IntentService {
     */
    public static final String EXTRA_NEW_VOICEMAIL_URI = "NEW_VOICEMAIL_URI";

    private CallLogQueryHandler mCallLogQueryHandler;
    private VoicemailQueryHandler mVoicemailQueryHandler;

    public CallLogNotificationsService() {
        super("CallLogNotificationsService");
@@ -65,7 +65,7 @@ public class CallLogNotificationsService extends IntentService {
    @Override
    public void onCreate() {
        super.onCreate();
        mCallLogQueryHandler = new CallLogQueryHandler(getContentResolver(), null /*listener*/);
        mVoicemailQueryHandler = new VoicemailQueryHandler(this, getContentResolver());
    }

    @Override
@@ -74,8 +74,9 @@ public class CallLogNotificationsService extends IntentService {
            Log.d(TAG, "onHandleIntent: could not handle null intent");
            return;
        }

        if (ACTION_MARK_NEW_VOICEMAILS_AS_OLD.equals(intent.getAction())) {
            mCallLogQueryHandler.markNewVoicemailsAsOld();
            mVoicemailQueryHandler.markNewVoicemailsAsOld();
        } else if (ACTION_UPDATE_NOTIFICATIONS.equals(intent.getAction())) {
            Uri voicemailUri = (Uri) intent.getParcelableExtra(EXTRA_NEW_VOICEMAIL_URI);
            DefaultVoicemailNotifier.getInstance(this).updateNotification(voicemailUri);
+5 −25
Original line number Diff line number Diff line
@@ -20,8 +20,6 @@ import android.content.AsyncQueryHandler;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.database.MergeCursor;
import android.database.sqlite.SQLiteDatabaseCorruptException;
import android.database.sqlite.SQLiteDiskIOException;
import android.database.sqlite.SQLiteException;
@@ -35,7 +33,6 @@ import android.provider.VoicemailContract.Status;
import android.provider.VoicemailContract.Voicemails;
import android.util.Log;

import com.android.common.io.MoreCloseables;
import com.android.contacts.common.database.NoNullCursorAsyncQueryHandler;
import com.android.dialer.voicemail.VoicemailStatusHelperImpl;

@@ -55,12 +52,10 @@ public class CallLogQueryHandler extends NoNullCursorAsyncQueryHandler {
    private static final int QUERY_CALLLOG_TOKEN = 54;
    /** The token for the query to mark all missed calls as old after seeing the call log. */
    private static final int UPDATE_MARK_AS_OLD_TOKEN = 55;
    /** The token for the query to mark all new voicemails as old. */
    private static final int UPDATE_MARK_VOICEMAILS_AS_OLD_TOKEN = 56;
    /** The token for the query to mark all missed calls as read after seeing the call log. */
    private static final int UPDATE_MARK_MISSED_CALL_AS_READ_TOKEN = 57;
    private static final int UPDATE_MARK_MISSED_CALL_AS_READ_TOKEN = 56;
    /** The token for the query to fetch voicemail status messages. */
    private static final int QUERY_VOICEMAIL_STATUS_TOKEN = 58;
    private static final int QUERY_VOICEMAIL_STATUS_TOKEN = 57;

    private final int mLogLimit;

@@ -195,22 +190,6 @@ public class CallLogQueryHandler extends NoNullCursorAsyncQueryHandler {
                values, where.toString(), null);
    }

    /** Updates all new voicemails to mark them as old. */
    public void markNewVoicemailsAsOld() {
        // Mark all "new" voicemails as not new anymore.
        StringBuilder where = new StringBuilder();
        where.append(Calls.NEW);
        where.append(" = 1 AND ");
        where.append(Calls.TYPE);
        where.append(" = ?");

        ContentValues values = new ContentValues(1);
        values.put(Calls.NEW, "0");

        startUpdate(UPDATE_MARK_VOICEMAILS_AS_OLD_TOKEN, null, Calls.CONTENT_URI_WITH_VOICEMAIL,
                values, where.toString(), new String[]{ Integer.toString(Calls.VOICEMAIL_TYPE) });
    }

    /** Updates all missed calls to mark them as read. */
    public void markMissedCallsAsRead() {
        // Mark all "new" calls as not new anymore.
@@ -227,7 +206,8 @@ public class CallLogQueryHandler extends NoNullCursorAsyncQueryHandler {
    }

    @Override
    protected synchronized void onNotNullableQueryComplete(int token, Object cookie, Cursor cursor) {
    protected synchronized void onNotNullableQueryComplete(int token, Object cookie,
            Cursor cursor) {
        if (cursor == null) {
            return;
        }
+69 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2011 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.android.dialer.calllog;

import android.content.AsyncQueryHandler;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.provider.CallLog.Calls;
import android.util.Log;

/**
 * Handles asynchronous queries to the call log for voicemail.
 */
public class VoicemailQueryHandler extends AsyncQueryHandler {
    private static final String TAG = "VoicemailQueryHandler";

    /** The token for the query to mark all new voicemails as old. */
    private static final int UPDATE_MARK_VOICEMAILS_AS_OLD_TOKEN = 50;
    private Context mContext;

    public VoicemailQueryHandler(Context context, ContentResolver contentResolver) {
        super(contentResolver);
        mContext = context;
    }

    /** Updates all new voicemails to mark them as old. */
    public void markNewVoicemailsAsOld() {
        // Mark all "new" voicemails as not new anymore.
        StringBuilder where = new StringBuilder();
        where.append(Calls.NEW);
        where.append(" = 1 AND ");
        where.append(Calls.TYPE);
        where.append(" = ?");

        ContentValues values = new ContentValues(1);
        values.put(Calls.NEW, "0");

        startUpdate(UPDATE_MARK_VOICEMAILS_AS_OLD_TOKEN, null, Calls.CONTENT_URI_WITH_VOICEMAIL,
                values, where.toString(), new String[]{ Integer.toString(Calls.VOICEMAIL_TYPE) });
    }

    @Override
    protected void onUpdateComplete(int token, Object cookie, int result) {
        if (token == UPDATE_MARK_VOICEMAILS_AS_OLD_TOKEN) {
            if (mContext != null) {
                Intent serviceIntent = new Intent(mContext, CallLogNotificationsService.class);
                serviceIntent.setAction(CallLogNotificationsService.ACTION_UPDATE_NOTIFICATIONS);
                mContext.startService(serviceIntent);
            } else {
                Log.w(TAG, "Unknown update completed: ignoring: " + token);
            }
        }
    }
}