Add uiDateTimePickerTime() APIs

This commit is contained in:
cody271 2018-02-19 22:39:44 -08:00
parent 2768fef3ce
commit bc14042935
6 changed files with 178 additions and 0 deletions

View File

@ -40,3 +40,15 @@ uiDateTimePicker *uiNewTimePicker(void)
{
return finishNewDateTimePicker(NSHourMinuteSecondDatePickerElementFlag);
}
void uiDateTimePickerTime(uiDateTimePicker *d, struct tm *time)
{
}
void uiDateTimePickerSetTime(uiDateTimePicker *d, const struct tm *time)
{
}
void uiDateTimePickerOnChanged(uiDateTimePicker *d, void (*f)(uiDateTimePicker *, void *), void *data)
{
}

View File

@ -23,6 +23,11 @@ _add_example(histogram
${_EXAMPLE_RESOURCES_RC}
)
_add_example(datetime
datetime/main.c
${_EXAMPLE_RESOURCES_RC}
)
_add_example(cpp-multithread
cpp-multithread/main.cpp
${_EXAMPLE_RESOURCES_RC}
@ -53,4 +58,5 @@ add_custom_target(examples
histogram
cpp-multithread
drawtext
datetime
timer)

132
examples/datetime/main.c Normal file
View File

@ -0,0 +1,132 @@
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include "../../ui.h"
uiDateTimePicker *dtboth, *dtdate, *dttime;
const char * timeFormat(uiDateTimePicker *d)
{
const char *fmt;
if (d == dtboth)
fmt = "%c";
else if (d == dtdate)
fmt = "%x";
else if (d == dttime)
fmt = "%X";
else
fmt = "";
return fmt;
}
void onChanged(uiDateTimePicker *d, void *data)
{
struct tm time;
char buf[64];
uiDateTimePickerTime(d, &time);
strftime(buf, sizeof(buf), timeFormat(d), &time);
uiLabelSetText(uiLabel(data), buf);
}
void onClicked(uiButton *b, void *data)
{
intptr_t now;
time_t t;
struct tm tmbuf;
now = (intptr_t) data;
t = 0;
if (now)
t = time(NULL);
tmbuf = *localtime(&t);
if (now) {
uiDateTimePickerSetTime(dtdate, &tmbuf);
uiDateTimePickerSetTime(dttime, &tmbuf);
}
else
uiDateTimePickerSetTime(dtboth, &tmbuf);
}
int onClosing(uiWindow *w, void *data)
{
uiQuit();
return 1;
}
int main(void)
{
uiInitOptions o;
uiWindow *w;
uiGrid *g;
uiLabel *l;
uiButton *b;
memset(&o, 0, sizeof (uiInitOptions));
if (uiInit(&o) != NULL)
abort();
w = uiNewWindow("Date / Time", 320, 240, 0);
uiWindowSetMargined(w, 1);
g = uiNewGrid();
uiGridSetPadded(g, 1);
uiWindowSetChild(w, uiControl(g));
dtboth = uiNewDateTimePicker();
dtdate = uiNewDatePicker();
dttime = uiNewTimePicker();
uiGridAppend(g, uiControl(dtboth),
0, 0, 2, 1,
1, uiAlignFill, 0, uiAlignFill);
uiGridAppend(g, uiControl(dtdate),
0, 1, 1, 1,
1, uiAlignFill, 0, uiAlignFill);
uiGridAppend(g, uiControl(dttime),
1, 1, 1, 1,
1, uiAlignFill, 0, uiAlignFill);
uiGridAppend(g, uiControl(uiNewVerticalSeparator()),
0, 2, 2, 1,
1, uiAlignFill, 0, uiAlignFill);
l = uiNewLabel("");
uiGridAppend(g, uiControl(l),
0, 3, 2, 1,
1, uiAlignCenter, 0, uiAlignFill);
uiDateTimePickerOnChanged(dtboth, onChanged, l);
l = uiNewLabel("");
uiGridAppend(g, uiControl(l),
0, 4, 1, 1,
1, uiAlignCenter, 0, uiAlignFill);
uiDateTimePickerOnChanged(dtdate, onChanged, l);
l = uiNewLabel("");
uiGridAppend(g, uiControl(l),
1, 4, 1, 1,
1, uiAlignCenter, 0, uiAlignFill);
uiDateTimePickerOnChanged(dttime, onChanged, l);
uiGridAppend(g, uiControl(uiNewVerticalSeparator()),
0, 5, 2, 1,
1, uiAlignFill, 0, uiAlignFill);
b = uiNewButton("Now");
uiButtonOnClicked(b, onClicked, (void *) 1);
uiGridAppend(g, uiControl(b),
0, 6, 1, 1,
1, uiAlignFill, 0, uiAlignFill);
b = uiNewButton("Unix epoch");
uiButtonOnClicked(b, onClicked, (void *) 0);
uiGridAppend(g, uiControl(b),
1, 6, 1, 1,
1, uiAlignFill, 0, uiAlignFill);
uiWindowOnClosing(w, onClosing, NULL);
uiControlShow(uiControl(w));
uiMain();
return 0;
}

4
ui.h
View File

@ -248,8 +248,12 @@ _UI_EXTERN void uiRadioButtonsSetSelected(uiRadioButtons *r, int n);
_UI_EXTERN void uiRadioButtonsOnSelected(uiRadioButtons *r, void (*f)(uiRadioButtons *, void *), void *data);
_UI_EXTERN uiRadioButtons *uiNewRadioButtons(void);
struct tm;
typedef struct uiDateTimePicker uiDateTimePicker;
#define uiDateTimePicker(this) ((uiDateTimePicker *) (this))
_UI_EXTERN void uiDateTimePickerTime(uiDateTimePicker *d, struct tm *time);
_UI_EXTERN void uiDateTimePickerSetTime(uiDateTimePicker *d, const struct tm *time);
_UI_EXTERN void uiDateTimePickerOnChanged(uiDateTimePicker *d, void (*f)(uiDateTimePicker *, void *), void *data);
_UI_EXTERN uiDateTimePicker *uiNewDateTimePicker(void);
_UI_EXTERN uiDateTimePicker *uiNewDatePicker(void);
_UI_EXTERN uiDateTimePicker *uiNewTimePicker(void);

View File

@ -597,3 +597,15 @@ uiDateTimePicker *uiNewTimePicker(void)
{
return finishNewDateTimePicker(newTP);
}
void uiDateTimePickerTime(uiDateTimePicker *d, struct tm *time)
{
}
void uiDateTimePickerSetTime(uiDateTimePicker *d, const struct tm *time)
{
}
void uiDateTimePickerOnChanged(uiDateTimePicker *d, void (*f)(uiDateTimePicker *, void *), void *data)
{
}

View File

@ -189,3 +189,15 @@ uiDateTimePicker *uiNewTimePicker(void)
{
return finishNewDateTimePicker(DTS_TIMEFORMAT);
}
void uiDateTimePickerTime(uiDateTimePicker *d, struct tm *time)
{
}
void uiDateTimePickerSetTime(uiDateTimePicker *d, const struct tm *time)
{
}
void uiDateTimePickerOnChanged(uiDateTimePicker *d, void (*f)(uiDateTimePicker *, void *), void *data)
{
}