mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 17:33:05 +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);
|
QMetaObject::invokeMethod(this, "diskListChanged", Qt::QueuedConnection);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DiskControlWidget::unmountAll()
|
||||||
|
{
|
||||||
|
for (auto disk : m_diskInfoList)
|
||||||
|
unmountDisk(disk.m_id);
|
||||||
|
}
|
||||||
|
|
||||||
void DiskControlWidget::diskListChanged()
|
void DiskControlWidget::diskListChanged()
|
||||||
{
|
{
|
||||||
m_diskInfoList = m_diskInter->diskList();
|
m_diskInfoList = m_diskInter->diskList();
|
||||||
|
@ -13,6 +13,8 @@ class DiskControlWidget : public QScrollArea
|
|||||||
public:
|
public:
|
||||||
explicit DiskControlWidget(QWidget *parent = 0);
|
explicit DiskControlWidget(QWidget *parent = 0);
|
||||||
|
|
||||||
|
void unmountAll();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void diskCountChanged(const int count) const;
|
void diskCountChanged(const int count) const;
|
||||||
|
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
#include "diskmountplugin.h"
|
#include "diskmountplugin.h"
|
||||||
|
|
||||||
|
#define OPEN "open"
|
||||||
|
#define UNMOUNT_ALL "unmount_all"
|
||||||
|
|
||||||
DiskMountPlugin::DiskMountPlugin(QObject *parent)
|
DiskMountPlugin::DiskMountPlugin(QObject *parent)
|
||||||
: QObject(parent),
|
: QObject(parent),
|
||||||
|
|
||||||
@ -14,6 +17,8 @@ DiskMountPlugin::DiskMountPlugin(QObject *parent)
|
|||||||
m_tipsLabel->setText(tr("Disk"));
|
m_tipsLabel->setText(tr("Disk"));
|
||||||
m_tipsLabel->setStyleSheet("color:white;"
|
m_tipsLabel->setStyleSheet("color:white;"
|
||||||
"padding:5px 10px;");
|
"padding:5px 10px;");
|
||||||
|
|
||||||
|
connect(m_diskPluginItem, &DiskPluginItem::requestContextMenu, [this] {m_proxyInter->requestContextMenu(this, QString());});
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString DiskMountPlugin::pluginName() const
|
const QString DiskMountPlugin::pluginName() const
|
||||||
@ -50,6 +55,44 @@ QWidget *DiskMountPlugin::itemPopupApplet(const QString &itemKey)
|
|||||||
return m_diskControlApplet;
|
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()
|
void DiskMountPlugin::initCompoments()
|
||||||
{
|
{
|
||||||
m_diskControlApplet = new DiskControlWidget;
|
m_diskControlApplet = new DiskControlWidget;
|
||||||
|
@ -23,6 +23,9 @@ public:
|
|||||||
QWidget *itemTipsWidget(const QString &itemKey);
|
QWidget *itemTipsWidget(const QString &itemKey);
|
||||||
QWidget *itemPopupApplet(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:
|
private:
|
||||||
void initCompoments();
|
void initCompoments();
|
||||||
|
|
||||||
|
@ -42,7 +42,10 @@ void DiskPluginItem::mousePressEvent(QMouseEvent *e)
|
|||||||
|
|
||||||
const QPoint p(e->pos() - rect().center());
|
const QPoint p(e->pos() - rect().center());
|
||||||
if (p.manhattanLength() < std::min(width(), height()) * 0.8 * 0.5)
|
if (p.manhattanLength() < std::min(width(), height()) * 0.8 * 0.5)
|
||||||
|
{
|
||||||
|
emit requestContextMenu();
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
QWidget::mousePressEvent(e);
|
QWidget::mousePressEvent(e);
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,9 @@ class DiskPluginItem : public QWidget
|
|||||||
public:
|
public:
|
||||||
explicit DiskPluginItem(QWidget *parent = 0);
|
explicit DiskPluginItem(QWidget *parent = 0);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void requestContextMenu() const;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void setDockDisplayMode(const Dock::DisplayMode mode);
|
void setDockDisplayMode(const Dock::DisplayMode mode);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user