dde-dock/frame/item/components/appdragwidget.h
chenjun 2ef1176873 fix: 添加针对源代码的单元测试,添加触发自动测试代码
因为单元测试需要直接测试源代码,而主程序代码中include的单元使用了相对路径
单元测试的CMakeLists和主程序的CMakeLists路径不同,编译单元测试时会提示找不到文件
因此设置搜索路径,并修改各单元引用头文件的路径。在单元测试的CMakeLists中添加需要依赖

Log: 添加针对源代码的单元测试,添加触发自动测试代码
Change-Id: I0e0bc92c28d6cee42fc52064fc360c58f7c02826
2020-12-22 10:10:20 +08:00

96 lines
2.9 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd.
*
* Author: listenerri <listenerri@gmail.com>
*
* Maintainer: listenerri <listenerri@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef APPDRAGWIDGET_H
#define APPDRAGWIDGET_H
#include "constants.h"
#include <QPixmap>
#include <QGraphicsObject>
#include <QGraphicsView>
#include <QPainter>
#include <QMouseEvent>
#include <QTimer>
#include <QPropertyAnimation>
#include <QParallelAnimationGroup>
#include <qwidget.h>
#include "../widgets/tipswidget.h"
#include "dockpopupwindow.h"
class AppGraphicsObject;
class AppDragWidget : public QGraphicsView
{
Q_OBJECT
public:
explicit AppDragWidget(QWidget *parent = Q_NULLPTR);
virtual ~AppDragWidget() override;
void setAppPixmap(const QPixmap &pix);
void setDockInfo(Dock::Position dockPosition, const QRect &dockGeometry);
void setOriginPos(const QPoint position);
bool isRemoveAble();
protected:
void mouseMoveEvent(QMouseEvent *event) override;
void dragEnterEvent(QDragEnterEvent *event) override;
void dragMoveEvent(QDragMoveEvent *event) override;
void dropEvent(QDropEvent *event) override;
void hideEvent(QHideEvent *event) override;
void moveEvent(QMoveEvent *event) override;
void enterEvent(QEvent *event) override;
private:
void initAnimations();
void initConfigurations();
void showRemoveAnimation();
void showGoBackAnimation();
void onRemoveAnimationStateChanged(QAbstractAnimation::State newState,
QAbstractAnimation::State oldState);
const QPoint popupMarkPoint(Dock::Position pos);
const QPoint topleftPoint() const;
void showRemoveTips();
private:
AppGraphicsObject *m_object;
QGraphicsScene *m_scene;
QTimer *m_followMouseTimer;
QPropertyAnimation *m_animScale;
QPropertyAnimation *m_animRotation;
QPropertyAnimation *m_animOpacity;
QParallelAnimationGroup *m_animGroup;
QPropertyAnimation *m_goBackAnim;
Dock::Position m_dockPosition;
QRect m_dockGeometry;
QPoint m_originPoint;
QSize m_iconSize;
Dock::TipsWidget *m_removeTips;
DockPopupWindow *m_popupWindow;
/**
* @brief m_distanceMultiple: 倍数
* dock栏上应用区驻留应用被拖拽远离dock的距离除以dock的宽或者高更小的一个的比值
*/
double m_distanceMultiple;
};
#endif /* APPDRAGWIDGET_H */