Como faço para que meu programa QML utilize as notificações do Unity7? Existe uma API que eu possa usar?

6

Estou desenvolvendo um aplicativo de captura de tela no QML e desejo utilizar as notificações do Unity 7 , semelhantes às que o Rhythmbox usa ao notificar um usuário que uma nova música começou ou quando o volume é alterado.

Existe uma API para isso? Um pequeno exemplo de codificação seria útil.

    
por Async 22.10.2014 / 23:17

1 resposta

2

Até onde eu sei, não existe essa API para chamar libnotify de um componente QML.

Para evitar a criação de um plug-in C ++ apenas para receber notificações de um aplicativo de desktop, eu usaria pyotherside para chamar um pequeno módulo python para fazer o trabalho:

Pré-requisito :

Instale o pyotherside: sudo ap-get install pyotherside

Primeiro, o QML:

import QtQuick 2.0
import Ubuntu.Components 1.1
import io.thp.pyotherside 1.2

Rectangle {
    width: 200
    height: 200

    Button {
        text: "press"
        anchors.centerIn: parent
        onClicked: {
            py.call('notify.pressme', [], function() {});
        }
    }

    Python {
        id: py
        Component.onCompleted: {
            addImportPath(Qt.resolvedUrl('.'));
            importModule('notify', function() {});
        }
    }
}

E o código python (mantenha ambos no mesmo diretório), um arquivo chamado notify.py :

#!/usr/bin/env python3

import subprocess

def pressme():
    subprocess.call(["notify-send", "hello", "world"])

Depois de pressionar o botão QML, você receberá uma notificação como esta:

Por favor, leia a página man notificar-enviar para mais opções.

    
por Sylvain Pineau 27.10.2014 / 09:42