79 lines
3.2 KiB
Python
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()
|