mirror of
https://github.com/KDE/latte-dock.git
synced 2025-03-30 14:50:12 +03:00
New tentative interface
This commit is contained in:
parent
a05504813c
commit
669c12c0bb
@ -1,11 +1,11 @@
|
||||
#ifndef VISIBILITYMANAGER_H
|
||||
#define VISIBILITYMANAGER_H
|
||||
|
||||
#include <QObject>
|
||||
#include "../liblattedock/dock.h"
|
||||
#include "abstractinterface.h"
|
||||
#include "plasmaquick/containmentview.h"
|
||||
#include "../liblattedock/dock.h"
|
||||
|
||||
#include <QObject>
|
||||
#include <QTimer>
|
||||
|
||||
#include <Plasma/Containment>
|
||||
@ -13,90 +13,64 @@
|
||||
class VisibilityManager : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
Q_PROPERTY(bool disableHiding READ disableHiding WRITE setDisableHiding NOTIFY disableHidingChanged)
|
||||
//Q_PROPERTY(bool immutable READ immutable WRITE setImmutable NOTIFY immutableChanged)
|
||||
Q_PROPERTY(bool isAutoHidden READ isAutoHidden WRITE setIsAutoHidden NOTIFY isAutoHiddenChanged)
|
||||
Q_PROPERTY(bool isDockWindowType READ isDockWindowType WRITE setIsDockWindowType NOTIFY isDockWindowTypeChanged)
|
||||
Q_PROPERTY(bool isHovered READ isHovered NOTIFY isHoveredChanged)
|
||||
Q_PROPERTY(bool windowInAttention READ windowInAttention WRITE setWindowInAttention NOTIFY windowInAttentionChanged)
|
||||
|
||||
Q_PROPERTY(Latte::Dock::Visibility panelVisibility READ panelVisibility WRITE setPanelVisibility NOTIFY panelVisibilityChanged)
|
||||
Q_PROPERTY(Latte::Dock::Visibility mode READ mode WRITE setMode NOTIFY modeChanged)
|
||||
Q_PROPERTY(int timerShow READ timerShow WRITE setTimerShow NOTIFY timerShowChanged)
|
||||
Q_PROPERTY(int timerHide READ timerHide WRITE setTimerHide NOTIFY timerHideChanged)
|
||||
Q_PROPERTY(Latte::Dock::VisibilityState state READ state WRITE setState NOTIFY stateChanged)
|
||||
|
||||
public:
|
||||
explicit VisibilityManager(PlasmaQuick::ContainmentView *view);
|
||||
~VisibilityManager();
|
||||
virtual ~VisibilityManager();
|
||||
|
||||
bool disableHiding() const;
|
||||
void setDisableHiding(bool state);
|
||||
Latte::Dock::Visibility mode() const;
|
||||
void setMode(Latte::Dock::Visibility mode);
|
||||
|
||||
bool isAutoHidden() const;
|
||||
void setIsAutoHidden(bool state);
|
||||
int timerShow() const;
|
||||
void setTimerShow(int msec);
|
||||
|
||||
bool isDockWindowType() const;
|
||||
void setIsDockWindowType(bool state);
|
||||
int timerHide() const;
|
||||
void setTimerHide(int msec);
|
||||
|
||||
bool isHovered() const;
|
||||
/**
|
||||
* @brief show, change state to Dock::Visible when show timer is triggered.
|
||||
*/
|
||||
Q_INVOKABLE void show();
|
||||
|
||||
bool windowInAttention() const;
|
||||
/**
|
||||
* @brief showImmediately, same that show, but without timer
|
||||
*/
|
||||
Q_INVOKABLE void showImmediately();
|
||||
|
||||
Latte::Dock::Visibility panelVisibility() const;
|
||||
void setContainment(Plasma::Containment *contaiment);
|
||||
void setMaskArea(QRect area);
|
||||
void setPanelVisibility(Latte::Dock::Visibility state);
|
||||
/**
|
||||
* @brief restore, change to last state, respecting the timers.
|
||||
*/
|
||||
Q_INVOKABLE void restore();
|
||||
|
||||
public slots:
|
||||
Q_INVOKABLE void initialize();
|
||||
Q_INVOKABLE void showNormal();
|
||||
Q_INVOKABLE void showOnTop();
|
||||
Q_INVOKABLE void showOnTopCheck();
|
||||
Q_INVOKABLE void showOnBottom();
|
||||
bool event(QEvent *event);
|
||||
void setWindowInAttention(bool state);
|
||||
void updateVisibilityFlags();
|
||||
/**
|
||||
* @brief showTemporarily, same that show but restores last state automatically
|
||||
* @param msec, timeout before restoring
|
||||
*/
|
||||
Q_INVOKABLE void showTemporarily(int msec);
|
||||
|
||||
Q_SIGNALS:
|
||||
void disableHidingChanged();
|
||||
void isAutoHiddenChanged();
|
||||
void isDockWindowTypeChanged();
|
||||
void isHoveredChanged();
|
||||
void mustBeLowered(); //are used to triger the sliding animations from the qml part
|
||||
void mustBeRaised();
|
||||
void mustBeRaisedImmediately();
|
||||
void panelVisibilityChanged();
|
||||
void windowInAttentionChanged();
|
||||
|
||||
private Q_SLOTS:
|
||||
void activeWindowChanged();
|
||||
//void compositingChanged();
|
||||
void updateState();
|
||||
void initWindow();
|
||||
void setIsHovered(bool state);
|
||||
//void screenChanged(QScreen *screen);
|
||||
//void setScreenGeometry(QRect geometry);
|
||||
//void updateWindowPosition();
|
||||
|
||||
private:
|
||||
bool m_disableHiding;
|
||||
bool m_isAutoHidden;
|
||||
bool m_isDockWindowType;
|
||||
bool m_isHovered;
|
||||
//second pass of the initialization
|
||||
bool m_secondInitPass;
|
||||
bool m_windowIsInAttention;
|
||||
|
||||
int m_childrenLength;
|
||||
QRect m_maskArea;
|
||||
|
||||
QTimer m_initTimer;
|
||||
QTimer m_updateStateTimer;
|
||||
|
||||
Plasma::Containment *m_containment;
|
||||
PlasmaQuick::ContainmentView *m_view;
|
||||
|
||||
NowDock::AbstractInterface *m_interface;
|
||||
Latte::Dock::Visibility m_panelVisibility;
|
||||
/**
|
||||
* @brief updateDockGeometry, the geometry should be inside screen, not into window.
|
||||
*/
|
||||
void updateDockGeometry(QRect &geometry);
|
||||
|
||||
signals:
|
||||
/**
|
||||
* @brief mouseEntered, emitted when mouse enters the dock
|
||||
*/
|
||||
void mouseEntered();
|
||||
|
||||
/**
|
||||
* @brief mouseExited, emitted when mouse leaves the dock
|
||||
*/
|
||||
void mouseExited();
|
||||
|
||||
void modeChanged();
|
||||
void timerShowChanged();
|
||||
void timerHideChanged();
|
||||
void stateChanged();
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
#endif // VISIBILITYMANAGER_H
|
||||
|
Loading…
x
Reference in New Issue
Block a user