diff options
author | Mavridis Philippe <mavridisf@gmail.com> | 2021-01-13 19:26:24 +0200 |
---|---|---|
committer | Mavridis Philippe <mavridisf@gmail.com> | 2021-01-13 19:26:24 +0200 |
commit | 8c20dc919f7d54eb48fb60f39ba5e1d466a70763 (patch) | |
tree | 44d89f278d5dd066603e5ab9c0b270bc8eb4ad51 /src/k3bjobprogressosd_mod.h | |
download | klamav-8c20dc919f7d54eb48fb60f39ba5e1d466a70763.tar.gz klamav-8c20dc919f7d54eb48fb60f39ba5e1d466a70763.zip |
Initial commit
Signed-off-by: Mavridis Philippe <mavridisf@gmail.com>
Diffstat (limited to 'src/k3bjobprogressosd_mod.h')
-rw-r--r-- | src/k3bjobprogressosd_mod.h | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/src/k3bjobprogressosd_mod.h b/src/k3bjobprogressosd_mod.h new file mode 100644 index 0000000..8b4ffb1 --- /dev/null +++ b/src/k3bjobprogressosd_mod.h @@ -0,0 +1,86 @@ +/* + * + * $Id: k3bjobprogressosd_mod.h,v 1.1 2006/04/17 10:45:39 hoganrobert Exp $ + * Copyright (C) 2005 Sebastian Trueg <trueg@k3b.org> + * + * This file is part of the K3b project. + * Copyright (C) 1998-2005 Sebastian Trueg <trueg@k3b.org> + * + * 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 2 of the License, or + * (at your option) any later version. + * See the file "COPYING" for the exact licensing terms. + */ + +#ifndef _K3B_JOB_PROGRESS_OSD_H_ +#define _K3B_JOB_PROGRESS_OSD_H_ + +#include <qwidget.h> +#include <qpixmap.h> + +class QPaintEvent; +class QMouseEvent; +class KConfigBase; + +/** + * An OSD displaying a text and a progress bar. + * + * Insprired by Amarok's OSD (I also took a bit of their code. :) + */ +class K3bJobProgressOSD : public QWidget +{ + Q_OBJECT + + public: + K3bJobProgressOSD( QWidget* parent = 0, const char* name = 0 ); + ~K3bJobProgressOSD(); + + int screen() const { return m_screen; } + const QPoint& position() const { return m_position; } + + void readSettings( KConfigBase* ); + void saveSettings( KConfigBase* ); + + public slots: + void setScreen( int ); + void setText( const QString& ); + void setProgress( int ); + + /** + * The position refers to one of the corners of the widget + * regarding on the value of the x and y coordinate. + * If for example the x coordinate is bigger than half the screen + * width it refers to the left edge of the widget. + */ + void setPosition( const QPoint& ); + + void show(); + + protected: + void paintEvent( QPaintEvent* ); + void mousePressEvent( QMouseEvent* ); + void mouseReleaseEvent( QMouseEvent* ); + void mouseMoveEvent( QMouseEvent* ); + void renderOSD(); + void refresh(); + void reposition( QSize size = QSize() ); + + private: + /** + * Ensure that the position is inside m_screen + */ + QPoint fixupPosition( const QPoint& p ); + static const int s_outerMargin = 15; + + QPixmap m_osdBuffer; + bool m_dirty; + QString m_text; + int m_progress; + bool m_dragging; + QPoint m_dragOffset; + int m_screen; + QPoint m_position; +}; + +#endif |