Skip to content

Commit 5d894df

Browse files
committed
feat: add new CharacterInfoDialog
1 parent c05f27b commit 5d894df

File tree

4 files changed

+63
-286
lines changed

4 files changed

+63
-286
lines changed

data/ui/dialogs/character.py

Lines changed: 0 additions & 112 deletions
This file was deleted.

data/ui/dialogs/character.ui

Lines changed: 0 additions & 153 deletions
This file was deleted.

nlightreader/widgets/dialogs/character_info_dialog.py

Lines changed: 62 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,73 @@
1-
from PySide6.QtCore import QSize, Slot
2-
from PySide6.QtWidgets import QDialog
1+
from PySide6.QtCore import Qt, Slot
2+
from PySide6.QtWidgets import (
3+
QHBoxLayout,
4+
QLabel,
5+
QSizePolicy,
6+
QSpacerItem,
7+
QVBoxLayout,
8+
)
9+
from qfluentwidgets import (
10+
BodyLabel,
11+
MessageBoxBase,
12+
SimpleCardWidget,
13+
SwitchButton,
14+
TextEdit,
15+
)
316

4-
from data.ui.dialogs.character import Ui_CharacterInfoDialog
517
from nlightreader.models import Character
618
from nlightreader.utils.catalog_manager import get_catalog_by_id
719
from nlightreader.utils.file_manager import FileManager
820
from nlightreader.utils.text_formatter import description_to_html
921
from nlightreader.utils.threads import Worker
1022

1123

12-
class CharacterInfoDialog(QDialog):
13-
def __init__(self, character: Character, parent=None):
24+
class CharacterInfoDialog(MessageBoxBase):
25+
def __init__(self, character: Character, parent):
1426
super().__init__(parent)
15-
self.ui = Ui_CharacterInfoDialog()
16-
self.ui.setupUi(self)
17-
self.ui.show_spoilers.checkedChanged.connect(self.update_description)
18-
self.setFixedSize(QSize(550, 800))
1927
self.__character = character
20-
self.setWindowTitle(self.__character.get_name())
2128
self.__catalog = get_catalog_by_id(character.catalog_id)
22-
self.ui.name_label.setText(self.__character.name)
23-
self.ui.russian_label.setText(self.__character.russian)
29+
30+
self.image_frame = SimpleCardWidget()
31+
self.image_frame_layout = QVBoxLayout(self.image_frame)
32+
self.image_label = QLabel()
33+
self.image_frame_layout.addWidget(self.image_label)
34+
35+
self.title_frame = SimpleCardWidget()
36+
self.title_frame_layout = QVBoxLayout(self.title_frame)
37+
self.name_label = BodyLabel(self.__character.name)
38+
self.russian_label = BodyLabel(self.__character.russian)
39+
self.title_frame_spacer = QSpacerItem(
40+
20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding,
41+
)
42+
self.show_spoilers_switch = SwitchButton()
43+
self.show_spoilers_switch.setText(self.tr("Show spoilers"))
44+
self.show_spoilers_switch.setOnText(self.tr("Show spoilers"))
45+
self.show_spoilers_switch.setOffText(self.tr("Show spoilers"))
46+
self.show_spoilers_switch.checkedChanged.connect(
47+
self.update_description,
48+
)
49+
self.title_frame_layout.addWidget(self.name_label)
50+
self.title_frame_layout.addWidget(self.russian_label)
51+
self.title_frame_layout.addItem(self.title_frame_spacer)
52+
self.title_frame_layout.addWidget(self.show_spoilers_switch)
53+
54+
self.description_text = TextEdit()
55+
self.description_text.setFocusPolicy(
56+
Qt.FocusPolicy.NoFocus,
57+
)
58+
self.description_text.setTextInteractionFlags(
59+
Qt.TextInteractionFlag.NoTextInteraction,
60+
)
61+
62+
self.row = QHBoxLayout()
63+
self.row.addWidget(self.image_frame)
64+
self.row.addWidget(self.title_frame)
65+
66+
self.viewLayout.addLayout(self.row)
67+
self.viewLayout.addWidget(self.description_text)
68+
69+
self.cancelButton.hide()
70+
2471
self.update_description()
2572
Worker(self.setup_image).start()
2673

@@ -29,15 +76,15 @@ def closeEvent(self, arg__1):
2976

3077
@Slot()
3178
def update_description(self):
32-
self.ui.description.setHtml(
79+
self.description_text.setHtml(
3380
description_to_html(
3481
self.__character.description,
35-
self.ui.show_spoilers.isChecked(),
82+
self.show_spoilers_switch.isChecked(),
3683
),
3784
)
3885

3986
def setup_image(self):
40-
self.ui.image.setPixmap(
87+
self.image_label.setPixmap(
4188
FileManager.get_character_preview(
4289
self.__character,
4390
self.__catalog,

nlightreader/widgets/pages/info_page.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ def __init__(self):
8080
self.__sorted_chapters = {}
8181
self.__manga_pixmap = None
8282
self.__reader_window = None
83-
self.__character_window = None
8483

8584
def on_context_menu(self, pos):
8685
context_target = self.ui.items_tree
@@ -236,11 +235,7 @@ def open_character_dialog(self):
236235
self.ui.characters_list.currentIndex().row()
237236
],
238237
)
239-
self.__character_window = CharacterInfoDialog(
240-
character,
241-
parent=self,
242-
)
243-
self.__character_window.show()
238+
CharacterInfoDialog(character, parent=self).exec()
244239

245240
def update_manga_preview(self):
246241
self.ui.image.clear()

0 commit comments

Comments
 (0)