Skip to content
Snippets Groups Projects
DownloadOverMeteredDialog.java 3.09 KiB
/*
 * Copyright (C) 2012 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.inputmethod.dictionarypack;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.Html;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.android.inputmethod.latin.R;

import java.util.Locale;

/**
 * This implements the dialog for asking the user whether it's okay to download dictionaries over
 * a metered connection or not (e.g. their mobile data plan).
 */
public final class DownloadOverMeteredDialog extends Activity {
    final public static String CLIENT_ID_KEY = "client_id";
    final public static String WORDLIST_TO_DOWNLOAD_KEY = "wordlist_to_download";
    final public static String SIZE_KEY = "size";
    final public static String LOCALE_KEY = "locale";
    private String mClientId;
    private String mWordListToDownload;

    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        final Intent intent = getIntent();
        mClientId = intent.getStringExtra(CLIENT_ID_KEY);
        mWordListToDownload = intent.getStringExtra(WORDLIST_TO_DOWNLOAD_KEY);
        final String localeString = intent.getStringExtra(LOCALE_KEY);
        final long size = intent.getIntExtra(SIZE_KEY, 0);
        setContentView(R.layout.download_over_metered);
        setTexts(localeString, size);
    }

    private void setTexts(final String localeString, final long size) {
        final String promptFormat = getString(R.string.should_download_over_metered_prompt);
        final String allowButtonFormat = getString(R.string.download_over_metered);
        final Locale locale = LocaleUtils.constructLocaleFromString(localeString);
        final String language = (null == locale ? "" : locale.getDisplayLanguage());
        final TextView prompt = (TextView)findViewById(R.id.download_over_metered_prompt);
        prompt.setText(Html.fromHtml(String.format(promptFormat, language)));
        final Button allowButton = (Button)findViewById(R.id.allow_button);
        allowButton.setText(String.format(allowButtonFormat, ((float)size)/(1024*1024)));
    }

    public void onClickDeny(final View v) {
        UpdateHandler.setDownloadOverMeteredSetting(this, false);
        finish();
    }
    public void onClickAllow(final View v) {
        UpdateHandler.setDownloadOverMeteredSetting(this, true);
        UpdateHandler.installIfNeverRequested(this, mClientId, mWordListToDownload,
                false /* mayPrompt */);
        finish();
    }
}