/** * @RDE_HEADER@ * FrameLess Dialog with alternatie basecolor * $Id$ * $HeadURL$ * $Author$ * * Created by Mike Wille, SLSE, 2016-03-09 */ #pragma once #include #include "lts_base.h" #include "lts_widgets_export.h" namespace LtsWidgets { /** * @brief The Behaviour enum describes how the FramelessDialog handles user input while shown. */ enum class Behaviour { Popup = 0, // a mouse click on any surface other than this dialog will close/hide this dialog Modal, // disallow any input, but do not block the program execution (does not apply when exec() is used), and avoid rejecting when dialog is modal }; /** * @brief The LtsFramelessDialog class creates a Popup-Dialog, without a frame, but with a shadow as border. This Popup-Dialog is centered in the window . * The purpose is to cover the window the user is working with, to interupt the user with a message he has to attend first before continuing work. * LtsFramelessDialog is actually a QWidget as this class uses a QWidget which casts a shadow and lays itself on it. Sorry. * The Application must never be interrupted, so there is no exec(). */ class LTSWIDGETS_EXPORT LtsFramelessDialog : public QDialog // TODO: many methods use this to show messages, use LtsMessageDialog instead { Q_OBJECT public: /** * @brief LtsFramelessDialog * @param parent the widget to be covered * @param behaviour see enum LtsWidgets::Behaviour - only affects this Dialog when currently shown */ explicit LtsFramelessDialog(QWidget *parent = nullptr, const Behaviour &behaviour = Behaviour::Popup); virtual ~LtsFramelessDialog(); public Q_SLOTS: void onUpdateGeometry(); private: QRect screenRectFromPoint(const QPoint &pos) const; void addTouchScroll(QWidget *widget); protected: void showEvent(QShowEvent *event) override; }; } // namespace LtsWidgets