forked from Boria138/PortProtonQt
feat(settings): added preloader because flatpak is too slow
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
This commit is contained in:
@@ -1832,7 +1832,7 @@ class ExeSettingsDialog(QDialog):
|
|||||||
# Connect tab change to update description hint
|
# Connect tab change to update description hint
|
||||||
self.tab_widget.currentChanged.connect(self.on_table_selection_changed)
|
self.tab_widget.currentChanged.connect(self.on_table_selection_changed)
|
||||||
|
|
||||||
# Main settings table
|
# Main settings table with preloader
|
||||||
self.settings_table = QTableWidget()
|
self.settings_table = QTableWidget()
|
||||||
self.settings_table.setAlternatingRowColors(True)
|
self.settings_table.setAlternatingRowColors(True)
|
||||||
self.settings_table.setFocusPolicy(Qt.FocusPolicy.StrongFocus)
|
self.settings_table.setFocusPolicy(Qt.FocusPolicy.StrongFocus)
|
||||||
@@ -1847,11 +1847,30 @@ class ExeSettingsDialog(QDialog):
|
|||||||
self.settings_table.verticalHeader().setSectionResizeMode(QHeaderView.ResizeMode.ResizeToContents)
|
self.settings_table.verticalHeader().setSectionResizeMode(QHeaderView.ResizeMode.ResizeToContents)
|
||||||
self.settings_table.setTextElideMode(Qt.TextElideMode.ElideNone)
|
self.settings_table.setTextElideMode(Qt.TextElideMode.ElideNone)
|
||||||
self.settings_table.setStyleSheet(self.theme.WINETRICKS_TABBLE_STYLE)
|
self.settings_table.setStyleSheet(self.theme.WINETRICKS_TABBLE_STYLE)
|
||||||
self.main_tab_layout.addWidget(self.settings_table)
|
|
||||||
|
# Create preloader for main settings table
|
||||||
|
self.settings_preloader = Preloader()
|
||||||
|
settings_preloader_container = QWidget()
|
||||||
|
settings_preloader_layout = QVBoxLayout(settings_preloader_container)
|
||||||
|
settings_preloader_layout.addStretch()
|
||||||
|
settings_preloader_hlayout = QHBoxLayout()
|
||||||
|
settings_preloader_hlayout.addStretch()
|
||||||
|
settings_preloader_hlayout.addWidget(self.settings_preloader)
|
||||||
|
settings_preloader_hlayout.addStretch()
|
||||||
|
settings_preloader_layout.addLayout(settings_preloader_hlayout)
|
||||||
|
settings_preloader_layout.addStretch()
|
||||||
|
settings_preloader_layout.setContentsMargins(0, 0, 0, 0)
|
||||||
|
settings_preloader_layout.setSpacing(0)
|
||||||
|
|
||||||
|
# Create stacked widget for main settings
|
||||||
|
self.settings_container = QStackedWidget()
|
||||||
|
self.settings_container.addWidget(settings_preloader_container) # Index 0: preloader
|
||||||
|
self.settings_container.addWidget(self.settings_table) # Index 1: table
|
||||||
|
self.main_tab_layout.addWidget(self.settings_container)
|
||||||
# Connect selection changed signal for the main table
|
# Connect selection changed signal for the main table
|
||||||
self.settings_table.currentCellChanged.connect(self.on_table_selection_changed)
|
self.settings_table.currentCellChanged.connect(self.on_table_selection_changed)
|
||||||
|
|
||||||
# Advanced settings table
|
# Advanced settings table with preloader
|
||||||
self.advanced_table = QTableWidget()
|
self.advanced_table = QTableWidget()
|
||||||
self.advanced_table.setAlternatingRowColors(True)
|
self.advanced_table.setAlternatingRowColors(True)
|
||||||
self.advanced_table.setFocusPolicy(Qt.FocusPolicy.StrongFocus)
|
self.advanced_table.setFocusPolicy(Qt.FocusPolicy.StrongFocus)
|
||||||
@@ -1868,7 +1887,26 @@ class ExeSettingsDialog(QDialog):
|
|||||||
self.advanced_table.verticalHeader().setSectionResizeMode(QHeaderView.ResizeMode.ResizeToContents)
|
self.advanced_table.verticalHeader().setSectionResizeMode(QHeaderView.ResizeMode.ResizeToContents)
|
||||||
self.advanced_table.setTextElideMode(Qt.TextElideMode.ElideNone)
|
self.advanced_table.setTextElideMode(Qt.TextElideMode.ElideNone)
|
||||||
self.advanced_table.setStyleSheet(self.theme.WINETRICKS_TABBLE_STYLE)
|
self.advanced_table.setStyleSheet(self.theme.WINETRICKS_TABBLE_STYLE)
|
||||||
self.advanced_tab_layout.addWidget(self.advanced_table)
|
|
||||||
|
# Create preloader for advanced settings table
|
||||||
|
self.advanced_preloader = Preloader()
|
||||||
|
advanced_preloader_container = QWidget()
|
||||||
|
advanced_preloader_layout = QVBoxLayout(advanced_preloader_container)
|
||||||
|
advanced_preloader_layout.addStretch()
|
||||||
|
advanced_preloader_hlayout = QHBoxLayout()
|
||||||
|
advanced_preloader_hlayout.addStretch()
|
||||||
|
advanced_preloader_hlayout.addWidget(self.advanced_preloader)
|
||||||
|
advanced_preloader_hlayout.addStretch()
|
||||||
|
advanced_preloader_layout.addLayout(advanced_preloader_hlayout)
|
||||||
|
advanced_preloader_layout.addStretch()
|
||||||
|
advanced_preloader_layout.setContentsMargins(0, 0, 0, 0)
|
||||||
|
advanced_preloader_layout.setSpacing(0)
|
||||||
|
|
||||||
|
# Create stacked widget for advanced settings
|
||||||
|
self.advanced_container = QStackedWidget()
|
||||||
|
self.advanced_container.addWidget(advanced_preloader_container) # Index 0: preloader
|
||||||
|
self.advanced_container.addWidget(self.advanced_table) # Index 1: table
|
||||||
|
self.advanced_tab_layout.addWidget(self.advanced_container)
|
||||||
# Connect selection changed signal for the advanced table
|
# Connect selection changed signal for the advanced table
|
||||||
self.advanced_table.currentCellChanged.connect(self.on_table_selection_changed)
|
self.advanced_table.currentCellChanged.connect(self.on_table_selection_changed)
|
||||||
|
|
||||||
@@ -1906,6 +1944,10 @@ class ExeSettingsDialog(QDialog):
|
|||||||
|
|
||||||
def load_current_settings(self):
|
def load_current_settings(self):
|
||||||
"""Load available toggles first, then current settings."""
|
"""Load available toggles first, then current settings."""
|
||||||
|
# Show preloaders initially
|
||||||
|
self.settings_container.setCurrentIndex(0) # Show preloader for main settings
|
||||||
|
self.advanced_container.setCurrentIndex(0) # Show preloader for advanced settings
|
||||||
|
|
||||||
process = QProcess(self)
|
process = QProcess(self)
|
||||||
process.finished.connect(self.on_list_db_finished)
|
process.finished.connect(self.on_list_db_finished)
|
||||||
args = self._get_process_args(["cli", "--list-db"])
|
args = self._get_process_args(["cli", "--list-db"])
|
||||||
@@ -1997,6 +2039,10 @@ class ExeSettingsDialog(QDialog):
|
|||||||
self.populate_table()
|
self.populate_table()
|
||||||
self.populate_advanced()
|
self.populate_advanced()
|
||||||
|
|
||||||
|
# Show the loaded content and hide preloaders
|
||||||
|
self.settings_container.setCurrentIndex(1) # Show main settings table
|
||||||
|
self.advanced_container.setCurrentIndex(1) # Show advanced settings table
|
||||||
|
|
||||||
def populate_table(self):
|
def populate_table(self):
|
||||||
"""Populate the table with settings that are available in both lists."""
|
"""Populate the table with settings that are available in both lists."""
|
||||||
self.settings_table.setRowCount(0)
|
self.settings_table.setRowCount(0)
|
||||||
|
|||||||
Reference in New Issue
Block a user