Clean up UI: remove overrides, simplify controls, use proper labels
- Remove all font size and margin specifications to respect user's theme - Remove Top N control (now fixed at 10 entries) - Move time period selection next to analyze button in same row - Use proper button labels: 'Add Database File' and 'Clear Database Files' - Remove manual layout margins/spacing to use system defaults - Simplify controls layout with database controls on left, analysis on right - Let the operating system handle proper spacing and theming
This commit is contained in:
+13
-51
@@ -358,8 +358,6 @@ 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 compact controls section
|
# Create compact controls section
|
||||||
self.createControlsSection()
|
self.createControlsSection()
|
||||||
@@ -376,17 +374,14 @@ class MainWindow(QMainWindow):
|
|||||||
# Compact controls section
|
# Compact controls section
|
||||||
controlsGroup = QGroupBox("Controls")
|
controlsGroup = QGroupBox("Controls")
|
||||||
controlsLayout = QHBoxLayout()
|
controlsLayout = QHBoxLayout()
|
||||||
controlsLayout.setContentsMargins(10, 10, 10, 10)
|
|
||||||
controlsLayout.setSpacing(15)
|
|
||||||
|
|
||||||
# Database controls
|
# Database controls
|
||||||
dbControlsLayout = QVBoxLayout()
|
dbControlsLayout = QVBoxLayout()
|
||||||
dbControlsLayout.setSpacing(3)
|
|
||||||
|
|
||||||
dbButtonsLayout = QHBoxLayout()
|
dbButtonsLayout = QHBoxLayout()
|
||||||
addDbButton = QPushButton("Add DB")
|
addDbButton = QPushButton("Add Database File")
|
||||||
addDbButton.clicked.connect(self.addDatabaseFile)
|
addDbButton.clicked.connect(self.addDatabaseFile)
|
||||||
clearDbButton = QPushButton("Clear")
|
clearDbButton = QPushButton("Clear Database Files")
|
||||||
clearDbButton.clicked.connect(self.clearDatabaseFiles)
|
clearDbButton.clicked.connect(self.clearDatabaseFiles)
|
||||||
dbButtonsLayout.addWidget(addDbButton)
|
dbButtonsLayout.addWidget(addDbButton)
|
||||||
dbButtonsLayout.addWidget(clearDbButton)
|
dbButtonsLayout.addWidget(clearDbButton)
|
||||||
@@ -394,48 +389,31 @@ class MainWindow(QMainWindow):
|
|||||||
self.dbPathsLabel = QLabel("No database files selected")
|
self.dbPathsLabel = QLabel("No database files selected")
|
||||||
self.dbPathsLabel.setMaximumWidth(200)
|
self.dbPathsLabel.setMaximumWidth(200)
|
||||||
self.dbPathsLabel.setWordWrap(True)
|
self.dbPathsLabel.setWordWrap(True)
|
||||||
self.dbPathsLabel.setStyleSheet("font-size: 9pt; color: #666;")
|
|
||||||
|
|
||||||
dbControlsLayout.addLayout(dbButtonsLayout)
|
dbControlsLayout.addLayout(dbButtonsLayout)
|
||||||
dbControlsLayout.addWidget(self.dbPathsLabel)
|
dbControlsLayout.addWidget(self.dbPathsLabel)
|
||||||
|
|
||||||
# Filter controls
|
# Analyze controls (period + button)
|
||||||
filterControlsLayout = QVBoxLayout()
|
analyzeControlsLayout = QVBoxLayout()
|
||||||
filterControlsLayout.setSpacing(3)
|
|
||||||
|
|
||||||
# Time period
|
# Time period and analyze button in same row
|
||||||
periodLayout = QHBoxLayout()
|
analyzeRowLayout = QHBoxLayout()
|
||||||
periodLayout.addWidget(QLabel("Period:"))
|
analyzeRowLayout.addWidget(QLabel("Time period:"))
|
||||||
self.periodComboBox = QComboBox()
|
self.periodComboBox = QComboBox()
|
||||||
self.periodComboBox.addItems(["All time", "Last month", "Last year"])
|
self.periodComboBox.addItems(["All time", "Last month", "Last year"])
|
||||||
self.periodComboBox.setCurrentText("All time")
|
self.periodComboBox.setCurrentText("All time")
|
||||||
periodLayout.addWidget(self.periodComboBox)
|
analyzeRowLayout.addWidget(self.periodComboBox)
|
||||||
|
|
||||||
# Top N
|
|
||||||
topLayout = QHBoxLayout()
|
|
||||||
topLayout.addWidget(QLabel("Top N:"))
|
|
||||||
self.topSpinBox = QSpinBox()
|
|
||||||
self.topSpinBox.setMinimum(1)
|
|
||||||
self.topSpinBox.setMaximum(100)
|
|
||||||
self.topSpinBox.setValue(10)
|
|
||||||
self.topSpinBox.setMaximumWidth(60)
|
|
||||||
topLayout.addWidget(self.topSpinBox)
|
|
||||||
|
|
||||||
filterControlsLayout.addLayout(periodLayout)
|
|
||||||
filterControlsLayout.addLayout(topLayout)
|
|
||||||
|
|
||||||
# Analyze button
|
|
||||||
self.analyzeButton = QPushButton("Analyze Transfers")
|
self.analyzeButton = QPushButton("Analyze Transfers")
|
||||||
self.analyzeButton.clicked.connect(self.analyzeTransfers)
|
self.analyzeButton.clicked.connect(self.analyzeTransfers)
|
||||||
self.analyzeButton.setMinimumHeight(40)
|
analyzeRowLayout.addWidget(self.analyzeButton)
|
||||||
|
|
||||||
|
analyzeControlsLayout.addLayout(analyzeRowLayout)
|
||||||
|
|
||||||
# Add all sections to main layout
|
# Add all sections to main layout
|
||||||
controlsLayout.addLayout(dbControlsLayout)
|
controlsLayout.addLayout(dbControlsLayout)
|
||||||
controlsLayout.addWidget(QLabel("|")) # Separator
|
|
||||||
controlsLayout.addLayout(filterControlsLayout)
|
|
||||||
controlsLayout.addWidget(QLabel("|")) # Separator
|
|
||||||
controlsLayout.addWidget(self.analyzeButton)
|
|
||||||
controlsLayout.addStretch()
|
controlsLayout.addStretch()
|
||||||
|
controlsLayout.addLayout(analyzeControlsLayout)
|
||||||
|
|
||||||
# Hidden variables to replace checkboxes
|
# Hidden variables to replace checkboxes
|
||||||
self.uploadsCheckBox = True
|
self.uploadsCheckBox = True
|
||||||
@@ -461,8 +439,6 @@ 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()
|
||||||
@@ -470,11 +446,9 @@ 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(90)
|
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)
|
||||||
@@ -482,11 +456,9 @@ 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(90)
|
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)
|
||||||
@@ -499,7 +471,6 @@ 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)
|
||||||
@@ -512,7 +483,6 @@ 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)
|
||||||
@@ -530,7 +500,6 @@ 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)
|
||||||
@@ -543,7 +512,6 @@ 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)
|
||||||
@@ -562,14 +530,10 @@ 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()
|
||||||
@@ -607,8 +571,6 @@ 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()
|
||||||
@@ -949,7 +911,7 @@ class MainWindow(QMainWindow):
|
|||||||
days = 365
|
days = 365
|
||||||
else:
|
else:
|
||||||
days = None
|
days = None
|
||||||
top_n = self.topSpinBox.value()
|
top_n = 10 # Fixed value since we removed the spinbox
|
||||||
|
|
||||||
# Always show both upload and download stats
|
# Always show both upload and download stats
|
||||||
show_uploads = True
|
show_uploads = True
|
||||||
|
|||||||
Reference in New Issue
Block a user