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:
+38
-5
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user