diff options
Diffstat (limited to 'ui/src/com/android/providers/downloads/ui')
-rw-r--r-- | ui/src/com/android/providers/downloads/ui/DialogDismissListener.java | 21 | ||||
-rwxr-xr-x | ui/src/com/android/providers/downloads/ui/TrampolineActivity.java | 33 |
2 files changed, 49 insertions, 5 deletions
diff --git a/ui/src/com/android/providers/downloads/ui/DialogDismissListener.java b/ui/src/com/android/providers/downloads/ui/DialogDismissListener.java new file mode 100644 index 00000000..e55caa82 --- /dev/null +++ b/ui/src/com/android/providers/downloads/ui/DialogDismissListener.java @@ -0,0 +1,21 @@ +/* + * Copyright (C) 2014 The CyanogenMod 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.providers.downloads.ui; + +interface DialogDismissListener { + public void onDialogDismiss(); +} diff --git a/ui/src/com/android/providers/downloads/ui/TrampolineActivity.java b/ui/src/com/android/providers/downloads/ui/TrampolineActivity.java index 8ada01b0..b4f2698e 100755 --- a/ui/src/com/android/providers/downloads/ui/TrampolineActivity.java +++ b/ui/src/com/android/providers/downloads/ui/TrampolineActivity.java @@ -41,7 +41,7 @@ import libcore.io.IoUtils; * Intercept all download clicks to provide special behavior. For example, * PackageInstaller really wants raw file paths. */ -public class TrampolineActivity extends Activity { +public class TrampolineActivity extends Activity implements DialogDismissListener { private static final String TAG_PAUSED = "paused"; private static final String TAG_FAILED = "failed"; @@ -125,7 +125,14 @@ public class TrampolineActivity extends Activity { sendBroadcast(intent); } + @Override + public void onDialogDismiss() { + finish(); + } + public static class PausedDialogFragment extends DialogFragment { + private DialogDismissListener mListener; + public static void show(FragmentManager fm, long id) { final PausedDialogFragment dialog = new PausedDialogFragment(); final Bundle args = new Bundle(); @@ -135,8 +142,15 @@ public class TrampolineActivity extends Activity { } @Override + public void onDetach() { + super.onDetach(); + mListener = null; + } + + @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final Context context = getActivity(); + mListener = (DialogDismissListener) getActivity(); final DownloadManager dm = (DownloadManager) context.getSystemService( Context.DOWNLOAD_SERVICE); @@ -165,13 +179,15 @@ public class TrampolineActivity extends Activity { @Override public void onDismiss(DialogInterface dialog) { super.onDismiss(dialog); - if (getActivity() != null) { - getActivity().finish(); + if (mListener != null) { + mListener.onDialogDismiss(); } } } public static class FailedDialogFragment extends DialogFragment { + private DialogDismissListener mListener; + public static void show(FragmentManager fm, long id, int reason) { final FailedDialogFragment dialog = new FailedDialogFragment(); final Bundle args = new Bundle(); @@ -182,8 +198,15 @@ public class TrampolineActivity extends Activity { } @Override + public void onDetach() { + super.onDetach(); + mListener = null; + } + + @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final Context context = getActivity(); + mListener = (DialogDismissListener) getActivity(); final DownloadManager dm = (DownloadManager) context.getSystemService( Context.DOWNLOAD_SERVICE); @@ -236,8 +259,8 @@ public class TrampolineActivity extends Activity { @Override public void onDismiss(DialogInterface dialog) { super.onDismiss(dialog); - if (getActivity() != null) { - getActivity().finish(); + if (mListener != null) { + mListener.onDialogDismiss(); } } } |