from tkinter import *
import math
# ---------------------------- CONSTANTS ------------------------------- #
PINK = "#e2979c"
RED = "#e7305b"
GREEN = "#9bdeac"
YELLOW = "#f7f5dd"
FONT_NAME = "Courier"
WORK_MIN = 25
SHORT_BREAK_MIN = 5
LONG_BREAK_MIN = 20
PATH_TO_IMAGE = "100 days of code//day 28//pomodoro//tomato.png"
CHECK_MARK = '✔'
reps = 0
timer = None

# ---------------------------- TIMER RESET ------------------------------- # 
def reset_timer():
    window.after_cancel(timer)
    canvas.itemconfig(timer_text, text = "00:00")
    title_label.config(text = "Timer")
    checkmark_label.config(text = "")
    global reps
    reps = 0



# ---------------------------- TIMER MECHANISM ------------------------------- # 
def start_timer():

    global reps
    reps += 1

    work_sec = WORK_MIN * 60
    short_break_sec = SHORT_BREAK_MIN * 60
    long_break_sec = LONG_BREAK_MIN * 60

    if reps % 8 == 0:
        count_down(long_break_sec)
        title_label.config(text = "Break", fg = RED)
    elif reps % 2 == 0:
        count_down(short_break_sec)
        title_label.config(text = "Break", fg = PINK)
    else:
        count_down(work_sec)
        title_label.config(text = "Work", fg = "black")
        # checkmark_label.config(text = CHECK_MARK, font = (FONT_NAME, 40, 'normal'))



# ---------------------------- COUNTDOWN MECHANISM ------------------------------- # 
def count_down(count):

    count_min = math.floor(count / 60)
    count_seconds = count % 60
    if count_seconds < 10:
        count_seconds = f"0{count_seconds}"

    canvas.itemconfig(timer_text, text = f"{count_min}:{count_seconds}")
    if count > 0:
        global timer
        timer = window.after(1000, count_down, count - 1)
    else:
        start_timer()
        marks = ""
        work_sessions = math.floor(reps/2)
        for _ in range(work_sessions):
            marks += "✔"
        checkmark_label.config(text = marks)



# ---------------------------- UI SETUP ------------------------------- #

window = Tk()
window.title("Pomodoro timer")
window.config(padx = 100, pady = 50, bg = GREEN)

canvas = Canvas(width = 200, height = 224, bg = GREEN, highlightthickness = 0)
tomato_img = PhotoImage(file = PATH_TO_IMAGE)
canvas.create_image(100, 112, image=tomato_img)
timer_text = canvas.create_text(102, 130, text = "00:00", fill = "white", font = (FONT_NAME, 35, 'bold'))
canvas.grid(column = 1, row = 2)

title_label = Label(text = "Timer", font = (FONT_NAME, 40, 'normal'), bg = GREEN, fg = YELLOW)
title_label.grid(column = 1, row = 0)

button_start = Button(text = "Start", highlightthickness = 0, command = start_timer)
button_start.grid(column = 0, row = 3)

button_reset = Button(text = "Reset", highlightthickness = 0, command = reset_timer)
button_reset.grid(column = 3, row = 3)

checkmark_label = Label(bg = GREEN)
checkmark_label.grid(column = 1, row = 4)


window.mainloop()