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;
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);
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();
}
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();
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
@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
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
} 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;
}
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);
}
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;
}