/* Copyright (c) 2009 Matthias Käppler * * 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.github.droidfu.activities; import java.util.List; import android.app.AlertDialog; import android.app.Dialog; import android.content.Intent; import android.content.DialogInterface.OnClickListener; import com.github.droidfu.dialogs.DialogClickListener; public interface BetterActivity { public int getWindowFeatures(); public void setProgressDialogTitleId(int progressDialogTitleId); public void setProgressDialogMsgId(int progressDialogMsgId); /** * @return true, if the activity is recovering from in interruption (i.e. * onRestoreInstanceState was called. */ public boolean isRestoring(); /** * @return true, if the activity is "soft-resuming", i.e. onResume has been * called without a prior call to onCreate */ public boolean isResuming(); /** * @return true, if the activity is launching, i.e. is going through * onCreate but is not restoring. */ public boolean isLaunching(); /** * Android doesn't distinguish between your Activity being paused by another * Activity of your own application, or by an Activity of an entirely * different application. This function only returns true, if your Activity * is being paused by an Activity of another app, thus hiding yours. * * @return true, if the Activity is being paused because an Activity of * another application received focus. */ public boolean isApplicationBroughtToBackground(); /** * Retrieves the current intent that was used to create or resume this * activity. If the activity received a call to onNewIntent (e.g. because it * was launched in singleTop mode), then the Intent passed to that method is * returned. Otherwise the returned Intent is the intent returned by * getIntent (which is the Intent which was used to initially launch this * activity). * * @return the current {@link Intent} */ public Intent getCurrentIntent(); public boolean isLandscapeMode(); public boolean isPortraitMode(); public AlertDialog newYesNoDialog(int titleResourceId, int messageResourceId, OnClickListener listener); public AlertDialog newInfoDialog(int titleResourceId, int messageResourceId); public AlertDialog newAlertDialog(int titleResourceId, int messageResourceId); /** * <p> * Creates a new error dialog, with the option to either dismiss or -- if an * email application is installed -- report the given error. Clicking the * report button will cause the app to collect diagnostic information, * compile it to a single text body, and launch the email application with * the error report being preset as the email's body. * </p> * <p> * For this to work, you must define the following string resources in your * application: * <ul> * <li>droidfu_dialog_button_send_error_report - The label of the button * used to report the error</li> * <li>droidfu_error_report_email_address - The email address where the * report should be sent</li> * <li>droidfu_error_report_email_subject - The subject line used in the * email</li> * </ul> * </p> * * @param titleResourceId * the string resource that should be used as the dialog title * @param error * the exception that should be displayed and/or reported * @return the dialog */ public AlertDialog newErrorHandlerDialog(int titleResourceId, Exception error); /** * <p> * Creates a new error dialog, with the option to either dismiss or -- if an * email application is installed -- report the given error. Clicking the * report button will cause the app to collect diagnostic information, * compile it to a single text body, and launch the email application with * the error report being preset as the email's body. * </p> * <p> * For this to work, you must define the following string resources in your * application: * <ul> * <li>droidfu_error_dialog_title - The dialog title</li> * <li>droidfu_dialog_button_send_error_report - The label of the button * used to report the error</li> * <li>droidfu_error_report_email_address - The email address where the * report should be sent</li> * <li>droidfu_error_report_email_subject - The subject line used in the * email</li> * </ul> * </p> * * @param error * the exception that should be displayed and/or reported * @return the dialog */ public AlertDialog newErrorHandlerDialog(Exception error); /** * Creates a new list style dialog from a list of objects. The toString() * method of any such object will be used to generate the list item's label. * * @param <T> * the type of the list items * @param dialogTitle * the title or null to disable the title * @param listItems * the list items * @param listener * the listener used for processing list item clicks * @param closeOnSelect * if true, the dialog will close when an item has been clicked * @return the dialog */ public <T> Dialog newListDialog(String title, final List<T> listItems, final DialogClickListener<T> listener, boolean closeOnSelect); }