mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-03 00:15:21 +00:00
disk plugin support unmount
Change-Id: If1e286bfb9f88c4fa268d7ab30b027da95e37452
This commit is contained in:
parent
7042c3560f
commit
9cb9016933
@ -84,7 +84,7 @@ public Q_SLOTS: // METHODS
|
||||
}
|
||||
|
||||
Q_SIGNALS: // SIGNALS
|
||||
void ButtonRelease(int in0, int in1, int in2, const QString &in3);
|
||||
void ButtonRelease(int button, int x, int y, const QString &id);
|
||||
// begin property changed signals
|
||||
};
|
||||
|
||||
|
@ -14,6 +14,7 @@ DockItem::DockItem(const ItemType type, QWidget *parent)
|
||||
: QWidget(parent),
|
||||
m_type(type),
|
||||
m_hover(false),
|
||||
m_popupShown(false),
|
||||
|
||||
m_popupTipsDelayTimer(new QTimer(this)),
|
||||
|
||||
@ -32,6 +33,12 @@ DockItem::DockItem(const ItemType type, QWidget *parent)
|
||||
connect(m_popupTipsDelayTimer, &QTimer::timeout, this, &DockItem::showHoverTips);
|
||||
}
|
||||
|
||||
DockItem::~DockItem()
|
||||
{
|
||||
if (m_popupShown)
|
||||
popupWindowAccept();
|
||||
}
|
||||
|
||||
void DockItem::setDockPosition(const Position side)
|
||||
{
|
||||
DockPosition = side;
|
||||
@ -82,7 +89,10 @@ void DockItem::leaveEvent(QEvent *e)
|
||||
|
||||
// auto hide if popup is not model window
|
||||
if (!PopupWindow->model())
|
||||
{
|
||||
m_popupShown = false;
|
||||
PopupWindow->hide();
|
||||
}
|
||||
|
||||
update();
|
||||
|
||||
@ -158,6 +168,8 @@ void DockItem::showHoverTips()
|
||||
|
||||
void DockItem::showPopupWindow(QWidget * const content, const bool model)
|
||||
{
|
||||
m_popupShown = true;
|
||||
|
||||
if (model)
|
||||
emit requestWindowAutoHide(false);
|
||||
|
||||
@ -191,6 +203,7 @@ void DockItem::popupWindowAccept()
|
||||
|
||||
disconnect(PopupWindow.get(), &DockPopupWindow::accept, this, &DockItem::popupWindowAccept);
|
||||
|
||||
m_popupShown = false;
|
||||
PopupWindow->hide();
|
||||
|
||||
emit requestWindowAutoHide(true);
|
||||
|
@ -25,6 +25,8 @@ public:
|
||||
|
||||
public:
|
||||
explicit DockItem(const ItemType type, QWidget *parent = nullptr);
|
||||
~DockItem();
|
||||
|
||||
static void setDockPosition(const Position side);
|
||||
static void setDockDisplayMode(const DisplayMode mode);
|
||||
|
||||
@ -56,6 +58,7 @@ protected:
|
||||
protected:
|
||||
ItemType m_type;
|
||||
bool m_hover;
|
||||
bool m_popupShown;
|
||||
|
||||
QTimer *m_popupTipsDelayTimer;
|
||||
|
||||
|
@ -12,7 +12,7 @@ LauncherItem::LauncherItem(QWidget *parent)
|
||||
m_tips(new QLabel(this))
|
||||
{
|
||||
m_tips->setVisible(false);
|
||||
m_tips->setText("Launcher");
|
||||
m_tips->setText(tr("Launcher"));
|
||||
m_tips->setStyleSheet("color:white;"
|
||||
"padding:5px 10px;");
|
||||
}
|
||||
|
@ -61,12 +61,17 @@ void DockPopupWindow::mousePressEvent(QMouseEvent *e)
|
||||
// m_acceptDelayTimer->start();
|
||||
}
|
||||
|
||||
void DockPopupWindow::globalMouseRelease()
|
||||
void DockPopupWindow::globalMouseRelease(int button, int x, int y, const QString &id)
|
||||
{
|
||||
Q_UNUSED(button);
|
||||
|
||||
if (id != m_mouseAreaKey)
|
||||
return;
|
||||
|
||||
Q_ASSERT(m_model);
|
||||
|
||||
const QRect rect = QRect(pos(), size());
|
||||
const QPoint pos = QCursor::pos();
|
||||
const QPoint pos = QPoint(x, y);
|
||||
|
||||
if (rect.contains(pos))
|
||||
return;
|
||||
|
@ -26,7 +26,7 @@ protected:
|
||||
void mousePressEvent(QMouseEvent *e);
|
||||
|
||||
private slots:
|
||||
void globalMouseRelease();
|
||||
void globalMouseRelease(int button, int x, int y, const QString &id);
|
||||
|
||||
private:
|
||||
bool m_model;
|
||||
|
@ -89,10 +89,10 @@ public Q_SLOTS: // METHODS
|
||||
return asyncCallWithArgumentList(QStringLiteral("QueryDisk"), argumentList);
|
||||
}
|
||||
|
||||
inline QDBusPendingReply<> Unmount(const QString &in0)
|
||||
inline QDBusPendingReply<> Unmount(const QString &diskId)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0);
|
||||
argumentList << QVariant::fromValue(diskId);
|
||||
return asyncCallWithArgumentList(QStringLiteral("Unmount"), argumentList);
|
||||
}
|
||||
|
||||
|
@ -28,7 +28,7 @@ DiskControlItem::DiskControlItem(const DiskInfo &info, QWidget *parent)
|
||||
"background-color:rgba(255, 255, 255, .3);"
|
||||
"}"
|
||||
"QProgressBar::chunk {"
|
||||
"background-color:blue;"
|
||||
"background-color:white;"
|
||||
"}");
|
||||
|
||||
m_unmountButton->setNormalPic(":/icons/resources/unmount-normal.png");
|
||||
@ -61,6 +61,8 @@ DiskControlItem::DiskControlItem(const DiskInfo &info, QWidget *parent)
|
||||
|
||||
setLayout(centeralLayout);
|
||||
|
||||
connect(m_unmountButton, &DImageButton::clicked, [this] {emit requestUnmount(m_info.m_id);});
|
||||
|
||||
updateInfo(info);
|
||||
}
|
||||
|
||||
|
@ -16,6 +16,9 @@ class DiskControlItem : public QWidget
|
||||
public:
|
||||
explicit DiskControlItem(const DiskInfo &info, QWidget *parent = 0);
|
||||
|
||||
signals:
|
||||
void requestUnmount(const QString &diskId) const;
|
||||
|
||||
private slots:
|
||||
void updateInfo(const DiskInfo &info);
|
||||
const QString formatDiskSize(const quint64 size) const;
|
||||
|
@ -31,17 +31,37 @@ void DiskControlWidget::diskListChanged()
|
||||
{
|
||||
m_diskInfoList = m_diskInter->diskList();
|
||||
|
||||
emit diskCountChanged(m_diskInfoList.count());
|
||||
while (QLayoutItem *item = m_centeralLayout->takeAt(0))
|
||||
{
|
||||
delete item->widget();
|
||||
delete item;
|
||||
}
|
||||
|
||||
int mountedCount = 0;
|
||||
for (auto info : m_diskInfoList)
|
||||
{
|
||||
if (info.m_mountPoint.isEmpty())
|
||||
continue;
|
||||
else
|
||||
++mountedCount;
|
||||
|
||||
DiskControlItem *item = new DiskControlItem(info, this);
|
||||
|
||||
connect(item, &DiskControlItem::requestUnmount, this, &DiskControlWidget::unmountDisk);
|
||||
|
||||
m_centeralLayout->addWidget(item);
|
||||
}
|
||||
|
||||
const int contentHeight = m_diskInfoList.count() * 70;
|
||||
emit diskCountChanged(mountedCount);
|
||||
|
||||
const int contentHeight = mountedCount * 70;
|
||||
const int maxHeight = std::min(contentHeight, MAX_HEIGHT);
|
||||
|
||||
m_centeralWidget->setFixedHeight(contentHeight);
|
||||
setFixedHeight(maxHeight);
|
||||
}
|
||||
|
||||
void DiskControlWidget::unmountDisk(const QString &diskId) const
|
||||
{
|
||||
m_diskInter->Unmount(diskId);
|
||||
}
|
||||
|
@ -18,6 +18,7 @@ signals:
|
||||
|
||||
private slots:
|
||||
void diskListChanged();
|
||||
void unmountDisk(const QString &diskId) const;
|
||||
|
||||
private:
|
||||
QVBoxLayout *m_centeralLayout;
|
||||
|
Loading…
x
Reference in New Issue
Block a user