diff --git a/dde-dock/Panel/panel.cpp b/dde-dock/Panel/panel.cpp
index 35b7be594..d11b854c2 100644
--- a/dde-dock/Panel/panel.cpp
+++ b/dde-dock/Panel/panel.cpp
@@ -6,13 +6,17 @@ Panel::Panel(QWidget *parent) : QWidget(parent)
leftLayout->resize(1024,50);
leftLayout->move(0,0);
- for (int i = 0; i < 5; i ++)
- {
- AppItem * tmpButton = new AppItem("App" + QString::number(i),":/test/Resources/images/google-chrome.png");
- tmpButton->resize(50,50);
+ AppItem * b1 = new AppItem("App",":/test/Resources/images/brasero.png");b1->resize(50,50);
+ AppItem * b2 = new AppItem("App",":/test/Resources/images/crossover.png");b2->resize(50,50);
+ AppItem * b3 = new AppItem("App",":/test/Resources/images/gcr-gnupg.png");b3->resize(50,50);
+ AppItem * b4 = new AppItem("App",":/test/Resources/images/display-im6.q16.png");b4->resize(50,50);
+ AppItem * b5 = new AppItem("App",":/test/Resources/images/eog.png");b5->resize(50,50);
- leftLayout->addItem(tmpButton);
- }
+ leftLayout->addItem(b1);
+ leftLayout->addItem(b2);
+ leftLayout->addItem(b3);
+ leftLayout->addItem(b4);
+ leftLayout->addItem(b5);
}
void Panel::resize(const QSize &size)
diff --git a/dde-dock/Resources/images/QtProject-qtcreator.png b/dde-dock/Resources/images/QtProject-qtcreator.png
new file mode 100644
index 000000000..274fb8342
Binary files /dev/null and b/dde-dock/Resources/images/QtProject-qtcreator.png differ
diff --git a/dde-dock/Resources/images/brasero.png b/dde-dock/Resources/images/brasero.png
new file mode 100644
index 000000000..7524c1075
Binary files /dev/null and b/dde-dock/Resources/images/brasero.png differ
diff --git a/dde-dock/Resources/images/crossover.png b/dde-dock/Resources/images/crossover.png
new file mode 100644
index 000000000..fa49c4213
Binary files /dev/null and b/dde-dock/Resources/images/crossover.png differ
diff --git a/dde-dock/Resources/images/d-feet.png b/dde-dock/Resources/images/d-feet.png
new file mode 100644
index 000000000..50a90c8a3
Binary files /dev/null and b/dde-dock/Resources/images/d-feet.png differ
diff --git a/dde-dock/Resources/images/deepin-multitasking-view.svg b/dde-dock/Resources/images/deepin-multitasking-view.svg
new file mode 100644
index 000000000..bfcb56f4c
--- /dev/null
+++ b/dde-dock/Resources/images/deepin-multitasking-view.svg
@@ -0,0 +1,278 @@
+
+
+
+
diff --git a/dde-dock/Resources/images/display-im6.q16.png b/dde-dock/Resources/images/display-im6.q16.png
new file mode 100644
index 000000000..e44a37d4a
Binary files /dev/null and b/dde-dock/Resources/images/display-im6.q16.png differ
diff --git a/dde-dock/Resources/images/eog.png b/dde-dock/Resources/images/eog.png
new file mode 100644
index 000000000..6b2a53661
Binary files /dev/null and b/dde-dock/Resources/images/eog.png differ
diff --git a/dde-dock/Resources/images/file-roller.png b/dde-dock/Resources/images/file-roller.png
new file mode 100644
index 000000000..cd43da32b
Binary files /dev/null and b/dde-dock/Resources/images/file-roller.png differ
diff --git a/dde-dock/Resources/images/gcr-gnupg.png b/dde-dock/Resources/images/gcr-gnupg.png
new file mode 100644
index 000000000..f151fdf5e
Binary files /dev/null and b/dde-dock/Resources/images/gcr-gnupg.png differ
diff --git a/dde-dock/Resources/images/gcr-key-pair.png b/dde-dock/Resources/images/gcr-key-pair.png
new file mode 100644
index 000000000..2ba1f1516
Binary files /dev/null and b/dde-dock/Resources/images/gcr-key-pair.png differ
diff --git a/dde-dock/Resources/images/gcr-key.png b/dde-dock/Resources/images/gcr-key.png
new file mode 100644
index 000000000..af1abf73a
Binary files /dev/null and b/dde-dock/Resources/images/gcr-key.png differ
diff --git a/dde-dock/Resources/images/gcr-password.png b/dde-dock/Resources/images/gcr-password.png
new file mode 100644
index 000000000..0b96362c1
Binary files /dev/null and b/dde-dock/Resources/images/gcr-password.png differ
diff --git a/dde-dock/Resources/images/gcr-smart-card.png b/dde-dock/Resources/images/gcr-smart-card.png
new file mode 100644
index 000000000..b4eaa92de
Binary files /dev/null and b/dde-dock/Resources/images/gcr-smart-card.png differ
diff --git a/dde-dock/Resources/images/gparted.png b/dde-dock/Resources/images/gparted.png
new file mode 100644
index 000000000..ead33781a
Binary files /dev/null and b/dde-dock/Resources/images/gparted.png differ
diff --git a/dde-dock/Resources/images/inkscape.png b/dde-dock/Resources/images/inkscape.png
new file mode 100644
index 000000000..aa445e4bc
Binary files /dev/null and b/dde-dock/Resources/images/inkscape.png differ
diff --git a/dde-dock/Resources/images/remmina.png b/dde-dock/Resources/images/remmina.png
new file mode 100644
index 000000000..e8c214708
Binary files /dev/null and b/dde-dock/Resources/images/remmina.png differ
diff --git a/dde-dock/Resources/images/terminator.png b/dde-dock/Resources/images/terminator.png
new file mode 100644
index 000000000..977bed702
Binary files /dev/null and b/dde-dock/Resources/images/terminator.png differ
diff --git a/dde-dock/Resources/images/vim.png b/dde-dock/Resources/images/vim.png
new file mode 100644
index 000000000..c6e04fab2
Binary files /dev/null and b/dde-dock/Resources/images/vim.png differ
diff --git a/dde-dock/Widgets/appitem.cpp b/dde-dock/Widgets/appitem.cpp
index b50012888..80ac6afbb 100644
--- a/dde-dock/Widgets/appitem.cpp
+++ b/dde-dock/Widgets/appitem.cpp
@@ -37,7 +37,6 @@ void AppItem::setIcon(const QString &iconPath, int size)
{
appIcon = new AppIcon(iconPath,this);
appIcon->resize(size,size);
-// appIcon->setIcon(iconPath);
appIcon->move(this->width() / 2, this->height() / 2);
}
@@ -73,6 +72,22 @@ int AppItem::getIndex()
return this->itemIndex;
}
+QPoint AppItem::getNextPos()
+{
+ return this->nextPos;
+}
+
+void AppItem::setNextPos(const QPoint &value)
+{
+ this->nextPos = value;
+}
+
+void AppItem::setNextPos(int x, int y)
+{
+ this->nextPos.setX(x);
+ this->nextPos.setY(y);
+}
+
void AppItem::resizeResources()
{
if (appIcon != NULL)
@@ -97,12 +112,13 @@ void AppItem::initBackground()
void AppItem::mousePressEvent(QMouseEvent * event)
{
- qWarning() << "press...";
+// qWarning() << "mouse press...";
emit mousePress(event->globalX(), event->globalY(),this);
}
void AppItem::mouseReleaseEvent(QMouseEvent * event)
{
+// qWarning() << "mouse release...";
emit mouseRelease(event->globalX(), event->globalY(),this);
}
@@ -116,6 +132,16 @@ void AppItem::mouseDoubleClickEvent(QMouseEvent * event)
emit mouseDoubleClick(this);
}
+void AppItem::enterEvent(QEvent *event)
+{
+ emit mouseEntered(this);
+}
+
+void AppItem::leaveEvent(QEvent *event)
+{
+ emit mouseExited(this);
+}
+
AppItem::~AppItem()
{
diff --git a/dde-dock/Widgets/appitem.h b/dde-dock/Widgets/appitem.h
index dc2af8ec8..450c606b9 100644
--- a/dde-dock/Widgets/appitem.h
+++ b/dde-dock/Widgets/appitem.h
@@ -15,6 +15,7 @@
class AppItem : public QFrame
{
Q_OBJECT
+ Q_PROPERTY(QPoint pos READ pos WRITE move)
public:
AppItem(QWidget *parent = 0);
AppItem(QString title, QWidget *parent = 0);
@@ -29,14 +30,21 @@ public:
bool getMoveable();
void setIndex(int value);
int getIndex();
+ QPoint getNextPos();
+ void setNextPos(const QPoint &value);
+ void setNextPos(int x, int y);
protected:
void mousePressEvent(QMouseEvent *);
void mouseReleaseEvent(QMouseEvent *);
void mouseMoveEvent(QMouseEvent *);
void mouseDoubleClickEvent(QMouseEvent *);
+ void enterEvent(QEvent * event);
+ void leaveEvent(QEvent * event);
signals:
+ void mouseEntered(AppItem *item);
+ void mouseExited(AppItem *item);
void mousePress(int x, int y, AppItem *item);
void mouseRelease(int x, int y, AppItem *item);
void mouseMove(int x, int y, AppItem *item);
@@ -49,6 +57,7 @@ private:
private:
AppBackground * appBackground = NULL;
AppIcon * appIcon = NULL;
+ QPoint nextPos;
int itemIndex;
bool itemMoveable = true;
diff --git a/dde-dock/Widgets/docklayout.cpp b/dde-dock/Widgets/docklayout.cpp
index 45b24ebee..435a2e87e 100644
--- a/dde-dock/Widgets/docklayout.cpp
+++ b/dde-dock/Widgets/docklayout.cpp
@@ -23,6 +23,9 @@ void DockLayout::insertItem(AppItem *item, int index)
appList.insert(index,item);
connect(item, SIGNAL(mouseMove(int,int,AppItem*)),this,SLOT(slotItemDrag(int,int,AppItem*)));
+ connect(item,SIGNAL(mouseRelease(int,int,AppItem*)),this,SLOT(slotItemRelease(int,int,AppItem*)));
+ connect(item,SIGNAL(mouseEntered(AppItem*)),this,SLOT(slotItemEntered(AppItem*)));
+ connect(item, SIGNAL(mouseExited(AppItem*)),this,SLOT(slotItemExited(AppItem*)));
relayout();
}
@@ -103,6 +106,42 @@ void DockLayout::relayout()
}
}
+void DockLayout::dragoutFromLayout(int index)
+{
+ AppItem * tmpItem = appList.takeAt(index);
+ tmpItem->setVisible(false);
+
+ if (index == appList.count())//note,target hast been remove before
+ {
+ qWarning() << "out of range...";
+ return;//at the end of list
+ }
+
+ //move follow item,note,target hast been remove before
+ AppItem * followItem = appList.at(index);
+ followItem->setNextPos(followItem->x() - tmpItem->width() - itemSpacing,0);
+ //move last item
+ for (int i = index + 1; i < appList.count(); i ++)
+ {
+ AppItem * frontItem = appList.at(i - 1);
+ AppItem * targetItem = appList.at(i);
+ targetItem->setNextPos(frontItem->getNextPos().x() + frontItem->width() + itemSpacing,0);
+ }
+
+ for (int i = index; i < appList.count(); i ++)
+ {
+ AppItem *button= appList.at(i);
+ QPropertyAnimation *animation = new QPropertyAnimation(button, "pos");
+ animation->setStartValue(button->pos());
+ animation->setEndValue(button->getNextPos());
+ animation->setDuration(500 + i * 100);
+ animation->setEasingCurve(QEasingCurve::InOutBack);
+
+ animation->start();
+ }
+
+}
+
void DockLayout::sortLeftToRight()
{
if (appList.count() <= 0)
@@ -134,7 +173,7 @@ void DockLayout::sortBottomToTop()
int DockLayout::indexOf(AppItem *item)
{
- return appList.indexOf(item);
+ return appList.indexOf(item);
}
int DockLayout::indexOf(int x, int y)
@@ -145,5 +184,32 @@ int DockLayout::indexOf(int x, int y)
void DockLayout::slotItemDrag(int x, int y, AppItem *item)
{
- qWarning() << "Item draging..."<setVisible(true);
+ if (indexOf(item) == -1)
+ {
+ qWarning() << "---------" << lastHoverIndex;
+ insertItem(item,lastHoverIndex);
+ }
+}
+
+void DockLayout::slotItemEntered(AppItem *item)
+{
+ this->lastHoverIndex = indexOf(item);
+}
+
+void DockLayout::slotItemExited(AppItem *item)
+{
+
}
diff --git a/dde-dock/Widgets/docklayout.h b/dde-dock/Widgets/docklayout.h
index 7b72f9719..1e93ec313 100644
--- a/dde-dock/Widgets/docklayout.h
+++ b/dde-dock/Widgets/docklayout.h
@@ -3,6 +3,8 @@
#include
#include
+#include
+#include
#include "appitem.h"
class DockLayout : public QWidget
@@ -36,6 +38,7 @@ public:
void setSpacing(qreal spacing);
void setSortDirection(DockLayout::Direction value);
void relayout();
+ void dragoutFromLayout(int index);
int indexOf(AppItem * item);
int indexOf(int x,int y);
@@ -45,6 +48,9 @@ public slots:
private slots:
void slotItemDrag(int x,int y,AppItem *item);
+ void slotItemRelease(int x, int y, AppItem *item);
+ void slotItemEntered(AppItem *item);
+ void slotItemExited(AppItem *item);
private:
void sortLeftToRight();
@@ -54,6 +60,7 @@ private:
private:
QList appList;
+ QMap tmpAppMap;//only one item inside
DockLayout::Direction sortDirection = DockLayout::LeftToRight;
qreal itemSpacing = 10;
@@ -61,6 +68,8 @@ private:
qreal rightMargin = 0;
qreal topMargin = 0;
qreal bottomMargin = 0;
+
+ int lastHoverIndex = 0;
};
#endif // DOCKLAYOUT_H
diff --git a/dde-dock/images.qrc b/dde-dock/images.qrc
index d07d7a34b..1d2103450 100644
--- a/dde-dock/images.qrc
+++ b/dde-dock/images.qrc
@@ -1,5 +1,23 @@
Resources/images/google-chrome.png
+ Resources/images/brasero.png
+ Resources/images/crossover.png
+ Resources/images/d-feet.png
+ Resources/images/deepin-multitasking-view.svg
+ Resources/images/display-im6.q16.png
+ Resources/images/eog.png
+ Resources/images/file-roller.png
+ Resources/images/gcr-gnupg.png
+ Resources/images/gcr-key-pair.png
+ Resources/images/gcr-key.png
+ Resources/images/gcr-password.png
+ Resources/images/gcr-smart-card.png
+ Resources/images/gparted.png
+ Resources/images/inkscape.png
+ Resources/images/QtProject-qtcreator.png
+ Resources/images/remmina.png
+ Resources/images/terminator.png
+ Resources/images/vim.png