mirror of
https://github.com/QuasarApp/SimpleQmlNotify.git
synced 2025-04-26 13:44:34 +00:00
added support of the questions
This commit is contained in:
parent
6cc502f101
commit
0964928742
@ -58,21 +58,17 @@ Dialog {
|
||||
}
|
||||
|
||||
function autoclosePause() {
|
||||
progressAnimation.pause();
|
||||
if (autoClose)
|
||||
progressAnimation.pause();
|
||||
}
|
||||
|
||||
function autocloseResume() {
|
||||
progressAnimation.resume();
|
||||
}
|
||||
|
||||
onClosed: {
|
||||
if (autoClose)
|
||||
opacity = 0;
|
||||
progressAnimation.resume();
|
||||
}
|
||||
|
||||
closePolicy: (!clickClose || autoClose)? Popup.NoAutoClose: Popup.CloseOnReleaseOutside
|
||||
|
||||
onRejected: close()
|
||||
|
||||
footer: ProgressBar {
|
||||
id: progress;
|
||||
@ -81,7 +77,6 @@ Dialog {
|
||||
visible: autoClose
|
||||
value: 0;
|
||||
|
||||
|
||||
NumberAnimation on value {
|
||||
|
||||
id: progressAnimation
|
||||
|
@ -5,9 +5,9 @@
|
||||
* of this license document, but changing it is not allowed.
|
||||
*/
|
||||
|
||||
import QtQuick 2.11
|
||||
import QtQuick.Controls 2.3
|
||||
import QtQuick.Controls.Material 2.0
|
||||
import QtQuick 2.15
|
||||
import QtQuick.Controls 2.5
|
||||
import QtQuick.Controls.Material 2.15
|
||||
import QtQuick.Layouts 1.3
|
||||
|
||||
BasePopUp {
|
||||
@ -110,6 +110,4 @@ BasePopUp {
|
||||
text: titleText
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -5,15 +5,17 @@
|
||||
* of this license document, but changing it is not allowed.
|
||||
*/
|
||||
|
||||
import QtQuick 2.12
|
||||
import QtQuick.Controls.Material 2.12
|
||||
import QtQuick.Controls 2.12
|
||||
import QtQuick 2.15
|
||||
import QtQuick.Controls.Material 2.15
|
||||
import QtQuick.Controls 2.15
|
||||
import QtQuick.Layouts 1.3
|
||||
import QtGraphicalEffects 1.12
|
||||
import QtGraphicalEffects 1.15
|
||||
|
||||
Item {
|
||||
readonly property var model: notificationService;
|
||||
readonly property var msg: model.notify
|
||||
readonly property var qst: model.question
|
||||
|
||||
readonly property var history: model.history
|
||||
|
||||
Metrix {
|
||||
@ -30,14 +32,46 @@ Item {
|
||||
x: parent.width - width - margin;
|
||||
y: margin;
|
||||
|
||||
width: 5 * metrix.pt;
|
||||
width: 4 * metrix.pt;
|
||||
height: width * 0.5
|
||||
}
|
||||
|
||||
YesNoQuestion {
|
||||
id: questionMsgBox
|
||||
titleText : qst.title;
|
||||
text: (qst)? qst.text: "";
|
||||
img: (qst)? qst.img: "";
|
||||
type: 0;
|
||||
|
||||
x: parent.width / 2 - width / 2;
|
||||
y: parent.height / 2 - height / 2;
|
||||
|
||||
width: 6 * metrix.pt;
|
||||
height: width * 0.4
|
||||
|
||||
onAccepted: {
|
||||
if (model) {
|
||||
model.questionComplete(true, qst.type)
|
||||
}
|
||||
}
|
||||
|
||||
onRejected: {
|
||||
if (model) {
|
||||
model.questionComplete(false, qst.type)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onMsgChanged: {
|
||||
|
||||
if (msg.isValid()) {
|
||||
notyfyView._show();
|
||||
}
|
||||
}
|
||||
|
||||
onQstChanged: {
|
||||
if (qst.isValid()) {
|
||||
questionMsgBox._show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
15
NotifyModule/YesNoQuestion.qml
Normal file
15
NotifyModule/YesNoQuestion.qml
Normal file
@ -0,0 +1,15 @@
|
||||
import QtQuick 2.15
|
||||
import QtQuick.Controls 2.15
|
||||
import QtQuick.Controls.Material 2.15
|
||||
import QtQuick.Layouts 1.15
|
||||
|
||||
NotificationForm {
|
||||
id: questionDialog
|
||||
|
||||
autoClose: false
|
||||
clickClose: false
|
||||
|
||||
footer: DialogButtonBox {
|
||||
standardButtons: Dialog.Yes | Dialog.No;
|
||||
}
|
||||
}
|
1
QML.qrc
1
QML.qrc
@ -5,5 +5,6 @@
|
||||
<file>NotifyModule/NotificationForm.qml</file>
|
||||
<file>NotifyModule/BasePopUp.qml</file>
|
||||
<file>NotifyModule/Metrix.qml</file>
|
||||
<file>NotifyModule/YesNoQuestion.qml</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
@ -10,7 +10,7 @@ namespace QmlNotificationService {
|
||||
|
||||
NotificationData::NotificationData(const QString &title,
|
||||
const QString &text,
|
||||
const QString &img, Type type) {
|
||||
const QString &img, int type) {
|
||||
|
||||
_text = text;
|
||||
_title = title;
|
||||
|
@ -31,7 +31,7 @@ public:
|
||||
explicit NotificationData(const QString& title = "",
|
||||
const QString& text = "",
|
||||
const QString& img = "",
|
||||
Type type = Type::Normal);
|
||||
int type = Type::Normal);
|
||||
|
||||
Q_INVOKABLE QString text() const;
|
||||
Q_INVOKABLE QString img() const;
|
||||
|
@ -18,6 +18,10 @@ NotificationData NotificationService::notify() const {
|
||||
return _notify;
|
||||
}
|
||||
|
||||
NotificationData NotificationService::question() const {
|
||||
return _question;
|
||||
}
|
||||
|
||||
void NotificationService::setNotify(const NotificationData& notify) {
|
||||
if (_notify != notify)
|
||||
_history.push_back(_notify);
|
||||
@ -27,6 +31,16 @@ void NotificationService::setNotify(const NotificationData& notify) {
|
||||
emit notifyChanged();
|
||||
}
|
||||
|
||||
void NotificationService::setQuestion(const NotificationData &question) {
|
||||
|
||||
_question = question;
|
||||
emit questionChanged();
|
||||
}
|
||||
|
||||
void NotificationService::questionComplete(bool accepted, int code) {
|
||||
emit questionCompleted(accepted, code);
|
||||
}
|
||||
|
||||
void NotificationService::setNotify(const QString &title,
|
||||
const QString &text,
|
||||
const QString &img,
|
||||
@ -36,6 +50,10 @@ void NotificationService::setNotify(const QString &title,
|
||||
static_cast<NotificationData::Type>(type)));
|
||||
}
|
||||
|
||||
void NotificationService::setQuestion(const QString &title, const QString &text, const QString &img, int code) {
|
||||
setQuestion(NotificationData(title, text, img, code));
|
||||
}
|
||||
|
||||
NotificationService *NotificationService::getService() {
|
||||
static auto service = new NotificationService;
|
||||
return service;
|
||||
|
@ -15,20 +15,17 @@ class NOTIFYSERVICESHARED_EXPORT NotificationService: public QObject
|
||||
Q_OBJECT
|
||||
|
||||
Q_PROPERTY(NotificationData notify READ notify NOTIFY notifyChanged)
|
||||
Q_PROPERTY(NotificationData question READ question NOTIFY questionChanged)
|
||||
|
||||
Q_PROPERTY(QList<NotificationData> history READ history NOTIFY notifyChanged)
|
||||
|
||||
private:
|
||||
explicit NotificationService(QObject *ptr = nullptr);
|
||||
|
||||
NotificationData _notify;
|
||||
QList<NotificationData> _history;
|
||||
|
||||
public:
|
||||
/**
|
||||
* @brief notify
|
||||
* @return notyfyData for qml
|
||||
*/
|
||||
NotificationData notify() const;
|
||||
NotificationData question() const;
|
||||
|
||||
/**
|
||||
* @brief setNotify - add new message for application
|
||||
@ -36,11 +33,20 @@ public:
|
||||
*/
|
||||
void setNotify(const NotificationData ¬ify);
|
||||
|
||||
void setQuestion(const NotificationData& question);
|
||||
Q_INVOKABLE void questionComplete(bool accepted, int code = 0);
|
||||
|
||||
Q_INVOKABLE void setNotify(const QString& title = "",
|
||||
const QString& text = "",
|
||||
const QString& img = "",
|
||||
int type = NotificationData::Normal);
|
||||
|
||||
Q_INVOKABLE void setQuestion(const QString& title = "",
|
||||
const QString& text = "",
|
||||
const QString& img = "",
|
||||
int code = 0);
|
||||
|
||||
|
||||
/**
|
||||
* @brief getService
|
||||
* @return pointer t oservice
|
||||
@ -55,6 +61,15 @@ public:
|
||||
|
||||
signals:
|
||||
void notifyChanged();
|
||||
void questionChanged();
|
||||
void questionCompleted(bool accepted, int questionCode);
|
||||
|
||||
private:
|
||||
explicit NotificationService(QObject *ptr = nullptr);
|
||||
|
||||
NotificationData _question;
|
||||
NotificationData _notify;
|
||||
QList<NotificationData> _history;
|
||||
};
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user