/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the Common Development
* and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at
* src/com/vodafone360/people/VODAFONE.LICENSE.txt or
* http://github.com/360/360-Engine-for-Android
* See the License for the specific language governing permissions and
* limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each file and
* include the License file at src/com/vodafone360/people/VODAFONE.LICENSE.txt.
* If applicable, add the following below this CDDL HEADER, with the fields
* enclosed by brackets "[]" replaced with your own identifying information:
* Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*
* Copyright 2010 Vodafone Sales & Services Ltd. All rights reserved.
* Use is subject to license terms.
*/
package com.vodafone360.people.engine.upgrade;
import android.content.Context;
import android.content.SharedPreferences;
import com.vodafone360.people.ApplicationCache;
import com.vodafone360.people.Settings;
import com.vodafone360.people.SettingsManager;
import com.vodafone360.people.utils.LogUtils;
/**
* Manages the application version check functionality.
*/
public class VersionCheck {
private Context mContext;
private UpgradeStatus mUpgradeStatus;
private long mCheckFrequencyMillis;
private boolean mForce = false;
/**
* Constructor.
*
* @param context - the context to use
* @param force
*/
public VersionCheck(Context context, boolean force) {
LogUtils.logW("VersionCheck force[" + force + "]");
mContext = context;
mCheckFrequencyMillis = UpgradeUtils.getCheckFrequency(context);
mForce = force;
}
/**
* Returns the cached UpgradeStatus, if one is already known to be
* available.
*
* @return UpgradeStatus
*/
public UpgradeStatus getCachedUpdateStatus() {
// LogUtils.logV("VersionCheck.getCachedUpdateStatus()");
if (SettingsManager.getProperty(Settings.UPGRADE_CHECK_URL_KEY) == null) {
// Upgrading is not active in this build.
return null;
}
mUpgradeStatus = UpgradeUtils.getCachedUpdate(mContext, mCheckFrequencyMillis);
if (mUpgradeStatus == null) {
// LogUtils.logV("VersionCheck.getCachedUpdateStatus() No upgrade status information available");
return null;
} else if (mForce) {
// Do not throttle dialog on request
LogUtils.logV("VersionCheck.getCachedUpdateStatus()"
+ " Returning unthrottled upgrade status");
return mUpgradeStatus;
}
SharedPreferences mSharedPreferences = mContext.getSharedPreferences(
ApplicationCache.PREFS_NAME, Context.MODE_WORLD_WRITEABLE);
long mLastDialogDate = mSharedPreferences.getLong(
ApplicationCache.PREFS_LAST_DIALOG_DATE, -1);
if ((mLastDialogDate == -1)
|| Settings.DIALOG_CHECK_FREQUENCY_MILLIS < UpgradeUtils
.getAgeMillis(mLastDialogDate)) {
LogUtils.logI("VersionCheck.getCachedUpdateStatus()"
+ " Show upgrade dialog again, as more "
+ "than DIALOG_CHECK_FREQUENCY_MILLIS has passed ["
+ UpgradeUtils.getAgeMillis(mLastDialogDate) + "ms] [" + mLastDialogDate + "]");
// Update PREFS_LAST_CHECKED_DATE value
SharedPreferences.Editor editor = mSharedPreferences.edit();
editor.putLong(ApplicationCache.PREFS_LAST_DIALOG_DATE, System
.currentTimeMillis());
editor.commit();
return mUpgradeStatus;
} else {
LogUtils.logV("VersionCheck.getCachedUpdateStatus() Do not show upgrade dialog, as "
+ "last dialog was only ["
+ UpgradeUtils.getAgeMillis(mLastDialogDate)
+ "ms]"
+ " ago, wait another ["
+ (Settings.DIALOG_CHECK_FREQUENCY_MILLIS - UpgradeUtils
.getAgeMillis(mLastDialogDate)) + "ms]");
return null;
}
}
}