calendar widget / notification box
This commit is contained in:
55
src/ui/widgets/MessageCalendar.py
Normal file
55
src/ui/widgets/MessageCalendar.py
Normal 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};}}"
|
||||
# )
|
||||
Reference in New Issue
Block a user