From ed40477833495c2aff3ac4ccfb534f700058fa99 Mon Sep 17 00:00:00 2001 From: igor Date: Tue, 10 Feb 2026 00:01:14 -0800 Subject: [PATCH] A little bit more progress on the progress save feature. --- main.c | 70 ++++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 51 insertions(+), 19 deletions(-) diff --git a/main.c b/main.c index 3b2f41d..bb609e9 100644 --- a/main.c +++ b/main.c @@ -129,15 +129,25 @@ char activity_button(int x, int y, int width, int height, char *title, char *sub // entertainment, reading, socializing, // housework, journaling, programmming (or projects?), // break, other -enum activity_type { +typedef enum activity_type { other, work, projects, gaming, exercise, activity_type_COUNT +} activity_type; + +char *activity_type_string_representation[activity_type_COUNT] = { + "Other", "Work", "Projects", "Gaming", "Exercise" }; +Color activity_type_color_representation[activity_type_COUNT] = { + RED, BLUE, YELLOW, GREEN, PURPLE +}; + +// TODO: String representation. + typedef struct Activity { enum activity_type activity; // TODO: Rename to kind or type. Color color; @@ -170,6 +180,12 @@ int main(int argc, char *argv[]) (void)argc; (void)argv; + Activity activities[100]; + U32 current_activity = 0; + + Activity_Stat activities_stats[activity_type_COUNT]; + memset(activities_stats, 0, sizeof(activities_stats)); + U64 secs = now(); struct tm *t = localtime((time_t *)(&secs)); t->tm_hour = 0; @@ -182,6 +198,8 @@ int main(int argc, char *argv[]) return 1; } + // TODO: Clean up. + // Check if 2025-02-10 available // build array // then, save the file periodically (every ~5 seconds) @@ -199,6 +217,7 @@ int main(int argc, char *argv[]) } // TODO: Fix error handling. + // WARNING: Not bullet proof, yet. FILE *f; if(path_exists(file_buffer)) { f = fopen(file_buffer, "r+"); @@ -218,15 +237,38 @@ int main(int argc, char *argv[]) size_t n = strcspn(line, "\r\n"); line[n] = '\0'; - printf("%s\n", line); + char activity_name[64]; + U64 lower; + U64 upper; + int l = sscanf(line, "%s %llu %llu", activity_name, &lower, &upper); + if(l != 3) + continue; - /* if(current_activity >= 0) */ - /* current_activity++; */ + if(lower > upper) + continue; - char test[64]; - U64 var1; - U64 var2; - int l = sscanf(line, "%s %llu %llu", test, &var1, &var2); + activity_type type = other; + if(strcmp(activity_name, activity_type_string_representation[other]) == 0) + type = other; + else if(strcmp(activity_name, activity_type_string_representation[work]) == 0) + type = work; + else if(strcmp(activity_name, activity_type_string_representation[projects]) == 0) + type = projects; + else if(strcmp(activity_name, activity_type_string_representation[gaming]) == 0) + type = gaming; + else if(strcmp(activity_name, activity_type_string_representation[exercise]) == 0) + type = exercise; + else + continue; + + activities[current_activity].activity = type; + activities[current_activity].color = activity_type_color_representation[type]; + activities[current_activity].began = lower; + activities[current_activity].ended = upper; + + current_activity++; + + printf("Added: %s\n", activity_name); } } @@ -236,20 +278,12 @@ int main(int argc, char *argv[]) fclose(f); - return 0; + /* return 0; */ U64 lower_bound_s = (U64)ts; U64 upper_bound_s = lower_bound_s + 86400; // U64 upper_bound_s = lower_bound_s + 3600; - - - Activity activities[100]; - U32 current_activity = 0; - - Activity_Stat activities_stats[activity_type_COUNT]; - memset(activities_stats, 0, sizeof(activities_stats)); - S32 window_w = 800; S32 window_h = 450; @@ -278,8 +312,6 @@ int main(int argc, char *argv[]) while(!WindowShouldClose()) { U64 now_s = now(); - // fprintf(stderr, "%lu ... %lu: %lu\n", lower_bound_s, upper_bound_s, now_s); - window_w = GetScreenWidth(); window_h = GetScreenHeight();