+/*
+ * Copyright (C) 2012 Andy Spencer <andy753421@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
#include <string.h>
#include <ncurses.h>
-#include "main.h"
+
+#include "util.h"
+#include "date.h"
#include "screen.h"
/* Types */
typedef struct {
char *name;
void (*init)(WINDOW*);
+ void (*size)(int,int);
void (*draw)(void);
int (*run)(int,mmask_t,int,int);
int keys[8];
/* Data */
view_t views[] = {
- { "Day", day_init, day_draw, day_run, {KEY_F(1), '1', 'd', } },
- { "Week", week_init, week_draw, week_run, {KEY_F(2), '2', 'w', } },
- { "Month", month_init, month_draw, month_run, {KEY_F(3), '3', 'm', } },
- { "Year", year_init, year_draw, year_run, {KEY_F(4), '4', 'y', } },
- { "|", NULL, NULL, NULL, { } },
- { "Todo", todo_init, todo_draw, todo_run, {KEY_F(5), '5', 't', } },
- { "Notes", notes_init, notes_draw, notes_run, {KEY_F(6), '6', 'n', } },
- { "|", NULL, NULL, NULL, { } },
- { "Settings", settings_init, settings_draw, settings_run, {KEY_F(7), '7', 's', } },
- { "Help", help_init, help_draw, help_run, {KEY_F(8), '8', 'h', '?'} },
+ { "Day", day_init, day_size, day_draw, day_run, {KEY_F(1), '1', } },
+ { "Week", week_init, week_size, week_draw, week_run, {KEY_F(2), '2', } },
+ { "Month", month_init, month_size, month_draw, month_run, {KEY_F(3), '3', } },
+ { "Year", year_init, year_size, year_draw, year_run, {KEY_F(4), '4', } },
+ { "|", NULL, NULL, NULL, NULL, { } },
+ { "Todo", todo_init, todo_size, todo_draw, todo_run, {KEY_F(5), '5', } },
+ { "Notes", notes_init, notes_size, notes_draw, notes_run, {KEY_F(6), '6', } },
+ { "|", NULL, NULL, NULL, NULL, { } },
+ { "Settings", settings_init, settings_size, settings_draw, settings_run, {KEY_F(7), '7', } },
+ { "Help", help_init, help_size, help_draw, help_run, {KEY_F(8), '8', '?'} },
};
-int active = 3;
+int active = 2;
/* Local functions */
void draw_header(void)
/* Screen draw */
void screen_resize(void)
{
- for (int i = 0; i < N_ELEMENTS(views); i++)
- if (views[i].init)
+ for (int i = 0; i < N_ELEMENTS(views); i++) {
+ if (views[i].win)
wresize(views[i].win, LINES-2, COLS);
+ if (views[i].size)
+ views[i].size(LINES-2, COLS);
+ }
}
/* Screen draw */
int start = 1;
for (int i = 0; i < N_ELEMENTS(views); i++) {
int end = start + strlen(views[i].name) - 1;
- if (start <= col && col <= end)
+ if (start <= col && col <= end && views[i].draw)
return screen_set(i);
start = end + 2;
}