- Adapt the fragments to work with both versions and stores
diff --git a/src/com/fairphone/updater/FairphoneUpdater.java b/src/com/fairphone/updater/FairphoneUpdater.java
index 029359b..613a9a3 100644
--- a/src/com/fairphone/updater/FairphoneUpdater.java
+++ b/src/com/fairphone/updater/FairphoneUpdater.java
@@ -21,6 +21,7 @@
import android.widget.Toast;
import com.crashlytics.android.Crashlytics;
+import com.fairphone.updater.data.DownloadableItem;
import com.fairphone.updater.data.Store;
import com.fairphone.updater.data.UpdaterData;
import com.fairphone.updater.data.Version;
@@ -40,11 +41,11 @@
public static final String FAIRPHONE_UPDATER_NEW_VERSION_RECEIVED = "FairphoneUpdater.NEW.VERSION.RECEIVED";
public static final String PREFERENCE_FIRST_TIME_ANDROID = "FirstTimeAndroid";
-
+
public static final String PREFERENCE_FIRST_TIME_FAIRPHONE = "FirstTimeFairphone";
-
+
public static final String PREFERENCE_FIRST_TIME_APP_STORE = "FirstTimeAppStore";
-
+
public static final String PREFERENCE_CURRENT_UPDATER_STATE = "CurrentUpdaterState";
private static final String PREFERENCE_DOWNLOAD_ID = "LatestUpdateDownloadId";
@@ -58,7 +59,7 @@
public static final String FAIRPHONE_UPDATER_CONFIG_DOWNLOAD_FAILED = "FairphoneUpdater.Config.File.Download.FAILED";
public static final String FAIRPHONE_UPDATER_CONFIG_DOWNLOAD_LINK = "FairphoneUpdater.ConfigFile.Download.LINK";
-
+
public static final String PREFERENCE_SELECTED_STORE_NUMBER = "SelectedStoreNumber";
public static enum UpdaterState
@@ -86,17 +87,18 @@
private TextView headerOtherOSText;
private ImageButton headerFairphoneInfoButton;
private ImageButton headerAndroidInfoButton;
-
+
private boolean mIsFirstTimeAndroid;
private boolean mIsFirstTimeAppStore;
private boolean mIsFirstTimeFairphone;
-
-
+
private Store mSelectedStore;
-
+
+ private TextView headerMainAppStoreText;
+
public static enum HeaderType
{
- MAIN_FAIRPHONE, MAIN_ANDROID, FAIRPHONE, ANDROID, OTHER_OS, APP_STORE
+ MAIN_FAIRPHONE, MAIN_ANDROID, MAIN_APP_STORE, FAIRPHONE, ANDROID, OTHER_OS, APP_STORE
};
@Override
@@ -116,11 +118,11 @@
// update first times
mIsFirstTimeAndroid = mSharedPreferences.getBoolean(PREFERENCE_FIRST_TIME_ANDROID, true);
-
+
mIsFirstTimeFairphone = mSharedPreferences.getBoolean(PREFERENCE_FIRST_TIME_FAIRPHONE, true);
-
+
mIsFirstTimeAppStore = mSharedPreferences.getBoolean(PREFERENCE_FIRST_TIME_APP_STORE, true);
-
+
// check current state
mCurrentState = getCurrentUpdaterState();
@@ -171,7 +173,7 @@
int versionNumber = mSharedPreferences.getInt(PREFERENCE_SELECTED_VERSION_NUMBER, 0);
mSelectedVersion = UpdaterData.getInstance().getVersion(versionImageType, versionNumber);
}
-
+
protected void getSelectedStoreFromSharedPreferences()
{
int storeNumber = mSharedPreferences.getInt(PREFERENCE_SELECTED_STORE_NUMBER, 0);
@@ -239,11 +241,11 @@
{
headerMainFairphoneText = (TextView) findViewById(R.id.header_main_fairphone_text);
headerMainAndroidText = (TextView) findViewById(R.id.header_main_android_text);
+ headerMainAppStoreText = (TextView) findViewById(R.id.header_main_app_store_text);
headerFairphoneText = (TextView) findViewById(R.id.header_fairphone_text);
headerAndroidText = (TextView) findViewById(R.id.header_android_text);
headerOtherOSText = (TextView) findViewById(R.id.header_other_os_text);
headerAppStoreText = (TextView) findViewById(R.id.header_app_store_text);
-
OnClickListener headerBackPressListener = new OnClickListener()
{
@@ -258,23 +260,23 @@
headerAndroidText.setOnClickListener(headerBackPressListener);
headerAppStoreText.setOnClickListener(headerBackPressListener);
headerOtherOSText.setOnClickListener(headerBackPressListener);
-
- headerFairphoneInfoButton = (ImageButton)findViewById(R.id.header_fairphone_info_button);
- headerAndroidInfoButton = (ImageButton)findViewById(R.id.header_android_info_button);
-
+
+ headerFairphoneInfoButton = (ImageButton) findViewById(R.id.header_fairphone_info_button);
+ headerAndroidInfoButton = (ImageButton) findViewById(R.id.header_android_info_button);
+
headerFairphoneInfoButton.setOnClickListener(new OnClickListener()
{
-
+
@Override
public void onClick(View v)
{
showInfoPopupDialog(DetailLayoutType.FAIRPHONE);
}
});
-
+
headerAndroidInfoButton.setOnClickListener(new OnClickListener()
{
-
+
@Override
public void onClick(View v)
{
@@ -282,16 +284,14 @@
}
});
}
-
private void showInfoPopupDialog(DetailLayoutType layoutType)
{
FragmentManager fm = getSupportFragmentManager();
- InfoPopupDialog popupDialog =
- new InfoPopupDialog(layoutType);
+ InfoPopupDialog popupDialog = new InfoPopupDialog(layoutType);
popupDialog.show(fm, layoutType.name());
}
-
+
@Override
public void onBackPressed()
{
@@ -319,23 +319,25 @@
case FAIRPHONE:
headerMainFairphoneText.setVisibility(View.GONE);
headerMainAndroidText.setVisibility(View.GONE);
+ headerMainAppStoreText.setVisibility(View.GONE);
headerFairphoneText.setVisibility(View.VISIBLE);
headerAndroidText.setVisibility(View.GONE);
headerAppStoreText.setVisibility(View.GONE);
headerOtherOSText.setVisibility(View.GONE);
headerFairphoneText.setText(headerText);
-
- if(showInfo && mIsFirstTimeFairphone){
+
+ if (showInfo && mIsFirstTimeFairphone)
+ {
showInfoPopupDialog(DetailLayoutType.UPDATE_FAIRPHONE);
Editor editor = mSharedPreferences.edit();
-
+
mIsFirstTimeFairphone = false;
-
+
editor.putBoolean(PREFERENCE_FIRST_TIME_FAIRPHONE, mIsFirstTimeFairphone);
editor.commit();
}
-
+
headerFairphoneInfoButton.setVisibility(showInfo ? View.VISIBLE : View.GONE);
headerAndroidInfoButton.setVisibility(View.GONE);
break;
@@ -343,23 +345,25 @@
case ANDROID:
headerMainFairphoneText.setVisibility(View.GONE);
headerMainAndroidText.setVisibility(View.GONE);
+ headerMainAppStoreText.setVisibility(View.GONE);
headerFairphoneText.setVisibility(View.GONE);
headerAndroidText.setVisibility(View.VISIBLE);
headerAppStoreText.setVisibility(View.GONE);
headerOtherOSText.setVisibility(View.GONE);
headerAndroidText.setText(headerText);
-
- if(showInfo && mIsFirstTimeAndroid){
+
+ if (showInfo && mIsFirstTimeAndroid)
+ {
showInfoPopupDialog(DetailLayoutType.UPDATE_ANDROID);
Editor editor = mSharedPreferences.edit();
-
+
mIsFirstTimeAndroid = false;
-
+
editor.putBoolean(PREFERENCE_FIRST_TIME_ANDROID, mIsFirstTimeAndroid);
editor.commit();
}
-
+
headerFairphoneInfoButton.setVisibility(View.GONE);
headerAndroidInfoButton.setVisibility(showInfo ? View.VISIBLE : View.GONE);
break;
@@ -367,38 +371,40 @@
case APP_STORE:
headerMainFairphoneText.setVisibility(View.GONE);
headerMainAndroidText.setVisibility(View.GONE);
+ headerMainAppStoreText.setVisibility(View.GONE);
headerFairphoneText.setVisibility(View.GONE);
headerAndroidText.setVisibility(View.GONE);
headerAppStoreText.setVisibility(View.VISIBLE);
headerOtherOSText.setVisibility(View.GONE);
headerAppStoreText.setText(headerText);
-
- if(showInfo && mIsFirstTimeAppStore){
+
+ if (showInfo && mIsFirstTimeAppStore)
+ {
showInfoPopupDialog(DetailLayoutType.APP_STORE);
Editor editor = mSharedPreferences.edit();
-
+
mIsFirstTimeAppStore = false;
-
+
editor.putBoolean(PREFERENCE_FIRST_TIME_APP_STORE, mIsFirstTimeAppStore);
editor.commit();
}
-
+
headerFairphoneInfoButton.setVisibility(View.GONE);
- headerAndroidInfoButton.setVisibility(showInfo ? View.VISIBLE : View.GONE);
+ headerAndroidInfoButton.setVisibility(View.GONE);
break;
-
case OTHER_OS:
headerMainFairphoneText.setVisibility(View.GONE);
headerMainAndroidText.setVisibility(View.GONE);
+ headerMainAppStoreText.setVisibility(View.GONE);
headerFairphoneText.setVisibility(View.GONE);
headerAndroidText.setVisibility(View.GONE);
headerAppStoreText.setVisibility(View.GONE);
headerOtherOSText.setVisibility(View.VISIBLE);
headerOtherOSText.setText(headerText);
-
+
headerFairphoneInfoButton.setVisibility(View.GONE);
headerAndroidInfoButton.setVisibility(View.GONE);
break;
@@ -406,11 +412,25 @@
case MAIN_ANDROID:
headerMainFairphoneText.setVisibility(View.GONE);
headerMainAndroidText.setVisibility(View.VISIBLE);
+ headerMainAppStoreText.setVisibility(View.GONE);
headerFairphoneText.setVisibility(View.GONE);
headerAndroidText.setVisibility(View.GONE);
headerAppStoreText.setVisibility(View.GONE);
headerOtherOSText.setVisibility(View.GONE);
+
+ headerFairphoneInfoButton.setVisibility(View.GONE);
+ headerAndroidInfoButton.setVisibility(View.GONE);
+ break;
+ case MAIN_APP_STORE:
+ headerMainFairphoneText.setVisibility(View.GONE);
+ headerMainAndroidText.setVisibility(View.GONE);
+ headerMainAppStoreText.setVisibility(View.VISIBLE);
+ headerFairphoneText.setVisibility(View.GONE);
+ headerAndroidText.setVisibility(View.GONE);
+ headerAppStoreText.setVisibility(View.GONE);
+ headerOtherOSText.setVisibility(View.GONE);
+
headerFairphoneInfoButton.setVisibility(View.GONE);
headerAndroidInfoButton.setVisibility(View.GONE);
break;
@@ -423,7 +443,7 @@
headerAndroidText.setVisibility(View.GONE);
headerAppStoreText.setVisibility(View.GONE);
headerOtherOSText.setVisibility(View.GONE);
-
+
headerFairphoneInfoButton.setVisibility(View.GONE);
headerAndroidInfoButton.setVisibility(View.GONE);
break;
@@ -451,11 +471,19 @@
// In case this activity was started with special instructions from
// an
// Intent, pass the Intent's extras to the fragment as arguments
- firstFragment.setArguments(getIntent().getExtras());
+ Intent intent = getIntent();
+ if (firstFragment != null && intent != null)
+ {
+ Bundle bundle = intent.getExtras();
+ if (bundle != null)
+ {
+ firstFragment.setArguments(bundle);
+ }
+ }
// Add the fragment to the 'fragment_container' FrameLayout
FragmentManager fragManager = getSupportFragmentManager();
- if (fragManager != null)
+ if (firstFragment != null && fragManager != null)
{
fragManager.beginTransaction().add(R.id.fragment_holder, firstFragment).commit();
}
@@ -487,7 +515,7 @@
firstFragment = new MainFragment();
break;
}
-
+
return firstFragment;
}
@@ -495,7 +523,7 @@
{
Fragment topFragment = getTopFragment();
- if (topFragment == null || (topFragment != null && !newFragment.getClass().equals(topFragment.getClass())))
+ if (topFragment == null || (topFragment != null && newFragment != null && !newFragment.getClass().equals(topFragment.getClass())))
{
FragmentManager fragManager = getSupportFragmentManager();
if (fragManager != null)
@@ -523,11 +551,11 @@
}
}
- public void removeLastFragment(final boolean forceFinish)
+ public void removeLastFragment(final boolean forceFinish)
{
runOnUiThread(new Runnable()
{
-
+
@Override
public void run()
{
@@ -546,7 +574,7 @@
}
}
});
-
+
}
public int getFragmentCount()
@@ -656,29 +684,39 @@
return update;
}
- public String getVersionName(Version version)
+ public String getItemName(DownloadableItem item)
{
- String versionName = "";
- if (version != null)
+ String itemName = "";
+ if (item != null)
{
- versionName = version.getImageTypeDescription(getResources()) + " " + version.getName() + " " + version.getBuildNumber();
+ if (item instanceof Version)
+ {
+ Version version = (Version) item;
+ itemName = version.getImageTypeDescription(getResources()) + " " + version.getName() + " " + version.getBuildNumber();
+ }
+ else if (item instanceof Store)
+ {
+
+ Store store = (Store) item;
+ itemName = store.getName();
+ }
}
- return versionName;
+ return itemName;
}
public String getDeviceVersionName()
{
- return getVersionName(mDeviceVersion);
+ return getItemName(mDeviceVersion);
}
public String getLatestVersionName()
{
- return getVersionName(mLatestVersion);
+ return getItemName(mLatestVersion);
}
public String getSelectedVersionName()
{
- return getVersionName(mSelectedVersion);
+ return getItemName(mSelectedVersion);
}
public Version getDeviceVersion()
@@ -695,7 +733,7 @@
{
return mSelectedVersion;
}
-
+
public Store getSelectedStore()
{
return mSelectedStore;
@@ -726,16 +764,22 @@
clearSelectedStore(0);
}
+ public void clearSelectedItems()
+ {
+ clearSelectedVersion(0, "");
+ clearSelectedStore(0);
+ }
+
private void clearSelectedVersion(int versionNumber, String versionImageType)
{
Editor editor = mSharedPreferences.edit();
editor.putInt(PREFERENCE_SELECTED_VERSION_NUMBER, versionNumber);
editor.putString(PREFERENCE_SELECTED_VERSION_TYPE, versionImageType);
editor.commit();
-
+
mSelectedVersion = null;
}
-
+
public void setSelectedStore(Store selectedStore)
{
int storeNumber = selectedStore != null ? selectedStore.getNumber() : 0;
@@ -751,7 +795,7 @@
Editor editor = mSharedPreferences.edit();
editor.putInt(PREFERENCE_SELECTED_STORE_NUMBER, storeNumber);
editor.commit();
-
+
mSelectedStore = null;
}
@@ -787,7 +831,7 @@
{
Toast.makeText(this, "Widget start", Toast.LENGTH_LONG).show();
}
-
+
// check current state
mCurrentState = getCurrentUpdaterState();
@@ -865,5 +909,5 @@
{
mLatestUpdateDownloadId = latestUpdateDownloadId;
savePreference(PREFERENCE_DOWNLOAD_ID, mLatestUpdateDownloadId);
- }
+ }
}
diff --git a/src/com/fairphone/updater/data/VersionParserHelper.java b/src/com/fairphone/updater/data/VersionParserHelper.java
index faa3651..9fbc205 100644
--- a/src/com/fairphone/updater/data/VersionParserHelper.java
+++ b/src/com/fairphone/updater/data/VersionParserHelper.java
@@ -48,27 +48,6 @@
private static final String CURRENT_VERSION_IMAGE_TYPE = "fairphone.ota.image_type";
private static final String CURRENT_VERSION_BUILD_DATE = "ro.build.date.utc";
- public static String getFilenameFromDownloadableItem(DownloadableItem item)
- {
- StringBuilder filename = new StringBuilder();
- filename.append("fp_");
- if (item != null)
- {
- if (item instanceof Version)
- {
- filename.append("update_");
-
- }
- else if (item instanceof Store)
- {
- filename.append("store_");
- }
- filename.append(item.getNumber());
- }
- filename.append(".zip");
- return filename.toString();
- }
-
public static Version getDeviceVersion(Context context)
{
diff --git a/src/com/fairphone/updater/fragments/DownloadAndRestartFragment.java b/src/com/fairphone/updater/fragments/DownloadAndRestartFragment.java
index b310a8c..66c111f 100644
--- a/src/com/fairphone/updater/fragments/DownloadAndRestartFragment.java
+++ b/src/com/fairphone/updater/fragments/DownloadAndRestartFragment.java
@@ -33,14 +33,13 @@
import android.widget.Toast;
import com.fairphone.updater.FairphoneUpdater;
-import com.fairphone.updater.UpdaterService;
import com.fairphone.updater.FairphoneUpdater.HeaderType;
import com.fairphone.updater.FairphoneUpdater.UpdaterState;
import com.fairphone.updater.R;
+import com.fairphone.updater.UpdaterService;
import com.fairphone.updater.data.DownloadableItem;
import com.fairphone.updater.data.Store;
import com.fairphone.updater.data.Version;
-import com.fairphone.updater.data.VersionParserHelper;
import com.fairphone.updater.tools.Utils;
import com.stericson.RootTools.RootTools;
import com.stericson.RootTools.exceptions.RootDeniedException;
@@ -209,24 +208,7 @@
private void updateHeader()
{
- if (mIsVersion)
- {
- updateVersionHeader();
- }
- else
- {
- updateAppStoreHeader();
- }
- }
-
- private void updateAppStoreHeader()
- {
- mainActivity.updateHeader(HeaderType.MAIN_FAIRPHONE, "", false);
- }
-
- private void updateVersionHeader()
- {
- if (mSelectedVersion != null)
+ if (mIsVersion && mSelectedVersion != null)
{
if (Version.IMAGE_TYPE_FAIRPHONE.equalsIgnoreCase(mSelectedVersion.getImageType()))
{
@@ -237,6 +219,10 @@
mainActivity.updateHeader(HeaderType.MAIN_ANDROID, "", false);
}
}
+ else if (mSelectedStore != null)
+ {
+ mainActivity.updateHeader(HeaderType.MAIN_APP_STORE, "", false);
+ }
else
{
mainActivity.updateHeader(HeaderType.MAIN_FAIRPHONE, "", false);
@@ -251,8 +237,6 @@
@Override
public void run()
{
-
- System.out.println(" +++++++++++++++++++++++++++++++ running startDownloadProgressUpdateThread +++++++++++++++++++++++++++++++ ");
boolean downloading = true;
long latestUpdateDownloadId = 0;
@@ -264,14 +248,12 @@
try
{
Thread.sleep(2000);
- System.out.println(" +++++++++++++++++++++++++++++++ count: " + count + " +++++++++++++++++++++++++++++++ ");
count--;
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
- System.out.println(" +++++++++++++++++++++++++++++++ " + latestUpdateDownloadId + " +++++++++++++++++++++++++++++++ ");
while (mDownloadManager != null && latestUpdateDownloadId != 0 && downloading)
{
@@ -281,10 +263,6 @@
Cursor cursor = mDownloadManager != null ? mDownloadManager.query(q) : null;
- if (cursor == null)
- {
- System.out.println(" +++++++++++++++++++++++++++++++ cursor is null +++++++++++++++++++++++++++++++ ");
- }
if (cursor != null && cursor.moveToFirst())
{
try
@@ -373,13 +351,10 @@
updateHeader();
- if (mIsVersion)
+ DownloadableItem item = mIsVersion ? mSelectedVersion : mSelectedStore;
+ if (item != null)
{
- mDownloadVersionName.setText(mainActivity.getVersionName(mSelectedVersion));
- }
- else
- {
- mDownloadVersionName.setText(mSelectedStore.getName());
+ mDownloadVersionName.setText(mainActivity.getItemName(item));
}
toggleDownloadProgressAndRestart();
@@ -488,14 +463,10 @@
break;
case DownloadManager.STATUS_FAILED:
Resources resources = getResources();
- if (mSelectedVersion != null)
+ DownloadableItem item = mIsVersion ? mSelectedVersion : mSelectedStore;
+ if (item != null)
{
- String downloadTitle = mSelectedVersion.getName() + " " + mSelectedVersion.getImageTypeDescription(resources);
- Toast.makeText(mainActivity, resources.getString(R.string.error_downloading) + " " + downloadTitle, Toast.LENGTH_LONG).show();
- }
- else if (mSelectedStore != null)
- {
- String downloadTitle = mSelectedStore.getName();
+ String downloadTitle = Utils.getDownloadTitleFromDownloadableItem(getResources(), item);
Toast.makeText(mainActivity, resources.getString(R.string.error_downloading) + " " + downloadTitle, Toast.LENGTH_LONG).show();
}
else
@@ -590,7 +561,7 @@
Resources resources = getResources();
DownloadableItem item = mIsVersion ? mSelectedVersion : mSelectedStore;
- File f = new File("/" + resources.getString(R.string.recoveryCachePath) + "/" + VersionParserHelper.getFilenameFromDownloadableItem(item));
+ File f = new File("/" + resources.getString(R.string.recoveryCachePath) + "/" + Utils.getFilenameFromDownloadableItem(item));
if (!f.exists())
{
abortUpdateProcess();
@@ -598,8 +569,6 @@
else if (item != null && RootTools.isAccessGiven())
{
// set the command for the recovery
- // Process p;
-
try
{
@@ -612,13 +581,12 @@
if (Utils.hasUnifiedPartition(resources))
{
Shell.runRootCommand(new CommandCapture(0, "echo '--update_package=/" + resources.getString(R.string.recoveryCachePath) + "/"
- + VersionParserHelper.getFilenameFromDownloadableItem(item) + "' >> /cache/recovery/command"));
+ + Utils.getFilenameFromDownloadableItem(item) + "' >> /cache/recovery/command"));
}
else
{
Shell.runRootCommand(new CommandCapture(0, "echo '--update_package=/" + resources.getString(R.string.recoverySdCardPath)
- + resources.getString(R.string.updaterFolder) + VersionParserHelper.getFilenameFromDownloadableItem(item)
- + "' >> /cache/recovery/command"));
+ + resources.getString(R.string.updaterFolder) + Utils.getFilenameFromDownloadableItem(item) + "' >> /cache/recovery/command"));
}
} catch (IOException e)
{
@@ -656,6 +624,7 @@
try
{
mainActivity.updateStatePreference(UpdaterState.NORMAL);
+ mainActivity.clearSelectedItems();
Shell.runRootCommand(new CommandCapture(0, "reboot recovery"));
} catch (IOException e)
{
@@ -685,7 +654,7 @@
CopyFileToCacheTask copyTask = new CopyFileToCacheTask();
if (item != null)
{
- copyTask.execute(file.getPath(), Environment.getDownloadCacheDirectory() + "/" + VersionParserHelper.getFilenameFromDownloadableItem(item));
+ copyTask.execute(file.getPath(), Environment.getDownloadCacheDirectory() + "/" + Utils.getFilenameFromDownloadableItem(item));
}
else
{
@@ -809,8 +778,7 @@
private String getDownloadPath(DownloadableItem item)
{
Resources resources = mainActivity.getResources();
- return Environment.getExternalStorageDirectory() + resources.getString(R.string.updaterFolder)
- + VersionParserHelper.getFilenameFromDownloadableItem(item);
+ return Environment.getExternalStorageDirectory() + resources.getString(R.string.updaterFolder) + Utils.getFilenameFromDownloadableItem(item);
}
public void abortUpdateProcess()
@@ -819,7 +787,6 @@
mainActivity.runOnUiThread(new Runnable()
{
-
@Override
public void run()
{
@@ -827,6 +794,7 @@
if (mainActivity.getFragmentCount() == 1 && mainActivity.getBackStackSize() == 0)
{
mainActivity.changeState(UpdaterState.NORMAL);
+ mainActivity.clearSelectedItems();
}
else
{
@@ -834,7 +802,5 @@
}
}
});
-
}
-
}
diff --git a/src/com/fairphone/updater/fragments/MainFragment.java b/src/com/fairphone/updater/fragments/MainFragment.java
index ef06c35..3751710 100644
--- a/src/com/fairphone/updater/fragments/MainFragment.java
+++ b/src/com/fairphone/updater/fragments/MainFragment.java
@@ -150,7 +150,7 @@
@Override
public void onClick(View v)
{
- VersionDetailFragment fragment = new VersionDetailFragment();
+ VersionDetailFragment fragment = new VersionDetailFragment(true);
Version latestVersion = mainActivity.getLatestVersion();
if (latestVersion != null)
diff --git a/src/com/fairphone/updater/fragments/VersionDetailFragment.java b/src/com/fairphone/updater/fragments/VersionDetailFragment.java
index afc2818..e876f47 100644
--- a/src/com/fairphone/updater/fragments/VersionDetailFragment.java
+++ b/src/com/fairphone/updater/fragments/VersionDetailFragment.java
@@ -24,11 +24,10 @@
import com.fairphone.updater.FairphoneUpdater.HeaderType;
import com.fairphone.updater.FairphoneUpdater.UpdaterState;
import com.fairphone.updater.R;
+import com.fairphone.updater.data.DownloadableItem;
import com.fairphone.updater.data.Store;
import com.fairphone.updater.data.Version;
-import com.fairphone.updater.data.VersionParserHelper;
import com.fairphone.updater.fragments.ConfirmationPopupDialog.ConfirmationPopupDialogListener;
-import com.fairphone.updater.fragments.VersionDetailFragment.DetailLayoutType;
import com.fairphone.updater.tools.Utils;
public class VersionDetailFragment extends BaseFragment
@@ -53,9 +52,15 @@
private DetailLayoutType mDetailLayoutType;
private boolean mIsOSChange;
private boolean mIsOlderVersion;
-
- // store download
private Store mSelectedStore;
+ private boolean mIsVersion;
+
+ public VersionDetailFragment(boolean isVersion)
+ {
+ super();
+
+ mIsVersion = isVersion;
+ }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
@@ -109,7 +114,7 @@
@Override
public void onClick(View v)
{
- startItemDownload();
+ startDownload();
}
});
}
@@ -133,26 +138,21 @@
private void updateReleaseNotesText()
{
- if (mSelectedVersion != null)
+ DownloadableItem item = mIsVersion ? mSelectedVersion : mSelectedStore;
+ if (item != null)
{
- mVersion_release_notes_text.setText(mSelectedVersion.getReleaseNotes(Locale.getDefault().getLanguage()));
- }
- else if (mSelectedStore != null)
- {
- mVersion_release_notes_text.setText(mSelectedStore.getReleaseNotes(Locale.getDefault().getLanguage()));
+ mVersion_release_notes_text.setText(item.getReleaseNotes(Locale.getDefault().getLanguage()));
}
}
private void updateVersionName()
{
+ DownloadableItem item = mIsVersion ? mSelectedVersion : mSelectedStore;
+
mVersion_details_title_text.setText(mVersionDetailsTitle);
- if (mSelectedVersion != null)
+ if (item != null)
{
- mVersion_details_name_text.setText(mainActivity.getVersionName(mSelectedVersion));
- }
- else if (mSelectedStore != null)
- {
- mVersion_details_name_text.setText(mSelectedStore.getName());
+ mVersion_details_name_text.setText(mainActivity.getItemName(item));
}
}
@@ -177,8 +177,8 @@
Resources resources = mainActivity.getResources();
Version deviceVersion = mainActivity.getDeviceVersion();
-
- if (mSelectedVersion != null)
+
+ if (mIsVersion && mSelectedVersion != null)
{
mHeaderType = mainActivity.getHeaderTypeFromImageType(mSelectedVersion != null ? mSelectedVersion.getImageType() : "");
}
@@ -202,21 +202,21 @@
break;
case ANDROID:
- mHeaderText = mainActivity.getVersionName(mSelectedVersion);
+ mHeaderText = mainActivity.getItemName(mSelectedVersion);
mVersionDetailsTitle = resources.getString(R.string.new_os);
mIsOSChange = deviceVersion.getImageType().equalsIgnoreCase(Version.IMAGE_TYPE_FAIRPHONE);
mIsOlderVersion =
(deviceVersion.getImageType().equalsIgnoreCase(Version.IMAGE_TYPE_AOSP) && deviceVersion.isNewerVersionThan(mSelectedVersion));
break;
case APP_STORE:
- mHeaderText = mSelectedStore.getName();
+ mHeaderText = mainActivity.getItemName(mSelectedStore);
mVersionDetailsTitle = resources.getString(R.string.install);
mIsOSChange = false;
mIsOlderVersion = false;
break;
case FAIRPHONE:
default:
- mHeaderText = mainActivity.getVersionName(mSelectedVersion);
+ mHeaderText = mainActivity.getItemName(mSelectedVersion);
mVersionDetailsTitle = resources.getString(R.string.older_version);
mIsOSChange = deviceVersion.getImageType().equalsIgnoreCase(Version.IMAGE_TYPE_AOSP);
mIsOlderVersion =
@@ -257,71 +257,20 @@
return request;
}
-
- public void startUpdateStoreDownload()
- {
-
- // use only on WiFi
- if (isWiFiEnabled())
- {
- if (mSelectedStore != null)
- {
- // set the download for the latest version on the download
- // manager
- String fileName = VersionParserHelper.getFilenameFromDownloadableItem(mSelectedStore);
- String downloadTitle = mSelectedStore.getName();
- Request request = createDownloadRequest(mSelectedStore.getDownloadLink() + Utils.getModelAndOS(mainActivity), fileName, downloadTitle);
- if (request != null && mDownloadManager != null)
- {
- long mLatestUpdateDownloadId = mDownloadManager.enqueue(request);
-
- // save it on the shared preferences
- mainActivity.saveLatestUpdateDownloadId(mLatestUpdateDownloadId);
-
- // change state to download
- mainActivity.changeState(UpdaterState.DOWNLOAD);
- }
- else
- {
- Toast.makeText(mainActivity, getResources().getString(R.string.error_downloading) + " " + downloadTitle, Toast.LENGTH_LONG).show();
- }
- }
- }
- else
- {
- Resources resources = this.getResources();
-
- AlertDialog.Builder disclaimerDialog = new AlertDialog.Builder(mainActivity);
-
- disclaimerDialog.setTitle(resources.getString(R.string.wifi_disabled));
-
- // Setting Dialog Message
- disclaimerDialog.setMessage(resources.getString(R.string.wifi_discaimer_message));
- disclaimerDialog.setPositiveButton(resources.getString(android.R.string.ok), new DialogInterface.OnClickListener()
- {
- public void onClick(DialogInterface dialog, int id)
- {
- // do nothing, since the state is still the same
- }
- });
- disclaimerDialog.create();
- disclaimerDialog.show();
- }
- }
public void startUpdateDownload()
{
-
+ DownloadableItem item = mIsVersion ? mSelectedVersion : mSelectedStore;
// use only on WiFi
if (isWiFiEnabled())
{
- if (mSelectedVersion != null)
+ if (item != null)
{
// set the download for the latest version on the download
// manager
- String fileName = VersionParserHelper.getFilenameFromDownloadableItem(mSelectedVersion);
- String downloadTitle = mSelectedVersion.getName() + " " + mSelectedVersion.getImageTypeDescription(getResources());
- Request request = createDownloadRequest(mSelectedVersion.getDownloadLink() + Utils.getModelAndOS(mainActivity), fileName, downloadTitle);
+ String fileName = Utils.getFilenameFromDownloadableItem(item);
+ String downloadTitle = Utils.getDownloadTitleFromDownloadableItem(getResources(), item);
+ Request request = createDownloadRequest(item.getDownloadLink() + Utils.getModelAndOS(mainActivity), fileName, downloadTitle);
if (request != null && mDownloadManager != null)
{
long mLatestUpdateDownloadId = mDownloadManager.enqueue(request);
@@ -342,21 +291,21 @@
{
Resources resources = this.getResources();
- AlertDialog.Builder disclaimerDialog = new AlertDialog.Builder(mainActivity);
+ AlertDialog.Builder wifiOffDialog = new AlertDialog.Builder(mainActivity);
- disclaimerDialog.setTitle(resources.getString(R.string.wifi_disabled));
+ wifiOffDialog.setTitle(resources.getString(R.string.wifi_disabled));
// Setting Dialog Message
- disclaimerDialog.setMessage(resources.getString(R.string.wifi_discaimer_message));
- disclaimerDialog.setPositiveButton(resources.getString(android.R.string.ok), new DialogInterface.OnClickListener()
+ wifiOffDialog.setMessage(resources.getString(R.string.wifi_discaimer_message));
+ wifiOffDialog.setPositiveButton(resources.getString(android.R.string.ok), new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
// do nothing, since the state is still the same
}
});
- disclaimerDialog.create();
- disclaimerDialog.show();
+ wifiOffDialog.create();
+ wifiOffDialog.show();
}
}
@@ -382,81 +331,40 @@
popupDialog.show(fm, version);
}
- public void startItemDownload()
+ public void startDownload()
{
- if (mDetailLayoutType == DetailLayoutType.APP_STORE)
+ if (mIsVersion && mSelectedVersion != null)
{
- startStoreDownload();
- }
- else
- {
- startVersionDownload();
- }
- }
-
- private void startStoreDownload()
- {
- if (mSelectedStore != null)
- {
- mainActivity.setSelectedStore(mSelectedStore);
- startStoreInstall();
- }
- }
-
- public void startVersionDownload()
- {
- if (!Utils.areGappsInstalling(mainActivity))
- {
- if (mSelectedVersion != null)
+ if (mIsOSChange || mIsOlderVersion)
{
- if (mIsOSChange || mIsOlderVersion)
- {
- showPopupDialog(mainActivity.getVersionName(mSelectedVersion), mSelectedVersion.hasEraseAllPartitionWarning(),
- new ConfirmationPopupDialogListener()
+ showPopupDialog(mainActivity.getItemName(mSelectedVersion), mSelectedVersion.hasEraseAllPartitionWarning(),
+ new ConfirmationPopupDialogListener()
+ {
+
+ @Override
+ public void onFinishPopUpDialog(boolean isOk)
{
-
- @Override
- public void onFinishPopUpDialog(boolean isOk)
+ if (isOk)
{
- if (isOk)
- {
- mainActivity.setSelectedVersion(mSelectedVersion);
- showEraseAllDataWarning(true);
- }
+ mainActivity.setSelectedVersion(mSelectedVersion);
+ showEraseAllDataWarning(true);
}
- });
- }
- else
- {
- mainActivity.setSelectedVersion(mSelectedVersion);
- showEraseAllDataWarning(false);
- }
- }
- }
- else
- {
- showGappsInstalingWarning();
- }
- }
-
- private void startStoreInstall()
- {
-
- final UpdaterState currentState = mainActivity.getCurrentUpdaterState();
-
- if (mSelectedStore != null)
- {
- if (currentState == UpdaterState.NORMAL)
- {
- startUpdateStoreDownload();
+ }
+ });
}
else
{
- mainActivity.setSelectedStore(null);
+ mainActivity.setSelectedVersion(mSelectedVersion);
+ showEraseAllDataWarning(false);
}
}
+ else if (mSelectedStore != null)
+ {
+ mainActivity.setSelectedStore(mSelectedStore);
+ showStoreDisclaimer();
+ }
}
-
+
private void showEraseAllDataWarning(boolean bypassEraseAllWarning)
{
@@ -497,18 +405,42 @@
}
}
- private void showGappsInstalingWarning()
+ protected void showStoreDisclaimer()
{
- new AlertDialog.Builder(mainActivity).setTitle(android.R.string.dialog_alert_title).setMessage(R.string.updater_google_apps_installing_description)
- .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener()
- {
+ final UpdaterState currentState = mainActivity.getCurrentUpdaterState();
- @Override
- public void onClick(DialogInterface dialog, int which)
+ if (mSelectedStore != null && mSelectedStore.showDisclaimer())
+ {
+ new AlertDialog.Builder(mainActivity).setTitle(R.string.google_apps_disclaimer_title).setMessage(R.string.google_apps_disclaimer_description)
+ .setPositiveButton(R.string.google_apps_disclaimer_agree, new DialogInterface.OnClickListener()
{
- // close dialog
- }
- }).show();
- }
+ @Override
+ public void onClick(DialogInterface dialog, int which)
+ {
+ if (currentState == UpdaterState.NORMAL)
+ {
+ startUpdateDownload();
+ }
+ }
+ }).setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener()
+ {
+ public void onClick(DialogInterface dialog, int which)
+ {
+ mainActivity.setSelectedStore(null);
+ }
+ }).show();
+ }
+ else
+ {
+ if (currentState == UpdaterState.NORMAL)
+ {
+ startUpdateDownload();
+ }
+ else
+ {
+ mainActivity.setSelectedStore(null);
+ }
+ }
+ }
}
diff --git a/src/com/fairphone/updater/fragments/VersionListFragment.java b/src/com/fairphone/updater/fragments/VersionListFragment.java
index ff0f208..67bc21f 100644
--- a/src/com/fairphone/updater/fragments/VersionListFragment.java
+++ b/src/com/fairphone/updater/fragments/VersionListFragment.java
@@ -120,7 +120,7 @@
if (selectedStore != null)
{
- VersionDetailFragment versionDetail = new VersionDetailFragment();
+ VersionDetailFragment versionDetail = new VersionDetailFragment(false);
versionDetail.setupFragment(selectedStore, DetailLayoutType.APP_STORE);
@@ -170,7 +170,7 @@
mVersionListContainer.addView(versionLayout);
- versionLayout.setText(mainActivity.getVersionName(version));
+ versionLayout.setText(mainActivity.getItemName(version));
versionLayout.setOnClickListener(new OnClickListener()
{
@@ -181,7 +181,7 @@
if (selectedVersion != null)
{
- VersionDetailFragment versionDetail = new VersionDetailFragment();
+ VersionDetailFragment versionDetail = new VersionDetailFragment(true);
versionDetail.setupFragment(selectedVersion, DetailLayoutType.FAIRPHONE);
@@ -205,7 +205,7 @@
private void setupFairphoneLatestVersion()
{
final Version latestFairphoneVersion = UpdaterData.getInstance().getLatestVersion(Version.IMAGE_TYPE_FAIRPHONE);
- mLatestVersionDetailsButton.setText(mainActivity.getVersionName(latestFairphoneVersion));
+ mLatestVersionDetailsButton.setText(mainActivity.getItemName(latestFairphoneVersion));
if (mainActivity.getDeviceVersion().compareTo(latestFairphoneVersion) == 0)
{
@@ -224,7 +224,7 @@
{
if (latestFairphoneVersion != null)
{
- VersionDetailFragment versionDetail = new VersionDetailFragment();
+ VersionDetailFragment versionDetail = new VersionDetailFragment(true);
versionDetail.setupFragment(latestFairphoneVersion, DetailLayoutType.FAIRPHONE);
@@ -252,7 +252,7 @@
mVersionListContainer.addView(versionLayout);
- versionLayout.setText(mainActivity.getVersionName(version));
+ versionLayout.setText(mainActivity.getItemName(version));
versionLayout.setOnClickListener(new OnClickListener()
{
@@ -264,7 +264,7 @@
if (selectedVersion != null)
{
- VersionDetailFragment versionDetail = new VersionDetailFragment();
+ VersionDetailFragment versionDetail = new VersionDetailFragment(true);
versionDetail.setupFragment(selectedVersion, DetailLayoutType.ANDROID);
@@ -288,7 +288,7 @@
private void setupAndroidLatestVersion()
{
final Version latestAOSPVersion = UpdaterData.getInstance().getLatestVersion(Version.IMAGE_TYPE_AOSP);
- mLatestVersionDetailsButton.setText(mainActivity.getVersionName(latestAOSPVersion));
+ mLatestVersionDetailsButton.setText(mainActivity.getItemName(latestAOSPVersion));
if (mainActivity.getDeviceVersion().compareTo(latestAOSPVersion) == 0)
{
@@ -307,7 +307,7 @@
{
if (latestAOSPVersion != null)
{
- VersionDetailFragment versionDetail = new VersionDetailFragment();
+ VersionDetailFragment versionDetail = new VersionDetailFragment(true);
versionDetail.setupFragment(latestAOSPVersion, DetailLayoutType.ANDROID);
diff --git a/src/com/fairphone/updater/gappsinstaller/GappsInstallerHelper.java b/src/com/fairphone/updater/gappsinstaller/GappsInstallerHelper.java
index a525a11..8557b29 100644
--- a/src/com/fairphone/updater/gappsinstaller/GappsInstallerHelper.java
+++ b/src/com/fairphone/updater/gappsinstaller/GappsInstallerHelper.java
@@ -30,7 +30,6 @@
public static final String PREFS_GOOGLE_APPS_INSTALLER_DATA = "FAIRPHONE_GOOGLE_APPS_INSTALLER_DATA";
public static final String GOOGLE_APPS_INSTALLER_STATE = "com.fairphone.updater.gapps.WIDGET_STATE";
- public static final String GAPPS_REINSTALATION = "com.fairphone.updater.gapps.GAPPS_REINSTALATION_REQUEST";
public static final int GAPPS_STATES_INITIAL = 0;
public static final int GAPPS_INSTALLED_STATE = 1;
diff --git a/src/com/fairphone/updater/tools/Utils.java b/src/com/fairphone/updater/tools/Utils.java
index c92368c..e6fdbad 100644
--- a/src/com/fairphone/updater/tools/Utils.java
+++ b/src/com/fairphone/updater/tools/Utils.java
@@ -29,19 +29,17 @@
import android.app.ActivityManager.RunningServiceInfo;
import android.content.Context;
import android.content.Intent;
-import android.content.SharedPreferences;
import android.content.res.Resources;
import android.os.Build;
import android.os.Environment;
import android.util.Log;
-import com.fairphone.updater.FairphoneUpdater;
import com.fairphone.updater.R;
-import com.fairphone.updater.FairphoneUpdater.UpdaterState;
import com.fairphone.updater.UpdaterService;
+import com.fairphone.updater.data.DownloadableItem;
+import com.fairphone.updater.data.Store;
import com.fairphone.updater.data.Version;
import com.fairphone.updater.data.VersionParserHelper;
-import com.fairphone.updater.gappsinstaller.GappsInstallerHelper;
public class Utils
{
@@ -80,23 +78,6 @@
return availableBlocks;
}
- public static boolean areGappsInstalling(Context context)
- {
- SharedPreferences gappsSharedPrefs = context.getSharedPreferences(GappsInstallerHelper.PREFS_GOOGLE_APPS_INSTALLER_DATA, Context.MODE_PRIVATE);
-
- int currentState = gappsSharedPrefs.getInt(GappsInstallerHelper.GOOGLE_APPS_INSTALLER_STATE, GappsInstallerHelper.GAPPS_STATES_INITIAL);
- return currentState != GappsInstallerHelper.GAPPS_STATES_INITIAL && currentState != GappsInstallerHelper.GAPPS_INSTALLED_STATE;
- }
-
- public static boolean isUpdaterInstalling(Context context)
- {
- SharedPreferences updaterSharedPrefs = context.getSharedPreferences(FairphoneUpdater.FAIRPHONE_UPDATER_PREFERENCES, Context.MODE_PRIVATE);
-
- String currentState = updaterSharedPrefs.getString(FairphoneUpdater.PREFERENCE_CURRENT_UPDATER_STATE, UpdaterState.NORMAL.name());
- UpdaterState state = UpdaterState.valueOf(currentState);
- return state != UpdaterState.NORMAL;
- }
-
public static void startUpdaterService(Context context, boolean forceDownload)
{
boolean isRunning = isServiceRunning(context);
@@ -316,4 +297,41 @@
double cacheSize = Utils.getPartitionSizeInBytes(Environment.getDownloadCacheDirectory());
return cacheSize >= fileSize;
}
+ public static String getFilenameFromDownloadableItem(DownloadableItem item)
+ {
+ StringBuilder filename = new StringBuilder();
+ filename.append("fp_");
+ if (item != null)
+ {
+ if (item instanceof Version)
+ {
+ filename.append("update_");
+ }
+ else if (item instanceof Store)
+ {
+ filename.append("store_");
+ }
+ filename.append(item.getNumber());
+ }
+ filename.append(".zip");
+ return filename.toString();
+ }
+
+ public static String getDownloadTitleFromDownloadableItem(Resources resources, DownloadableItem item){
+ String title = "";
+ if (item != null)
+ {
+ if (item instanceof Version)
+ {
+ Version version = (Version) item;
+ title = version.getName() + " " + version.getImageTypeDescription(resources);
+ }
+ else if (item instanceof Store)
+ {
+ Store store = (Store) item;
+ title = store.getName();
+ }
+ }
+ return title;
+ }
}