VMF_MeetingInspectorViewController

@MainActor
class VMF_MeetingInspectorViewController : VMF_BaseViewController
extension VMF_MeetingInspectorViewController: MKMapViewDelegate

This displays one meeting.

  • This is the font to use for the format item key.

    Declaration

    Swift

    @MainActor
    private static let _formatKeyFont: UIFont?
  • This is the font to use for the format item name.

    Declaration

    Swift

    @MainActor
    private static let _formatNameFont: UIFont?
  • This is the font to use for the format item description.

    Declaration

    Swift

    @MainActor
    private static let _formatDescriptionFont: UIFont?
  • The duration of the open/close animation.

    Declaration

    Swift

    @MainActor
    private static let _openingAnimationPeriodInSeconds: TimeInterval
  • The width and height of the map

    Declaration

    Swift

    @MainActor
    private static let _mapRegionSizeInDegrees: CLLocationDegrees
  • This is how many display units wide, we make the format key column.

    Declaration

    Swift

    @MainActor
    private static let _formatKeyWidth: CGFloat
  • This is how many display units, vertically, will separate the top of a format item, with its predecessor.

    Declaration

    Swift

    @MainActor
    private static let _formatSeparatorSpace: CGFloat
  • This is how much “breathing room” we give stuff in a format item (display units).

    Declaration

    Swift

    @MainActor
    private static let _formatInternalSeparatorSpace: CGFloat
  • This is the height of the “Address” section of the in-person meeting display, when open.

    Declaration

    Swift

    @MainActor
    private static let _addressSectionOpenHeight: CGFloat
  • The image to use, for the bar button item, of a meeting that is selected for attendance.

    Declaration

    Swift

    @MainActor
    private static let _checkedImage: UIImage?
  • The image to use, for the bar button item, of a meeting that is not selected for attendance.

    Declaration

    Swift

    @MainActor
    private static let _uncheckedImage: UIImage?
  • The font to use for the “I Attend” bar button item.

    Declaration

    Swift

    @MainActor
    private static let _barButtonLabelFont: UIFont
  • Set to true, after our first layout. We use this to prevent unnecessary animation delays.

    Declaration

    Swift

    @MainActor
    private var _openSezMe: Bool
  • This references our map height constraint. We use it for expanding and collapsing the map.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var mapHeightConstraint: NSLayoutConstraint?
  • This references our in-person address height constraint. We use it for expanding and collapsing the map.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var addressHeightConstraint: NSLayoutConstraint?
  • Set to true, to open the formats section.

    Declaration

    Swift

    @MainActor
    var isFormatsOpen: Bool { get set }
  • Set to true, to open the formats section.

    Declaration

    Swift

    @MainActor
    var isLocationOpen: Bool { get set }
  • The meeting that this screen is displaying.

    Declaration

    Swift

    @MainActor
    var meeting: MeetingInstance?
  • The controller that “owns” this instance.

    Declaration

    Swift

    @MainActor
    var myController: (any VMF_EmbeddedTableControllerProtocol)?
  • This will allow us to add events to the Calendar, without leaving this app.

    Declaration

    Swift

    @MainActor
    let eventStore: EKEventStore
  • The label that displays the meeting name.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var meetingNameLabel: UILabel?
  • The label that displays the meeting start time and weekday.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var timeAndDayLabel: UILabel?
  • This label is displayed if the meeting is in progress.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var inProgressLabel: UILabel?
  • The label that displays the meeting timezone.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var timeZoneLabel: UILabel?
  • This contains any additional comments.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var commentsTextView: UITextView?
  • This contains the tappable links.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var linkContainer: UIView?
  • The vertical container for the phone button.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var phoneButtonContainer: UIView?
  • This is the phone in button’s label.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var phoneLabelButton: UILabel?
  • The vertical container for the globe button.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var globeButtonContainer: UIView?
  • This is the Web link button’s label.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var globeLabelButton: UILabel?
  • The vertical container for the video button.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var videoButtonContainer: UIView?
  • This is the video link button’s label.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var videoLabelButton: UILabel?
  • Contains any phone info that can’t be turned into a URL.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var phoneInfoTextView: UITextView?
  • This has any extra info for virtual meetings.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var virtualExtraInfoTextView: UITextView?
  • This contains the header for the in-person location information.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var inPersonHeader: UIView?
  • This is the disclosure triangle for the in-person section.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var inPersonDisclosureTriangle: UIImageView?
  • Contains the in-person meeting stuff.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var inPersonContainer: UIStackView?
  • The heading for the in-person meeting stuff.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var inPersonHeaderLabel: UILabel?
  • The text view that displays an address for in-person meetings.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var inPersonAddressTextView: UITextView?
  • This has any extra info for in-person meetings.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var inPersonExtraInfoLabel: UILabel?
  • The map view that displays the meeting location (if it has an in-person component).

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var locationMapView: MKMapView?
  • This contains the format header and disclosure triangle.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var formatHeader: UIView?
  • The heading for the format section.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var formatHeaderLabel: UILabel?
  • The disclosure triangle for the format section.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var formatHeaderDisclosureTriangle: UIImageView?
  • This contains individual formats.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var formatContainerView: UIView?
  • The navbar button to mark attendance.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var iAttendBarButton: UIBarButtonItem?
  • The navbar button to copy the URI.

    Declaration

    Swift

    @IBOutlet
    @MainActor
    weak var actionBarButton: UIBarButtonItem?

Computed Properties

  • This creates an attendance event for the next meeting start time.

    Note

    This sets the event in the meeting’s native timezone. The calendar is responsible for converting the TZ.

    Declaration

    Swift

    @MainActor
    var attendanceEvent: EKEvent? { get }

    Return Value

    a new EKEvent for the meeting, or nil.

  • This returns the valid activities that we can have, in our action sheet.

    Declaration

    Swift

    @MainActor
    var validActivities: [UIActivity] { get }

Static Functions

  • “Cleans” a URI.

    Declaration

    Swift

    @MainActor
    private static func _cleanURI(urlString inURLString: String?) -> String?

    Parameters

    urlString

    The URL, as a String. It can be optional.

    Return Value

    an optional String. This is the given URI, “cleaned up” (“https://” or “tel:” may be prefixed)

Base Class Overrides

  • Called when the view hierarchy has loaded.

    See more

    Declaration

    Swift

    @MainActor
    override func viewDidLoad()
  • Called before the screen appears.

    Declaration

    Swift

    @MainActor
    override func viewWillAppear(_ inIsAnimated: Bool)

    Parameters

    inIsAnimated

    True, if the appearance is animated.

  • Called before the screen disappears.

    Declaration

    Swift

    @MainActor
    override func viewWillDisappear(_ inIsAnimated: Bool)

    Parameters

    inIsAnimated

    True, if the disappearance is animated.

  • Called when the layout is done. We use this to set the “please animate” flag.

    Declaration

    Swift

    @MainActor
    override func viewDidLayoutSubviews()

Instance Methods

  • Sets the time and weekday (local) for the meeting.

    Declaration

    Swift

    @MainActor
    func setTimeAndWeekday()
  • Sets the time zone string (or hides it).

    Declaration

    Swift

    @MainActor
    func setTimeZone()
  • Initializes the map view.

    Declaration

    Swift

    @MainActor
    func setUpMap(_ inCoords: CLLocationCoordinate2D)

    Parameters

    inCoords

    The center coordinate for the map (the marker location).

  • Populates the formats section.

    Declaration

    Swift

    @MainActor
    func setUpFormats(_ inFormats: [SwiftBMLSDK_Parser.Meeting.Format])

    Parameters

    inFormats

    An array of format instances.

  • Sets up the bar button item, with the state of attendance.

    Declaration

    Swift

    @MainActor
    func setBarButton()
  • This displays the alert for links to Zoom, telling the user they need to download the app.

    Declaration

    Swift

    @MainActor
    func displayMacZoomAlert()

Callbacks

  • The phone in button was hit.

    Declaration

    Swift

    @IBAction
    @MainActor
    func phoneButtonHit(_: Any)
  • The globe button was hit.

    Declaration

    Swift

    @IBAction
    @MainActor
    func globeButtonHit(_: Any)
  • The video button was hit.

    Declaration

    Swift

    @IBAction
    @MainActor
    func videoButtonHit(_: Any)
  • The format header was hit (open or close the format section).

    Declaration

    Swift

    @IBAction
    @MainActor
    func formatSectionHeaderHit(_: Any)
  • The in-person location header was hit (open or close the location section).

    Declaration

    Swift

    @IBAction
    @MainActor
    func locationSectionHeaderHit(_: Any)
  • Called to handle action tasks.

    Declaration

    Swift

    @IBAction
    @MainActor
    func actionItemHit(_ inButton: UIBarButtonItem)

    Parameters

    inButton

    The action BarButtonItem

  • The “I Attend” bar button item was hit.

    Declaration

    Swift

    @objc
    @MainActor
    func iAttendHit(_: Any)

MKMapViewDelegate Conformance

  • This is called to fetch an annotation (marker) for the map.

    Declaration

    Swift

    @MainActor
    func mapView(_: MKMapView, viewFor inAnnotation: MKAnnotation) -> MKAnnotationView?

    Parameters

    viewFor

    The annotation we’re getting the marker for.

    Return Value

    The marker view for the annotation.