hide container item if its empty

Change-Id: Ib58f490c082d5580dd2a0c2fbab2e0fe590e56b5
This commit is contained in:
石博文 2016-09-23 14:20:18 +08:00
parent ecfa99c6de
commit d4198e04ab
Notes: Deepin Code Review 2016-09-23 15:06:50 +08:00
Verified+1: Anonymous Coward #1000004
Code-Review+2: 石博文 <sbw@sbw.so>
Submitted-by: 石博文 <sbw@sbw.so>
Submitted-at: Fri, 23 Sep 2016 15:06:50 +0800
Reviewed-on: https://cr.deepin.io/16290
Project: dde/dde-dock
Branch: refs/heads/master
5 changed files with 28 additions and 2 deletions

View File

@ -37,6 +37,11 @@ bool DockItemController::itemIsInContainer(DockItem * const item) const
return m_containerItem->contains(item);
}
void DockItemController::setDropping(const bool dropping)
{
m_containerItem->setDropping(dropping);
}
void DockItemController::refershItemsIcon()
{
for (auto item : m_itemList)

View File

@ -23,6 +23,7 @@ public:
const QList<DockItem *> itemList() const;
bool appIsOnDock(const QString &appDesktop) const;
bool itemIsInContainer(DockItem * const item) const;
void setDropping(const bool dropping);
signals:
void itemInserted(const int index, DockItem *item) const;

View File

@ -4,6 +4,7 @@
ContainerItem::ContainerItem(QWidget *parent)
: DockItem(parent),
m_dropping(false),
m_containerWidget(new ContainerWidget(this))
{
m_containerWidget->setVisible(false);
@ -11,6 +12,17 @@ ContainerItem::ContainerItem(QWidget *parent)
setAcceptDrops(true);
}
void ContainerItem::setDropping(const bool dropping)
{
if (dropping)
showPopupApplet(m_containerWidget);
else
hidePopup();
m_dropping = dropping;
update();
}
void ContainerItem::addItem(DockItem * const item)
{
m_containerWidget->addWidget(item);
@ -64,7 +76,7 @@ void ContainerItem::paintEvent(QPaintEvent *e)
{
DockItem::paintEvent(e);
if (DockDisplayMode == Dock::Fashion)
if (!m_containerWidget->itemCount() && !m_dropping)
return;
QPainter painter(this);
@ -73,7 +85,7 @@ void ContainerItem::paintEvent(QPaintEvent *e)
void ContainerItem::mouseReleaseEvent(QMouseEvent *e)
{
if (e->button() == Qt::LeftButton)
if (e->button() == Qt::LeftButton && m_containerWidget->itemCount())
return showPopupApplet(m_containerWidget);
return DockItem::mouseReleaseEvent(e);

View File

@ -15,6 +15,7 @@ public:
inline ItemType itemType() const {return Container;}
void setDropping(const bool dropping);
void addItem(DockItem * const item);
void removeItem(DockItem * const item);
bool contains(DockItem * const item);
@ -30,6 +31,7 @@ protected:
QSize sizeHint() const;
private:
bool m_dropping;
ContainerWidget *m_containerWidget;
QPixmap m_icon;
};

View File

@ -562,6 +562,10 @@ void MainPanel::itemDragStarted()
{
DragingItem = qobject_cast<DockItem *>(sender());
if (DragingItem->itemType() == DockItem::Plugins)
if (static_cast<PluginsItem *>(DragingItem)->allowContainer())
m_itemController->setDropping(true);
QRect rect;
rect.setTopLeft(mapToGlobal(pos()));
rect.setSize(size());
@ -575,6 +579,8 @@ void MainPanel::itemDragStarted()
///
void MainPanel::itemDropped(QObject *destnation)
{
m_itemController->setDropping(false);
if (m_displayMode == Dock::Fashion)
return;