1
0
Fork 0
This commit is contained in:
John Bintz 2022-10-08 13:03:36 -04:00
parent 580bdaa245
commit dfe5190d72
2 changed files with 34 additions and 38 deletions

BIN
main

Binary file not shown.

72
main.c
View File

@ -42,23 +42,6 @@
#define WINDOW_TITLE "Topaz's Pizza Timer" #define WINDOW_TITLE "Topaz's Pizza Timer"
#define WINDOW_CHROME_WIDTH (4) #define WINDOW_CHROME_WIDTH (4)
struct NewWindow winlayout = {
20, 20, // x, y
WINDOW_WIDTH, WINDOW_HEIGHT, // w, h
0, 1, // detailpen, blockpen,
// you have to add the different gadget types you're looking for
// http://amigadev.elowar.com/read/ADCD_2.1/Includes_and_Autodocs_2._guide/node0106.html
IDCMP_REFRESHWINDOW | IDCMP_CLOSEWINDOW | BUTTONIDCMP | SLIDERIDCMP | IDCMP_MENUPICK, // IDCMP flags
WFLG_SMART_REFRESH | WFLG_DRAGBAR | WFLG_DEPTHGADGET | WFLG_CLOSEGADGET | WFLG_ACTIVATE, // window flag from Window struct
NULL, // FirstGadget
NULL, // menu checkmark
WINDOW_TITLE, // title
NULL, // default screen
NULL, // bitmap
WINDOW_WIDTH, WINDOW_HEIGHT, // min size
WINDOW_WIDTH, WINDOW_HEIGHT, // max size,
WBENCHSCREEN // screen where you want the window to open
};
struct Screen *screen; struct Screen *screen;
struct Window *window; struct Window *window;
struct Gadget *windowGadgets; struct Gadget *windowGadgets;
@ -66,22 +49,6 @@ struct Gadget *windowGadgets;
#define ABOUT_WINDOW_WIDTH (350) #define ABOUT_WINDOW_WIDTH (350)
#define ABOUT_WINDOW_HEIGHT (75) #define ABOUT_WINDOW_HEIGHT (75)
struct NewWindow aboutWindowLayout = {
40, 40,
ABOUT_WINDOW_WIDTH, ABOUT_WINDOW_HEIGHT,
0, 1,
IDCMP_CLOSEWINDOW,
WFLG_DRAGBAR | WFLG_DEPTHGADGET | WFLG_CLOSEGADGET | WFLG_ACTIVATE,
NULL,
NULL,
"About Pizza Timer",
NULL,
NULL,
ABOUT_WINDOW_WIDTH, ABOUT_WINDOW_HEIGHT,
ABOUT_WINDOW_WIDTH, ABOUT_WINDOW_HEIGHT,
WBENCHSCREEN
};
// Fonts! // Fonts!
struct TextAttr Topaz80 = { "topaz.font", 8, 0, 0 }; struct TextAttr Topaz80 = { "topaz.font", 8, 0, 0 };
@ -532,7 +499,18 @@ int openAboutWindow(void) {
// nope, false positive, checked with avail before and after running and // nope, false positive, checked with avail before and after running and
// the used/free counts are exactly the same: // the used/free counts are exactly the same:
// https://eab.abime.net/showthread.php?t=104360 // https://eab.abime.net/showthread.php?t=104360
aboutWindow = OpenWindow(&aboutWindowLayout); aboutWindow = OpenWindowTags(NULL,
WA_Left, 40, WA_Top, 40,
WA_Width, ABOUT_WINDOW_WIDTH, WA_Height, ABOUT_WINDOW_HEIGHT,
WA_DetailPen, 0, WA_BlockPen, 1,
WA_IDCMP, IDCMP_CLOSEWINDOW,
WA_DragBar, TRUE,
WA_DepthGadget, TRUE,
WA_CloseGadget, TRUE,
WA_Activate, TRUE,
WA_Title, "Acout Pizza Timer",
TAG_END
);
if (!aboutWindow) { if (!aboutWindow) {
return 1; return 1;
@ -743,7 +721,7 @@ void startBellSound(void) {
// eventually wait for the sound to stop playing // eventually wait for the sound to stop playing
TimerIO->tr_node.io_Command = TR_ADDREQUEST; TimerIO->tr_node.io_Command = TR_ADDREQUEST;
TimerIO->tr_time.tv_secs = 3; TimerIO->tr_time.tv_secs = 2;
TimerIO->tr_time.tv_micro = 0; TimerIO->tr_time.tv_micro = 0;
SendIO((struct IORequest *)TimerIO); SendIO((struct IORequest *)TimerIO);
} }
@ -759,6 +737,11 @@ void waitForBellToFinish(void) {
if (bellSound) { if (bellSound) {
TimerPort = TimerIO->tr_node.io_Message.mn_ReplyPort; TimerPort = TimerIO->tr_node.io_Message.mn_ReplyPort;
// TODO: move this into the main event loop, so that
// we can update the UI while the sound is finishing up?
// I'm sure there is a way to add metadata to an IO request.
// or do we need two timer.devices with two separate IOs?
// https://amigadev.elowar.com/read/ADCD_2.1/Devices_Manual_guide/node00C4.html
timerSignal = 1L << TimerPort->mp_SigBit; timerSignal = 1L << TimerPort->mp_SigBit;
Wait(timerSignal); Wait(timerSignal);
@ -776,13 +759,13 @@ void endTimer(void) {
uiHours = uiMinutes = uiSeconds = 0; uiHours = uiMinutes = uiSeconds = 0;
setTimerText(); setTimerText();
waitForBellToFinish();
timerIsRunning = FALSE; timerIsRunning = FALSE;
timerStarted = FALSE; timerStarted = FALSE;
clearUI(); clearUI();
renderUI(); renderUI();
waitForBellToFinish();
} }
void handleTimerMessage(void) { void handleTimerMessage(void) {
@ -837,7 +820,20 @@ int main() {
timerIsRunning = FALSE; timerIsRunning = FALSE;
// open the empty window // open the empty window
window = OpenWindow(&winlayout); window = OpenWindowTags(NULL,
WA_Left, 20, WA_Top, 20,
WA_Width, WINDOW_WIDTH, WA_Height, WINDOW_HEIGHT,
WA_DetailPen, 0, WA_BlockPen, 1,
WA_IDCMP, IDCMP_REFRESHWINDOW | IDCMP_CLOSEWINDOW | BUTTONIDCMP | SLIDERIDCMP | IDCMP_MENUPICK, // IDCMP flags
WA_SmartRefresh, TRUE,
WA_DragBar, TRUE,
WA_DepthGadget, TRUE,
WA_CloseGadget, TRUE,
WA_Activate, TRUE,
WA_Title, WINDOW_TITLE,
TAG_END
);
if (!window) { if (!window) {
teardown(); teardown();
return 1; return 1;