mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 17:33:05 +00:00
Changes:
Improve panel menu Init dock mode width dbus data Update DockConstants Fix systray item width error and crash
This commit is contained in:
parent
7116e4d030
commit
a16b501494
@ -51,8 +51,21 @@ void SystrayPlugin::changeMode(Dock::DockMode newMode, Dock::DockMode oldMode)
|
||||
{
|
||||
m_mode = newMode;
|
||||
|
||||
CompositeTrayItem * compositeItem = NULL;
|
||||
|
||||
QWidget * widget = m_items.value(CompositeItemKey);
|
||||
if (!widget)
|
||||
{
|
||||
compositeItem = new CompositeTrayItem;
|
||||
m_items[CompositeItemKey] = compositeItem;
|
||||
}
|
||||
else
|
||||
compositeItem = qobject_cast<CompositeTrayItem*>(widget);
|
||||
|
||||
compositeItem->resize(Dock::APPLET_FASHION_ITEM_WIDTH,Dock::APPLET_FASHION_ITEM_HEIGHT);
|
||||
|
||||
if (oldMode == Dock::FashionMode && newMode != Dock::FashionMode) {
|
||||
CompositeTrayItem * compositeItem = qobject_cast<CompositeTrayItem*>(m_items.value(CompositeItemKey));
|
||||
|
||||
compositeItem->setParent(NULL);
|
||||
|
||||
qDebug() << "SystrayPlugin change mode to other mode.";
|
||||
@ -65,15 +78,6 @@ void SystrayPlugin::changeMode(Dock::DockMode newMode, Dock::DockMode oldMode)
|
||||
|
||||
m_proxier->itemRemovedEvent(CompositeItemKey);
|
||||
} else if (newMode == Dock::FashionMode && oldMode != Dock::FashionMode) {
|
||||
CompositeTrayItem * compositeItem = NULL;
|
||||
|
||||
QWidget * widget = m_items.value(CompositeItemKey);
|
||||
if (!widget) {
|
||||
compositeItem = new CompositeTrayItem;
|
||||
m_items[CompositeItemKey] = compositeItem;
|
||||
} else {
|
||||
compositeItem = qobject_cast<CompositeTrayItem*>(widget);
|
||||
}
|
||||
|
||||
qDebug() << "SystrayPlugin change mode to fashion mode.";
|
||||
foreach (QWidget * widget, m_items) {
|
||||
|
@ -3,6 +3,7 @@
|
||||
DockModeData::DockModeData(QObject *parent) :
|
||||
QObject(parent)
|
||||
{
|
||||
initDDS();
|
||||
}
|
||||
|
||||
DockModeData * DockModeData::dockModeData = NULL;
|
||||
@ -21,10 +22,17 @@ Dock::DockMode DockModeData::getDockMode()
|
||||
|
||||
void DockModeData::setDockMode(Dock::DockMode value)
|
||||
{
|
||||
Dock::DockMode tmpValue = m_currentMode;
|
||||
m_currentMode = value;
|
||||
m_dds->SetDisplayMode(value);
|
||||
}
|
||||
|
||||
emit dockModeChanged(value, tmpValue);
|
||||
Dock::HideMode DockModeData::getHideMode()
|
||||
{
|
||||
return m_hideMode;
|
||||
}
|
||||
|
||||
void DockModeData::setHideMode(Dock::HideMode value)
|
||||
{
|
||||
m_dds->SetHideMode(value);
|
||||
}
|
||||
|
||||
int DockModeData::getDockHeight()
|
||||
@ -177,3 +185,33 @@ int DockModeData::getAppletsIconSize()
|
||||
}
|
||||
}
|
||||
|
||||
void DockModeData::slotDockModeChanged(int mode)
|
||||
{
|
||||
Dock::DockMode tmpMode = Dock::DockMode(mode);
|
||||
Dock::DockMode oldmode = m_currentMode;
|
||||
m_currentMode = tmpMode;
|
||||
|
||||
emit dockModeChanged(tmpMode,oldmode);
|
||||
}
|
||||
|
||||
void DockModeData::slotHideModeChanged(int mode)
|
||||
{
|
||||
Dock::HideMode tmpMode = Dock::HideMode(mode);
|
||||
Dock::HideMode oldMode = m_hideMode;
|
||||
m_hideMode = tmpMode;
|
||||
|
||||
emit hideModeChanged(tmpMode,oldMode);
|
||||
}
|
||||
|
||||
void DockModeData::initDDS()
|
||||
{
|
||||
m_dds = new DBusDockSetting(this);
|
||||
connect(m_dds,&DBusDockSetting::DisplayModeChanged,this,&DockModeData::slotDockModeChanged);
|
||||
connect(m_dds,&DBusDockSetting::HideModeChanged,this,&DockModeData::slotHideModeChanged);
|
||||
|
||||
m_currentMode = Dock::DockMode(m_dds->GetDisplayMode().value());
|
||||
m_hideMode = Dock::HideMode(m_dds->GetHideMode().value());
|
||||
|
||||
emit dockModeChanged(m_currentMode,m_currentMode);
|
||||
emit hideModeChanged(m_hideMode,m_hideMode);
|
||||
}
|
||||
|
@ -3,6 +3,8 @@
|
||||
|
||||
#include <QObject>
|
||||
#include <QStringList>
|
||||
#include <QDebug>
|
||||
#include "DBus/dbusdocksetting.h"
|
||||
#include "dockconstants.h"
|
||||
|
||||
class DockModeData : public QObject
|
||||
@ -13,6 +15,8 @@ public:
|
||||
|
||||
Dock::DockMode getDockMode();
|
||||
void setDockMode(Dock::DockMode value);
|
||||
Dock::HideMode getHideMode();
|
||||
void setHideMode(Dock::HideMode value);
|
||||
|
||||
int getDockHeight();
|
||||
int getItemHeight();
|
||||
@ -27,15 +31,23 @@ public:
|
||||
|
||||
signals:
|
||||
void dockModeChanged(Dock::DockMode newMode,Dock::DockMode oldMode);
|
||||
void hideModeChanged(Dock::HideMode newMode,Dock::HideMode oldMode);
|
||||
|
||||
private slots:
|
||||
void slotDockModeChanged(int mode);
|
||||
void slotHideModeChanged(int mode);
|
||||
|
||||
private:
|
||||
explicit DockModeData(QObject *parent = 0);
|
||||
|
||||
void initDDS();
|
||||
private:
|
||||
static DockModeData * dockModeData;
|
||||
|
||||
Dock::DockMode m_currentMode = Dock::EfficientMode;
|
||||
Dock::HideMode m_hideMode = Dock::KeepShowing;
|
||||
|
||||
DBusDockSetting *m_dds = NULL;
|
||||
};
|
||||
|
||||
#endif // DOCKMODEDATA_H
|
||||
|
@ -48,22 +48,6 @@ Panel::Panel(QWidget *parent)
|
||||
}
|
||||
|
||||
initAppManager();
|
||||
|
||||
slotDockModeChanged(dockCons->getDockMode(),dockCons->getDockMode());
|
||||
}
|
||||
|
||||
void Panel::resize(const QSize &size)
|
||||
{
|
||||
QWidget::resize(size);
|
||||
|
||||
reanchorsLayout(dockCons->getDockMode());
|
||||
}
|
||||
|
||||
void Panel::resize(int width, int height)
|
||||
{
|
||||
QWidget::resize(width,height);
|
||||
|
||||
reanchorsLayout(dockCons->getDockMode());
|
||||
}
|
||||
|
||||
void Panel::showScreenMask()
|
||||
@ -114,25 +98,12 @@ void Panel::slotDockModeChanged(Dock::DockMode newMode, Dock::DockMode oldMode)
|
||||
|
||||
reanchorsLayout(newMode);
|
||||
|
||||
this->resize(leftLayout->width() + rightLayout->width(),dockCons->getDockHeight());
|
||||
this->move((parentWidget->width() - leftLayout->width() - rightLayout->width()) / 2,0);
|
||||
qWarning() << "AppCount:********" << leftLayout->getItemCount();
|
||||
}
|
||||
|
||||
void Panel::slotLayoutContentsWidthChanged()
|
||||
{
|
||||
reanchorsLayout(dockCons->getDockMode());
|
||||
|
||||
if (dockCons->getDockMode() == Dock::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::slotAddAppItem(AppItem *item)
|
||||
@ -170,10 +141,12 @@ void Panel::reanchorsLayout(Dock::DockMode mode)
|
||||
if (mode == Dock::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);
|
||||
|
||||
this->resize(leftLayout->getContentsWidth() + rightLayout->getContentsWidth(),dockCons->getDockHeight());
|
||||
this->move((parentWidget->width() - leftLayout->getContentsWidth() - rightLayout->getContentsWidth()) / 2,0);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -182,6 +155,9 @@ void Panel::reanchorsLayout(Dock::DockMode mode)
|
||||
rightLayout->move(parentWidget->width() - rightLayout->width(),0);
|
||||
|
||||
leftLayout->resize(parentWidget->width() - rightLayout->width() ,dockCons->getDockHeight());
|
||||
|
||||
this->resize(leftLayout->width() + rightLayout->width(),dockCons->getDockHeight());
|
||||
this->move((parentWidget->width() - leftLayout->width() - rightLayout->width()) / 2,0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6,11 +6,11 @@
|
||||
#include <QPushButton>
|
||||
#include <QDebug>
|
||||
#include "Controller/dockmodedata.h"
|
||||
#include "Controller/appmanager.h"
|
||||
#include "Widgets/appitem.h"
|
||||
#include "Widgets/docklayout.h"
|
||||
#include "Widgets/screenmask.h"
|
||||
#include "panelmenu.h"
|
||||
#include "Controller/appmanager.h"
|
||||
|
||||
class Panel : public QLabel
|
||||
{
|
||||
@ -19,9 +19,6 @@ public:
|
||||
explicit Panel(QWidget *parent = 0);
|
||||
~Panel();
|
||||
|
||||
void resize(const QSize &size);
|
||||
void resize(int width,int height);
|
||||
|
||||
void showScreenMask();
|
||||
void hideScreenMask();
|
||||
|
||||
|
@ -32,9 +32,15 @@ void PanelMenu::showMenu(int x, int y)
|
||||
targetObj.insert("isDockMenu",QJsonValue(false));
|
||||
|
||||
QJsonArray contentArry;
|
||||
contentArry.append(createItemObj("Fashion Mode",ToFashionMode));
|
||||
contentArry.append(createItemObj("Efficient Mode",ToEfficientMode));
|
||||
contentArry.append(createItemObj("Classic Mode",ToClassicMode));
|
||||
contentArry.append(createRadioItemObj("Fashion mode",ToFashionMode,DockModeGroup,dockCons->getDockMode() == Dock::FashionMode));
|
||||
contentArry.append(createRadioItemObj("Efficient mode",ToEfficientMode,DockModeGroup,dockCons->getDockMode() == Dock::EfficientMode));
|
||||
contentArry.append(createRadioItemObj("Classic mode",ToClassicMode,DockModeGroup,dockCons->getDockMode() == Dock::ClassicMode));
|
||||
contentArry.append(createItemObj("",OperationType(-1)));
|
||||
contentArry.append(createRadioItemObj("Keep showing",ToKeepShowing,HideModeGroup,dockCons->getHideMode() == Dock::KeepShowing));
|
||||
contentArry.append(createRadioItemObj("Keep hidden",ToKeepHidden,HideModeGroup,dockCons->getHideMode() == Dock::KeepHidden));
|
||||
contentArry.append(createRadioItemObj("Smart hide",ToSmartHide,HideModeGroup,dockCons->getHideMode() == Dock::SmartHide));
|
||||
contentArry.append(createItemObj("",OperationType(-1)));
|
||||
contentArry.append(createItemObj("Notification area setting",ToPluginSetting));
|
||||
|
||||
QJsonObject contentObj;
|
||||
contentObj.insert("items",contentArry);
|
||||
@ -47,7 +53,10 @@ void PanelMenu::showMenu(int x, int y)
|
||||
|
||||
void PanelMenu::slotItemInvoked(const QString &itemId, bool result)
|
||||
{
|
||||
OperationType tt = OperationType(itemId.toInt());
|
||||
if (itemId.split(":").length() < 1)
|
||||
return;
|
||||
|
||||
OperationType tt = OperationType(itemId.split(":").at(0).toInt());
|
||||
switch (tt)
|
||||
{
|
||||
case ToFashionMode:
|
||||
@ -59,11 +68,19 @@ void PanelMenu::slotItemInvoked(const QString &itemId, bool result)
|
||||
case ToClassicMode:
|
||||
changeToClassicMode();
|
||||
break;
|
||||
case ToKeepShowing:
|
||||
changeToKeepShowing();
|
||||
break;
|
||||
case ToKeepHidden:
|
||||
changeToKeepHidden();
|
||||
break;
|
||||
case ToSmartHide:
|
||||
changeToSmartHide();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
qWarning() << itemId << result << tt;
|
||||
}
|
||||
|
||||
void PanelMenu::changeToFashionMode()
|
||||
@ -84,6 +101,24 @@ void PanelMenu::changeToClassicMode()
|
||||
dockCons->setDockMode(Dock::ClassicMode);
|
||||
}
|
||||
|
||||
void PanelMenu::changeToKeepShowing()
|
||||
{
|
||||
qWarning() << "Change to keep showing mode...";
|
||||
dockCons->setHideMode(Dock::KeepShowing);
|
||||
}
|
||||
|
||||
void PanelMenu::changeToKeepHidden()
|
||||
{
|
||||
qWarning() << "Change to keep hidden mode...";
|
||||
dockCons->setHideMode(Dock::KeepHidden);
|
||||
}
|
||||
|
||||
void PanelMenu::changeToSmartHide()
|
||||
{
|
||||
qWarning() << "Change to smart hide mode...";
|
||||
dockCons->setHideMode(Dock::SmartHide);
|
||||
}
|
||||
|
||||
QJsonObject PanelMenu::createItemObj(const QString &itemName, OperationType type)
|
||||
{
|
||||
QJsonObject itemObj;
|
||||
@ -99,3 +134,19 @@ QJsonObject PanelMenu::createItemObj(const QString &itemName, OperationType type
|
||||
|
||||
return itemObj;
|
||||
}
|
||||
|
||||
QJsonObject PanelMenu::createRadioItemObj(const QString &itemName, OperationType type, MenuGroup group, bool check)
|
||||
{
|
||||
QJsonObject itemObj;
|
||||
itemObj.insert("itemId",QString::number(type) + ":radio:" + QString::number(group));
|
||||
itemObj.insert("itemText",itemName);
|
||||
itemObj.insert("itemIcon","");
|
||||
itemObj.insert("itemIconHover","");
|
||||
itemObj.insert("itemIconInactive","");
|
||||
itemObj.insert("itemExtra","");
|
||||
itemObj.insert("isActive",true);
|
||||
itemObj.insert("checked",check);
|
||||
itemObj.insert("itemSubMenu",QJsonObject());
|
||||
|
||||
return itemObj;
|
||||
}
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include "DBus/dbusmenumanager.h"
|
||||
#include "DBus/dbusmenu.h"
|
||||
#include "Controller/dockmodedata.h"
|
||||
#include "../dockconstants.h"
|
||||
|
||||
class PanelMenu : public QObject
|
||||
{
|
||||
@ -18,8 +19,17 @@ public:
|
||||
enum OperationType {
|
||||
ToFashionMode,
|
||||
ToEfficientMode,
|
||||
ToClassicMode
|
||||
ToClassicMode,
|
||||
ToKeepShowing,
|
||||
ToKeepHidden,
|
||||
ToSmartHide,
|
||||
ToPluginSetting
|
||||
};
|
||||
enum MenuGroup{
|
||||
DockModeGroup,
|
||||
HideModeGroup
|
||||
};
|
||||
|
||||
static PanelMenu * instance();
|
||||
|
||||
void showMenu(int x,int y);
|
||||
@ -34,14 +44,19 @@ private:
|
||||
void changeToFashionMode();
|
||||
void changeToEfficientMode();
|
||||
void changeToClassicMode();
|
||||
void changeToKeepShowing();
|
||||
void changeToKeepHidden();
|
||||
void changeToSmartHide();
|
||||
|
||||
QJsonObject createItemObj(const QString &itemName,OperationType type);
|
||||
QJsonObject createRadioItemObj(const QString &itemName,OperationType type,MenuGroup group,bool check);
|
||||
|
||||
private:
|
||||
static PanelMenu * m_panelMenu;
|
||||
DockModeData *dockCons = DockModeData::instance();
|
||||
QString m_menuInterfacePath = "";
|
||||
DBusMenuManager *m_menuManager = NULL;
|
||||
DBusDockSetting m_dockSetting;
|
||||
|
||||
};
|
||||
|
||||
|
@ -146,6 +146,15 @@ void AppItem::initBackground()
|
||||
appBackground = new AppBackground(this);
|
||||
appBackground->move(0,0);
|
||||
connect(this, SIGNAL(widthChanged()),this, SLOT(resizeBackground()));
|
||||
|
||||
if (dockCons->getDockMode() == Dock::FashionMode)
|
||||
{
|
||||
appBackground->setVisible(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
appBackground->setVisible(true);
|
||||
}
|
||||
}
|
||||
|
||||
void AppItem::initClientManager()
|
||||
|
@ -4,15 +4,35 @@
|
||||
namespace Dock {
|
||||
|
||||
enum DockMode {
|
||||
FashionMode,
|
||||
EfficientMode,
|
||||
ClassicMode
|
||||
FashionMode = 0,
|
||||
EfficientMode = 1,
|
||||
ClassicMode = 2
|
||||
};
|
||||
|
||||
enum HideMode {
|
||||
KeepShowing = 0,
|
||||
KeepHidden = 1,
|
||||
SmartHide = 3
|
||||
};
|
||||
|
||||
const int APP_PREVIEW_WIDTH = 160;
|
||||
const int APP_PREVIEW_HEIGHT = 100;
|
||||
const int APP_PREVIEW_MARGIN = 18 ;
|
||||
|
||||
const int APPLET_FASHION_ITEM_HEIGHT = 60;
|
||||
const int APPLET_FASHION_ITEM_WIDTH = 60;
|
||||
const int APPLET_FASHION_ITEM_SPACING = 10;
|
||||
const int APPLET_FASHION_ICON_SIZE = 48;
|
||||
|
||||
const int APPLET_EFFICIENT_ITEM_HEIGHT = 50;
|
||||
const int APPLET_EFFICIENT_ITEM_WIDTH = 50;
|
||||
const int APPLET_EFFICIENT_ITEM_SPACING = 10;
|
||||
const int APPLET_EFFICIENT_ICON_SIZE = 24;
|
||||
|
||||
const int APPLET_CLASSIC_ITEM_HEIGHT = 40;
|
||||
const int APPLET_CLASSIC_ITEM_WIDTH = 50;
|
||||
const int APPLET_CLASSIC_ITEM_SPACING = 10;
|
||||
const int APPLET_CLASSIC_ICON_SIZE = 24;
|
||||
}
|
||||
|
||||
#endif // DOCKCONSTANTS_H
|
||||
|
@ -11,7 +11,7 @@ MainWidget::MainWidget(QWidget *parent)
|
||||
|
||||
this->setWindowFlags(Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint);
|
||||
this->setAttribute(Qt::WA_TranslucentBackground);
|
||||
this->move(0,rec.height());
|
||||
this->move(0,rec.height() - 100);
|
||||
|
||||
connect(DockModeData::instance(), SIGNAL(dockModeChanged(Dock::DockMode,Dock::DockMode)),
|
||||
this, SLOT(slotDockModeChanged(Dock::DockMode,Dock::DockMode)));
|
||||
|
Loading…
x
Reference in New Issue
Block a user