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
517from nlightreader .models import Character
618from nlightreader .utils .catalog_manager import get_catalog_by_id
719from nlightreader .utils .file_manager import FileManager
820from nlightreader .utils .text_formatter import description_to_html
921from 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 ,
0 commit comments