update calendar to auto remove notification dot upon deletion

This commit is contained in:
WorldTeacher
2024-06-13 09:34:23 +02:00
parent 88fae1a5ec
commit 45b611fe83
2 changed files with 30 additions and 8 deletions

View File

@@ -3,6 +3,7 @@ from src.backend.database import Database
from PyQt6.QtCore import QDate from PyQt6.QtCore import QDate
from PyQt6.QtGui import QColor, QPen from PyQt6.QtGui import QColor, QPen
import darkdetect import darkdetect
from icecream import ic
color = "#ddfb00" if darkdetect.isDark() else "#2204ff" color = "#ddfb00" if darkdetect.isDark() else "#2204ff"
pen = QPen(QColor(color)) pen = QPen(QColor(color))
@@ -21,9 +22,17 @@ class MessageCalendar(QtWidgets.QCalendarWidget):
def getMessages(self): def getMessages(self):
# Get the messages from the database # Get the messages from the database
messages = Database().getAllMessages() messages = Database().getAllMessages()
ic(messages)
self.setMessages(messages) self.setMessages(messages)
def deleteMessage(self, id):
message = [message for message in self.messages if message["id"] == id][0]
self.messages.remove(message)
self.updateCells()
def setMessages(self, messages): def setMessages(self, messages):
# remove all drawn circles
for message in messages: for message in messages:
print(message) print(message)
# Convert the date string to a QDate object # Convert the date string to a QDate object
@@ -47,6 +56,20 @@ class MessageCalendar(QtWidgets.QCalendarWidget):
bl.setX(bl.x() + 8) bl.setX(bl.x() + 8)
bl.setY(bl.y() - 8) bl.setY(bl.y() - 8)
painter.drawEllipse(bl, 5, 5) painter.drawEllipse(bl, 5, 5)
else:
for cell in self.messages:
if cell.month() == date.month() and cell.year() == date.year():
# draw a circle below the date
painter.setPen(QPen(QtCore.Qt.GlobalColor.transparent))
bl = rect.bottomLeft()
bl.setX(bl.x() + 8)
bl.setY(bl.y() - 8)
painter.drawEllipse(bl, 5, 5)
def reload(self, date):
qdate = QDate.fromString(date, "yyyy-MM-dd")
del self.messages[qdate]
self.updateCells()
# def change_stylesheet_cell(self, date: QDate, color: str): # def change_stylesheet_cell(self, date: QDate, color: str):
# # change the stylesheet of a cell # # change the stylesheet of a cell

View File

@@ -1,6 +1,6 @@
from .widget_sources.Ui_calendar_entry import Ui_Dialog from .widget_sources.Ui_calendar_entry import Ui_Dialog
from PyQt6 import QtWidgets, QtCore from PyQt6 import QtWidgets, QtCore
from PyQt6.QtCore import pyqtSignal from PyQt6.QtCore import pyqtSignal, QDate
from src.backend.database import Database from src.backend.database import Database
from src import Icon from src import Icon
@@ -9,16 +9,17 @@ class CalendarEntry(QtWidgets.QDialog, Ui_Dialog):
deleteSignal = pyqtSignal( deleteSignal = pyqtSignal(
int int
) # when emit, send the id of the message to be deleted ) # when emit, send the id of the message to be deleted
repaintSignal = pyqtSignal() repaintSignal = pyqtSignal(str)
def __init__(self, parent=None, messages=None): def __init__(self, parent=None, messages=None, date=None):
super().__init__(parent) super().__init__(parent)
self.setupUi(self) self.setupUi(self)
self.messages = messages self.messages = messages
self.spin_select_message.setMaximum(len(self.messages)) self.spin_select_message.setMaximum(len(self.messages))
self.spin_select_message.setMinimum(1) self.spin_select_message.setMinimum(1)
self.spin_select_message.setValue(1) self.spin_select_message.setValue(1)
print(self.messages) self.spin_select_message.setWrapping(True)
self.date = date
self.set_message() self.set_message()
self.spin_select_message.valueChanged.connect(self.set_message) self.spin_select_message.valueChanged.connect(self.set_message)
Icon("close", self.btn_close) Icon("close", self.btn_close)
@@ -36,13 +37,11 @@ class CalendarEntry(QtWidgets.QDialog, Ui_Dialog):
return i return i
def delete_message(self): def delete_message(self):
print(self.spin_select_message.value())
value = self.spin_select_message.value() value = self.spin_select_message.value()
print(value) print(value)
if value > 0: if value > 0:
value = value - 1 value = value - 1
message = self.messages[value] message = self.messages[value]
print(message)
id = self.__get_id(message) id = self.__get_id(message)
print("id", id) print("id", id)
# del self.messages[value - 1] # del self.messages[value - 1]
@@ -50,10 +49,10 @@ class CalendarEntry(QtWidgets.QDialog, Ui_Dialog):
self.message_box.clear() self.message_box.clear()
self.set_message() self.set_message()
self.deleteSignal.emit(id) Database().deleteMessage(id)
self.messages.pop(self.__message_index(id)) self.messages.pop(self.__message_index(id))
if len(self.messages) == 0: if len(self.messages) == 0:
self.repaintSignal.emit() self.repaintSignal.emit(self.date)
self.close() self.close()
else: else:
# #