mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-03 00:15:21 +00:00
Add FashionMode and ClassicMode completed
This commit is contained in:
parent
95bd07ad3e
commit
000e06ae8d
@ -19,8 +19,6 @@ SOURCES += \
|
||||
src/Widgets/appicon.cpp \
|
||||
src/Widgets/dockconstants.cpp \
|
||||
src/Widgets/docklayout.cpp \
|
||||
src/Widgets/dockmodel.cpp \
|
||||
src/Widgets/dockview.cpp \
|
||||
src/Widgets/screenmask.cpp \
|
||||
src/Widgets/windowpreview.cpp \
|
||||
src/Panel/panel.cpp \
|
||||
@ -36,8 +34,6 @@ HEADERS += \
|
||||
src/Widgets/appicon.h \
|
||||
src/Widgets/dockconstants.h \
|
||||
src/Widgets/docklayout.h \
|
||||
src/Widgets/dockmodel.h \
|
||||
src/Widgets/dockview.h \
|
||||
src/Widgets/screenmask.h \
|
||||
src/Widgets/windowpreview.h \
|
||||
src/Panel/panel.h \
|
||||
|
@ -9,10 +9,10 @@ Panel::Panel(QWidget *parent)
|
||||
rightLayout = new DockLayout(this);
|
||||
rightLayout->setSortDirection(DockLayout::RightToLeft);
|
||||
rightLayout->setSpacing(dockCons->getAppletsItemSpacing());
|
||||
rightLayout->resize(80,dockCons->getAppletsItemHeight());
|
||||
rightLayout->resize(80,dockCons->getDockHeight());
|
||||
|
||||
leftLayout = new DockLayout(this);
|
||||
rightLayout->setSpacing(dockCons->getAppItemSpacing());
|
||||
leftLayout->setSpacing(dockCons->getAppItemSpacing());
|
||||
leftLayout->resize(this->width() - rightLayout->width(),dockCons->getDockHeight());
|
||||
leftLayout->move(0,0);
|
||||
|
||||
@ -31,6 +31,9 @@ Panel::Panel(QWidget *parent)
|
||||
connect(leftLayout,SIGNAL(dragStarted()),this,SLOT(slotDragStarted()));
|
||||
connect(leftLayout,SIGNAL(itemDropped()),this,SLOT(slotItemDropped()));
|
||||
|
||||
connect(leftLayout, SIGNAL(contentsWidthChange()),this, SLOT(slotLayoutContentsWidthChanged()));
|
||||
connect(rightLayout, SIGNAL(contentsWidthChange()), this, SLOT(slotLayoutContentsWidthChanged()));
|
||||
|
||||
connect(dockCons, SIGNAL(dockModeChanged(DockConstants::DockMode,DockConstants::DockMode)),
|
||||
this, SLOT(slotDockModeChanged(DockConstants::DockMode,DockConstants::DockMode)));
|
||||
|
||||
@ -40,6 +43,8 @@ Panel::Panel(QWidget *parent)
|
||||
}
|
||||
|
||||
panelMenu = new PanelMenu();
|
||||
|
||||
slotDockModeChanged(dockCons->getDockMode(),dockCons->getDockMode());
|
||||
}
|
||||
|
||||
void Panel::resize(const QSize &size)
|
||||
@ -103,12 +108,32 @@ void Panel::slotExitedMask()
|
||||
|
||||
void Panel::slotDockModeChanged(DockConstants::DockMode newMode, DockConstants::DockMode oldMode)
|
||||
{
|
||||
leftLayout->relayout();
|
||||
rightLayout->relayout();
|
||||
|
||||
reanchorsLayout(newMode);
|
||||
|
||||
this->resize(leftLayout->width() + rightLayout->width(),dockCons->getDockHeight());
|
||||
this->move((parentWidget->width() - leftLayout->width() - rightLayout->width()) / 2,0);
|
||||
}
|
||||
|
||||
void Panel::slotLayoutContentsWidthChanged()
|
||||
{
|
||||
reanchorsLayout(dockCons->getDockMode());
|
||||
|
||||
if (dockCons->getDockMode() == DockConstants::FashionMode)
|
||||
{
|
||||
this->resize(leftLayout->getContentsWidth() + rightLayout->getContentsWidth(),dockCons->getDockHeight());
|
||||
this->move((parentWidget->width() - leftLayout->getContentsWidth() - rightLayout->getContentsWidth()) / 2,0);
|
||||
}
|
||||
else
|
||||
{
|
||||
this->resize(leftLayout->width() + rightLayout->width(),dockCons->getDockHeight());
|
||||
this->move((parentWidget->width() - leftLayout->width() - rightLayout->width()) / 2,0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void Panel::mousePressEvent(QMouseEvent *event)
|
||||
{
|
||||
if (event->button() == Qt::RightButton)
|
||||
|
@ -30,7 +30,9 @@ public slots:
|
||||
void slotEnteredMask();
|
||||
void slotExitedMask();
|
||||
|
||||
private slots:
|
||||
void slotDockModeChanged(DockConstants::DockMode newMode,DockConstants::DockMode oldMode);
|
||||
void slotLayoutContentsWidthChanged();
|
||||
|
||||
protected:
|
||||
void mousePressEvent(QMouseEvent *event);
|
||||
|
@ -4,8 +4,9 @@ AppItem::AppItem(QWidget *parent) :
|
||||
AbstractDockItem(parent)
|
||||
{
|
||||
setAcceptDrops(true);
|
||||
resize(itemWidth, itemHeight);
|
||||
resize(dockCons->getNormalItemWidth(), dockCons->getItemHeight());
|
||||
initBackground();
|
||||
connect(dockCons, &DockConstants::dockModeChanged,this, &AppItem::slotDockModeChanged);
|
||||
}
|
||||
|
||||
AppItem::AppItem(QString title, QWidget *parent):
|
||||
@ -14,8 +15,9 @@ AppItem::AppItem(QString title, QWidget *parent):
|
||||
m_itemTitle = title;
|
||||
|
||||
setAcceptDrops(true);
|
||||
resize(itemWidth, itemHeight);
|
||||
resize(dockCons->getNormalItemWidth(), dockCons->getItemHeight());
|
||||
initBackground();
|
||||
connect(dockCons, &DockConstants::dockModeChanged,this, &AppItem::slotDockModeChanged);
|
||||
}
|
||||
|
||||
AppItem::AppItem(QString title, QString iconPath, QWidget *parent) :
|
||||
@ -25,24 +27,86 @@ AppItem::AppItem(QString title, QString iconPath, QWidget *parent) :
|
||||
m_itemIconPath = iconPath;
|
||||
|
||||
setAcceptDrops(true);
|
||||
resize(itemWidth, itemHeight);
|
||||
resize(dockCons->getNormalItemWidth(), dockCons->getItemHeight());
|
||||
initBackground();
|
||||
setIcon(m_itemIconPath);
|
||||
setIcon(m_itemIconPath,dockCons->getAppIconSize());
|
||||
connect(dockCons, &DockConstants::dockModeChanged,this, &AppItem::slotDockModeChanged);
|
||||
}
|
||||
|
||||
void AppItem::setIcon(const QString &iconPath, int size)
|
||||
{
|
||||
m_appIcon = new AppIcon(iconPath, this);
|
||||
m_appIcon->resize(size, size);
|
||||
|
||||
reanchorIcon();
|
||||
}
|
||||
|
||||
void AppItem::setActived(bool value)
|
||||
{
|
||||
m_isActived = value;
|
||||
if (!value)
|
||||
resize(dockCons->getNormalItemWidth(), dockCons->getItemHeight());
|
||||
else
|
||||
resize(dockCons->getActivedItemWidth(), dockCons->getItemHeight());
|
||||
}
|
||||
|
||||
void AppItem::setCurrentOpened(bool value)
|
||||
{
|
||||
m_isCurrentOpened = value;
|
||||
}
|
||||
|
||||
bool AppItem::currentOpened()
|
||||
{
|
||||
return m_isCurrentOpened;
|
||||
}
|
||||
|
||||
void AppItem::slotDockModeChanged(DockConstants::DockMode newMode, DockConstants::DockMode oldMode)
|
||||
{
|
||||
if (newMode == DockConstants::FashionMode)
|
||||
{
|
||||
appBackground->setVisible(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
appBackground->setVisible(true);
|
||||
}
|
||||
|
||||
setActived(actived());
|
||||
resizeResources();
|
||||
}
|
||||
|
||||
void AppItem::reanchorIcon()
|
||||
{
|
||||
switch (dockCons->getDockMode()) {
|
||||
case DockConstants::FashionMode:
|
||||
m_appIcon->move((width() - m_appIcon->width()) / 2, 0);
|
||||
break;
|
||||
case DockConstants::EfficientMode:
|
||||
m_appIcon->move((width() - m_appIcon->width()) / 2, (height() - m_appIcon->height()) / 2);
|
||||
break;
|
||||
case DockConstants::ClassicMode:
|
||||
m_appIcon->move((height() - m_appIcon->height()) / 2, (height() - m_appIcon->height()) / 2);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void AppItem::resizeBackground()
|
||||
{
|
||||
appBackground->resize(width(),height());
|
||||
}
|
||||
|
||||
void AppItem::resizeResources()
|
||||
{
|
||||
if (m_appIcon != NULL)
|
||||
{
|
||||
m_appIcon->resize(DockConstants::getInstants()->getAppIconSize(),
|
||||
DockConstants::getInstants()->getAppIconSize());
|
||||
m_appIcon->move(width() / 2 - m_appIcon->width() / 2,
|
||||
height() / 2 - m_appIcon->height() / 2);
|
||||
m_appIcon->resize(dockCons->getAppIconSize(),dockCons->getAppIconSize());
|
||||
reanchorIcon();
|
||||
}
|
||||
|
||||
if (appBackground != NULL)
|
||||
{
|
||||
appBackground->resize(width(), height());
|
||||
resizeBackground();
|
||||
appBackground->move(0,0);
|
||||
}
|
||||
}
|
||||
@ -50,9 +114,8 @@ void AppItem::resizeResources()
|
||||
void AppItem::initBackground()
|
||||
{
|
||||
appBackground = new AppBackground(this);
|
||||
// appBackground->setObjectName("appBackground");
|
||||
appBackground->resize(width(), height());
|
||||
appBackground->move(0,0);
|
||||
connect(this, SIGNAL(widthChanged()),this, SLOT(resizeBackground()));
|
||||
}
|
||||
|
||||
void AppItem::mousePressEvent(QMouseEvent * event)
|
||||
@ -61,6 +124,7 @@ void AppItem::mousePressEvent(QMouseEvent * event)
|
||||
emit mousePress(event->globalX(), event->globalY());
|
||||
////////////FOR TEST ONLY/////////////////////
|
||||
appBackground->setIsActived(!appBackground->getIsActived());
|
||||
setActived(!actived());
|
||||
}
|
||||
|
||||
void AppItem::mouseReleaseEvent(QMouseEvent * event)
|
||||
|
@ -27,6 +27,11 @@ public:
|
||||
AppItem(QString title, QString iconPath, QWidget *parent = 0);
|
||||
~AppItem();
|
||||
|
||||
void setIcon(const QString &iconPath, int size = 42);
|
||||
void setActived(bool value);
|
||||
void setCurrentOpened(bool value);
|
||||
bool currentOpened();
|
||||
|
||||
protected:
|
||||
void mousePressEvent(QMouseEvent *);
|
||||
void mouseReleaseEvent(QMouseEvent *);
|
||||
@ -38,15 +43,21 @@ protected:
|
||||
void dragLeaveEvent(QDragLeaveEvent * event);
|
||||
void dropEvent(QDropEvent * event);
|
||||
|
||||
private slots:
|
||||
void slotDockModeChanged(DockConstants::DockMode newMode,DockConstants::DockMode oldMode);
|
||||
void reanchorIcon();
|
||||
void resizeBackground();
|
||||
|
||||
private:
|
||||
void resizeResources();
|
||||
void initBackground();
|
||||
|
||||
private:
|
||||
DockConstants *dockCons = DockConstants::getInstants();
|
||||
AppBackground * appBackground = NULL;
|
||||
QPoint nextPos;
|
||||
const int itemWidth = 60;
|
||||
const int itemHeight = 50;
|
||||
|
||||
bool m_isCurrentOpened = false;
|
||||
};
|
||||
|
||||
#endif // APPITEM_H
|
||||
|
@ -64,7 +64,7 @@ int DockConstants::getNormalItemWidth()
|
||||
case DockConstants::FashionMode:
|
||||
return 60;
|
||||
case DockConstants::EfficientMode:
|
||||
return 50;
|
||||
return 60;
|
||||
case DockConstants::ClassicMode:
|
||||
return 40;
|
||||
default:
|
||||
@ -79,11 +79,11 @@ int DockConstants::getActivedItemWidth()
|
||||
case DockConstants::FashionMode:
|
||||
return 60;
|
||||
case DockConstants::EfficientMode:
|
||||
return 50;
|
||||
return 60;
|
||||
case DockConstants::ClassicMode:
|
||||
return 80;
|
||||
return 150;
|
||||
default:
|
||||
return 50;
|
||||
return 60;
|
||||
}
|
||||
}
|
||||
|
||||
@ -109,7 +109,7 @@ int DockConstants::getAppIconSize()
|
||||
case DockConstants::FashionMode:
|
||||
return 48;
|
||||
case DockConstants::EfficientMode:
|
||||
return 32;
|
||||
return 42;
|
||||
case DockConstants::ClassicMode:
|
||||
return 24;
|
||||
default:
|
||||
|
@ -23,6 +23,7 @@ void DockLayout::insertItem(AbstractDockItem *item, int index)
|
||||
connect(item, &AbstractDockItem::dragStart, this, &DockLayout::slotItemDrag);
|
||||
connect(item, &AbstractDockItem::dragEntered, this, &DockLayout::slotItemEntered);
|
||||
connect(item, &AbstractDockItem::dragExited, this, &DockLayout::slotItemExited);
|
||||
connect(item, &AbstractDockItem::widthChanged, this, &DockLayout::relayout);
|
||||
|
||||
relayout();
|
||||
}
|
||||
@ -59,12 +60,12 @@ void DockLayout::sortLeftToRight()
|
||||
if (appList.count() <= 0)
|
||||
return;
|
||||
|
||||
appList.at(0)->move(itemSpacing,0);
|
||||
appList.at(0)->move(itemSpacing,(height() - appList.at(0)->height()) / 2);
|
||||
|
||||
for (int i = 1; i < appList.count(); i ++)
|
||||
{
|
||||
AbstractDockItem * frontItem = appList.at(i - 1);
|
||||
appList.at(i)->move(frontItem->pos().x() + frontItem->width() + itemSpacing,0);
|
||||
appList.at(i)->move(frontItem->pos().x() + frontItem->width() + itemSpacing,height() - appList.at(i)->height());
|
||||
}
|
||||
}
|
||||
|
||||
@ -124,6 +125,8 @@ void DockLayout::relayout()
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
emit contentsWidthChange();
|
||||
}
|
||||
|
||||
void DockLayout::addSpacingItem()
|
||||
@ -144,7 +147,10 @@ void DockLayout::addSpacingItem()
|
||||
animation->setEasingCurve(QEasingCurve::OutCubic);
|
||||
|
||||
animation->start();
|
||||
connect(animation, SIGNAL(finished()),this, SIGNAL(contentsWidthChange()));
|
||||
}
|
||||
|
||||
// emit contentsWidthChange();
|
||||
}
|
||||
|
||||
void DockLayout::dragoutFromLayout(int index)
|
||||
@ -152,6 +158,8 @@ void DockLayout::dragoutFromLayout(int index)
|
||||
AbstractDockItem * tmpItem = appList.takeAt(index);
|
||||
tmpItem->setVisible(false);
|
||||
tmpAppMap.insert(tmpItem,index);
|
||||
|
||||
emit contentsWidthChange();
|
||||
}
|
||||
|
||||
int DockLayout::getContentsWidth()
|
||||
@ -161,6 +169,10 @@ int DockLayout::getContentsWidth()
|
||||
{
|
||||
tmpWidth += appList.at(i)->width();
|
||||
}
|
||||
|
||||
if (hasSpacingItemInList())
|
||||
tmpWidth += tmpAppMap.firstKey()->width() + itemSpacing;
|
||||
|
||||
return tmpWidth;
|
||||
}
|
||||
|
||||
|
@ -29,15 +29,16 @@ public:
|
||||
void setSortDirection(DockLayout::Direction value);
|
||||
int indexOf(AbstractDockItem * item);
|
||||
int indexOf(int x,int y);
|
||||
void relayout();
|
||||
void dragoutFromLayout(int index);
|
||||
int getContentsWidth();
|
||||
int getItemCount();
|
||||
|
||||
public slots:
|
||||
void relayout();
|
||||
|
||||
signals:
|
||||
void dragStarted();
|
||||
void itemDropped();
|
||||
void widthChange(int width);
|
||||
void contentsWidthChange();
|
||||
|
||||
protected:
|
||||
void dragEnterEvent(QDragEnterEvent *event);
|
||||
@ -54,6 +55,7 @@ private:
|
||||
void sortRightToLeft();
|
||||
|
||||
void addSpacingItem();
|
||||
void dragoutFromLayout(int index);
|
||||
bool hasSpacingItemInList();
|
||||
|
||||
private:
|
||||
|
@ -26,11 +26,22 @@ public:
|
||||
|
||||
virtual void setMoveable(bool value) { m_itemMoveable = value; }
|
||||
virtual bool moveable() { return m_itemMoveable; }
|
||||
virtual void setActived(bool value) { m_itemActived = value; }
|
||||
virtual bool actived() { return m_itemActived; }
|
||||
virtual void setActived(bool value) { m_isActived = value; }
|
||||
virtual bool actived() { return m_isActived; }
|
||||
virtual void setHovered(bool value) { m_isHovered = value; }
|
||||
virtual bool hovered() { return m_isHovered; }
|
||||
virtual void setIndex(int value) { m_itemIndex = value; }
|
||||
virtual int index() { return m_itemIndex; }
|
||||
|
||||
void resize(int width,int height){
|
||||
QFrame::resize(width,height);
|
||||
emit widthChanged();
|
||||
}
|
||||
void resize(const QSize &size){
|
||||
QFrame::resize(size);
|
||||
emit widthChanged();
|
||||
}
|
||||
|
||||
QPoint getNextPos() { return m_itemNextPos; }
|
||||
void setNextPos(const QPoint &value) { m_itemNextPos = value; }
|
||||
void setNextPos(int x, int y) { m_itemNextPos.setX(x); m_itemNextPos.setY(y); }
|
||||
@ -45,12 +56,14 @@ signals:
|
||||
void mousePress(int x, int y);
|
||||
void mouseRelease(int x, int y);
|
||||
void mouseDoubleClick();
|
||||
void widthChanged();
|
||||
|
||||
protected:
|
||||
QLabel * m_appIcon = NULL;
|
||||
|
||||
bool m_itemMoveable = true;
|
||||
bool m_itemActived = false;
|
||||
bool m_isActived = false;
|
||||
bool m_isHovered = false;
|
||||
|
||||
QString m_itemTitle = "";
|
||||
QString m_itemIconPath = "";
|
||||
|
Loading…
x
Reference in New Issue
Block a user