Make UI more compact and efficient

- Reduce window minimum size to 900x700, default to 1000x750
- Decrease graph figure sizes from 12x4 to 10x3
- Add proper margins and spacing throughout all layouts
- Reduce summary text height from 120px to 90px
- Limit table heights to 150px with alternating row colors
- Adjust graph subplot margins for better space utilization
- Use smaller font size for summary text
- Improve overall visual density and information display
This commit is contained in:
Alec
2025-07-17 16:17:56 +02:00
parent e484bd6704
commit 74237b6429
+38 -5
View File
@@ -348,7 +348,8 @@ class MainWindow(QMainWindow):
super().__init__() super().__init__()
self.setWindowTitle("slskd Transfer Statistics") self.setWindowTitle("slskd Transfer Statistics")
self.setMinimumSize(800, 600) self.setMinimumSize(900, 700)
self.resize(1000, 750)
self.db_paths = [] self.db_paths = []
@@ -357,6 +358,8 @@ class MainWindow(QMainWindow):
self.setCentralWidget(self.centralWidget) self.setCentralWidget(self.centralWidget)
self.mainLayout = QVBoxLayout(self.centralWidget) self.mainLayout = QVBoxLayout(self.centralWidget)
self.mainLayout.setContentsMargins(10, 10, 10, 10)
self.mainLayout.setSpacing(8)
# Create top section for database selection # Create top section for database selection
self.createDatabaseSection() self.createDatabaseSection()
@@ -381,6 +384,8 @@ class MainWindow(QMainWindow):
# Database selection section # Database selection section
dbSection = QGroupBox("Database Files") dbSection = QGroupBox("Database Files")
dbLayout = QVBoxLayout() dbLayout = QVBoxLayout()
dbLayout.setContentsMargins(10, 10, 10, 10)
dbLayout.setSpacing(5)
# Create layout for database selection buttons # Create layout for database selection buttons
buttonLayout = QHBoxLayout() buttonLayout = QHBoxLayout()
@@ -408,6 +413,8 @@ class MainWindow(QMainWindow):
# Filter options section # Filter options section
filterSection = QGroupBox("Filters") filterSection = QGroupBox("Filters")
filterLayout = QFormLayout() filterLayout = QFormLayout()
filterLayout.setContentsMargins(10, 10, 10, 10)
filterLayout.setVerticalSpacing(5)
# Time period filter # Time period filter
self.periodComboBox = QComboBox() self.periodComboBox = QComboBox()
@@ -446,6 +453,8 @@ class MainWindow(QMainWindow):
# Create a widget for all statistics # Create a widget for all statistics
self.summaryWidget = QWidget() self.summaryWidget = QWidget()
self.summaryLayout = QVBoxLayout(self.summaryWidget) self.summaryLayout = QVBoxLayout(self.summaryWidget)
self.summaryLayout.setContentsMargins(5, 5, 5, 5)
self.summaryLayout.setSpacing(8)
# Summary section - horizontal layout with two text boxes # Summary section - horizontal layout with two text boxes
summarySection = QHBoxLayout() summarySection = QHBoxLayout()
@@ -453,9 +462,11 @@ class MainWindow(QMainWindow):
# Upload summary # Upload summary
uploadSummaryGroup = QGroupBox("Upload Summary") uploadSummaryGroup = QGroupBox("Upload Summary")
uploadSummaryLayout = QVBoxLayout() uploadSummaryLayout = QVBoxLayout()
uploadSummaryLayout.setContentsMargins(5, 5, 5, 5)
self.uploadSummary = QTextEdit() self.uploadSummary = QTextEdit()
self.uploadSummary.setReadOnly(True) self.uploadSummary.setReadOnly(True)
self.uploadSummary.setMaximumHeight(120) self.uploadSummary.setMaximumHeight(90)
self.uploadSummary.setFont(QFont("Arial", 9))
uploadSummaryLayout.addWidget(self.uploadSummary) uploadSummaryLayout.addWidget(self.uploadSummary)
uploadSummaryGroup.setLayout(uploadSummaryLayout) uploadSummaryGroup.setLayout(uploadSummaryLayout)
summarySection.addWidget(uploadSummaryGroup) summarySection.addWidget(uploadSummaryGroup)
@@ -463,9 +474,11 @@ class MainWindow(QMainWindow):
# Download summary # Download summary
downloadSummaryGroup = QGroupBox("Download Summary") downloadSummaryGroup = QGroupBox("Download Summary")
downloadSummaryLayout = QVBoxLayout() downloadSummaryLayout = QVBoxLayout()
downloadSummaryLayout.setContentsMargins(5, 5, 5, 5)
self.downloadSummary = QTextEdit() self.downloadSummary = QTextEdit()
self.downloadSummary.setReadOnly(True) self.downloadSummary.setReadOnly(True)
self.downloadSummary.setMaximumHeight(120) self.downloadSummary.setMaximumHeight(90)
self.downloadSummary.setFont(QFont("Arial", 9))
downloadSummaryLayout.addWidget(self.downloadSummary) downloadSummaryLayout.addWidget(self.downloadSummary)
downloadSummaryGroup.setLayout(downloadSummaryLayout) downloadSummaryGroup.setLayout(downloadSummaryLayout)
summarySection.addWidget(downloadSummaryGroup) summarySection.addWidget(downloadSummaryGroup)
@@ -478,9 +491,12 @@ class MainWindow(QMainWindow):
# Upload users # Upload users
uploadUsersGroup = QGroupBox("Top Users by Upload Size") uploadUsersGroup = QGroupBox("Top Users by Upload Size")
uploadUsersLayout = QVBoxLayout() uploadUsersLayout = QVBoxLayout()
uploadUsersLayout.setContentsMargins(5, 5, 5, 5)
self.uploadUsersTable = QTableWidget(0, 3) self.uploadUsersTable = QTableWidget(0, 3)
self.uploadUsersTable.setHorizontalHeaderLabels(["User", "Files", "Data"]) self.uploadUsersTable.setHorizontalHeaderLabels(["User", "Files", "Data"])
self.uploadUsersTable.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) self.uploadUsersTable.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
self.uploadUsersTable.setMaximumHeight(150)
self.uploadUsersTable.setAlternatingRowColors(True)
uploadUsersLayout.addWidget(self.uploadUsersTable) uploadUsersLayout.addWidget(self.uploadUsersTable)
uploadUsersGroup.setLayout(uploadUsersLayout) uploadUsersGroup.setLayout(uploadUsersLayout)
usersSection.addWidget(uploadUsersGroup) usersSection.addWidget(uploadUsersGroup)
@@ -488,9 +504,12 @@ class MainWindow(QMainWindow):
# Download users # Download users
downloadUsersGroup = QGroupBox("Top Users by Download Size") downloadUsersGroup = QGroupBox("Top Users by Download Size")
downloadUsersLayout = QVBoxLayout() downloadUsersLayout = QVBoxLayout()
downloadUsersLayout.setContentsMargins(5, 5, 5, 5)
self.downloadUsersTable = QTableWidget(0, 3) self.downloadUsersTable = QTableWidget(0, 3)
self.downloadUsersTable.setHorizontalHeaderLabels(["User", "Files", "Data"]) self.downloadUsersTable.setHorizontalHeaderLabels(["User", "Files", "Data"])
self.downloadUsersTable.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) self.downloadUsersTable.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
self.downloadUsersTable.setMaximumHeight(150)
self.downloadUsersTable.setAlternatingRowColors(True)
downloadUsersLayout.addWidget(self.downloadUsersTable) downloadUsersLayout.addWidget(self.downloadUsersTable)
downloadUsersGroup.setLayout(downloadUsersLayout) downloadUsersGroup.setLayout(downloadUsersLayout)
usersSection.addWidget(downloadUsersGroup) usersSection.addWidget(downloadUsersGroup)
@@ -503,9 +522,12 @@ class MainWindow(QMainWindow):
# Upload file types # Upload file types
uploadTypesGroup = QGroupBox("Top File Types (Uploads)") uploadTypesGroup = QGroupBox("Top File Types (Uploads)")
uploadTypesLayout = QVBoxLayout() uploadTypesLayout = QVBoxLayout()
uploadTypesLayout.setContentsMargins(5, 5, 5, 5)
self.uploadTypesTable = QTableWidget(0, 3) self.uploadTypesTable = QTableWidget(0, 3)
self.uploadTypesTable.setHorizontalHeaderLabels(["Extension", "Files", "Data"]) self.uploadTypesTable.setHorizontalHeaderLabels(["Extension", "Files", "Data"])
self.uploadTypesTable.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) self.uploadTypesTable.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
self.uploadTypesTable.setMaximumHeight(150)
self.uploadTypesTable.setAlternatingRowColors(True)
uploadTypesLayout.addWidget(self.uploadTypesTable) uploadTypesLayout.addWidget(self.uploadTypesTable)
uploadTypesGroup.setLayout(uploadTypesLayout) uploadTypesGroup.setLayout(uploadTypesLayout)
typesSection.addWidget(uploadTypesGroup) typesSection.addWidget(uploadTypesGroup)
@@ -513,9 +535,12 @@ class MainWindow(QMainWindow):
# Download file types # Download file types
downloadTypesGroup = QGroupBox("Top File Types (Downloads)") downloadTypesGroup = QGroupBox("Top File Types (Downloads)")
downloadTypesLayout = QVBoxLayout() downloadTypesLayout = QVBoxLayout()
downloadTypesLayout.setContentsMargins(5, 5, 5, 5)
self.downloadTypesTable = QTableWidget(0, 3) self.downloadTypesTable = QTableWidget(0, 3)
self.downloadTypesTable.setHorizontalHeaderLabels(["Extension", "Files", "Data"]) self.downloadTypesTable.setHorizontalHeaderLabels(["Extension", "Files", "Data"])
self.downloadTypesTable.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) self.downloadTypesTable.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
self.downloadTypesTable.setMaximumHeight(150)
self.downloadTypesTable.setAlternatingRowColors(True)
downloadTypesLayout.addWidget(self.downloadTypesTable) downloadTypesLayout.addWidget(self.downloadTypesTable)
downloadTypesGroup.setLayout(downloadTypesLayout) downloadTypesGroup.setLayout(downloadTypesLayout)
typesSection.addWidget(downloadTypesGroup) typesSection.addWidget(downloadTypesGroup)
@@ -529,10 +554,14 @@ class MainWindow(QMainWindow):
# Create visual stats tab # Create visual stats tab
self.visualWidget = QWidget() self.visualWidget = QWidget()
self.visualLayout = QVBoxLayout(self.visualWidget) self.visualLayout = QVBoxLayout(self.visualWidget)
self.visualLayout.setContentsMargins(5, 5, 5, 5)
self.visualLayout.setSpacing(8)
# Create amounts graph section # Create amounts graph section
amountsGroup = QGroupBox("Transfer Amounts Over Time") amountsGroup = QGroupBox("Transfer Amounts Over Time")
amountsLayout = QVBoxLayout() amountsLayout = QVBoxLayout()
amountsLayout.setContentsMargins(5, 5, 5, 5)
amountsLayout.setSpacing(5)
# Checkboxes for amounts metrics # Checkboxes for amounts metrics
amountsCheckboxLayout = QHBoxLayout() amountsCheckboxLayout = QHBoxLayout()
@@ -559,7 +588,8 @@ class MainWindow(QMainWindow):
amountsCheckboxLayout.addStretch() amountsCheckboxLayout.addStretch()
# Amounts graph canvas # Amounts graph canvas
self.amountsFigure = Figure(figsize=(12, 4)) self.amountsFigure = Figure(figsize=(10, 3))
self.amountsFigure.subplots_adjust(left=0.08, right=0.95, top=0.9, bottom=0.15)
self.amountsCanvas = FigureCanvas(self.amountsFigure) self.amountsCanvas = FigureCanvas(self.amountsFigure)
amountsLayout.addLayout(amountsCheckboxLayout) amountsLayout.addLayout(amountsCheckboxLayout)
@@ -569,6 +599,8 @@ class MainWindow(QMainWindow):
# Create ratios graph section # Create ratios graph section
ratiosGroup = QGroupBox("Transfer Ratios Over Time") ratiosGroup = QGroupBox("Transfer Ratios Over Time")
ratiosLayout = QVBoxLayout() ratiosLayout = QVBoxLayout()
ratiosLayout.setContentsMargins(5, 5, 5, 5)
ratiosLayout.setSpacing(5)
# Checkboxes for ratios metrics # Checkboxes for ratios metrics
ratiosCheckboxLayout = QHBoxLayout() ratiosCheckboxLayout = QHBoxLayout()
@@ -585,7 +617,8 @@ class MainWindow(QMainWindow):
ratiosCheckboxLayout.addStretch() ratiosCheckboxLayout.addStretch()
# Ratios graph canvas # Ratios graph canvas
self.ratiosFigure = Figure(figsize=(12, 4)) self.ratiosFigure = Figure(figsize=(10, 3))
self.ratiosFigure.subplots_adjust(left=0.08, right=0.92, top=0.9, bottom=0.15)
self.ratiosCanvas = FigureCanvas(self.ratiosFigure) self.ratiosCanvas = FigureCanvas(self.ratiosFigure)
ratiosLayout.addLayout(ratiosCheckboxLayout) ratiosLayout.addLayout(ratiosCheckboxLayout)