Mycar_SMS_Sender/gui/settings_dialog.py

79 lines
3.2 KiB
Python

# gui/settings_dialog.py
from PySide6.QtWidgets import QDialog, QVBoxLayout, QHBoxLayout, QLineEdit, QPushButton, QListWidget, QLabel, QMessageBox
from PySide6.QtCore import QSettings
class SettingsDialog(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
self.setWindowTitle("사용자 설정")
self.resize(400, 300)
self.settings = QSettings("MyCompany", "MySMSApp")
self.setup_ui()
self.load_shop_names()
def setup_ui(self):
layout = QVBoxLayout(self)
self.shop_list = QListWidget()
self.shop_list.setToolTip("저장된 샵 이름 목록을 확인하세요.")
layout.addWidget(QLabel("저장된 샵 이름:"))
layout.addWidget(self.shop_list)
input_layout = QHBoxLayout()
self.shop_input = QLineEdit()
self.shop_input.setPlaceholderText("새 샵 이름 입력")
self.shop_input.setToolTip("새로운 샵 이름을 입력하세요.")
input_layout.addWidget(self.shop_input)
self.add_button = QPushButton("추가")
self.add_button.setToolTip("새 샵 이름을 추가합니다.")
self.add_button.clicked.connect(self.add_shop_name)
input_layout.addWidget(self.add_button)
layout.addLayout(input_layout)
button_layout = QHBoxLayout()
self.delete_button = QPushButton("삭제")
self.delete_button.setToolTip("선택한 샵 이름을 삭제합니다.")
self.delete_button.clicked.connect(self.delete_shop_name)
self.close_button = QPushButton("닫기")
self.close_button.clicked.connect(self.accept)
button_layout.addWidget(self.delete_button)
button_layout.addWidget(self.close_button)
layout.addLayout(button_layout)
def load_shop_names(self):
shop_names = self.settings.value("shop_names", [])
if not isinstance(shop_names, list):
shop_names = [shop_names] if shop_names else []
self.shop_list.clear()
for name in shop_names:
self.shop_list.addItem(name)
def add_shop_name(self):
name = self.shop_input.text().strip()
if not name:
return
current_names = self.settings.value("shop_names", [])
if not isinstance(current_names, list):
current_names = [current_names] if current_names else []
if name in current_names:
QMessageBox.warning(self, "중복", "이미 존재하는 샵 이름입니다.")
return
current_names.append(name)
self.settings.setValue("shop_names", current_names)
self.load_shop_names()
self.shop_input.clear()
def delete_shop_name(self):
selected_items = self.shop_list.selectedItems()
if not selected_items:
return
current_names = self.settings.value("shop_names", [])
if not isinstance(current_names, list):
current_names = [current_names] if current_names else []
for item in selected_items:
name = item.text()
if name in current_names:
current_names.remove(name)
self.settings.setValue("shop_names", current_names)
self.load_shop_names()