mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-02 15:45:21 +00:00
add dock position settings
Change-Id: I0f22b0b615568f35a928fb25c60e4c30293f32ce
This commit is contained in:
parent
b24569cee1
commit
1994db5d83
@ -35,7 +35,7 @@ MainPanel::MainPanel(QWidget *parent)
|
||||
setLayout(m_itemLayout);
|
||||
}
|
||||
|
||||
void MainPanel::updateDockSide(const Position dockSide)
|
||||
void MainPanel::updateDockPosition(const Position dockSide)
|
||||
{
|
||||
switch (dockSide)
|
||||
{
|
||||
@ -44,6 +44,8 @@ void MainPanel::updateDockSide(const Position dockSide)
|
||||
case Position::Left:
|
||||
case Position::Right: m_itemLayout->setDirection(QBoxLayout::TopToBottom); break;
|
||||
}
|
||||
|
||||
adjustItemSize();
|
||||
}
|
||||
|
||||
void MainPanel::resizeEvent(QResizeEvent *e)
|
||||
@ -110,13 +112,15 @@ DockItem *MainPanel::itemAt(const QPoint &point)
|
||||
|
||||
void MainPanel::adjustItemSize()
|
||||
{
|
||||
const QSize size(80, 60);
|
||||
|
||||
const QList<DockItem *> itemList = m_itemController->itemList();
|
||||
for (auto item : itemList)
|
||||
{
|
||||
switch (item->itemType())
|
||||
{
|
||||
case DockItem::Launcher:
|
||||
case DockItem::App: item->setFixedWidth(80); break;
|
||||
case DockItem::App: item->setFixedSize(size); break;
|
||||
default:;
|
||||
}
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ class MainPanel : public QFrame
|
||||
public:
|
||||
explicit MainPanel(QWidget *parent = 0);
|
||||
|
||||
void updateDockSide(const Position dockSide);
|
||||
void updateDockPosition(const Position dockSide);
|
||||
|
||||
private:
|
||||
void resizeEvent(QResizeEvent *e);
|
||||
|
@ -23,12 +23,16 @@ DockSettings::DockSettings(QObject *parent)
|
||||
m_keepHiddenAct(tr("Keep Hidden"), this),
|
||||
m_smartHideAct(tr("Smart Hide"), this),
|
||||
|
||||
m_displayInter(new DBusDisplay(this)),
|
||||
m_dockInter(new DBusDock(this)),
|
||||
m_itemController(DockItemController::instance(this))
|
||||
{
|
||||
m_position = Dock::Position(m_dockInter->position());
|
||||
m_displayMode = Dock::DisplayMode(m_dockInter->displayMode());
|
||||
|
||||
m_mainWindowSize.setWidth(m_displayInter->primaryRect().width);
|
||||
m_mainWindowSize.setHeight(60);
|
||||
|
||||
m_fashionModeAct.setCheckable(true);
|
||||
m_efficientModeAct.setCheckable(true);
|
||||
m_topPosAct.setCheckable(true);
|
||||
@ -76,6 +80,7 @@ DockSettings::DockSettings(QObject *parent)
|
||||
m_settingsMenu.addAction(statusSubMenuAct);
|
||||
|
||||
connect(&m_settingsMenu, &DMenu::triggered, this, &DockSettings::menuActionClicked);
|
||||
connect(m_dockInter, &DBusDock::PositionChanged, this, &DockSettings::positionChanged);
|
||||
}
|
||||
|
||||
Position DockSettings::position() const
|
||||
@ -83,7 +88,7 @@ Position DockSettings::position() const
|
||||
return m_position;
|
||||
}
|
||||
|
||||
const QSize DockSettings::mainWindowSize() const
|
||||
const QSize DockSettings::windowSize() const
|
||||
{
|
||||
return m_mainWindowSize;
|
||||
}
|
||||
@ -119,6 +124,7 @@ void DockSettings::menuActionClicked(DAction *action)
|
||||
return m_dockInter->setDisplayMode(Fashion);
|
||||
if (action == &m_efficientModeAct)
|
||||
return m_dockInter->setDisplayMode(Efficient);
|
||||
|
||||
if (action == &m_topPosAct)
|
||||
return m_dockInter->setPosition(Top);
|
||||
if (action == &m_bottomPosAct)
|
||||
@ -127,6 +133,7 @@ void DockSettings::menuActionClicked(DAction *action)
|
||||
return m_dockInter->setPosition(Left);
|
||||
if (action == &m_rightPosAct)
|
||||
return m_dockInter->setPosition(Right);
|
||||
|
||||
if (action == &m_keepShownAct)
|
||||
return m_dockInter->setHideMode(KeepShowing);
|
||||
if (action == &m_keepHiddenAct)
|
||||
@ -134,3 +141,37 @@ void DockSettings::menuActionClicked(DAction *action)
|
||||
if (action == &m_smartHideAct)
|
||||
return m_dockInter->setHideMode(SmartHide);
|
||||
}
|
||||
|
||||
void DockSettings::positionChanged()
|
||||
{
|
||||
m_position = Dock::Position(m_dockInter->position());
|
||||
|
||||
const QRect primaryRect = m_displayInter->primaryRect();
|
||||
const int defaultHeight = 60;
|
||||
const int defaultWidth = 60;
|
||||
|
||||
switch (m_position)
|
||||
{
|
||||
case Top:
|
||||
case Bottom:
|
||||
m_mainWindowSize.setHeight(defaultHeight);
|
||||
m_mainWindowSize.setWidth(primaryRect.width());
|
||||
break;
|
||||
|
||||
case Left:
|
||||
case Right:
|
||||
m_mainWindowSize.setHeight(primaryRect.height());
|
||||
m_mainWindowSize.setWidth(defaultWidth);
|
||||
break;
|
||||
|
||||
default:
|
||||
Q_ASSERT(false);
|
||||
}
|
||||
|
||||
emit dataChanged();
|
||||
}
|
||||
|
||||
void DockSettings::calculateWindowConfig()
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include "constants.h"
|
||||
#include "dbus/dbusdock.h"
|
||||
#include "dbus/dbusmenumanager.h"
|
||||
#include "dbus/dbusdisplay.h"
|
||||
#include "controller/dockitemcontroller.h"
|
||||
|
||||
#include <DAction>
|
||||
@ -24,7 +25,7 @@ public:
|
||||
explicit DockSettings(QObject *parent = 0);
|
||||
|
||||
Position position() const;
|
||||
const QSize mainWindowSize() const;
|
||||
const QSize windowSize() const;
|
||||
|
||||
void showDockSettingsMenu();
|
||||
|
||||
@ -36,6 +37,10 @@ public slots:
|
||||
|
||||
private slots:
|
||||
void menuActionClicked(DAction *action);
|
||||
void positionChanged();
|
||||
|
||||
private:
|
||||
void calculateWindowConfig();
|
||||
|
||||
private:
|
||||
int m_iconSize;
|
||||
@ -58,6 +63,7 @@ private:
|
||||
DAction m_keepHiddenAct;
|
||||
DAction m_smartHideAct;
|
||||
|
||||
DBusDisplay *m_displayInter;
|
||||
DBusDock *m_dockInter;
|
||||
DockItemController *m_itemController;
|
||||
};
|
||||
|
@ -64,7 +64,8 @@ void MainWindow::initComponents()
|
||||
|
||||
void MainWindow::initConnections()
|
||||
{
|
||||
connect(m_displayInter, &DBusDisplay::PrimaryRectChanged, [this] {m_positionUpdateTimer->start();});
|
||||
connect(m_displayInter, &DBusDisplay::PrimaryRectChanged, m_positionUpdateTimer, static_cast<void (QTimer::*)()>(&QTimer::start));
|
||||
connect(m_settings, &DockSettings::dataChanged, m_positionUpdateTimer, static_cast<void (QTimer::*)()>(&QTimer::start));
|
||||
|
||||
connect(m_positionUpdateTimer, &QTimer::timeout, this, &MainWindow::updatePosition);
|
||||
}
|
||||
@ -74,13 +75,22 @@ void MainWindow::updatePosition()
|
||||
Q_ASSERT(sender() == m_positionUpdateTimer);
|
||||
|
||||
clearStrutPartial();
|
||||
setFixedSize(m_settings->windowSize());
|
||||
m_mainPanel->updateDockPosition(m_settings->position());
|
||||
|
||||
const QRect screenRect = m_displayInter->primaryRect();
|
||||
|
||||
setFixedWidth(screenRect.width());
|
||||
setFixedHeight(60);
|
||||
|
||||
move(0, screenRect.height() - 60);
|
||||
const QRect primaryRect = m_displayInter->primaryRect();
|
||||
switch (m_settings->position())
|
||||
{
|
||||
case Top:
|
||||
case Left:
|
||||
move(primaryRect.topLeft()); break;
|
||||
case Right:
|
||||
move(primaryRect.right() - width(), 0); break;
|
||||
case Bottom:
|
||||
move(0, primaryRect.bottom() - height() + 1); break;
|
||||
default:
|
||||
Q_ASSERT(false);
|
||||
}
|
||||
|
||||
setStrutPartial();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user