qskinny/src/dialogs/QskDialog.h

161 lines
4.0 KiB
C
Raw Normal View History

2017-07-21 16:21:34 +00:00
/******************************************************************************
* QSkinny - Copyright (C) 2016 Uwe Rathmann
2023-04-06 07:23:37 +00:00
* SPDX-License-Identifier: BSD-3-Clause
2017-07-21 16:21:34 +00:00
*****************************************************************************/
#ifndef QSK_DIALOG_H
2022-03-20 12:11:34 +00:00
#define QSK_DIALOG_H
2017-07-21 16:21:34 +00:00
#include "QskGlobal.h"
2018-08-03 06:30:23 +00:00
2018-07-19 12:10:48 +00:00
#include <qobject.h>
2017-07-21 16:21:34 +00:00
#include <memory>
class QString;
class QWindow;
#if defined( qskDialog )
#undef qskDialog
#endif
#define qskDialog QskDialog::instance()
class QSK_EXPORT QskDialog : public QObject
{
Q_OBJECT
Q_PROPERTY( Policy policy READ policy
WRITE setPolicy NOTIFY policyChanged )
Q_PROPERTY( QWindow* transientParent READ transientParent
WRITE setTransientParent NOTIFY transientParentChanged )
2018-08-03 06:15:28 +00:00
public:
2017-07-21 16:21:34 +00:00
enum Policy
{
EmbeddedBox,
EmbeddedWindow, // not yet implemented, do we need it ?
TopLevelWindow
};
Q_ENUM( Policy )
// a.k.a QMessageBox::StandardButton or QPlatformDialogHelper::StandardButton
enum Action
2017-07-21 16:21:34 +00:00
{
NoAction = 0,
Ok = 1 << 10,
Save = 1 << 11,
SaveAll = 1 << 12,
Open = 1 << 13,
Yes = 1 << 14,
YesToAll = 1 << 15,
No = 1 << 16,
NoToAll = 1 << 17,
Abort = 1 << 18,
Retry = 1 << 19,
Ignore = 1 << 20,
Close = 1 << 21,
Cancel = 1 << 22,
Discard = 1 << 23,
Help = 1 << 24,
Apply = 1 << 25,
Reset = 1 << 26,
RestoreDefaults = 1 << 27
2017-07-21 16:21:34 +00:00
};
Q_ENUM( Action )
Q_DECLARE_FLAGS( Actions, Action )
// a.k.a QMessageBox::ButtonRole
enum ActionRole
2017-07-21 16:21:34 +00:00
{
InvalidRole = -1,
AcceptRole,
RejectRole,
DestructiveRole,
UserRole,
2017-07-21 16:21:34 +00:00
HelpRole,
YesRole,
NoRole,
ResetRole,
ApplyRole,
NActionRoles
2017-07-21 16:21:34 +00:00
};
Q_ENUM( ActionRole )
2018-11-05 15:06:43 +00:00
// for building the mask in QskSkin::dialogButtonLayout
enum ButtonLayoutFlag
{
// from QPlatformDialogHelper::ButtonRole
ActionMask = 0x0FFFFFFF,
AlternateRole = 1 << 28,
Stretch = 1 << 29,
Reverse = 1 << 30
};
2017-07-21 16:21:34 +00:00
enum DialogCode
{
Rejected = 0,
Accepted
};
Q_ENUM( DialogCode )
static QskDialog* instance();
2019-09-03 06:42:23 +00:00
void setPolicy( Policy );
Policy policy() const;
2017-07-21 16:21:34 +00:00
Q_INVOKABLE void setTransientParent( QWindow* );
Q_INVOKABLE QWindow* transientParent() const;
Q_INVOKABLE Action message(
const QString& title, const QString& text, int symbolType,
Actions actions = Ok, Action defaultAction = NoAction ) const;
2017-07-21 16:21:34 +00:00
Q_INVOKABLE Action information(
2017-07-21 16:21:34 +00:00
const QString& title, const QString& text,
Actions actions = Ok, Action defaultAction = NoAction ) const;
2017-07-21 16:21:34 +00:00
Q_INVOKABLE Action warning(
2018-08-03 06:15:28 +00:00
const QString& title, const QString& text,
Actions actions = Ok, Action defaultAction = NoAction ) const;
2017-07-21 16:21:34 +00:00
Q_INVOKABLE Action critical(
2018-08-03 06:15:28 +00:00
const QString& title, const QString& text,
Actions actions = Ok, Action defaultAction = NoAction ) const;
2017-07-21 16:21:34 +00:00
Q_INVOKABLE Action question(
2018-08-03 06:15:28 +00:00
const QString& title, const QString& text,
Actions actions = Actions( Yes | No ),
Action defaultAction = NoAction ) const;
2017-07-21 16:21:34 +00:00
Q_INVOKABLE QString select(
const QString& title, const QString& text,
2018-08-03 06:15:28 +00:00
const QStringList& entries, int selectedRow = 0 ) const;
2017-07-21 16:21:34 +00:00
static ActionRole actionRole( Action action );
2018-08-03 06:15:28 +00:00
Q_SIGNALS:
2017-07-21 16:21:34 +00:00
void transientParentChanged();
void policyChanged();
2018-08-03 06:15:28 +00:00
private:
2017-07-21 16:21:34 +00:00
QskDialog();
2018-07-31 15:32:25 +00:00
~QskDialog() override;
2017-07-21 16:21:34 +00:00
class PrivateData;
std::unique_ptr< PrivateData > m_data;
};
Q_DECLARE_METATYPE( QskDialog::Action )
Q_DECLARE_METATYPE( QskDialog::Actions )
Q_DECLARE_OPERATORS_FOR_FLAGS( QskDialog::Actions )
2017-07-21 16:21:34 +00:00
#endif