ObjectivelyMVC
Object oriented MVC framework for SDL3 and GNU C
Loading...
Searching...
No Matches
NavigationViewController.c File Reference
#include <assert.h>
#include "NavigationViewController.h"

Go to the source code of this file.

Macros

#define _Class   _NavigationViewController
 

Functions

Class * _NavigationViewController (void)
 
static NavigationViewControllerinit (NavigationViewController *self)
 
static void initialize (Class *clazz)
 
static void popToRootViewController (NavigationViewController *self)
 
static void popToViewController (NavigationViewController *self, const ViewController *viewController)
 
static void popViewController (NavigationViewController *self)
 
static void pushViewController (NavigationViewController *self, ViewController *viewController)
 
static ViewControllerrootViewController (const NavigationViewController *self)
 
static ViewControllertopViewController (const NavigationViewController *self)
 

Macro Definition Documentation

◆ _Class

#define _Class   _NavigationViewController

Definition at line 28 of file NavigationViewController.c.

Function Documentation

◆ _NavigationViewController()

Class * _NavigationViewController ( void  )

Definition at line 150 of file NavigationViewController.c.

150 {
151 static Class *clazz;
152 static Once once;
153
154 do_once(&once, {
155 clazz = _initialize(&(const ClassDef) {
156 .name = "NavigationViewController",
157 .superclass = _ViewController(),
158 .instanceSize = sizeof(NavigationViewController),
159 .interfaceOffset = offsetof(NavigationViewController, interface),
160 .interfaceSize = sizeof(NavigationViewControllerInterface),
162 });
163 });
164
165 return clazz;
166}
static void initialize(Class *clazz)
Class * _ViewController(void)
Navigation controllers arrange their child controllers as a stack to facilitate navigation between th...

◆ init()

static NavigationViewController * init ( NavigationViewController self)
static

Definition at line 38 of file NavigationViewController.c.

38 {
39
40 return (NavigationViewController *) super(ViewController, self, init);
41}
static NavigationViewController * init(NavigationViewController *self)
A ViewController manages a View and its descendants.

◆ initialize()

static void initialize ( Class *  clazz)
static
See also
Class::initialize(Class *)

Definition at line 135 of file NavigationViewController.c.

135 {
136
137 ((NavigationViewControllerInterface *) clazz->interface)->init = init;
138 ((NavigationViewControllerInterface *) clazz->interface)->pushViewController = pushViewController;
139 ((NavigationViewControllerInterface *) clazz->interface)->popToRootViewController = popToRootViewController;
140 ((NavigationViewControllerInterface *) clazz->interface)->popToViewController = popToViewController;
141 ((NavigationViewControllerInterface *) clazz->interface)->popViewController = popViewController;
142 ((NavigationViewControllerInterface *) clazz->interface)->rootViewController = rootViewController;
143 ((NavigationViewControllerInterface *) clazz->interface)->topViewController = topViewController;
144}
static ViewController * rootViewController(const NavigationViewController *self)
static ViewController * topViewController(const NavigationViewController *self)
static void popToViewController(NavigationViewController *self, const ViewController *viewController)
static void popToRootViewController(NavigationViewController *self)
static void pushViewController(NavigationViewController *self, ViewController *viewController)
static void popViewController(NavigationViewController *self)
void pushViewController(NavigationViewController *self, ViewController *viewController)
Pushes the specified ViewController to the top of the stack.

◆ popToRootViewController()

static void popToRootViewController ( NavigationViewController self)
static

Definition at line 68 of file NavigationViewController.c.

68 {
69
73 }
74}

◆ popToViewController()

static void popToViewController ( NavigationViewController self,
const ViewController viewController 
)
static

Definition at line 80 of file NavigationViewController.c.

80 {
81
83 while ((topViewController = $(self, topViewController))) {
84
85 if (topViewController == viewController) {
86 break;
87 }
88
89 $(self, popViewController);
90 }
91}

◆ popViewController()

static void popViewController ( NavigationViewController self)
static

Definition at line 97 of file NavigationViewController.c.

97 {
98
100 if (topViewController) {
102 }
103
104 ViewController *this = (ViewController *) self;
105 ViewController *that = $(self, topViewController);
106
107 if (that) {
108 $(that, viewWillAppear);
109 $(this->view, addSubview, that->view);
110 $(that, viewDidAppear);
111 }
112}
static void addSubview(View *self, View *subview)
Definition PageView.c:49
static void removeChildViewController(ViewController *self, ViewController *childViewController)
static void viewWillAppear(ViewController *self)
static void viewDidAppear(ViewController *self)
View * view
The main view.

◆ pushViewController()

static void pushViewController ( NavigationViewController self,
ViewController viewController 
)
static

Definition at line 47 of file NavigationViewController.c.

47 {
48
49 assert(viewController);
50
51 ViewController *this = (ViewController *) self;
52
55
57 $(this->view, removeSubview, topViewController->view);
59 }
60
61 $(this, addChildViewController, viewController);
62}
static void removeSubview(View *self, View *subview)
Definition PageView.c:72
static void addChildViewController(ViewController *self, ViewController *childViewController)
static void viewWillDisappear(ViewController *self)
static void viewDidDisappear(ViewController *self)

◆ rootViewController()

static ViewController * rootViewController ( const NavigationViewController self)
static

Definition at line 118 of file NavigationViewController.c.

118 {
119 return (ViewController *) $((Array *) self->viewController.childViewControllers, firstObject);
120}
ViewController viewController
The superclass.
Array * childViewControllers
The child view controllers.

◆ topViewController()

static ViewController * topViewController ( const NavigationViewController self)
static

Definition at line 126 of file NavigationViewController.c.

126 {
127 return (ViewController *) $((Array *) self->viewController.childViewControllers, lastObject);
128}