Classes

The following classes are available globally.

Main App Delegate

  • This is the original app delegate part of the app (starting point). We are actually using Scene Delegate, but this is a good place to use as a “fulcrum.”

    See more

    Declaration

    Swift

    @main
    class VMF_AppDelegate : UIResponder
    extension VMF_AppDelegate: UIApplicationDelegate

Main Scene Delegate

  • This class has the Scene Delegate functionality.

    See more

    Declaration

    Swift

    class VMF_SceneDelegate : UIResponder, UIWindowSceneDelegate

Special Button for “Tap and Hold”

  • This allows single taps, or hold to repeat (like steppers).

    See more

    Declaration

    Swift

    class VMF_TapHoldButton : UIControl

A Special URL Button Class

  • This is a special button that has a string and a URL. This class lets us define them in IB.

    See more

    Declaration

    Swift

    class VMF_URLButton : UIButton

Page View Controller

Annotation Class

  • This handles the marker annotation for the main center.

    See more

    Declaration

    Swift

    class VMF_MapAnnotation : NSObject, MKAnnotation

Marker Class

  • This handles our map marker.

    See more

    Declaration

    Swift

    class VMF_MapMarker : MKAnnotationView

Persistent Test Harness Settings

Base View Controller for All Views

Custom Table Cell View

  • This provides one table cell for the main table of meetings.

    See more

    Declaration

    Swift

    class VMF_TableCell : UITableViewCell

Embedded Table View Controller

About View Controller

Attendance Tab View Controller

Search View Controller

  • This is the main view controller for the weekday/time selector tab.

    QUICK OVERVIEW

    The way that the data is set up, we have “day indexes (1-7), and "time slots” (varies, per day).

    All times are mapped to the user’s local timezone, regardless of the start time in the meeting’s “native” timezone.

    The instance of this class will have a VMF_DayTimeSearchPageViewController embedded (also the VMF_AttendanceViewController class, but that one disables the page view controller), which allows the user to swipe-select pages of meetings.

    DAY INDEXES

    These represent 0 (In Progress), 1 (Sunday), through 7 (Saturday), or 8 (Search Mode).

    Mode 0 (In Progress)

    In this mode, there is no “time index,” and the screen displays all meetings that are in progress, regardless of when they started.

    Mode 1 -> 7

    If the day index is 1 -> 7, the screen displays whatever time index, within that day, is selected.

    The day index is stored in Sunday -> Saturday (the database native scheme), but are mapped to the local week, upon display.

    In this mode, the day index and time index are irrelevant. All possible meetings are displayed, then are filtered, “live,” as text is entered into the text entry field.

    TIME INDEXES

    Each day has “time slots.” These are groupings of times, where meetings start (1 or more). Each “time slot” is a separate group of meetings that all begin at the same time.

    In regular weekdays (day index 1 -> 7), only one “time slot” is shown at a time. Only the meetings that begin at the same time are shown.

    If possible, the user’s currently selected time index is honored, and we try to match the time, when changing selected days. It is also preserved, when entering Mode 0 or Mode 8.

    SELECTING FOR ATTENDANCE

    It is possible for a user to indicate that they attend a meeting, by double-tapping on a meeting in the list, or by selecting “I Attend,” in the meeting inspector screen.

    You can bring in a separate screen, that contains only the meetings that you attend. This is accessed from the chackmark bar button item, in the upper right.

    See more

    Declaration

    Swift

    class VMF_MainViewController : VMF_BaseViewController, VMF_MasterTableControllerProtocol
    extension VMF_MainViewController: UIPageViewControllerDataSource
    extension VMF_MainViewController: UIPageViewControllerDelegate
    extension VMF_MainViewController: UIPickerViewDataSource
    extension VMF_MainViewController: UIPickerViewDelegate

Meeting Inspector View Controller

Settings View Controller

  • This displays the settings screen.

    NOTE: You will see a double-tap gesture recognizer in the IB file.

    This “eats” double-taps. It prevents the switch from doing an “about face,” if the user is too fast.

    The single-tap gesture recognizer does the same thing, but is the principal trigger.

    We use gesture recognizers, instead of controls. Messes with the accessibility a bit, but the delay in responding, means that the user can accidentally trigger multiple switches.

    See more

    Declaration

    Swift

    class VMF_SettingsViewController : VMF_BaseViewController