/*
* Jitsi, the OpenSource Java VoIP and Instant Messaging client.
*
* Copyright @ 2015 Atlassian Pty Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.java.sip.communicator.impl.galagonotification;
import java.awt.image.*;
/**
* Declares the native functions required by the galagonotification bundle.
*
* @author Lubomir Marinov
*/
public final class GalagoNotification
{
static
{
System.loadLibrary("galagonotification");
}
/**
* Connects to the <tt>DBUS_BUS_SESSION</tt> D-Bus bus daemon and registers
* with it.
*
* @return a new reference to a <tt>DBusConnection</tt> to the
* <tt>DBUS_BUS_SESSION</tt> D-Bus bus daemon
* @throws DBusException if connecting to and registering with the
* <tt>DBUS_BUS_SESSION</tt> D-Bus bus daemon fails
*/
public static native long dbus_bus_get_session()
throws DBusException;
/**
* Decrements the reference count of the specified <tt>DBusConnection</tt>
* and finalizes it if the count reaches zero.
*
* @param connection the <tt>DBusConnection</tt> to decrement the reference
* count of
*/
public static native void dbus_connection_unref(long connection);
/**
* Invokes <tt>org.freedesktop.Notifications.GetCapabilities</tt> through
* the specified <tt>DBusConnection</tt> in order to retrieve the optional
* capabilities supported by the freedesktop.org Desktop Notifications
* server.
*
* @param connection the <tt>DBusConnection</tt> with the freedesktop.org
* Desktop Notifications server
* @return an array of <tt>String</tt>s listing the optional capabilities
* supported by the freedesktop.org Desktop Notifications server
* @throws DBusException if retrieving the optional capabilities of the
* freedesktop.org Desktop Notifications server fails
*/
public static native String[] getCapabilities(long connection)
throws DBusException;
/**
* Invokes <tt>org.freedesktop.Notifications.Notify</tt> through the
* specified <tt>DBusConnection</tt> in order to send a notification to the
* freedesktop.org Desktop Notifications server.
*
* @param connection the <tt>DBusConnection</tt> with the freedesktop.org
* Desktop Notifications server
* @param appName the optional name of the application sending the
* notification
* @param replacesId the optional notification identifier of an existing
* notification to be replaced by the notification being sent; <tt>0</tt> to
* not replace any existing notification
* @param icon the optional icon to be displayed by the notification if the
* server supports such display. Not supported by this implementation at
* this time.
* @param summary the summary text briefly describing the notification
* @param body the optional detailed body text of the notification
* @param expireTimeout the time in milliseconds since the display of the
* notification after which the notification should automatically close. If
* <tt>-1</tt>, the notification's expiration time is dependent on the
* notification server's settings. If <tt>0</tt>, never expires.
* @return the unique identifier of the sent notification if
* <tt>replacesId</tt> is <tt>0</tt>; <tt>replacesId</tt> if
* <tt>replacesId</tt> is not <tt>0</tt>
* @throws DBusException if sending the notification to the freedesktop.org
* Desktop Notifications server fails
*/
public static native long notify(
long connection,
String appName,
long replacesId,
BufferedImage icon,
String summary,
String body,
int expireTimeout)
throws DBusException;
/**
* Prevents the creation of <tt>GalagoNotification</tt> instances.
*/
private GalagoNotification()
{
}
}