from PyQt5.QtWidgets import QMainWindow, QVBoxLayout, QHBoxLayout, QWidget, QPushButton, QLabel
from PyQt5.QtGui import QColor, QIcon
from job_list_widget import JobListWidget
from log_widget import LogWidget
from info_widget import InfoWidget
import sys, os

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Bunny Sync Application")
        self.setGeometry(100, 100, 800, 600)
        image_path = self.resource_path("images/realrabbit.ico")
        self.setWindowIcon(QIcon(image_path))
        self.setup_ui()

    def resource_path(self, relative_path):
        if hasattr(sys, '_MEIPASS'):
            return os.path.join(sys._MEIPASS, relative_path)
        return os.path.join(os.path.abspath("."), relative_path)

    def setup_ui(self):
        main_widget = QWidget()
        main_layout = QHBoxLayout()
        main_widget.setLayout(main_layout)
        self.setCentralWidget(main_widget)

        left_panel = QWidget()
        left_layout = QVBoxLayout()
        left_panel.setLayout(left_layout)
        left_panel.setObjectName('menu')
        left_panel.setFixedWidth(80)

        self.list_button = QPushButton("List")
        self.log_button = QPushButton("Log")
        self.info_button = QPushButton("Info")
        left_layout.addWidget(self.list_button)
        left_layout.addWidget(self.log_button)
        left_layout.addWidget(self.info_button)
        left_layout.addStretch()

        self.right_panel = QWidget()
        self.right_layout = QVBoxLayout()
        self.right_panel.setLayout(self.right_layout)

        main_layout.addWidget(left_panel)
        main_layout.addWidget(self.right_panel)

        self.job_list_widget = JobListWidget(self)
        self.log_widget = LogWidget(self)
        self.info_widget = InfoWidget(self)

        self.right_layout.addWidget(self.job_list_widget)
        self.right_layout.addWidget(self.log_widget)
        self.right_layout.addWidget(self.info_widget)

        self.list_button.clicked.connect(self.show_job_list)
        self.log_button.clicked.connect(self.show_log)
        self.info_button.clicked.connect(self.show_info)

        self.setStyleSheet("""
            QWidget {
                background-color: #C8F0F0;
                border-radius: 10px;
                padding: 10px;
            }             
            QTextEdit {
                background-color: #ffffff;
                color: #333333;
                border-radius: 10px;
                padding: 10px;
            }
            QLineEdit {
                background-color: #56BFF0;
                color: #333333;
                border-radius: 10px;
                padding: 10px;
            }
            QLabel {
                color: #333333;
                font-size: 14px;
            }
            QLabel#jobset {             
                font-size: 14px;
                font-weight: bold;  
            }
            QLabel#jobitem {
                background-color: #ffffff;               
                font-size: 10px;
                font-weight: bold;  
            }
            QPushButton {
                background-color: #558DED;
                color: white;
                border: none;
                padding: 5px 10px;
                border-radius: 5px;
                font-size: 14px;
            }
            QPushButton:hover {
                background-color: #55ED86;
            }              
            QListWidget {
                background-color: #56BFF0;
            }
            QWidget#menu {
                background-color: #55EDED;
            }
        """)

        self.show_job_list()

    def show_job_list(self):
        self.job_list_widget.show()
        self.log_widget.hide()
        self.info_widget.hide()

    def show_log(self):
        self.job_list_widget.hide()
        self.log_widget.show()
        self.info_widget.hide()

    def show_info(self):
        self.job_list_widget.hide()
        self.log_widget.hide()
        self.info_widget.show()

    def add_log(self, message, foreground=QColor("black"), background=QColor("white")):
        self.log_widget.add_log(message, foreground, background)
