diff --git a/ui/extends/shared/delegates/scoreDelegate.py b/ui/extends/shared/delegates/scoreDelegate.py
index 2560404..56e7b65 100644
--- a/ui/extends/shared/delegates/scoreDelegate.py
+++ b/ui/extends/shared/delegates/scoreDelegate.py
@@ -1,19 +1,15 @@
-from typing import Union
-
from arcaea_offline.calculate import calculate_score_range
from arcaea_offline.models import Chart, Score
from arcaea_offline.utils.rating import rating_class_to_text
-from arcaea_offline.utils.score import score_to_grade_text, zip_score_grade
+from arcaea_offline.utils.score import (
+ clear_type_to_text,
+ modifier_to_text,
+ score_to_grade_text,
+ zip_score_grade,
+)
from PySide6.QtCore import QAbstractItemModel, QDateTime, QModelIndex, Qt, Signal
from PySide6.QtGui import QColor, QFont, QLinearGradient
-from PySide6.QtWidgets import (
- QFrame,
- QHBoxLayout,
- QLabel,
- QPushButton,
- QSizePolicy,
- QWidget,
-)
+from PySide6.QtWidgets import QHBoxLayout, QLabel, QPushButton, QSizePolicy, QWidget
from ui.implements.components.scoreEditor import ScoreEditor
@@ -27,12 +23,6 @@ class ScoreEditorDelegateWrapper(ScoreEditor):
def __init__(self, parent=None):
super().__init__(parent)
- # self.hLine = QFrame(self)
- # self.hLine.setFrameShape(QFrame.Shape.HLine)
- # self.hLine.setFrameShadow(QFrame.Shadow.Plain)
- # self.hLine.setFixedHeight(5)
- # self.gridLayout.addWidget(self.hLine, self.gridLayout.rowCount(), 0, -1, -1)
-
self.delegateHeader = QWidget(self)
self.delegateHeaderHBoxLayout = QHBoxLayout(self.delegateHeader)
self.delegateHeaderHBoxLayout.setContentsMargins(0, 0, 0, 0)
@@ -55,7 +45,9 @@ class ScoreEditorDelegateWrapper(ScoreEditor):
text = "Editing "
text += _extra or ""
text += f"score {score.score}"
- text += f"
(P{score.pure} F{score.far} L{score.lost} | MR{score.max_recall})"
+ text += (
+ f"
(P{score.pure} F{score.far} L{score.lost} | MR {score.max_recall})"
+ )
self.editorLabel.setText(text)
@@ -111,8 +103,8 @@ class ScoreDelegate(TextSegmentDelegate):
def getTextSegments(self, index, option):
score = self.getScore(index)
- chart = self.getChart(index)
- if not (isinstance(score, Score) and isinstance(chart, Chart)):
+
+ if not isinstance(score, Score):
return [
[
{
@@ -128,7 +120,9 @@ class ScoreDelegate(TextSegmentDelegate):
score_font.setPointSize(12)
score_grade_font = QFont(score_font)
score_grade_font.setBold(True)
- return [
+ placeholderColor = option.widget.palette().placeholderText().color()
+
+ segments = [
[
{
self.TextRole: score_to_grade_text(score.score),
@@ -156,19 +150,47 @@ class ScoreDelegate(TextSegmentDelegate):
self.ColorRole: self.PureFarLostColors[2],
},
{self.TextRole: " | "},
- {self.TextRole: f"MAX RECALL {score.max_recall}"},
- ],
- [
- {
- self.TextRole: QDateTime.fromSecsSinceEpoch(score.date).toString(
- "yyyy-MM-dd hh:mm:ss"
- )
- if score.date
- else "-- No Date --"
- }
+ {self.TextRole: f"MR {score.max_recall}"},
],
]
+ if score.date is not None:
+ segments.append(
+ [
+ {
+ self.TextRole: QDateTime.fromSecsSinceEpoch(
+ score.date
+ ).toString("yyyy-MM-dd hh:mm:ss")
+ }
+ ],
+ )
+ else:
+ segments.append(
+ [{self.TextRole: "-- No Date --", self.ColorRole: placeholderColor}],
+ )
+
+ modifierClearTypeSegments = []
+ if score.modifier is not None:
+ modifierClearTypeSegments.append(
+ {self.TextRole: modifier_to_text(score.modifier)}
+ )
+ else:
+ modifierClearTypeSegments.append(
+ {self.TextRole: "Modifier None", self.ColorRole: placeholderColor}
+ )
+ modifierClearTypeSegments.append({self.TextRole: ", "})
+ if score.clear_type is not None:
+ modifierClearTypeSegments.append(
+ {self.TextRole: clear_type_to_text(score.clear_type)}
+ )
+ else:
+ modifierClearTypeSegments.append(
+ {self.TextRole: "Clear Type None", self.ColorRole: placeholderColor}
+ )
+ segments.append(modifierClearTypeSegments)
+
+ return segments
+
def paintWarningBackground(self, index: QModelIndex) -> bool:
return True