calendar widget / notification box

This commit is contained in:
WorldTeacher
2024-06-11 09:50:19 +02:00
parent e7e2b659fe
commit ceee170107
4 changed files with 316 additions and 0 deletions

View File

@@ -0,0 +1,55 @@
from PyQt6 import QtWidgets, QtCore
from src.backend.database import Database
from PyQt6.QtCore import QDate
from PyQt6.QtGui import QColor, QPen
import darkdetect
color = "#ddfb00" if darkdetect.isDark() else "#2204ff"
pen = QPen(QColor(color))
pen.setWidth(5)
class MessageCalendar(QtWidgets.QCalendarWidget):
# Widget for MessageCalendar
def __init__(self, parent=None):
super().__init__(parent)
self.messages = {} # Dictionary to store dates with messages
self.setFirstDayOfWeek(QtCore.Qt.DayOfWeek.Monday)
self.setGridVisible(True)
self.getMessages()
def getMessages(self):
# Get the messages from the database
messages = Database().getAllMessages()
self.setMessages(messages)
def setMessages(self, messages):
for message in messages:
print(message)
# Convert the date string to a QDate object
date = QDate.fromString(message["remind_at"], "yyyy-MM-dd")
# Store the message for the date
self.messages[date] = message["message"]
self.updateCells()
def updateCells(self):
self.repaint()
def paintCell(self, painter, rect, date):
super().paintCell(painter, rect, date)
# Check if there is a message for the current date
if date in self.messages:
# draw a circle below the date
painter.setPen(pen)
# increase draw size
bl = rect.bottomLeft()
bl.setX(bl.x() + 8)
bl.setY(bl.y() - 8)
painter.drawEllipse(bl, 5, 5)
# def change_stylesheet_cell(self, date: QDate, color: str):
# # change the stylesheet of a cell
# self.setStyleSheet(
# f"QCalendarWidget QTableView QTableCornerButton::section {{background-color: {color};}}"
# )