Mail client

Mail client — an example involving mail client checking mail for multiple accounts

Description

The following example shows how to use libtinynotify to handle displaying new mail notification while doing mail fetching for multiple accounts.

In this particular case, a NotifySession is instantiated globally which might not be the sanest solution but it's quite straightforward.

A single Notification is instantiated for the whole mail checking process with a template summary & body. The template is filled with actual numbers when notifications are displayed.

Use of notification_update() allows libtinynotify to keep track of notification display by server and replace the outdated notification with the one containing new numbers.

Example 1. Mail client using libtinynotify

/* compile & link with libtinynotify.pc */
#include <tinynotify.h>

NotifySession notify_session;

/* ... */

void check_new_mail(void) {
	Notification n = notification_new("%d new mails",
		"%d new messages have been fetched from %d mail accounts.");

	MyMailAccount a;
	int mail_count = 0;
	int acc_count = 0;

	for (a = accounts; a; a = a->next) {
		int mails_fetched;
		/* ... */

		if (mails_fetched > 0) {
			mail_count += mails_fetched;
			acc_count++;

			notification_update(n, notify_session,
				mail_count, mail_count, acc_count);
		}
	}

	notificaton_free(n);
}

int main(int argc, char *argv[]) {
	/* ... */

	notify_session = notify_session_new("mymailer", "mailer");

	/* ... */

	notify_session_free(notify_session);
	return 0;
}