optimize state

Change-Id: I12a06315c8ecbee872d2e6b75108b903134a36de
This commit is contained in:
石博文 2016-06-29 18:30:25 +08:00 committed by Hualet Wang
parent 9ad6126e92
commit 184725a2d2
4 changed files with 28 additions and 13 deletions

View File

@ -266,6 +266,8 @@ void MainPanel::adjustItemSize()
// ensure all extra space assigned
Q_ASSERT(extraDecrease == 0);
update();
}
void MainPanel::itemInserted(const int index, DockItem *item)

View File

@ -34,6 +34,7 @@ DockSettings::DockSettings(QWidget *parent)
m_position = Dock::Position(m_dockInter->position());
m_displayMode = Dock::DisplayMode(m_dockInter->displayMode());
m_hideMode = Dock::HideMode(m_dockInter->hideMode());
m_hideState = Dock::HideState(m_dockInter->hideState());
m_iconSize = m_dockInter->iconSize();
AppItem::setIconBaseSize(m_iconSize);
DockItem::setDockPosition(m_position);
@ -92,7 +93,7 @@ DockSettings::DockSettings(QWidget *parent)
connect(m_dockInter, &DBusDock::IconSizeChanged, this, &DockSettings::iconSizeChanged);
connect(m_dockInter, &DBusDock::DisplayModeChanged, this, &DockSettings::displayModeChanged);
connect(m_dockInter, &DBusDock::HideModeChanged, this, &DockSettings::hideModeChanged);
connect(m_dockInter, &DBusDock::HideStateChanged, this, &DockSettings::windowVisibleChanegd);
connect(m_dockInter, &DBusDock::HideStateChanged, this, &DockSettings::hideStateChanegd);
connect(m_itemController, &DockItemController::itemInserted, this, &DockSettings::dockItemCountChanged, Qt::QueuedConnection);
connect(m_itemController, &DockItemController::itemRemoved, this, &DockSettings::dockItemCountChanged, Qt::QueuedConnection);
@ -124,7 +125,7 @@ int DockSettings::screenHeight() const
HideState DockSettings::hideState() const
{
return HideState(m_dockInter->hideState());
return m_hideState;
}
const QRect DockSettings::primaryRect() const
@ -232,6 +233,13 @@ void DockSettings::hideModeChanged()
emit windowHideModeChanged();
}
void DockSettings::hideStateChanegd()
{
m_hideState = Dock::HideState(m_dockInter->hideState());
emit windowVisibleChanegd();
}
void DockSettings::dockItemCountChanged()
{
if (m_displayMode == Dock::Efficient)

View File

@ -49,6 +49,7 @@ private slots:
void iconSizeChanged();
void displayModeChanged();
void hideModeChanged();
void hideStateChanegd();
void dockItemCountChanged();
void primaryScreenChanged();
@ -59,6 +60,7 @@ private:
int m_iconSize;
Position m_position;
HideMode m_hideMode;
HideState m_hideState;
DisplayMode m_displayMode;
QRect m_primaryRect;
QSize m_mainWindowSize;

View File

@ -82,6 +82,9 @@ void MainWindow::setFixedSize(const QSize &size)
void MainWindow::move(int x, int y)
{
if (this->pos() == QPoint(x, y))
return;
if (m_posChangeAni->state() == QPropertyAnimation::Running)
return m_posChangeAni->setEndValue(QPoint(x, y));
@ -106,13 +109,13 @@ void MainWindow::initComponents()
void MainWindow::initConnections()
{
connect(m_settings, &DockSettings::dataChanged, m_positionUpdateTimer, static_cast<void (QTimer::*)()>(&QTimer::start));
connect(m_settings, &DockSettings::windowGeometryChanged, this, &MainWindow::updateGeometry);
connect(m_settings, &DockSettings::windowHideModeChanged, this, &MainWindow::setStrutPartial);
connect(m_settings, &DockSettings::windowVisibleChanegd, this, &MainWindow::updatePanelVisible);
connect(m_settings, &DockSettings::windowGeometryChanged, this, &MainWindow::updateGeometry, Qt::QueuedConnection);
connect(m_settings, &DockSettings::windowHideModeChanged, this, &MainWindow::setStrutPartial, Qt::QueuedConnection);
connect(m_settings, &DockSettings::windowVisibleChanegd, this, &MainWindow::updatePanelVisible, Qt::QueuedConnection);
connect(m_panelHideAni, &QPropertyAnimation::finished, this, &MainWindow::updateGeometry);
connect(m_positionUpdateTimer, &QTimer::timeout, this, &MainWindow::updatePosition);
connect(m_positionUpdateTimer, &QTimer::timeout, this, &MainWindow::updatePosition, Qt::QueuedConnection);
}
void MainWindow::updatePosition()
@ -134,6 +137,7 @@ void MainWindow::updateGeometry()
m_mainPanel->updateDockDisplayMode(m_settings->displayMode());
QSize size = m_settings->windowSize();
setFixedSize(size);
if (m_settings->hideState() == Hide)
{
m_sizeChangeAni->stop();
@ -146,10 +150,6 @@ void MainWindow::updateGeometry()
}
QWidget::setFixedSize(size);
}
else
{
setFixedSize(size);
}
const QRect primaryRect = m_settings->primaryRect();
const int offsetX = (primaryRect.width() - size.width()) / 2;
@ -169,6 +169,7 @@ void MainWindow::updateGeometry()
Q_ASSERT(false);
}
qDebug() << this->size() << m_mainPanel->size();
update();
}
@ -230,9 +231,12 @@ void MainWindow::setStrutPartial()
void MainWindow::expand()
{
if (m_mainPanel->pos() == QPoint(0, 0))
const QPoint finishPos(0, 0);
if (m_mainPanel->pos() == finishPos)
return;
// reset environment
m_sizeChangeAni->stop();
m_posChangeAni->stop();
const QSize size = m_settings->windowSize();
@ -255,7 +259,6 @@ void MainWindow::expand()
Q_ASSERT(false);
}
const QPoint finishPos(0, 0);
if (m_panelShowAni->state() == QPropertyAnimation::Running)
return m_panelShowAni->setEndValue(finishPos);
@ -300,7 +303,7 @@ void MainWindow::updatePanelVisible()
{
const Dock::HideState state = m_settings->hideState();
// qDebug() << state;
qDebug() << state;
if (state == Unknown)
return;