OSDN Git Service

Extract context_menu_fix to constant
[android-x86/packages-apps-Taskbar.git] / app / src / main / java / com / farmerbb / taskbar / activity / DashboardActivity.java
index f8e0ad7..5cc108d 100644 (file)
@@ -26,13 +26,10 @@ import android.appwidget.AppWidgetProviderInfo;
 import android.content.ActivityNotFoundException;
 import android.content.BroadcastReceiver;
 import android.content.Context;
-import android.content.DialogInterface;
 import android.content.Intent;
-import android.content.IntentFilter;
-import android.hardware.display.DisplayManager;
+import android.content.SharedPreferences;
+import android.os.Build;
 import android.os.Bundle;
-import android.support.v4.content.LocalBroadcastManager;
-import android.view.Display;
 import android.view.KeyEvent;
 import android.view.MotionEvent;
 import android.view.WindowManager;
@@ -40,26 +37,32 @@ import android.widget.FrameLayout;
 import android.widget.LinearLayout;
 
 import com.farmerbb.taskbar.R;
+import com.farmerbb.taskbar.helper.DashboardHelper;
+import com.farmerbb.taskbar.util.DisplayInfo;
+import com.farmerbb.taskbar.helper.LauncherHelper;
 import com.farmerbb.taskbar.util.U;
 
+import static com.farmerbb.taskbar.util.Constants.*;
+
 public class DashboardActivity extends Activity {
 
     private AppWidgetManager mAppWidgetManager;
     private AppWidgetHost mAppWidgetHost;
 
-    int REQUEST_PICK_APPWIDGET = 456;
-    int REQUEST_CREATE_APPWIDGET = 789;
-
-    boolean shouldFinish = true;
+    private final int REQUEST_PICK_APPWIDGET = 456;
+    private final int REQUEST_CREATE_APPWIDGET = 789;
 
-    int cellId = -1;
+    private boolean shouldFinish = true;
+    private boolean shouldCollapse = true;
+    private boolean contextMenuFix = false;
+    private int cellId = -1;
 
     private BroadcastReceiver addWidgetReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
             mAppWidgetManager = AppWidgetManager.getInstance(context);
-            mAppWidgetHost = new AppWidgetHost(context, intent.getIntExtra("appWidgetId", -1));
-            cellId = intent.getIntExtra("cellId", -1);
+            mAppWidgetHost = new AppWidgetHost(context, intent.getIntExtra(EXTRA_APPWIDGET_ID, -1));
+            cellId = intent.getIntExtra(EXTRA_CELL_ID, -1);
 
             int appWidgetId = mAppWidgetHost.allocateAppWidgetId();
             Intent pickIntent = new Intent(AppWidgetManager.ACTION_APPWIDGET_PICK);
@@ -67,8 +70,9 @@ public class DashboardActivity extends Activity {
 
             try {
                 startActivityForResult(pickIntent, REQUEST_PICK_APPWIDGET);
+                U.sendBroadcast(DashboardActivity.this, ACTION_TEMP_HIDE_TASKBAR);
             } catch (ActivityNotFoundException e) {
-                U.showToast(DashboardActivity.this, R.string.lock_device_not_supported);
+                U.showToast(DashboardActivity.this, R.string.tb_lock_device_not_supported);
                 finish();
             }
 
@@ -79,28 +83,22 @@ public class DashboardActivity extends Activity {
     private BroadcastReceiver removeWidgetReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(final Context context, Intent intent) {
-            cellId = intent.getIntExtra("cellId", -1);
+            cellId = intent.getIntExtra(EXTRA_CELL_ID, -1);
 
             AlertDialog.Builder builder = new AlertDialog.Builder(DashboardActivity.this);
-            builder.setTitle(R.string.remove_widget)
-                    .setMessage(R.string.are_you_sure)
-                    .setNegativeButton(R.string.action_cancel, new DialogInterface.OnClickListener() {
-                        @Override
-                        public void onClick(DialogInterface dialog, int which) {
-                            LocalBroadcastManager.getInstance(DashboardActivity.this).sendBroadcast(new Intent("com.farmerbb.taskbar.REMOVE_WIDGET_COMPLETED"));
-
-                            shouldFinish = true;
-                        }
+            builder.setTitle(R.string.tb_remove_widget)
+                    .setMessage(R.string.tb_are_you_sure)
+                    .setNegativeButton(R.string.tb_action_cancel, (dialog, which) -> {
+                        U.sendBroadcast(DashboardActivity.this, ACTION_REMOVE_WIDGET_COMPLETED);
+
+                        shouldFinish = true;
                     })
-                    .setPositiveButton(R.string.action_ok, new DialogInterface.OnClickListener() {
-                        @Override
-                        public void onClick(DialogInterface dialog, int which) {
-                            Intent intent = new Intent("com.farmerbb.taskbar.REMOVE_WIDGET_COMPLETED");
-                            intent.putExtra("cellId", cellId);
-                            LocalBroadcastManager.getInstance(DashboardActivity.this).sendBroadcast(intent);
-
-                            shouldFinish = true;
-                        }
+                    .setPositiveButton(R.string.tb_action_ok, (dialog, which) -> {
+                        Intent intent1 = new Intent(ACTION_REMOVE_WIDGET_COMPLETED);
+                        intent1.putExtra(EXTRA_CELL_ID, cellId);
+                        U.sendBroadcast(DashboardActivity.this, intent1);
+
+                        shouldFinish = true;
                     });
 
             AlertDialog dialog = builder.create();
@@ -114,30 +112,37 @@ public class DashboardActivity extends Activity {
     private BroadcastReceiver finishReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
+            shouldCollapse = false;
+
+            if(contextMenuFix)
+                U.startFreeformHack(DashboardActivity.this);
+
             finish();
         }
     };
 
-    @SuppressWarnings("deprecation")
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
+        contextMenuFix = getIntent().hasExtra(EXTRA_CONTEXT_MENU_FIX);
+
         // Detect outside touches, and finish the activity when one is detected
         getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
         getWindow().setFlags(WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
 
-        DisplayManager dm = (DisplayManager) getSystemService(DISPLAY_SERVICE);
-        Display display = dm.getDisplay(Display.DEFAULT_DISPLAY);
+        DisplayInfo display = U.getDisplayInfo(this);
 
-        setContentView(R.layout.incognito);
+        setContentView(R.layout.tb_incognito);
 
-        LinearLayout layout = (LinearLayout) findViewById(R.id.incognitoLayout);
-        layout.setLayoutParams(new FrameLayout.LayoutParams(display.getWidth(), display.getHeight()));
+        LinearLayout layout = findViewById(R.id.incognitoLayout);
+        layout.setLayoutParams(new FrameLayout.LayoutParams(display.width, display.height));
 
-        LocalBroadcastManager.getInstance(this).registerReceiver(addWidgetReceiver, new IntentFilter("com.farmerbb.taskbar.ADD_WIDGET_REQUESTED"));
-        LocalBroadcastManager.getInstance(this).registerReceiver(removeWidgetReceiver, new IntentFilter("com.farmerbb.taskbar.REMOVE_WIDGET_REQUESTED"));
-        LocalBroadcastManager.getInstance(this).registerReceiver(finishReceiver, new IntentFilter("com.farmerbb.taskbar.DASHBOARD_DISAPPEARING"));
+        U.registerReceiver(this, addWidgetReceiver, ACTION_ADD_WIDGET_REQUESTED);
+        U.registerReceiver(this, removeWidgetReceiver, ACTION_REMOVE_WIDGET_REQUESTED);
+        U.registerReceiver(this, finishReceiver, ACTION_DASHBOARD_DISAPPEARING);
+
+        if(!DashboardHelper.getInstance().isDashboardOpen()) finish();
     }
 
     @Override
@@ -148,7 +153,11 @@ public class DashboardActivity extends Activity {
 
     @Override
     public void onBackPressed() {
-        LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent("com.farmerbb.taskbar.HIDE_DASHBOARD"));
+        if(contextMenuFix) {
+            U.startFreeformHack(this);
+        }
+
+        U.sendBroadcast(this, ACTION_HIDE_DASHBOARD);
     }
 
     @Override
@@ -161,21 +170,42 @@ public class DashboardActivity extends Activity {
         return super.dispatchKeyShortcutEvent(event);
     }
 
+ // @Override
+    public void onTopResumedActivityChanged(boolean isTopResumedActivity) {
+        if(!isTopResumedActivity)
+            performOnPauseLogic();
+    }
+
     @Override
     protected void onPause() {
         super.onPause();
 
-        if(shouldFinish)
+        if(Build.VERSION.SDK_INT <= Build.VERSION_CODES.P)
+            performOnPauseLogic();
+    }
+
+    private void performOnPauseLogic() {
+        if(shouldFinish) {
+            if(shouldCollapse) {
+                if(U.shouldCollapse(this, true)) {
+                    U.sendBroadcast(this, ACTION_HIDE_TASKBAR);
+                } else {
+                    U.sendBroadcast(this, ACTION_HIDE_START_MENU);
+                }
+            }
+
+            contextMenuFix = false;
             onBackPressed();
+        }
     }
 
     @Override
     protected void onDestroy() {
         super.onDestroy();
 
-        LocalBroadcastManager.getInstance(this).unregisterReceiver(addWidgetReceiver);
-        LocalBroadcastManager.getInstance(this).unregisterReceiver(removeWidgetReceiver);
-        LocalBroadcastManager.getInstance(this).unregisterReceiver(finishReceiver);
+        U.unregisterReceiver(this, addWidgetReceiver);
+        U.unregisterReceiver(this, removeWidgetReceiver);
+        U.unregisterReceiver(this, finishReceiver);
     }
 
     @Override
@@ -186,13 +216,16 @@ public class DashboardActivity extends Activity {
             } else if(requestCode == REQUEST_CREATE_APPWIDGET) {
                 createWidget(data);
             }
-        } else if(resultCode == RESULT_CANCELED && data != null) {
-            int appWidgetId = data.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, -1);
-            if(appWidgetId != -1) {
-                mAppWidgetHost.deleteAppWidgetId(appWidgetId);
+        } else if(resultCode == RESULT_CANCELED) {
+            if(data != null) {
+                int appWidgetId = data.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, -1);
+                if(appWidgetId != -1) {
+                    mAppWidgetHost.deleteAppWidgetId(appWidgetId);
+                }
             }
 
-            LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent("com.farmerbb.taskbar.ADD_WIDGET_COMPLETED"));
+            U.sendBroadcast(this, ACTION_ADD_WIDGET_COMPLETED);
+            U.sendBroadcast(this, ACTION_TEMP_SHOW_TASKBAR);
 
             shouldFinish = true;
         }
@@ -208,6 +241,12 @@ public class DashboardActivity extends Activity {
             intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
             startActivityForResult(intent, REQUEST_CREATE_APPWIDGET);
 
+            SharedPreferences pref = U.getSharedPreferences(this);
+            if(LauncherHelper.getInstance().isOnHomeScreen(this)
+                    && (!pref.getBoolean(PREF_TASKBAR_ACTIVE, false)
+                    || pref.getBoolean(PREF_IS_HIDDEN, false)))
+                pref.edit().putBoolean(PREF_DONT_STOP_DASHBOARD, true).apply();
+
             shouldFinish = false;
         } else {
             createWidget(data);
@@ -215,10 +254,15 @@ public class DashboardActivity extends Activity {
     }
 
     private void createWidget(Intent data) {
-        Intent intent = new Intent("com.farmerbb.taskbar.ADD_WIDGET_COMPLETED");
-        intent.putExtra("appWidgetId", data.getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, -1));
-        intent.putExtra("cellId", cellId);
-        LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
+        Intent intent = new Intent(ACTION_ADD_WIDGET_COMPLETED);
+        intent.putExtra(
+                EXTRA_APPWIDGET_ID,
+                data.getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, -1)
+        );
+        intent.putExtra(EXTRA_CELL_ID, cellId);
+
+        U.sendBroadcast(this, intent);
+        U.sendBroadcast(this, ACTION_TEMP_SHOW_TASKBAR);
 
         shouldFinish = true;
     }