# SimpleQmlNotify
Simple Qml notification service for qml applications.

## Include

### For qmake projects 

 * cd yourRepo
 * git submodule add https://github.com/QuasarApp/SimpleQmlNotify.git # add the repository of QSimpleQmlNotify into your repo like submodule
 * git submodule update --init --recursive
 * Include in your pro file the pri file of Qt-Secret library
  ``` qmake
    include($$PWD/SimpleQmlNotify/QmlNotify.pri)
  ```
 * Rebuild yuor project

### For cmake projects
#### The cmake build do not required Qt libraries. 
 
 * cd yourRepo
 * git submodule add https://github.com/QuasarApp/SimpleQmlNotify.git # add the repository of QSimpleQmlNotify into your repo like submodule
 * git submodule update --init --recursive
 * Include in your CMakeLists.txt file the main CMakeLists.txt file of QSimpleQmlNotify library
  ``` cmake
    include(QmlNotyfyService)
  ```
 * Rebuild yuor project



### For other build system
 
 * cd yourRepo
 * git submodule add https://github.com/QuasarApp/SimpleQmlNotify.git # add the repository of QSimpleQmlNotify into your repo like submodule
 * git submodule update --init --recursive
 * Add the rule for build QmlNotyfyService
 * Add INCLUDEPATH and LIBS for your build system 
 * Rebuild yuor project


## Using

### Notification

#### CPP
``` cpp
 #include <qmlnotifyservice.h>

 int main() {
     QmlNotificationService::init();
     auto service = QmlNotificationService::NotificationService::getService();
     service->setNotify("title", "text", "UrlOfImage", NotificationData::Normal);
 }


```

#### QML

``` qml

 NotificationServiceView {
     anchors.fill: parent;
 }

```

### Questions


#### CPP
``` cpp
 #include <qmlnotifyservice.h>

 int main() {
     QmlNotificationService::init();
     auto service = QmlNotificationService::NotificationService::getService();
     int questionCode = service->setQuestion("title", "some text");

     QObject::connect(service, QmlNotificationService::NotificationService::questionCompleted,
                     [questionCode](bool accepted, int questionCode) {
                         if (accepted && code === questionCode) {
                            // your action here. 
                         }
                     })

     
 }


```

#### QML

``` qml

 NotificationServiceView {
     anchors.fill: parent;
 }
 
readonly property int questionCode: 0;

questionCode = notificationService.setQuestion(qsTr("Remove %0 user").arg(userModel.userId),
                                qsTr("All saved data and records will be delete, Do you want continuee?"))
Connections {
    target: notificationService
    function onQuestionCompleted(accepted, code) {
        if (accepted && code === privateRoot.questionCode) {
            if (userModel)
                backEnd.removeUser(userModel.userId)
        }
    }
}

```
### Include translations

For include translations into your projects you need to use the QuasarAppUtils::Locales class. See oficiald [documentation](https://quasarapp.ddns.net:3031/docs/QuasarApp/QuasarAppLib/latest/classQuasarAppUtils_1_1Locales.html)

```cpp
if(!QuasarAppUtils::Locales::init(locale, {":/qmlNotify_languages/"})) {
    QuasarAppUtils::Params::log("Error load language : " , QuasarAppUtils::Error);
}
```

Or you can manually load needed qm file.
All qm files located in qmlNotify_languages folder.