update calendar to auto remove notification dot upon deletion
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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:
|
||||||
#
|
#
|
||||||
|
|||||||
Reference in New Issue
Block a user