Ringhio Notifications ProgressBar Example
Introduction
This is a basic example in C of how to use the latest Ringhio Notifications to display a notification bubble displaying an incrementing progress bar.
It can be reused in many applications where the progress of a file operation can be monitored in the background by the user and does not need to be displayed in focus or inside a window.
The source code example requires the latest Ringhio Notifications and ProgressBar_Gadget_Class to be installed.
Screen Shot
Source Code
//
// Description: Basic example source code on how to use new feature of displaying a
// incrementing progress bar inside a Ringhio Notification bubble
//
// Requirements: Ringhio Notifications v53.65 or later, ProgressBar.gadget v53.10 or later
//
// Author: M.Tretene (19/03/2017)
//
// To compile:
//
// gcc ProgressBar_Ringhio_Test.c -o ProgressBar_Ringhio_Test -lauto -lamiga
//
#include <dos/dos.h>
#include <stdio.h>
#include <proto/dos.h>
#include <proto/exec.h>
#include <proto/arexx.h>
#include <proto/bsdsocket.h>
#include <classes/arexx.h>
#include <proto/arexx.h>
#include <proto/application.h>
#ifndef APPNOTIFY_DisplayTime
#define APPNOTIFY_DisplayTime ( TAG_USER + 13 )
#endif
#ifndef APPNOTIFY_Percentage
#define APPNOTIFY_Percentage ( TAG_USER + 14 )
#endif
struct ApplicationIFace *IApplication = NULL;
struct PrefsObjectsIFace *IPrefsObjects = NULL;
uint32 appID = 0 ;
void fonctionMessageRinghio(int PERCENT_VALUE)
{
IApplication->Notify(appID,
APPNOTIFY_Percentage, PERCENT_VALUE,
TAG_END);
}
ULONG registerApplication()
{
appID = IApplication->RegisterApplication("Test_Ringhio",
REGAPP_URLIdentifier, "a-eon.com",
REGAPP_Description, "Test Ringhio",
REGAPP_UniqueApplication, TRUE,
REGAPP_AllowsBlanker, TRUE,
REGAPP_HasPrefsWindow, FALSE,
REGAPP_HasIconifyFeature, FALSE,
REGAPP_NoIcon, FALSE,
REGAPP_LoadPrefs, FALSE,
TAG_DONE) ;
return appID;
}
void unregisterApplication()
{
IApplication->UnregisterApplication(appID, NULL);
}
int main(int argc,char **argv)
{
ApplicationBase = IExec->OpenLibrary("application.library", 52) ;
if (ApplicationBase)
{
IApplication = (struct ApplicationIFace *) IExec->GetInterface(ApplicationBase, "application", 2, NULL);
IPrefsObjects = (struct PrefsObjectsIFace *) IExec->GetInterface(ApplicationBase, "prefsobjects", 2, NULL);
registerApplication() ;
}
else
{
printf("Unable to open ApplicationBase \n");
return 0 ;
}
if (appID > 0)
{
// first msg to ringhio to open the progressbar
IApplication->Notify(appID,
APPNOTIFY_Title, "Test Ringhio",
APPNOTIFY_Text, "downloadName",
APPNOTIFY_ImageVertAlign, 1,
APPNOTIFY_DisplayTime, TRUE,
APPNOTIFY_Percentage, 0,
TAG_END);
IDOS->Delay(50);
int i = 0 ;
for (i = 0 ; i < 2 ; i++)
{
int cpt = 0 ;
for (cpt = 0 ; cpt < 100 ; cpt++)
{
// msg to Ringhio to uopdate the progressbar
fonctionMessageRinghio(cpt);
IDOS->Delay(5) ;
}
}
// last msg to close the msg
IApplication->Notify(appID,
APPNOTIFY_Update, TRUE,
TAG_END);
unregisterApplication() ;
}
if (ApplicationBase)
{
IExec->DropInterface((struct Interface *)IPrefsObjects);
IExec->DropInterface((struct Interface *)IApplication);
IExec->CloseLibrary(ApplicationBase);
}
}