add year and buttons to switch year
change last week of previous week to 53 instead of 1 #3 #4
This commit is contained in:
parent
440a2d6bc0
commit
9daff74e9e
@ -3,6 +3,7 @@
|
||||
|
||||
#include "inter.h"
|
||||
|
||||
int year = 2025;
|
||||
|
||||
bool is_leap_year(int year) {
|
||||
return ((year % 4) == 0 && (year % 100) != 0) || year % 400 == 0;
|
||||
@ -57,103 +58,132 @@ void per_frame(){
|
||||
ImGui::PushStyleColor(ImGuiCol_HeaderHovered, {0,0,0,0});
|
||||
ImGui::PushStyleColor(ImGuiCol_HeaderActive, {0,0,0,0});
|
||||
|
||||
for (int month = 1; month <= 12; month++) {
|
||||
ImGui::PushID(month);
|
||||
ImGui::PushStyleColor(ImGuiCol_TableBorderStrong, {0,0,0,0});
|
||||
ImGui::PushStyleColor(ImGuiCol_TableBorderLight, {0,0,0,0});
|
||||
if(ImGui::BeginTable("Calendar", 2, ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_NoHostExtendX)) {
|
||||
ImGui::TableNextRow();
|
||||
ImGui::TableSetColumnIndex(0);
|
||||
|
||||
if(ImGui::BeginTable("Month", 1, ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_NoHostExtendX)) {
|
||||
ImGui::TableNextRow();
|
||||
ImGui::TableSetColumnIndex(0);
|
||||
ImGui::TextAligned(0.5, -FLT_MIN, month_names[month - 1]);
|
||||
ImGui::BeginGroup();
|
||||
if (ImGui::ArrowButton("##left", ImGuiDir_Left))
|
||||
year--;
|
||||
ImGui::SameLine(0, 0);
|
||||
|
||||
ImGui::TableNextRow();
|
||||
ImGui::TableSetColumnIndex(0);
|
||||
if (ImGui::ArrowButton("##right", ImGuiDir_Right))
|
||||
year++;
|
||||
ImGui::SameLine(0, 0);
|
||||
|
||||
//calendar week table
|
||||
if(ImGui::BeginTable("CalendarWeek", 1, ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_NoHostExtendX | ImGuiTableFlags_Borders)){
|
||||
ImGui::TextAligned(0.5, -FLT_MIN, "%d", year);
|
||||
ImGui::EndGroup();
|
||||
|
||||
ImGui::TableNextRow();
|
||||
ImGui::TableSetColumnIndex(0);
|
||||
|
||||
for (int month = 1; month <= 12; month++) {
|
||||
ImGui::PushID(month);
|
||||
ImGui::PushStyleColor(ImGuiCol_TableBorderStrong, {0,0,0,0});
|
||||
ImGui::PushStyleColor(ImGuiCol_TableBorderLight, {0,0,0,0});
|
||||
|
||||
if(ImGui::BeginTable("Month", 1, ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_NoHostExtendX)) {
|
||||
ImGui::TableNextRow();
|
||||
ImGui::TableSetColumnIndex(0);
|
||||
ImGui::TextAligned(0.5, -FLT_MIN, "KW");
|
||||
ImGui::TextAligned(0.5, -FLT_MIN, month_names[month - 1]);
|
||||
|
||||
for (int day = 1; day <= days_per_month(2025, month); day++) {
|
||||
int weekday = weekday_from_day(2025, month, day);
|
||||
ImGui::TableNextRow();
|
||||
ImGui::TableSetColumnIndex(0);
|
||||
|
||||
if(weekday == 0 || day == 1){
|
||||
ImGui::TableNextRow();
|
||||
ImGui::TableSetColumnIndex(0);
|
||||
ImGui::TextAligned(0.5, -FLT_MIN, "%d", calendar_week_from_day(2025, month, day));
|
||||
//calendar week table
|
||||
if(ImGui::BeginTable("CalendarWeek", 1, ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_NoHostExtendX | ImGuiTableFlags_Borders)){
|
||||
ImGui::TableNextRow();
|
||||
ImGui::TableSetColumnIndex(0);
|
||||
ImGui::TextAligned(0.5, -FLT_MIN, "KW");
|
||||
|
||||
for (int day = 1; day <= days_per_month(year, month); day++) {
|
||||
int weekday = weekday_from_day(year, month, day);
|
||||
|
||||
if(weekday == 0 || day == 1){
|
||||
ImGui::TableNextRow();
|
||||
ImGui::TableSetColumnIndex(0);
|
||||
|
||||
//if first week has 3 or less days, last week from previous year
|
||||
int calender_week = calendar_week_from_day(year, month, day);
|
||||
if(calender_week == 0) {
|
||||
ImGui::TextAligned(0.5, -FLT_MIN, "%d", 53);
|
||||
} else {
|
||||
ImGui::TextAligned(0.5, -FLT_MIN, "%d", calender_week);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ImGui::EndTable();
|
||||
}
|
||||
ImGui::SameLine(0, 0);
|
||||
|
||||
ImGui::EndTable();
|
||||
}
|
||||
ImGui::SameLine(0, 0);
|
||||
ImGui::BeginGroup();
|
||||
ImGui::PushStyleVarY(ImGuiStyleVar_ItemSpacing, 0);
|
||||
|
||||
ImGui::BeginGroup();
|
||||
ImGui::PushStyleVarY(ImGuiStyleVar_ItemSpacing, 0);
|
||||
if(ImGui::BeginTable("Weekdays", 7, ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_NoHostExtendX | ImGuiTableFlags_Borders)){
|
||||
|
||||
if(ImGui::BeginTable("Weekdays", 7, ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_NoHostExtendX | ImGuiTableFlags_Borders)){
|
||||
ImGui::TableSetupColumn("Mo");
|
||||
ImGui::TableSetupColumn("Di");
|
||||
ImGui::TableSetupColumn("Mi");
|
||||
ImGui::TableSetupColumn("Do");
|
||||
ImGui::TableSetupColumn("Fr");
|
||||
ImGui::TableSetupColumn("Sa");
|
||||
ImGui::TableSetupColumn("So");
|
||||
ImGui::TableHeadersRow();
|
||||
|
||||
ImGui::TableSetupColumn("Mo");
|
||||
ImGui::TableSetupColumn("Di");
|
||||
ImGui::TableSetupColumn("Mi");
|
||||
ImGui::TableSetupColumn("Do");
|
||||
ImGui::TableSetupColumn("Fr");
|
||||
ImGui::TableSetupColumn("Sa");
|
||||
ImGui::TableSetupColumn("So");
|
||||
ImGui::TableHeadersRow();
|
||||
|
||||
ImGui::EndTable();
|
||||
}
|
||||
ImGui::PopStyleColor(2);
|
||||
|
||||
ImGui::PushStyleColor(ImGuiCol_TableBorderStrong, {119/255.0f,119/255.0f,119/255.0f,83/255.0f});
|
||||
ImGui::PushStyleColor(ImGuiCol_TableBorderLight, {119/255.0f,119/255.0f,119/255.0f,83/255.0f});
|
||||
|
||||
//days of month table
|
||||
if(ImGui::BeginTable("Weekdays", 7, ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_NoHostExtendX | ImGuiTableFlags_Borders)) {
|
||||
int offset = weekday_from_day(2025, month, 1);
|
||||
|
||||
for (int day = 1; day <= days_per_month(2025, month); day++) {
|
||||
int weekday = weekday_from_day(2025, month, day);
|
||||
|
||||
if(weekday == 0 || day == 1){
|
||||
ImGui::TableNextRow();
|
||||
}
|
||||
|
||||
ImGui::TableSetColumnIndex(weekday);
|
||||
ImU32 cell_bg_color_workweek = ImGui::GetColorU32(ImVec4(255/255.0f, 255/255.0f, 255/255.0f, 1.0f));
|
||||
ImGui::TableSetBgColor(ImGuiTableBgTarget_CellBg, cell_bg_color_workweek);
|
||||
|
||||
//weekend coloring
|
||||
if(weekday == 5){
|
||||
ImU32 cell_bg_color_sat = ImGui::GetColorU32(ImVec4(178/255.0f, 178/255.0f, 178/255.0f, 100/255.0f));
|
||||
ImGui::TableSetBgColor(ImGuiTableBgTarget_CellBg, cell_bg_color_sat);
|
||||
}
|
||||
|
||||
if(weekday == 6){
|
||||
ImU32 cell_bg_color_sun = ImGui::GetColorU32(ImVec4(100/255.0f, 100/255.0f, 100/255.0f, 100/255.0f));
|
||||
ImGui::TableSetBgColor(ImGuiTableBgTarget_CellBg, cell_bg_color_sun);
|
||||
}
|
||||
|
||||
ImGui::TextAligned(0.5, -FLT_MIN, "%d", day);
|
||||
ImGui::EndTable();
|
||||
}
|
||||
ImGui::PopStyleColor(2);
|
||||
|
||||
ImGui::PushStyleColor(ImGuiCol_TableBorderStrong, {119/255.0f,119/255.0f,119/255.0f,83/255.0f});
|
||||
ImGui::PushStyleColor(ImGuiCol_TableBorderLight, {119/255.0f,119/255.0f,119/255.0f,83/255.0f});
|
||||
|
||||
//days of month table
|
||||
if(ImGui::BeginTable("Weekdays", 7, ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_NoHostExtendX | ImGuiTableFlags_Borders)) {
|
||||
int offset = weekday_from_day(year, month, 1);
|
||||
|
||||
for (int day = 1; day <= days_per_month(2025, month); day++) {
|
||||
int weekday = weekday_from_day(year, month, day);
|
||||
|
||||
if(weekday == 0 || day == 1){
|
||||
ImGui::TableNextRow();
|
||||
}
|
||||
|
||||
ImGui::TableSetColumnIndex(weekday);
|
||||
ImU32 cell_bg_color_workweek = ImGui::GetColorU32(ImVec4(1.0f, 1.0f, 1.0f, 1.0f));
|
||||
ImGui::TableSetBgColor(ImGuiTableBgTarget_CellBg, cell_bg_color_workweek);
|
||||
|
||||
//weekend coloring
|
||||
if(weekday == 5){
|
||||
ImU32 cell_bg_color_sat = ImGui::GetColorU32(ImVec4(0.0f, 0.0f, 0.0f, 0.1f));
|
||||
ImGui::TableSetBgColor(ImGuiTableBgTarget_CellBg, cell_bg_color_sat);
|
||||
}
|
||||
|
||||
if(weekday == 6){
|
||||
ImU32 cell_bg_color_sun = ImGui::GetColorU32(ImVec4(0.0f, 0.0f, 0.0f, 0.2f));
|
||||
ImGui::TableSetBgColor(ImGuiTableBgTarget_CellBg, cell_bg_color_sun);
|
||||
}
|
||||
|
||||
ImGui::TextAligned(0.5, -FLT_MIN, "%d", day);
|
||||
}
|
||||
|
||||
ImGui::EndTable();
|
||||
}
|
||||
ImGui::PopStyleColor(2);
|
||||
ImGui::PopStyleVar();
|
||||
//weekday header table + days of month table
|
||||
ImGui::EndGroup();
|
||||
//month table
|
||||
ImGui::EndTable();
|
||||
}
|
||||
ImGui::PopStyleColor(2);
|
||||
ImGui::PopStyleVar();
|
||||
//weekday header table + days of month table
|
||||
ImGui::EndGroup();
|
||||
//month table
|
||||
ImGui::EndTable();
|
||||
|
||||
if ((month % 4) != 0)
|
||||
ImGui::SameLine();
|
||||
|
||||
ImGui::PopID();
|
||||
}
|
||||
|
||||
if ((month % 4) != 0)
|
||||
ImGui::SameLine();
|
||||
|
||||
ImGui::PopID();
|
||||
//calendar table
|
||||
ImGui::EndTable();
|
||||
}
|
||||
|
||||
ImGui::PopStyleColor(3);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user