11from PyQt6 .QtWidgets import (
2- QDialog , QVBoxLayout , QListWidget , QPushButton ,
2+ QDialog , QVBoxLayout , QListWidget , QPushButton , QInputDialog ,
33 QLineEdit , QLabel , QMessageBox , QListWidgetItem
44)
55from PyQt6 .QtCore import Qt
@@ -19,10 +19,7 @@ def __init__(self, parent) -> None:
1919
2020 # Create UI elements.
2121 self .listWidget = QListWidget ()
22- self .entryLineEdit = QLineEdit ()
23- self .entryLineEdit .setPlaceholderText ("أدخل تسبيح جديد" )
2422 self .addButton = QPushButton ("إضافة تسبيح" )
25- self .addButton .setEnabled (False )
2623 self .delete_button = QPushButton ("حذف تسبيح" )
2724 self .delete_button .setEnabled (False )
2825 self .incrementButton = QPushButton ("زيادة العداد" )
@@ -34,8 +31,6 @@ def __init__(self, parent) -> None:
3431 layout = QVBoxLayout ()
3532 layout .addWidget (QLabel ("التسابيح" ))
3633 layout .addWidget (self .listWidget )
37- layout .addWidget (QLabel ("تسبيح جديد" ))
38- layout .addWidget (self .entryLineEdit )
3934 layout .addWidget (self .addButton )
4035 layout .addWidget (self .delete_button )
4136 layout .addWidget (self .incrementButton )
@@ -47,13 +42,11 @@ def __init__(self, parent) -> None:
4742 self .delete_button .clicked .connect (self .handle_delete_entry )
4843 self .incrementButton .clicked .connect (self .handle_increment )
4944 self .resetButton .clicked .connect (self .handle_reset )
50- self .entryLineEdit .textChanged .connect (self .OnLineEdit )
5145 self .listWidget .itemSelectionChanged .connect (self .OnItemSelectionChanged )
5246
5347 # Connect controller signals to dialog slots.
5448 self .controller .entrieAdded .connect (self .handle_entry_added )
5549 self .controller .entrieUpdated .connect (self .handle_entry_updated )
56-
5750 # Populate the list with existing entries.
5851 self .populate_list ()
5952 self .set_shortcuts ()
@@ -92,19 +85,24 @@ def add_list_item(self, entry):
9285 self .listWidget .addItem (item )
9386
9487 def handle_add_entry (self ):
95- """Called when the Add button is clicked."""
96- new_name = self .entryLineEdit .text ().strip ()
97- self .controller .add_entry (new_name )
98- self .entryLineEdit .clear ()
99- self .listWidget .setFocus ()
88+ """Called when the Add button is clicked.
10089
90+ Opens a QInputDialog to obtain the name for the new tasbih entry.
91+ If a valid name is entered, it is added to the list and the list is focused.
92+ """
93+ new_name , ok = QInputDialog .getText (self , "إضافة تسبيح" , "أدخل اسم التسبيح:" )
94+ if ok and new_name .strip ():
95+ self .controller .add_entry (new_name .strip ())
96+ self .listWidget .setFocus ()
97+
10198 def handle_entry_added (self , entry : TasbihEntry ):
10299 """
103100 Slot called when a new entry is added.
104101 Retrieves the full entry info and adds it to the list.
105102 """
106103 self .add_list_item (entry )
107104 self .listWidget .setCurrentRow (self .listWidget .count () - 1 )
105+
108106
109107 def handle_entry_updated (self , entry : TasbihEntry ):
110108 """
0 commit comments