- 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);
- }
+ }
}