qskinny/src/controls/QskWindow.h

93 lines
2.4 KiB
C
Raw Normal View History

2017-07-21 18:21:34 +02:00
/******************************************************************************
* QSkinny - Copyright (C) 2016 Uwe Rathmann
* This file may be used under the terms of the QSkinny License, Version 1.0
*****************************************************************************/
#ifndef QSK_WINDOW_H
#define QSK_WINDOW_H 1
#include "QskGlobal.h"
2018-07-19 14:10:48 +02:00
#include <qquickwindow.h>
2017-07-21 18:21:34 +02:00
class QskWindowPrivate;
class QskObjectAttributes;
class QSK_EXPORT QskWindow : public QQuickWindow
{
Q_OBJECT
2017-10-30 14:38:30 +01:00
Q_PROPERTY( bool deleteOnClose READ deleteOnClose
WRITE setDeleteOnClose NOTIFY deleteOnCloseChanged FINAL )
2017-07-21 18:21:34 +02:00
Q_PROPERTY( bool autoLayoutChildren READ autoLayoutChildren
WRITE setAutoLayoutChildren NOTIFY autoLayoutChildrenChanged FINAL )
Q_PROPERTY( QLocale locale READ locale
WRITE setLocale RESET resetLocale NOTIFY localeChanged FINAL )
using Inherited = QQuickWindow;
public:
enum EventAcceptance
{
EventProcessed = 0,
EventPropagationStopped = 1
};
2017-07-21 18:21:34 +02:00
QskWindow( QWindow* parent = nullptr );
2018-07-31 17:32:25 +02:00
~QskWindow() override;
2017-07-21 18:21:34 +02:00
bool deleteOnClose() const;
void setDeleteOnClose( bool );
void setAutoLayoutChildren( bool );
bool autoLayoutChildren() const;
Q_INVOKABLE void addItem( QQuickItem* );
QLocale locale() const;
void resetLocale();
Q_INVOKABLE void setPreferredSize( const QSize& );
Q_INVOKABLE QSize preferredSize() const;
Q_INVOKABLE QSize effectivePreferredSize() const;
Q_INVOKABLE void setFixedSize( const QSize& );
void polishItems();
void setCustomRenderMode( const char* mode );
const char* customRenderMode() const;
// extra flag to interprete accepted events
void setEventAcceptance( EventAcceptance );
EventAcceptance eventAcceptance() const;
2017-07-21 18:21:34 +02:00
Q_SIGNALS:
void localeChanged( const QLocale& );
void autoLayoutChildrenChanged();
2017-10-30 14:38:30 +01:00
void deleteOnCloseChanged();
2017-07-21 18:21:34 +02:00
public Q_SLOTS:
void setLocale( const QLocale& );
void resizeF( const QSizeF& );
protected:
2018-07-31 17:32:25 +02:00
bool event( QEvent* ) override;
void resizeEvent( QResizeEvent* ) override;
void exposeEvent( QExposeEvent* ) override;
void keyPressEvent(QKeyEvent *) override;
void keyReleaseEvent(QKeyEvent *) override;
2017-07-21 18:21:34 +02:00
virtual void layoutItems();
2018-01-24 10:14:50 +01:00
virtual void ensureFocus( Qt::FocusReason );
2017-07-21 18:21:34 +02:00
private:
void enforceSkin();
Q_DECLARE_PRIVATE( QskWindow )
};
#endif