@Override public void onCreateContextMenu( ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, view, menuInfo); // Bail if not working with expandable long-press, or if not child if (!(menuInfo instanceof ExpandableListContextMenuInfo)) return; final ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) menuInfo; final int groupPosition = ExpandableListView.getPackedPositionGroup(info.packedPosition); final int childPosition = ExpandableListView.getPackedPositionChild(info.packedPosition); // Skip long-press on expandable parents if (childPosition == -1) return; final AccountDisplay account = (AccountDisplay) mAdapter.getGroup(groupPosition); final GroupDelta child = (GroupDelta) mAdapter.getChild(groupPosition, childPosition); // Ignore when selective syncing unsupported final int syncMode = getSyncMode(account); if (syncMode == SYNC_MODE_UNSUPPORTED) return; if (child != null) { showRemoveSync(menu, account, child, syncMode); } else { showAddSync(menu, account, syncMode); } }
private void dumpInternal(PrintWriter pw) { pw.println("DISPLAY MANAGER (dumpsys display)"); synchronized (mSyncRoot) { pw.println(" mOnlyCode=" + mOnlyCore); pw.println(" mSafeMode=" + mSafeMode); pw.println(" mPendingTraversal=" + mPendingTraversal); pw.println(" mGlobalDisplayState=" + Display.stateToString(mGlobalDisplayState)); pw.println(" mNextNonDefaultDisplayId=" + mNextNonDefaultDisplayId); pw.println(" mDefaultViewport=" + mDefaultViewport); pw.println(" mExternalTouchViewport=" + mExternalTouchViewport); pw.println(" mSingleDisplayDemoMode=" + mSingleDisplayDemoMode); pw.println(" mWifiDisplayScanRequestCount=" + mWifiDisplayScanRequestCount); IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " "); ipw.increaseIndent(); pw.println(); pw.println("Display Adapters: size=" + mDisplayAdapters.size()); for (DisplayAdapter adapter : mDisplayAdapters) { pw.println(" " + adapter.getName()); adapter.dumpLocked(ipw); } pw.println(); pw.println("Display Devices: size=" + mDisplayDevices.size()); for (DisplayDevice device : mDisplayDevices) { pw.println(" " + device.getDisplayDeviceInfoLocked()); device.dumpLocked(ipw); } final int logicalDisplayCount = mLogicalDisplays.size(); pw.println(); pw.println("Logical Displays: size=" + logicalDisplayCount); for (int i = 0; i < logicalDisplayCount; i++) { int displayId = mLogicalDisplays.keyAt(i); LogicalDisplay display = mLogicalDisplays.valueAt(i); pw.println(" Display " + displayId + ":"); display.dumpLocked(ipw); } final int callbackCount = mCallbacks.size(); pw.println(); pw.println("Callbacks: size=" + callbackCount); for (int i = 0; i < callbackCount; i++) { CallbackRecord callback = mCallbacks.valueAt(i); pw.println( " " + i + ": mPid=" + callback.mPid + ", mWifiDisplayScanRequested=" + callback.mWifiDisplayScanRequested); } if (mDisplayPowerController != null) { mDisplayPowerController.dump(pw); } } }
@Override public void mouseClicked(MouseEvent e) { if (tglbtnMouseMode.isSelected()) { tglbtnMouseMode.setText("Mode: Draw"); globeDisplayAdapter.setArmed(true); mapDisplayAdapter.setArmed(true); mapSelectionList.setEnabled(false); slider.setEnabled(false); btnStep.setEnabled(false); btnStepToMarker.setEnabled(false); resumeValue = -1; int diff = slider.getMaximum() - dbgPosIndex; if (diff != 0) { resumeValue = dbgPosIndex; nDebugSteps(diff); } } else { tglbtnMouseMode.setText("Mode: Move"); globeDisplayAdapter.setArmed(false); mapDisplayAdapter.setArmed(false); mapSelectionList.setEnabled(true); slider.setEnabled(true); btnStep.setEnabled(true); btnStepToMarker.setEnabled(true); if (resumeValue != -1) resetToIndex(resumeValue); } }
/** Resets the simulation to the beginning Prints CSV's of loaded position data */ private void initDebugRun() { dbgPosIndex = 0; dbgMarkerIndex = 0; slider.setValue(0); globeDisplayAdapter.clear(); mapDisplayAdapter.clear(); Point2D imageSize = new Point2D(mapBufferedImage.getWidth(), mapBufferedImage.getHeight()); locDataManager = new LocationDataManager( positionUpdateHandler, new LDMIOEmpty(), imageSize, new TriangleImagePositionLocator( imageSize, new IPLSettingsContainer( Double.parseDouble(textFieldTriDissimilarity.getText()), Double.parseDouble(textFieldDistFallofExp.getText()), Double.parseDouble(textFieldBadTriPen.getText()), Double.parseDouble(textFieldMinTriAngle.getText()), true))); locDataManager.setSpeedFiltering(false); trackLDMIO.printValuesAsCSV(System.out); }
/** * Inserts the dbgPosIndex's value in trackLDMIO into locDataManager, changes slider, * globeDisplayAdapter and increments dbgPosIndex * * @return if the current step was the last currently available */ private boolean debugStep() { if (dbgPosIndex == trackLDMIO.getAllGpsPoints().size()) return true; GpsPoint newp = trackLDMIO.getAllGpsPoints().get(dbgPosIndex); locDataManager.addPoint(newp); slider.setValue(dbgPosIndex); globeDisplayAdapter.addPosition(translateToGlobePosition(newp)); try { Marker newm = trackLDMIO.getAllMarkers().get(dbgMarkerIndex); if (newm.time <= newp.time) { try { Marker newmarker = locDataManager.addMarker(newm.imgpoint, newm.time); globeDisplayAdapter.addMarker(translateToGlobePosition(newmarker.realpoint)); mapDisplayAdapter.addMarker(translateToImagePosition(newmarker.imgpoint)); dbgMarkerIndex++; } catch (NoGpsDataAvailableException | PointNotInImageBoundsException e) { e.printStackTrace(); } } } catch (IndexOutOfBoundsException e) { System.err.println("debugStep called but last marker was already read"); } dbgPosIndex++; return false; }
@Override // Binder call public void dump(FileDescriptor fd, final PrintWriter pw, String[] args) { if (mContext == null || mContext.checkCallingOrSelfPermission(Manifest.permission.DUMP) != PackageManager.PERMISSION_GRANTED) { pw.println( "Permission Denial: can't dump DisplayManager from from pid=" + Binder.getCallingPid() + ", uid=" + Binder.getCallingUid()); return; } pw.println("DISPLAY MANAGER (dumpsys display)"); synchronized (mSyncRoot) { pw.println(" mHeadless=" + mHeadless); pw.println(" mOnlyCode=" + mOnlyCore); pw.println(" mSafeMode=" + mSafeMode); pw.println(" mPendingTraversal=" + mPendingTraversal); pw.println( " mAllDisplayBlankStateFromPowerManager=" + mAllDisplayBlankStateFromPowerManager); pw.println(" mNextNonDefaultDisplayId=" + mNextNonDefaultDisplayId); pw.println(" mDefaultViewport=" + mDefaultViewport); pw.println(" mExternalTouchViewport=" + mExternalTouchViewport); pw.println(" mSingleDisplayDemoMode=" + mSingleDisplayDemoMode); IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " "); ipw.increaseIndent(); pw.println(); pw.println("Display Adapters: size=" + mDisplayAdapters.size()); for (DisplayAdapter adapter : mDisplayAdapters) { pw.println(" " + adapter.getName()); adapter.dumpLocked(ipw); } pw.println(); pw.println("Display Devices: size=" + mDisplayDevices.size()); for (DisplayDevice device : mDisplayDevices) { pw.println(" " + device.getDisplayDeviceInfoLocked()); device.dumpLocked(ipw); } final int logicalDisplayCount = mLogicalDisplays.size(); pw.println(); pw.println("Logical Displays: size=" + logicalDisplayCount); for (int i = 0; i < logicalDisplayCount; i++) { int displayId = mLogicalDisplays.keyAt(i); LogicalDisplay display = mLogicalDisplays.valueAt(i); pw.println(" Display " + displayId + ":"); display.dumpLocked(ipw); } } }
protected void handleRemoveSync( final AccountDisplay account, final GroupDelta child, final int syncMode, CharSequence title) { final boolean shouldSyncUngrouped = account.mUngrouped.getShouldSync(); if (syncMode == SYNC_MODE_EVERYTHING && shouldSyncUngrouped && !child.equals(account.mUngrouped)) { // Warn before removing this group when it would cause ungrouped to stop syncing final AlertDialog.Builder builder = new AlertDialog.Builder(this); final CharSequence removeMessage = this.getString(R.string.display_warn_remove_ungrouped, title); builder.setTitle(R.string.menu_sync_remove); builder.setMessage(removeMessage); builder.setNegativeButton(android.R.string.cancel, null); builder.setPositiveButton( android.R.string.ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // Mark both this group and ungrouped to stop syncing account.setShouldSync(account.mUngrouped, false); account.setShouldSync(child, false); mAdapter.notifyDataSetChanged(); } }); builder.show(); } else { // Mark this group to not sync account.setShouldSync(child, false); mAdapter.notifyDataSetChanged(); } }
/** * Handle any clicks on {@link ExpandableListAdapter} children, which usually mean toggling its * visible state. */ @Override public boolean onChildClick( ExpandableListView parent, View view, int groupPosition, int childPosition, long id) { final CheckBox checkbox = (CheckBox) view.findViewById(android.R.id.checkbox); final AccountDisplay account = (AccountDisplay) mAdapter.getGroup(groupPosition); final GroupDelta child = (GroupDelta) mAdapter.getChild(groupPosition, childPosition); if (child != null) { checkbox.toggle(); child.putVisible(checkbox.isChecked()); } else { // Open context menu for bringing back unsynced this.openContextMenu(view); } return true; }
@Override public Void call() throws Exception { Point2D p = locDataManager.getLastImagePoint(); if (p != null) mapDisplayAdapter.addPosition(translateToImagePosition(p)); return null; }
@Override public void onLoaderReset(Loader<AccountSet> loader) { mAdapter.setAccounts(null); }
@Override public void onLoadFinished(Loader<AccountSet> loader, AccountSet data) { mAdapter.setAccounts(data); }
private void registerDisplayAdapterLocked(DisplayAdapter adapter) { mDisplayAdapters.add(adapter); adapter.registerLocked(); }