mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 17:33:05 +00:00
Add FashionMode and ClassicMode part1
This commit is contained in:
parent
ca5e659ab0
commit
95bd07ad3e
@ -27,3 +27,13 @@ QLabel#AppBackground[isActived="true"][isHovered="false"][isCurrentOpened="false
|
|||||||
border-style: solid;
|
border-style: solid;
|
||||||
border-color: rgba(255,255,255,0.3);
|
border-color: rgba(255,255,255,0.3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QLabel#panelMenuContent {
|
||||||
|
background: rgba(255,255,255,0.8);
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
PanelMenuItem:hover {
|
||||||
|
background: gray;
|
||||||
|
color: #ffffff
|
||||||
|
}
|
||||||
|
@ -25,7 +25,8 @@ SOURCES += \
|
|||||||
src/Widgets/windowpreview.cpp \
|
src/Widgets/windowpreview.cpp \
|
||||||
src/Panel/panel.cpp \
|
src/Panel/panel.cpp \
|
||||||
src/Widgets/appitem.cpp \
|
src/Widgets/appitem.cpp \
|
||||||
src/systraymanager.cpp
|
src/systraymanager.cpp \
|
||||||
|
src/Panel/panelmenu.cpp
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
src/abstractdockitem.h \
|
src/abstractdockitem.h \
|
||||||
@ -41,7 +42,8 @@ HEADERS += \
|
|||||||
src/Widgets/windowpreview.h \
|
src/Widgets/windowpreview.h \
|
||||||
src/Panel/panel.h \
|
src/Panel/panel.h \
|
||||||
src/Widgets/appitem.h \
|
src/Widgets/appitem.h \
|
||||||
src/systraymanager.h
|
src/systraymanager.h \
|
||||||
|
src/Panel/panelmenu.h
|
||||||
|
|
||||||
RESOURCES += \
|
RESOURCES += \
|
||||||
images.qrc \
|
images.qrc \
|
||||||
|
@ -5,8 +5,15 @@ Panel::Panel(QWidget *parent)
|
|||||||
: QLabel(parent),parentWidget(parent)
|
: QLabel(parent),parentWidget(parent)
|
||||||
{
|
{
|
||||||
this->setObjectName("Panel");
|
this->setObjectName("Panel");
|
||||||
|
|
||||||
|
rightLayout = new DockLayout(this);
|
||||||
|
rightLayout->setSortDirection(DockLayout::RightToLeft);
|
||||||
|
rightLayout->setSpacing(dockCons->getAppletsItemSpacing());
|
||||||
|
rightLayout->resize(80,dockCons->getAppletsItemHeight());
|
||||||
|
|
||||||
leftLayout = new DockLayout(this);
|
leftLayout = new DockLayout(this);
|
||||||
leftLayout->resize(1024,50);
|
rightLayout->setSpacing(dockCons->getAppItemSpacing());
|
||||||
|
leftLayout->resize(this->width() - rightLayout->width(),dockCons->getDockHeight());
|
||||||
leftLayout->move(0,0);
|
leftLayout->move(0,0);
|
||||||
|
|
||||||
AppItem * b1 = new AppItem("App",":/test/Resources/images/brasero.png");
|
AppItem * b1 = new AppItem("App",":/test/Resources/images/brasero.png");
|
||||||
@ -24,29 +31,29 @@ Panel::Panel(QWidget *parent)
|
|||||||
connect(leftLayout,SIGNAL(dragStarted()),this,SLOT(slotDragStarted()));
|
connect(leftLayout,SIGNAL(dragStarted()),this,SLOT(slotDragStarted()));
|
||||||
connect(leftLayout,SIGNAL(itemDropped()),this,SLOT(slotItemDropped()));
|
connect(leftLayout,SIGNAL(itemDropped()),this,SLOT(slotItemDropped()));
|
||||||
|
|
||||||
rightLayout = new DockLayout(this);
|
connect(dockCons, SIGNAL(dockModeChanged(DockConstants::DockMode,DockConstants::DockMode)),
|
||||||
rightLayout->setSortDirection(DockLayout::RightToLeft);
|
this, SLOT(slotDockModeChanged(DockConstants::DockMode,DockConstants::DockMode)));
|
||||||
rightLayout->resize(300,50);
|
|
||||||
rightLayout->move(0,0);
|
|
||||||
|
|
||||||
SystrayManager *manager = new SystrayManager();
|
SystrayManager *manager = new SystrayManager();
|
||||||
foreach (AbstractDockItem *item, manager->trayIcons()) {
|
foreach (AbstractDockItem *item, manager->trayIcons()) {
|
||||||
rightLayout->addItem(item);
|
rightLayout->addItem(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
panelMenu = new PanelMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Panel::resize(const QSize &size)
|
void Panel::resize(const QSize &size)
|
||||||
{
|
{
|
||||||
QWidget::resize(size);
|
QWidget::resize(size);
|
||||||
leftLayout->resize(this->width() * 2 / 3,this->height());
|
|
||||||
rightLayout->move(this->width() - rightLayout->width(),0);
|
reanchorsLayout(dockCons->getDockMode());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Panel::resize(int width, int height)
|
void Panel::resize(int width, int height)
|
||||||
{
|
{
|
||||||
QWidget::resize(width,height);
|
QWidget::resize(width,height);
|
||||||
leftLayout->resize(this->width() * 2 / 3,this->height());
|
|
||||||
rightLayout->move(this->width() - rightLayout->width(),0);
|
reanchorsLayout(dockCons->getDockMode());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Panel::showScreenMask()
|
void Panel::showScreenMask()
|
||||||
@ -94,6 +101,58 @@ void Panel::slotExitedMask()
|
|||||||
// leftLayout->relayout();
|
// leftLayout->relayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Panel::slotDockModeChanged(DockConstants::DockMode newMode, DockConstants::DockMode oldMode)
|
||||||
|
{
|
||||||
|
reanchorsLayout(newMode);
|
||||||
|
|
||||||
|
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)
|
||||||
|
showMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Panel::mouseReleaseEvent(QMouseEvent *event)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void Panel::reanchorsLayout(DockConstants::DockMode mode)
|
||||||
|
{
|
||||||
|
if (mode == DockConstants::FashionMode)
|
||||||
|
{
|
||||||
|
leftLayout->resize(leftLayout->getContentsWidth() + dockCons->getAppItemSpacing(),dockCons->getDockHeight());
|
||||||
|
|
||||||
|
rightLayout->setSortDirection(DockLayout::LeftToRight);
|
||||||
|
rightLayout->resize(rightLayout->getContentsWidth(),dockCons->getDockHeight());
|
||||||
|
rightLayout->move(leftLayout->width() - dockCons->getAppItemSpacing(),0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rightLayout->setSortDirection(DockLayout::RightToLeft);
|
||||||
|
rightLayout->resize(rightLayout->getContentsWidth(),dockCons->getDockHeight());
|
||||||
|
rightLayout->move(parentWidget->width() - rightLayout->width(),0);
|
||||||
|
|
||||||
|
leftLayout->resize(parentWidget->width() - rightLayout->width() ,dockCons->getDockHeight());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Panel::showMenu()
|
||||||
|
{
|
||||||
|
QPoint tmpPos = QCursor::pos();
|
||||||
|
|
||||||
|
panelMenu->move(tmpPos.x(),tmpPos.y() - panelMenu->height());
|
||||||
|
panelMenu->show();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Panel::hideMenu()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
Panel::~Panel()
|
Panel::~Panel()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -5,9 +5,11 @@
|
|||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
#include "Widgets/dockconstants.h"
|
||||||
#include "Widgets/appitem.h"
|
#include "Widgets/appitem.h"
|
||||||
#include "Widgets/docklayout.h"
|
#include "Widgets/docklayout.h"
|
||||||
#include "Widgets/screenmask.h"
|
#include "Widgets/screenmask.h"
|
||||||
|
#include "panelmenu.h"
|
||||||
|
|
||||||
class Panel : public QLabel
|
class Panel : public QLabel
|
||||||
{
|
{
|
||||||
@ -22,19 +24,31 @@ public:
|
|||||||
void showScreenMask();
|
void showScreenMask();
|
||||||
void hideScreenMask();
|
void hideScreenMask();
|
||||||
|
|
||||||
signals:
|
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void slotDragStarted();
|
void slotDragStarted();
|
||||||
void slotItemDropped();
|
void slotItemDropped();
|
||||||
void slotEnteredMask();
|
void slotEnteredMask();
|
||||||
void slotExitedMask();
|
void slotExitedMask();
|
||||||
|
|
||||||
|
void slotDockModeChanged(DockConstants::DockMode newMode,DockConstants::DockMode oldMode);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void mousePressEvent(QMouseEvent *event);
|
||||||
|
void mouseReleaseEvent(QMouseEvent *event);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void reanchorsLayout(DockConstants::DockMode mode);
|
||||||
|
|
||||||
|
void showMenu();
|
||||||
|
void hideMenu();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DockLayout * leftLayout;
|
DockLayout * leftLayout;
|
||||||
DockLayout *rightLayout;
|
DockLayout *rightLayout;
|
||||||
QWidget * parentWidget = NULL;
|
QWidget * parentWidget = NULL;
|
||||||
ScreenMask * maskWidget = NULL;
|
ScreenMask * maskWidget = NULL;
|
||||||
|
DockConstants *dockCons = DockConstants::getInstants();
|
||||||
|
PanelMenu *panelMenu = NULL;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // PANEL_H
|
#endif // PANEL_H
|
||||||
|
63
dde-dock/src/Panel/panelmenu.cpp
Normal file
63
dde-dock/src/Panel/panelmenu.cpp
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
#include "panelmenu.h"
|
||||||
|
|
||||||
|
PanelMenuItem::PanelMenuItem(QString text, QWidget *parent) : QLabel(text,parent)
|
||||||
|
{
|
||||||
|
this->setAlignment(Qt::AlignCenter);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PanelMenuItem::mousePressEvent(QMouseEvent *event)
|
||||||
|
{
|
||||||
|
// emit itemClicked();
|
||||||
|
}
|
||||||
|
|
||||||
|
void PanelMenuItem::mouseReleaseEvent(QMouseEvent *event)
|
||||||
|
{
|
||||||
|
emit itemClicked();
|
||||||
|
}
|
||||||
|
|
||||||
|
PanelMenu::PanelMenu(QWidget *parent) : QWidget(parent)
|
||||||
|
{
|
||||||
|
this->resize(150,100);
|
||||||
|
this->setWindowFlags(Qt::ToolTip);
|
||||||
|
|
||||||
|
QLabel * menuContent = new QLabel(this);
|
||||||
|
menuContent->setObjectName("panelMenuContent");
|
||||||
|
menuContent->resize(this->width(),this->height());
|
||||||
|
menuContent->move(0,0);
|
||||||
|
|
||||||
|
PanelMenuItem *fashionItem = new PanelMenuItem("Fashion Mode",this);
|
||||||
|
fashionItem->resize(this->width(),MENU_ITEM_HEIGHT);
|
||||||
|
fashionItem->move(0,0);
|
||||||
|
connect(fashionItem, SIGNAL(itemClicked()),this, SLOT(changeToFashionMode()));
|
||||||
|
|
||||||
|
PanelMenuItem *efficientItem = new PanelMenuItem("Efficient Mode",this);
|
||||||
|
efficientItem->resize(this->width(),MENU_ITEM_HEIGHT);
|
||||||
|
efficientItem->move(0,MENU_ITEM_HEIGHT + MENU_ITEM_SPACING);
|
||||||
|
connect(efficientItem, SIGNAL(itemClicked()),this, SLOT(changeToEfficientMode()));
|
||||||
|
|
||||||
|
PanelMenuItem *classictItem = new PanelMenuItem("Classic Mode",this);
|
||||||
|
classictItem->resize(this->width(),MENU_ITEM_HEIGHT);
|
||||||
|
classictItem->move(0,MENU_ITEM_HEIGHT*2 + MENU_ITEM_SPACING*2);
|
||||||
|
connect(classictItem, SIGNAL(itemClicked()),this, SLOT(changeToClassicMode()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void PanelMenu::changeToFashionMode()
|
||||||
|
{
|
||||||
|
qWarning() << "Change to fashion mode...";
|
||||||
|
dockCons->setDockMode(DockConstants::FashionMode);
|
||||||
|
this->hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
void PanelMenu::changeToEfficientMode()
|
||||||
|
{
|
||||||
|
qWarning() << "Change to efficient mode...";
|
||||||
|
dockCons->setDockMode(DockConstants::EfficientMode);
|
||||||
|
this->hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
void PanelMenu::changeToClassicMode()
|
||||||
|
{
|
||||||
|
qWarning() << "Change to classic mode...";
|
||||||
|
dockCons->setDockMode(DockConstants::ClassicMode);
|
||||||
|
this->hide();
|
||||||
|
}
|
44
dde-dock/src/Panel/panelmenu.h
Normal file
44
dde-dock/src/Panel/panelmenu.h
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
#ifndef PANELMENU_H
|
||||||
|
#define PANELMENU_H
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QDebug>
|
||||||
|
#include "Widgets/dockconstants.h"
|
||||||
|
|
||||||
|
class PanelMenuItem : public QLabel
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit PanelMenuItem(QString text, QWidget *parent = 0);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void itemClicked();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void mousePressEvent(QMouseEvent *event);
|
||||||
|
void mouseReleaseEvent(QMouseEvent *event);
|
||||||
|
};
|
||||||
|
|
||||||
|
class PanelMenu : public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit PanelMenu(QWidget *parent = 0);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
private slots:
|
||||||
|
void changeToFashionMode();
|
||||||
|
void changeToEfficientMode();
|
||||||
|
void changeToClassicMode();
|
||||||
|
|
||||||
|
private:
|
||||||
|
DockConstants *dockCons = DockConstants::getInstants();
|
||||||
|
|
||||||
|
const int MENU_ITEM_HEIGHT = 30;
|
||||||
|
const int MENU_ITEM_SPACING = 3;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // PANELMENU_H
|
@ -139,11 +139,11 @@ int DockConstants::getAppletsItemWidth()
|
|||||||
case DockConstants::FashionMode:
|
case DockConstants::FashionMode:
|
||||||
return 60;
|
return 60;
|
||||||
case DockConstants::EfficientMode:
|
case DockConstants::EfficientMode:
|
||||||
return 40;
|
return 50;
|
||||||
case DockConstants::ClassicMode:
|
case DockConstants::ClassicMode:
|
||||||
return 40;
|
return 50;
|
||||||
default:
|
default:
|
||||||
return 40;
|
return 50;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -154,11 +154,11 @@ int DockConstants::getAppletsItemSpacing()
|
|||||||
case DockConstants::FashionMode:
|
case DockConstants::FashionMode:
|
||||||
return 10;
|
return 10;
|
||||||
case DockConstants::EfficientMode:
|
case DockConstants::EfficientMode:
|
||||||
return 6;
|
return 10;
|
||||||
case DockConstants::ClassicMode:
|
case DockConstants::ClassicMode:
|
||||||
return 6;
|
return 10;
|
||||||
default:
|
default:
|
||||||
return 6;
|
return 10;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ private:
|
|||||||
private:
|
private:
|
||||||
static DockConstants * dockConstants;
|
static DockConstants * dockConstants;
|
||||||
|
|
||||||
DockMode m_currentMode = DockConstants::FashionMode;
|
DockMode m_currentMode = DockConstants::EfficientMode;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -7,11 +7,6 @@ DockLayout::DockLayout(QWidget *parent) :
|
|||||||
this->setAcceptDrops(true);
|
this->setAcceptDrops(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DockLayout::setParent(QWidget *parent)
|
|
||||||
{
|
|
||||||
this->setParent(parent);
|
|
||||||
}
|
|
||||||
|
|
||||||
void DockLayout::addItem(AbstractDockItem *item)
|
void DockLayout::addItem(AbstractDockItem *item)
|
||||||
{
|
{
|
||||||
insertItem(item,appList.count());
|
insertItem(item,appList.count());
|
||||||
@ -35,6 +30,7 @@ void DockLayout::insertItem(AbstractDockItem *item, int index)
|
|||||||
void DockLayout::removeItem(int index)
|
void DockLayout::removeItem(int index)
|
||||||
{
|
{
|
||||||
delete appList.takeAt(index);
|
delete appList.takeAt(index);
|
||||||
|
relayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DockLayout::moveItem(int from, int to)
|
void DockLayout::moveItem(int from, int to)
|
||||||
@ -48,35 +44,6 @@ void DockLayout::setItemMoveable(int index, bool moveable)
|
|||||||
appList.at(index)->setMoveable(moveable);
|
appList.at(index)->setMoveable(moveable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DockLayout::setMargin(qreal margin)
|
|
||||||
{
|
|
||||||
this->leftMargin = margin;
|
|
||||||
this->rightMargin = margin;
|
|
||||||
this->topMargin = margin;
|
|
||||||
this->bottomMargin = margin;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DockLayout::setMargin(DockLayout::MarginEdge edge, qreal margin)
|
|
||||||
{
|
|
||||||
switch(edge)
|
|
||||||
{
|
|
||||||
case DockLayout::LeftMargin:
|
|
||||||
this->leftMargin = margin;
|
|
||||||
break;
|
|
||||||
case DockLayout::RightMargin:
|
|
||||||
this->rightMargin = margin;
|
|
||||||
break;
|
|
||||||
case DockLayout::TopMargin:
|
|
||||||
this->topMargin = margin;
|
|
||||||
break;
|
|
||||||
case DockLayout::BottomMargin:
|
|
||||||
this->bottomMargin = margin;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void DockLayout::setSpacing(qreal spacing)
|
void DockLayout::setSpacing(qreal spacing)
|
||||||
{
|
{
|
||||||
this->itemSpacing = spacing;
|
this->itemSpacing = spacing;
|
||||||
@ -116,16 +83,6 @@ void DockLayout::sortRightToLeft()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DockLayout::sortTopToBottom()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void DockLayout::sortBottomToTop()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
bool DockLayout::hasSpacingItemInList()
|
bool DockLayout::hasSpacingItemInList()
|
||||||
{
|
{
|
||||||
if (appList.count() <= 1)
|
if (appList.count() <= 1)
|
||||||
@ -164,12 +121,6 @@ void DockLayout::relayout()
|
|||||||
case RightToLeft:
|
case RightToLeft:
|
||||||
sortRightToLeft();
|
sortRightToLeft();
|
||||||
break;
|
break;
|
||||||
case TopToBottom:
|
|
||||||
sortTopToBottom();
|
|
||||||
break;
|
|
||||||
case BottomToTop:
|
|
||||||
sortBottomToTop();
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -203,6 +154,21 @@ void DockLayout::dragoutFromLayout(int index)
|
|||||||
tmpAppMap.insert(tmpItem,index);
|
tmpAppMap.insert(tmpItem,index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int DockLayout::getContentsWidth()
|
||||||
|
{
|
||||||
|
int tmpWidth = appList.count() * itemSpacing;
|
||||||
|
for (int i = 0; i < appList.count(); i ++)
|
||||||
|
{
|
||||||
|
tmpWidth += appList.at(i)->width();
|
||||||
|
}
|
||||||
|
return tmpWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
int DockLayout::getItemCount()
|
||||||
|
{
|
||||||
|
return appList.count();
|
||||||
|
}
|
||||||
|
|
||||||
void DockLayout::dragEnterEvent(QDragEnterEvent *event)
|
void DockLayout::dragEnterEvent(QDragEnterEvent *event)
|
||||||
{
|
{
|
||||||
event->setDropAction(Qt::MoveAction);
|
event->setDropAction(Qt::MoveAction);
|
||||||
@ -260,7 +226,6 @@ void DockLayout::slotItemEntered(QDragEnterEvent *)
|
|||||||
|
|
||||||
int tmpIndex = indexOf(item);
|
int tmpIndex = indexOf(item);
|
||||||
lastHoverIndex = tmpIndex;
|
lastHoverIndex = tmpIndex;
|
||||||
qWarning() << "========" << lastHoverIndex;
|
|
||||||
if (!hasSpacingItemInList())
|
if (!hasSpacingItemInList())
|
||||||
{
|
{
|
||||||
addSpacingItem();
|
addSpacingItem();
|
||||||
@ -280,10 +245,6 @@ void DockLayout::slotItemEntered(QDragEnterEvent *)
|
|||||||
case RightToLeft:
|
case RightToLeft:
|
||||||
movingForward = tmpPos.x() - m_lastPost.x() > 0;
|
movingForward = tmpPos.x() - m_lastPost.x() > 0;
|
||||||
break;
|
break;
|
||||||
case TopToBottom:
|
|
||||||
break;
|
|
||||||
case BottomToTop:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
m_lastPost = tmpPos;
|
m_lastPost = tmpPos;
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
#include <QPropertyAnimation>
|
#include <QPropertyAnimation>
|
||||||
#include <QCursor>
|
#include <QCursor>
|
||||||
#include "appitem.h"
|
#include "appitem.h"
|
||||||
|
#include "dockconstants.h"
|
||||||
|
|
||||||
class DockLayout : public QWidget
|
class DockLayout : public QWidget
|
||||||
{
|
{
|
||||||
@ -14,38 +15,29 @@ class DockLayout : public QWidget
|
|||||||
public:
|
public:
|
||||||
enum Direction{
|
enum Direction{
|
||||||
LeftToRight,
|
LeftToRight,
|
||||||
RightToLeft,
|
RightToLeft
|
||||||
TopToBottom,
|
|
||||||
BottomToTop
|
|
||||||
};
|
|
||||||
|
|
||||||
enum MarginEdge{
|
|
||||||
LeftMargin,
|
|
||||||
RightMargin,
|
|
||||||
TopMargin,
|
|
||||||
BottomMargin
|
|
||||||
};
|
};
|
||||||
|
|
||||||
explicit DockLayout(QWidget *parent = 0);
|
explicit DockLayout(QWidget *parent = 0);
|
||||||
|
|
||||||
void setParent(QWidget *parent);
|
|
||||||
void addItem(AbstractDockItem * item);
|
void addItem(AbstractDockItem * item);
|
||||||
void insertItem(AbstractDockItem *item, int index);
|
void insertItem(AbstractDockItem *item, int index);
|
||||||
void removeItem(int index);
|
void removeItem(int index);
|
||||||
void moveItem(int from, int to);
|
void moveItem(int from, int to);
|
||||||
void setItemMoveable(int index, bool moveable);
|
void setItemMoveable(int index, bool moveable);
|
||||||
void setMargin(qreal margin);
|
|
||||||
void setMargin(DockLayout::MarginEdge edge, qreal margin);
|
|
||||||
void setSpacing(qreal spacing);
|
void setSpacing(qreal spacing);
|
||||||
void setSortDirection(DockLayout::Direction value);
|
void setSortDirection(DockLayout::Direction value);
|
||||||
int indexOf(AbstractDockItem * item);
|
int indexOf(AbstractDockItem * item);
|
||||||
int indexOf(int x,int y);
|
int indexOf(int x,int y);
|
||||||
void relayout();
|
void relayout();
|
||||||
void dragoutFromLayout(int index);
|
void dragoutFromLayout(int index);
|
||||||
|
int getContentsWidth();
|
||||||
|
int getItemCount();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void dragStarted();
|
void dragStarted();
|
||||||
void itemDropped();
|
void itemDropped();
|
||||||
|
void widthChange(int width);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void dragEnterEvent(QDragEnterEvent *event);
|
void dragEnterEvent(QDragEnterEvent *event);
|
||||||
@ -60,8 +52,6 @@ private slots:
|
|||||||
private:
|
private:
|
||||||
void sortLeftToRight();
|
void sortLeftToRight();
|
||||||
void sortRightToLeft();
|
void sortRightToLeft();
|
||||||
void sortTopToBottom();
|
|
||||||
void sortBottomToTop();
|
|
||||||
|
|
||||||
void addSpacingItem();
|
void addSpacingItem();
|
||||||
bool hasSpacingItemInList();
|
bool hasSpacingItemInList();
|
||||||
@ -72,10 +62,6 @@ private:
|
|||||||
|
|
||||||
DockLayout::Direction sortDirection = DockLayout::LeftToRight;
|
DockLayout::Direction sortDirection = DockLayout::LeftToRight;
|
||||||
qreal itemSpacing = 10;
|
qreal itemSpacing = 10;
|
||||||
qreal leftMargin = 0;
|
|
||||||
qreal rightMargin = 0;
|
|
||||||
qreal topMargin = 0;
|
|
||||||
qreal bottomMargin = 0;
|
|
||||||
|
|
||||||
bool movingForward = false;
|
bool movingForward = false;
|
||||||
int lastHoverIndex = 0;
|
int lastHoverIndex = 0;
|
||||||
|
@ -4,15 +4,26 @@ MainWidget::MainWidget(QWidget *parent)
|
|||||||
: QWidget(parent)
|
: QWidget(parent)
|
||||||
{
|
{
|
||||||
QRect rec = QApplication::desktop()->screenGeometry();
|
QRect rec = QApplication::desktop()->screenGeometry();
|
||||||
this->resize(rec.width(),50);
|
this->resize(rec.width(),DockConstants::getInstants()->getDockHeight());
|
||||||
Panel * mainPanel = new Panel(this);
|
mainPanel = new Panel(this);
|
||||||
mainPanel->setMinimumSize(this->width(),this->height());
|
|
||||||
mainPanel->resize(this->width(),this->height());
|
mainPanel->resize(this->width(),this->height());
|
||||||
mainPanel->move(0,0);
|
mainPanel->move(0,0);
|
||||||
|
|
||||||
this->setWindowFlags(Qt::ToolTip);
|
this->setWindowFlags(Qt::ToolTip);
|
||||||
this->setAttribute(Qt::WA_TranslucentBackground);
|
this->setAttribute(Qt::WA_TranslucentBackground);
|
||||||
this->move(0,rec.height() - 100);
|
this->move(0,rec.height() - 100);
|
||||||
|
|
||||||
|
connect(DockConstants::getInstants(), SIGNAL(dockModeChanged(DockConstants::DockMode,DockConstants::DockMode)),
|
||||||
|
this, SLOT(slotDockModeChanged(DockConstants::DockMode,DockConstants::DockMode)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWidget::slotDockModeChanged(DockConstants::DockMode newMode, DockConstants::DockMode oldMode)
|
||||||
|
{
|
||||||
|
QRect rec = QApplication::desktop()->screenGeometry();
|
||||||
|
this->resize(rec.width(),DockConstants::getInstants()->getDockHeight());
|
||||||
|
|
||||||
|
// mainPanel->resize(this->width(),this->height());
|
||||||
|
// mainPanel->move(0,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
MainWidget::~MainWidget()
|
MainWidget::~MainWidget()
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include <QScreen>
|
#include <QScreen>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
#include "Widgets/dockconstants.h"
|
||||||
#include "Panel/panel.h"
|
#include "Panel/panel.h"
|
||||||
|
|
||||||
class MainWidget : public QWidget
|
class MainWidget : public QWidget
|
||||||
@ -15,6 +16,12 @@ class MainWidget : public QWidget
|
|||||||
public:
|
public:
|
||||||
MainWidget(QWidget *parent = 0);
|
MainWidget(QWidget *parent = 0);
|
||||||
~MainWidget();
|
~MainWidget();
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void slotDockModeChanged(DockConstants::DockMode newMode,DockConstants::DockMode oldMode);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Panel *mainPanel = NULL;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MAINWIDGET_H
|
#endif // MAINWIDGET_H
|
||||||
|
Loading…
x
Reference in New Issue
Block a user