wire up ProgressListener to new ApkDownloader structure
Conflicts: src/org/fdroid/fdroid/AppDetails.java
This commit is contained in:
		
							parent
							
								
									9588f30778
								
							
						
					
					
						commit
						19e722a9d7
					
				| @ -19,32 +19,28 @@ | ||||
| 
 | ||||
| package org.fdroid.fdroid; | ||||
| 
 | ||||
| import android.content.*; | ||||
| import android.widget.*; | ||||
| 
 | ||||
| import org.fdroid.fdroid.data.*; | ||||
| import org.fdroid.fdroid.installer.Installer; | ||||
| import org.fdroid.fdroid.installer.Installer.AndroidNotCompatibleException; | ||||
| import org.fdroid.fdroid.installer.Installer.InstallerCallback; | ||||
| import org.fdroid.fdroid.net.Downloader; | ||||
| import org.xml.sax.XMLReader; | ||||
| 
 | ||||
| import android.app.Activity; | ||||
| import android.app.AlertDialog; | ||||
| import android.app.ListActivity; | ||||
| import android.app.ProgressDialog; | ||||
| import android.bluetooth.BluetoothAdapter; | ||||
| import android.content.ContentValues; | ||||
| import android.content.Context; | ||||
| import android.content.DialogInterface; | ||||
| import android.content.Intent; | ||||
| import android.content.SharedPreferences; | ||||
| import android.content.pm.PackageInfo; | ||||
| import android.content.pm.PackageManager; | ||||
| import android.content.pm.PackageManager.NameNotFoundException; | ||||
| import android.content.pm.Signature; | ||||
| import android.database.ContentObserver; | ||||
| import android.graphics.Bitmap; | ||||
| import android.net.Uri; | ||||
| import android.os.Bundle; | ||||
| import android.os.Handler; | ||||
| import android.os.Message; | ||||
| import android.preference.PreferenceManager; | ||||
| import android.support.v4.app.NavUtils; | ||||
| import android.support.v4.view.MenuItemCompat; | ||||
| import android.content.pm.PackageManager; | ||||
| import android.content.pm.PackageInfo; | ||||
| import android.content.pm.Signature; | ||||
| import android.content.pm.PackageManager.NameNotFoundException; | ||||
| import android.database.ContentObserver; | ||||
| import android.text.Editable; | ||||
| import android.text.Html; | ||||
| import android.text.Html.TagHandler; | ||||
| @ -59,16 +55,30 @@ import android.view.SubMenu; | ||||
| import android.view.View; | ||||
| import android.view.ViewGroup; | ||||
| import android.view.Window; | ||||
| import android.graphics.Bitmap; | ||||
| 
 | ||||
| import android.widget.ArrayAdapter; | ||||
| import android.widget.ImageView; | ||||
| import android.widget.LinearLayout; | ||||
| import android.widget.ListView; | ||||
| import android.widget.TextView; | ||||
| import android.widget.Toast; | ||||
| import com.nostra13.universalimageloader.core.DisplayImageOptions; | ||||
| import com.nostra13.universalimageloader.core.ImageLoader; | ||||
| import com.nostra13.universalimageloader.core.assist.ImageScaleType; | ||||
| 
 | ||||
| import org.fdroid.fdroid.Utils.CommaSeparatedList; | ||||
| import org.fdroid.fdroid.compat.ActionBarCompat; | ||||
| import org.fdroid.fdroid.compat.MenuManager; | ||||
| import org.fdroid.fdroid.compat.PackageManagerCompat; | ||||
| import org.fdroid.fdroid.data.Apk; | ||||
| import org.fdroid.fdroid.data.ApkProvider; | ||||
| import org.fdroid.fdroid.data.App; | ||||
| import org.fdroid.fdroid.data.AppProvider; | ||||
| import org.fdroid.fdroid.data.Repo; | ||||
| import org.fdroid.fdroid.data.RepoProvider; | ||||
| import org.fdroid.fdroid.installer.Installer; | ||||
| import org.fdroid.fdroid.installer.Installer.AndroidNotCompatibleException; | ||||
| import org.fdroid.fdroid.installer.Installer.InstallerCallback; | ||||
| import org.fdroid.fdroid.net.Downloader; | ||||
| import org.xml.sax.XMLReader; | ||||
| 
 | ||||
| import java.io.File; | ||||
| import java.security.NoSuchAlgorithmException; | ||||
| @ -906,6 +916,7 @@ public class AppDetails extends ListActivity { | ||||
| 
 | ||||
|     // Install the version of this app denoted by 'app.curApk'. | ||||
|     private void install(final Apk apk) { | ||||
|         final Activity activity = this; | ||||
|         String [] projection = { RepoProvider.DataColumns.ADDRESS }; | ||||
|         Repo repo = RepoProvider.Helper.findById(this, apk.repo, projection); | ||||
|         if (repo == null || repo.address == null) { | ||||
| @ -921,9 +932,8 @@ public class AppDetails extends ListActivity { | ||||
|                         @Override | ||||
|                         public void onClick(DialogInterface dialog, | ||||
|                                 int whichButton) { | ||||
|                             downloadHandler = new DownloadHandler(apk, | ||||
|                                     repoaddress, Utils | ||||
|                                     .getApkCacheDir(getBaseContext())); | ||||
|                             downloadHandler = new DownloadHandler(activity, apk, | ||||
|                                     repoaddress, Utils.getApkCacheDir(getBaseContext())); | ||||
|                         } | ||||
|                     }); | ||||
|             ask_alrt.setNegativeButton(getString(R.string.no), | ||||
| @ -952,7 +962,7 @@ public class AppDetails extends ListActivity { | ||||
|             alert.show(); | ||||
|             return; | ||||
|         } | ||||
|         downloadHandler = new DownloadHandler(apk, repoaddress, | ||||
|         downloadHandler = new DownloadHandler(activity, apk, repoaddress, | ||||
|                 Utils.getApkCacheDir(getBaseContext())); | ||||
|     } | ||||
|     private void installApk(File file, String packageName) { | ||||
| @ -1066,13 +1076,17 @@ public class AppDetails extends ListActivity { | ||||
| 
 | ||||
|     // Handler used to update the progress dialog while downloading. | ||||
|     private class DownloadHandler extends Handler implements ProgressListener { | ||||
|         private static final String TAG = "AppDetails.DownloadHandler"; | ||||
|         private Activity activity; | ||||
|         private ApkDownloader download; | ||||
|         private ProgressDialog pd; | ||||
|         private String id; | ||||
| 
 | ||||
|         public DownloadHandler(Apk apk, String repoaddress, File destdir) { | ||||
|         public DownloadHandler(Activity activity, Apk apk, String repoaddress, File destdir) { | ||||
|             this.activity = activity; | ||||
|             id = apk.id; | ||||
|             download = new ApkDownloader(apk, repoaddress, destdir); | ||||
|             download.setProgressListener(this); | ||||
|             download.start(); | ||||
|         } | ||||
| 
 | ||||
| @ -1082,27 +1096,41 @@ public class AppDetails extends ListActivity { | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public void onProgress(ProgressListener.Event event) { | ||||
|         public void onProgress(final ProgressListener.Event event) { | ||||
|             boolean finished = false; | ||||
|             switch (event.type) { | ||||
|                 case Downloader.EVENT_PROGRESS: | ||||
|                     activity.runOnUiThread(new Runnable() { | ||||
| 
 | ||||
|                         @Override | ||||
|                         public void run() { | ||||
|                             // this must be on the main UI thread | ||||
|                             if (pd == null) { | ||||
|                                 pd = createProgressDialog(download.remoteFile(), | ||||
|                                         event.progress, event.total); | ||||
|                             } else { | ||||
|                                 pd.setProgress(event.progress); | ||||
|                             } | ||||
|                         } | ||||
|                     }); | ||||
|                     break; | ||||
| 
 | ||||
|                 case ApkDownloader.EVENT_ERROR_DOWNLOAD_FAILED: | ||||
|                 case ApkDownloader.EVENT_ERROR_HASH_MISMATCH: | ||||
|                 case ApkDownloader.EVENT_ERROR_UNKNOWN: | ||||
|                     String text; | ||||
|                     final String text; | ||||
|                     if (event.type == ApkDownloader.EVENT_ERROR_HASH_MISMATCH) | ||||
|                         text = getString(R.string.corrupt_download); | ||||
|                     else | ||||
|                         text = getString(R.string.details_notinstalled); | ||||
|                     activity.runOnUiThread(new Runnable() { | ||||
| 
 | ||||
|                         @Override | ||||
|                         public void run() { | ||||
|                             // this must be on the main UI thread | ||||
|                             Toast.makeText(AppDetails.this, text, Toast.LENGTH_LONG).show(); | ||||
|                         } | ||||
|                     }); | ||||
|                     finished = true; | ||||
|                     break; | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Peter Serwylo
						Peter Serwylo