package com.smartisanos.sidebar.action; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.view.WindowManager; import com.smartisanos.sidebar.SidebarController; import com.smartisanos.sidebar.util.LOG; import com.smartisanos.sidebar.R; import com.smartisanos.sidebar.view.SidebarRootView; import com.smartisanos.sidebar.view.SidebarRootView.DragView; import com.smartisanos.sidebar.view.Trash; public class UninstallAction { private static final LOG log = LOG.getInstance(UninstallAction.class); private Context mContext; private DragView mDragItem; private AlertDialog mUninstallDialog; private boolean isCancelRun = false; public UninstallAction(Context context, DragView dragView) { mContext = context; mDragItem = dragView; } public void dismissDialog() { if (mUninstallDialog != null) { mUninstallDialog.dismiss(); } } public void showUninstallDialog() { if(mUninstallDialog != null && mUninstallDialog.isShowing()){ return ; } String content = mContext.getString(R.string.uninstall_app_dialog_text); content = String.format(content, mDragItem.getDisplayName()); AlertDialog.Builder builder = new AlertDialog.Builder(mContext, AlertDialog.THEME_DEVICE_DEFAULT_LIGHT); builder.setTitle(R.string.uninstall_app_dialog_title); builder.setMessage(content); builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { mDragItem.delelte(); uninstallAnim(); } }); builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { isCancelRun = true; } }); builder.setOnCancelListener(new DialogInterface.OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { isCancelRun = true; } }); builder.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { mUninstallDialog = null; if(isCancelRun) { isCancelRun = false; cancelAction(); } } }); mUninstallDialog = builder.create(); SidebarRootView view = SidebarController.getInstance(mContext).getSidebarRootView(); mUninstallDialog.getWindow().getAttributes().type = WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL; mUninstallDialog.getWindow().getAttributes().token = view.getWindowToken(); mUninstallDialog.show(); } private void cancelAction() { SidebarRootView rootView = SidebarController.getInstance(mContext).getSidebarRootView(); Trash trash = rootView.getTrash(); if (trash == null) { log.error("cancelAction failed by trash is null"); return; } trash.stopRock(); rootView.dropDrag(); } private void uninstallAnim() { SidebarRootView rootView = SidebarController.getInstance(mContext).getSidebarRootView(); if (rootView == null) { log.error("uninstallAnim failed by rootView is null"); return; } Trash trash = rootView.getTrash(); if (trash == null) { log.error("uninstallAnim failed by trash is null"); return; } trash.stopRock(); rootView.deleteDrag(); } }