Refactor and enhance UI components

- Updated `CableInfoWidget` to include a TODO comment regarding manufacturer verification.
- Refactored `CustomTab` and `CustomTabWidget` to remove notification label functionality, simplifying the class structure.
- Improved `DeviceInfoWidget` by adding a destructor to manage graphics view memory and initializing graphics scene properly.
- Introduced `DiskUsageBar` and `DiskUsageWidget` classes to manage disk usage visualization, including hover popover functionality for detailed information.
- Enhanced `MediaPreviewDialog` to include more descriptive window titles and adjusted status label styling based on platform.
- Added platform-specific functionality in `macos.h` and `macos.mm` for popover management.
- Cleaned up `ToolboxWidget` by adjusting label styles and removing fixed sizes for better responsiveness.
This commit is contained in:
uncor3
2025-10-02 09:29:55 -07:00
parent 6bbad2a3b6
commit f0fede4e81
17 changed files with 605 additions and 271 deletions
+20 -9
View File
@@ -8,6 +8,7 @@
#include <QDebug>
#include <QGraphicsDropShadowEffect>
#include <QGraphicsPixmapItem>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGridLayout>
#include <QHBoxLayout>
@@ -30,19 +31,18 @@ DeviceInfoWidget::DeviceInfoWidget(iDescriptorDevice *device, QWidget *parent)
QHBoxLayout *mainLayout = new QHBoxLayout(this);
mainLayout->setContentsMargins(2, 2, 2, 2);
mainLayout->setSpacing(2);
QGraphicsScene *scene = new QGraphicsScene(this);
m_graphicsScene = new QGraphicsScene(this); // no parent
QGraphicsPixmapItem *pixmapItem =
new QGraphicsPixmapItem(QPixmap(":/resources/iphone.png"));
scene->addItem(pixmapItem);
m_graphicsScene->addItem(pixmapItem);
QGraphicsView *graphicsView = new ResponsiveGraphicsView(scene, this);
graphicsView->setRenderHint(QPainter::Antialiasing);
graphicsView->setMinimumWidth(200);
graphicsView->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Expanding);
graphicsView->setStyleSheet("background: transparent; border: none;");
m_graphicsView = new ResponsiveGraphicsView(m_graphicsScene, this);
m_graphicsView->setRenderHint(QPainter::Antialiasing);
m_graphicsView->setMinimumWidth(200);
m_graphicsView->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Expanding);
m_graphicsView->setStyleSheet("background: transparent; border: none;");
mainLayout->addWidget(graphicsView, 1); // Stretch factor 1
mainLayout->addWidget(m_graphicsView, 1); // Stretch factor 1
// Right side: Info Table
QWidget *infoContainer = new QWidget();
@@ -161,6 +161,8 @@ DeviceInfoWidget::DeviceInfoWidget(iDescriptorDevice *device, QWidget *parent)
" background-color: " +
background.name() +
";"
// " background-color: #161d37;"
// " border: 1px solid #29356b;"
" border-radius: 8px;"
"}");
@@ -317,6 +319,15 @@ DeviceInfoWidget::DeviceInfoWidget(iDescriptorDevice *device, QWidget *parent)
m_updateTimer->start(30000); // Update every 30 seconds
}
DeviceInfoWidget::~DeviceInfoWidget()
{
if (m_graphicsView) {
m_graphicsView->setScene(
nullptr); // prevents QGraphicsScene from calling into view during
// its destructor only needed on macos ?
}
}
void DeviceInfoWidget::onBatteryMoreClicked()
{
QMessageBox msgBox;