mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 17:33:05 +00:00
use launcher new drag data interface
Change-Id: I73d5a67b58db46f52f25f3151c5c1b7766f8948b
This commit is contained in:
parent
f10f9cac6a
commit
bfddee7d21
Notes:
Deepin Code Review
2016-06-14 07:19:47 +00:00
Verified+1: Anonymous Coward #1000004 Code-Review+2: <ding465398889@163.com> Submitted-by: <ding465398889@163.com> Submitted-at: Tue, 08 Sep 2015 15:55:27 +0800 Reviewed-on: https://cr.deepin.io/6847 Project: dde/dde-dock Branch: refs/heads/master
@ -80,17 +80,21 @@ void AppItem::dragEnterEvent(QDragEnterEvent *event)
|
||||
{
|
||||
onMouseLeave(); //enterEvent may be active along with the dragEnterEvent, so hide preview here
|
||||
|
||||
emit dragEntered(event);
|
||||
|
||||
AppItem *tmpItem = NULL;
|
||||
tmpItem = dynamic_cast<AppItem *>(event->source());
|
||||
if (tmpItem)
|
||||
{
|
||||
// qWarning()<< "[Info:]" << "Brother Item.";
|
||||
AppItem *tmpItem = qobject_cast<AppItem *>(event->source());
|
||||
if (tmpItem){ //from brother item
|
||||
event->ignore();
|
||||
emit dragEntered(event);
|
||||
}
|
||||
else
|
||||
else if (event->mimeData()->formats().indexOf("RequestDock") != -1){ //from desktop or launcher
|
||||
QJsonObject dataObj = QJsonDocument::fromJson(event->mimeData()->data("RequestDock")).object();
|
||||
if (!dataObj.isEmpty() && !m_ddam->IsDocked(dataObj.value("appKey").toString())){
|
||||
event->ignore();
|
||||
emit dragEntered(event);
|
||||
}
|
||||
}
|
||||
else //other files
|
||||
{
|
||||
event->setDropAction(Qt::MoveAction);
|
||||
event->setDropAction(Qt::CopyAction);
|
||||
event->accept();
|
||||
}
|
||||
}
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include "dbus/dbusclientmanager.h"
|
||||
#include "controller/dockmodedata.h"
|
||||
#include "interfaces/dockconstants.h"
|
||||
#include "dbus/dbusdockedappmanager.h"
|
||||
|
||||
struct AppItemData {
|
||||
QString id;
|
||||
@ -91,6 +92,7 @@ private:
|
||||
|
||||
private:
|
||||
AppItemData m_itemData;
|
||||
DBusDockedAppManager *m_ddam = new DBusDockedAppManager(this);
|
||||
DockModeData *m_dockModeData = DockModeData::instance();
|
||||
DBusClientManager *m_clientmanager = NULL;
|
||||
DBusEntryProxyer *m_entryProxyer = NULL;
|
||||
|
@ -112,8 +112,12 @@ int DockLayout::getContentsWidth()
|
||||
for (int i = 0; i < m_appList.count(); i ++)
|
||||
tmpWidth += m_appList.at(i)->width();
|
||||
|
||||
if (spacingItemIndex() != -1 && !m_dragItemMap.isEmpty() && m_dragItemMap.firstKey())
|
||||
tmpWidth += m_dragItemMap.firstKey()->width() + m_itemSpacing;
|
||||
if (spacingItemIndex() != -1){
|
||||
if (!m_dragItemMap.isEmpty() && m_dragItemMap.firstKey())
|
||||
tmpWidth += m_dragItemMap.firstKey()->width() + m_itemSpacing;
|
||||
else //spacing add by launcher or desktop item drag enter
|
||||
tmpWidth += DockModeData::instance()->getNormalItemWidth() + m_itemSpacing;
|
||||
}
|
||||
|
||||
return tmpWidth;
|
||||
}
|
||||
@ -198,25 +202,17 @@ void DockLayout::dragEnterEvent(QDragEnterEvent *event)
|
||||
|
||||
void DockLayout::dropEvent(QDropEvent *event)
|
||||
{
|
||||
AbstractDockItem *sourceItem = dynamic_cast<AbstractDockItem *>(event->source());
|
||||
AbstractDockItem *sourceItem = qobject_cast<AbstractDockItem *>(event->source());
|
||||
|
||||
if (!sourceItem && event->mimeData()->formats().indexOf("_DEEPIN_DND") != -1)
|
||||
{
|
||||
QString jsonStr = QString(event->mimeData()->data("_DEEPIN_DND")).split("uninstall").last().trimmed();
|
||||
|
||||
//Tim at both ends of the string is added to a character SOH (start of heading)
|
||||
jsonStr = jsonStr.mid(1,jsonStr.length() - 2);
|
||||
QJsonObject dataObj = QJsonDocument::fromJson(jsonStr.trimmed().toUtf8()).object();
|
||||
if (dataObj.isEmpty() || m_ddam->IsDocked(dataObj.value("id").toString()))
|
||||
{
|
||||
//from desktop or launcher
|
||||
if (!sourceItem && event->mimeData()->formats().indexOf("RequestDock") != -1){
|
||||
QJsonObject dataObj = QJsonDocument::fromJson(event->mimeData()->data("RequestDock")).object();
|
||||
if (dataObj.isEmpty() || m_ddam->IsDocked(dataObj.value("appKey").toString()))
|
||||
relayout();
|
||||
return;
|
||||
}
|
||||
|
||||
m_ddam->ReqeustDock(dataObj.value("id").toString(),dataObj.value("name").toString(),dataObj.value("icon").toString(),"");
|
||||
|
||||
else
|
||||
m_ddam->ReqeustDock(dataObj.value("appKey").toString(), "", "", "");
|
||||
}
|
||||
else if (sourceItem && event->mimeData()->formats().indexOf("_DEEPIN_DND") == -1)
|
||||
else
|
||||
restoreTmpItem();
|
||||
}
|
||||
|
||||
@ -249,6 +245,9 @@ void DockLayout::slotItemRelease()
|
||||
|
||||
void DockLayout::slotItemEntered(QDragEnterEvent *)
|
||||
{
|
||||
//for launcher or desktop item drag enter
|
||||
emit startDrag();
|
||||
|
||||
AbstractDockItem *item = qobject_cast<AbstractDockItem*>(sender());
|
||||
|
||||
int tmpIndex = indexOf(item);
|
||||
|
Loading…
x
Reference in New Issue
Block a user