/* * handler for week view menu item. */ void week_button (Widget widget, XtPointer data, XtPointer cbs) { Calendar *c = calendar; if (c->view->glance == weekGlance) return; switch (c->view->glance) { case dayGlance: c->view->glance = weekGlance; cleanup_after_dayview(c); paint_weekview(c, NULL); break; case yearGlance: c->view->glance = weekGlance; cleanup_after_yearview(c); XtMapWidget(c->canvas); break; case monthGlance: c->view->glance = weekGlance; cleanup_after_monthview(c); break; default: break; } }
static void day_btn_cb(Widget w, XtPointer client, XtPointer call) { XmMonthPanelCallbackStruct *cbs = (XmMonthPanelCallbackStruct *) call; Calendar *c = (Calendar *)client; int monthno, year; int date = c->view->date; invalidate_cache(c); XtVaGetValues(w, XmNmonth, &monthno, XmNyear, &year, NULL); if (cbs->type == MONTH_SELECTION) { XtUnmapWidget(c->canvas); /* * Date update: * if month chosen is not current month * set date to 1st of new month, otherwise * don't change date. */ if (month(c->view->date) != monthno) { calendar_deselect (c); c->view->olddate = c->view->date; c->view->date = monthdayyear(monthno, 1, year); c->view->nwks = numwks(c->view->date); calendar_select (c, monthSelect, NULL); } /* switch to month view */ c->view->glance = monthGlance; cleanup_after_dayview(c); prepare_to_paint_monthview(c, NULL); XtMapWidget(c->canvas); } else { /* type == DAY_SELECTION */ c->view->olddate = c->view->date; c->view->date = monthdayyear(monthno, cbs->day, year); gr_clear_area(c->xcontext, 0, 0, c->view->winw, c->view->winh); paint_dayview(c, True, NULL, False); calendar_select(c, hourSelect, (caddr_t)NULL); } }