コード例 #1
1
  @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);
      }
    }
  }
コード例 #3
0
          @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);
            }
          }
コード例 #4
0
    /** 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);
    }
コード例 #5
0
    /**
     * 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;
    }
コード例 #6
0
  @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);
      }
    }
  }
コード例 #7
0
 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();
   }
 }
コード例 #8
0
  /**
   * 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;
  }
コード例 #9
0
          @Override
          public Void call() throws Exception {
            Point2D p = locDataManager.getLastImagePoint();

            if (p != null) mapDisplayAdapter.addPosition(translateToImagePosition(p));
            return null;
          }
コード例 #10
0
 @Override
 public void onLoaderReset(Loader<AccountSet> loader) {
   mAdapter.setAccounts(null);
 }
コード例 #11
0
 @Override
 public void onLoadFinished(Loader<AccountSet> loader, AccountSet data) {
   mAdapter.setAccounts(data);
 }
コード例 #12
0
 private void registerDisplayAdapterLocked(DisplayAdapter adapter) {
   mDisplayAdapters.add(adapter);
   adapter.registerLocked();
 }