mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-03 00:15:21 +00:00
disk mount plugin add context menu
Change-Id: I60c005627ee9375b87ff547abc05f61d0f53fb62
This commit is contained in:
parent
c42fd64d58
commit
de84257ede
Notes:
Deepin Code Review
2016-09-22 14:40:51 +08:00
Verified+1: Anonymous Coward #1000004 Code-Review+2: 石博文 <sbw@sbw.so> Submitted-by: 石博文 <sbw@sbw.so> Submitted-at: Thu, 22 Sep 2016 14:40:51 +0800 Reviewed-on: https://cr.deepin.io/16259 Project: dde/dde-dock Branch: refs/heads/master
@ -27,6 +27,12 @@ DiskControlWidget::DiskControlWidget(QWidget *parent)
|
||||
QMetaObject::invokeMethod(this, "diskListChanged", Qt::QueuedConnection);
|
||||
}
|
||||
|
||||
void DiskControlWidget::unmountAll()
|
||||
{
|
||||
for (auto disk : m_diskInfoList)
|
||||
unmountDisk(disk.m_id);
|
||||
}
|
||||
|
||||
void DiskControlWidget::diskListChanged()
|
||||
{
|
||||
m_diskInfoList = m_diskInter->diskList();
|
||||
|
@ -13,6 +13,8 @@ class DiskControlWidget : public QScrollArea
|
||||
public:
|
||||
explicit DiskControlWidget(QWidget *parent = 0);
|
||||
|
||||
void unmountAll();
|
||||
|
||||
signals:
|
||||
void diskCountChanged(const int count) const;
|
||||
|
||||
|
@ -1,5 +1,8 @@
|
||||
#include "diskmountplugin.h"
|
||||
|
||||
#define OPEN "open"
|
||||
#define UNMOUNT_ALL "unmount_all"
|
||||
|
||||
DiskMountPlugin::DiskMountPlugin(QObject *parent)
|
||||
: QObject(parent),
|
||||
|
||||
@ -14,6 +17,8 @@ DiskMountPlugin::DiskMountPlugin(QObject *parent)
|
||||
m_tipsLabel->setText(tr("Disk"));
|
||||
m_tipsLabel->setStyleSheet("color:white;"
|
||||
"padding:5px 10px;");
|
||||
|
||||
connect(m_diskPluginItem, &DiskPluginItem::requestContextMenu, [this] {m_proxyInter->requestContextMenu(this, QString());});
|
||||
}
|
||||
|
||||
const QString DiskMountPlugin::pluginName() const
|
||||
@ -50,6 +55,44 @@ QWidget *DiskMountPlugin::itemPopupApplet(const QString &itemKey)
|
||||
return m_diskControlApplet;
|
||||
}
|
||||
|
||||
const QString DiskMountPlugin::itemContextMenu(const QString &itemKey)
|
||||
{
|
||||
Q_UNUSED(itemKey);
|
||||
|
||||
QList<QVariant> items;
|
||||
items.reserve(2);
|
||||
|
||||
QMap<QString, QVariant> open;
|
||||
open["itemId"] = OPEN;
|
||||
open["itemText"] = tr("Open");
|
||||
open["isActive"] = true;
|
||||
items.push_back(open);
|
||||
|
||||
QMap<QString, QVariant> unmountAll;
|
||||
unmountAll["itemId"] = UNMOUNT_ALL;
|
||||
unmountAll["itemText"] = tr("Unmount all");
|
||||
unmountAll["isActive"] = true;
|
||||
items.push_back(unmountAll);
|
||||
|
||||
QMap<QString, QVariant> menu;
|
||||
menu["items"] = items;
|
||||
menu["checkableMenu"] = false;
|
||||
menu["singleCheck"] = false;
|
||||
|
||||
return QJsonDocument::fromVariant(menu).toJson();
|
||||
}
|
||||
|
||||
void DiskMountPlugin::invokedMenuItem(const QString &itemKey, const QString &menuId, const bool checked)
|
||||
{
|
||||
Q_UNUSED(itemKey)
|
||||
Q_UNUSED(checked)
|
||||
|
||||
if (menuId == OPEN)
|
||||
QProcess::startDetached("gvfs-open", QStringList() << QDir::homePath());
|
||||
else if (menuId == UNMOUNT_ALL)
|
||||
m_diskControlApplet->unmountAll();
|
||||
}
|
||||
|
||||
void DiskMountPlugin::initCompoments()
|
||||
{
|
||||
m_diskControlApplet = new DiskControlWidget;
|
||||
|
@ -23,6 +23,9 @@ public:
|
||||
QWidget *itemTipsWidget(const QString &itemKey);
|
||||
QWidget *itemPopupApplet(const QString &itemKey);
|
||||
|
||||
const QString itemContextMenu(const QString &itemKey);
|
||||
void invokedMenuItem(const QString &itemKey, const QString &menuId, const bool checked);
|
||||
|
||||
private:
|
||||
void initCompoments();
|
||||
|
||||
|
@ -42,7 +42,10 @@ void DiskPluginItem::mousePressEvent(QMouseEvent *e)
|
||||
|
||||
const QPoint p(e->pos() - rect().center());
|
||||
if (p.manhattanLength() < std::min(width(), height()) * 0.8 * 0.5)
|
||||
{
|
||||
emit requestContextMenu();
|
||||
return;
|
||||
}
|
||||
|
||||
QWidget::mousePressEvent(e);
|
||||
}
|
||||
|
@ -13,6 +13,9 @@ class DiskPluginItem : public QWidget
|
||||
public:
|
||||
explicit DiskPluginItem(QWidget *parent = 0);
|
||||
|
||||
signals:
|
||||
void requestContextMenu() const;
|
||||
|
||||
public slots:
|
||||
void setDockDisplayMode(const Dock::DisplayMode mode);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user