from PyQt5.QtWidgets import (QDialog, QVBoxLayout, QLabel, QLineEdit, QPushButton, QMessageBox, QApplication) from PyQt5.QtCore import Qt from PyQt5.QtGui import QClipboard from license_manager import LicenseManager class RegistrationDialog(QDialog): def __init__(self): super().__init__() self.setWindowTitle("Aktivasi ProBackup") self.resize(400, 300) self.setStyleSheet(""" QDialog { background-color: #282a36; color: #f8f8f2; font-family: "Segoe UI"; } QLabel { color: #f8f8f2; font-size: 14px; } QLineEdit { background-color: #44475a; border: 1px solid #6272a4; padding: 8px; color: #f8f8f2; border-radius: 4px; } QPushButton { background-color: #6272a4; color: white; border: none; padding: 10px; border-radius: 4px; font-weight: bold; } QPushButton:hover { background-color: #bd93f9; } """) self.hwid = LicenseManager.get_hardware_id() self.verified = False self.setup_ui() def setup_ui(self): layout = QVBoxLayout(self) layout.setSpacing(15) # Title title = QLabel("Aktivasi Produk Diperlukan") title.setStyleSheet("font-size: 18px; font-weight: bold; color: #ff5555;") title.setAlignment(Qt.AlignCenter) layout.addWidget(title) # Info info = QLabel("Untuk menggunakan aplikasi ini, silakan kirimkan ID Mesin di bawah ini ke administrator untuk mendapatkan Kunci Aktivasi.") info.setWordWrap(True) layout.addWidget(info) # HWID Display layout.addWidget(QLabel("ID Mesin Anda:")) self.hwid_input = QLineEdit(self.hwid) self.hwid_input.setReadOnly(True) self.hwid_input.setStyleSheet("font-family: Consolas; font-size: 14px; color: #50fa7b;") layout.addWidget(self.hwid_input) copy_btn = QPushButton("Salin ID Mesin") copy_btn.clicked.connect(self.copy_hwid) layout.addWidget(copy_btn) # Key Input layout.addWidget(QLabel("Masukkan Kunci Aktivasi:")) self.key_input = QLineEdit() self.key_input.setPlaceholderText("Tempel kunci aktivasi disini...") layout.addWidget(self.key_input) # Actions activate_btn = QPushButton("AKTIFKAN") activate_btn.setStyleSheet("background-color: #50fa7b; color: #282a36;") activate_btn.clicked.connect(self.verify_key) layout.addWidget(activate_btn) layout.addStretch() def copy_hwid(self): cb = QApplication.clipboard() cb.setText(self.hwid) QMessageBox.information(self, "Disalin", "ID Mesin telah disalin ke clipboard.") def verify_key(self): key = self.key_input.text().strip() is_valid, status = LicenseManager.validate_license(key, self.hwid) if is_valid: LicenseManager.save_license(key) if status == 'mb_changed': QMessageBox.warning(self, "Peringatan Hardware", "Aktivasi berhasil, namun terdeteksi MOTHERBOARD telah berubah.\n" "Jika Anda mengganti hardware lagi, lisensi bisa tidak valid.") elif status == 'cpu_changed': QMessageBox.warning(self, "Peringatan Hardware", "Aktivasi berhasil, namun terdeteksi PROCESSOR telah berubah.\n" "Jika Anda mengganti hardware lagi, lisensi bisa tidak valid.") else: QMessageBox.information(self, "Sukses", "Aktivasi Berhasil! Terima kasih.") self.verified = True self.accept() else: if status == 'both_changed': QMessageBox.critical(self, "Hardware Berubah", "Motherboard DAN Processor terdeteksi berubah.\n\n" "Lisensi tidak valid untuk hardware baru ini.\n" "Silakan hubungi admin untuk aktivasi ulang.\n\n" "WA: +62 817-0380-6655") else: QMessageBox.warning(self, "Gagal", "Kunci Aktivasi Salah. Silakan coba lagi.") def closeEvent(self, event): if not self.verified: # If closed without verification, reject dialog self.reject() else: event.accept()