Ringhio Notifications ProgressBar Example
Revision as of 20:11, 19 March 2017 by Admin (talk | contribs) (Created page with "=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 c...")
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.
// // 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); } }