@Override
      protected void addButtons() {
        // Approve button:
        Item<?> approveButton = null;
        File approveImgFile =
            controller
                .getFileStorageProvider()
                .getProjectImageFile(
                    controller.getProject(), field.getApproveButtonImageRelativePath());
        if (FileHelpers.isReadableFile(approveImgFile))
          approveButton = new FileImageItem(approveImgFile);
        else
          approveButton =
              new ResourceImageItem(getContext().getResources(), R.drawable.button_tick_svg);
        approveButton.setBackgroundColor(
            ColourHelpers.ParseColour(field.getBackgroundColor(), Field.DEFAULT_BACKGROUND_COLOR));
        addButton(approveButton);

        // Discard button:
        Item<?> discardButton = null;
        File discardImgFile =
            controller
                .getFileStorageProvider()
                .getProjectImageFile(
                    controller.getProject(), field.getDiscardButtonImageRelativePath());
        if (FileHelpers.isReadableFile(discardImgFile))
          discardButton = new FileImageItem(discardImgFile);
        else
          discardButton =
              new ResourceImageItem(getContext().getResources(), R.drawable.button_delete_svg);
        discardButton.setBackgroundColor(
            ColourHelpers.ParseColour(field.getBackgroundColor(), Field.DEFAULT_BACKGROUND_COLOR));
        addButton(discardButton);
      }
      /**
       * Note: for now there is only the capture button, we might add other features (flash,
       * zooming, etc.) later
       *
       * @see
       *     uk.ac.ucl.excites.sapelli.collector.ui.fieldviews.CameraView.CameraButtonView#addButtons()
       */
      @Override
      protected void addButtons() {
        // Capture button:
        Item<?> captureButton;
        File captureImgFile =
            controller
                .getFileStorageProvider()
                .getProjectImageFile(
                    controller.getProject(), field.getCaptureButtonImageRelativePath());

        if (FileHelpers.isReadableFile(captureImgFile))
          captureButton = new FileImageItem(captureImgFile);
        else
          captureButton =
              new ResourceImageItem(getContext().getResources(), R.drawable.button_photo_svg);

        captureButton.setBackgroundColor(
            ColourHelpers.ParseColour(field.getBackgroundColor(), Field.DEFAULT_BACKGROUND_COLOR));
        addButton(captureButton);

        // Zoom buttons:
        Item<?> buttonZoomIn =
            new ResourceImageItem(getContext().getResources(), R.drawable.button_zoom_in_svg);
        Item<?> buttonZoomOut =
            new ResourceImageItem(getContext().getResources(), R.drawable.button_zoom_out_svg);

        buttonZoomIn.setBackgroundColor(
            ColourHelpers.ParseColour(field.getBackgroundColor(), Field.DEFAULT_BACKGROUND_COLOR));
        buttonZoomOut.setBackgroundColor(
            ColourHelpers.ParseColour(field.getBackgroundColor(), Field.DEFAULT_BACKGROUND_COLOR));

        addButton(buttonZoomIn);
        addButton(buttonZoomOut);
      }
      /** @param context */
      public CameraButtonView(Context context) {
        super(context);

        setOnItemClickListener(CameraView.this);

        // Layout:
        setBackgroundColor(Color.TRANSPARENT);
        setGravity(Gravity.CENTER);
        setPadding(0, collectorUI.getSpacingPx(), 0, 0);

        // Columns
        setNumColumns(getNumberOfColumns());

        // Images/buttons:

        // Button size, padding & background colour:
        this.setItemDimensionsPx(
            LayoutParams.MATCH_PARENT,
            ScreenMetrics.ConvertDipToPx(context, AndroidControlsUI.CONTROL_HEIGHT_DIP));
        this.buttonBackColor =
            ColourHelpers.ParseColour(
                controller.getCurrentForm().getControlBackgroundColor(),
                Form.DEFAULT_CONTROL_BACKGROUND_COLOR /*light gray*/);

        // The addButtons() should be called after the button parameters (size, padding etc.) have
        // been setup
        addButtons();

        // And finally:
        setAdapter(getAdapter()); // this is supposedly needed on Android v2.3.x (TODO test it)
      }