/**********************************************************************
 * LeechCraft - modular cross-platform feature rich internet client.
 * Copyright (C) 2006-2014  Georg Rudoy
 *
 * Boost Software License - Version 1.0 - August 17th, 2003
 *
 * Permission is hereby granted, free of charge, to any person or organization
 * obtaining a copy of the software and accompanying documentation covered by
 * this license (the "Software") to use, reproduce, display, distribute,
 * execute, and transmit the Software, and to prepare derivative works of the
 * Software, and to permit third-parties to whom the Software is furnished to
 * do so, all subject to the following:
 *
 * The copyright notices in the Software and this entire statement, including
 * the above license grant, this restriction and the following disclaimer,
 * must be included in all copies of the Software, in whole or in part, and
 * all derivative works of the Software, unless such copies or derivative
 * works are solely in the form of machine-executable object code generated by
 * a source language processor.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
 * SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
 * FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 * DEALINGS IN THE SOFTWARE.
 **********************************************************************/

#include <interfaces/an/constants.h>
#include <interfaces/an/entityfields.h>
#include "xpcconfig.h"

namespace LeechCraft::AN
{
	const QString CatEventCancel { "org.LC.AdvNotifications.Cancel" };

	const QString CatIM { "org.LC.AdvNotifications.IM" };
	const QString TypeIMAttention { CatIM + ".AttentionDrawn" };
	const QString TypeIMIncFile { CatIM + ".IncomingFile" };
	const QString TypeIMIncMsg { CatIM + ".IncomingMessage" };
	const QString TypeIMMUCHighlight { CatIM + ".MUCHighlightMessage" };
	const QString TypeIMMUCInvite { CatIM + ".MUCInvitation" };
	const QString TypeIMMUCMsg { CatIM + ".MUCMessage" };
	const QString TypeIMStatusChange { CatIM + ".StatusChange" };
	const QString TypeIMSubscrGrant { CatIM + ".Subscr.Granted" };
	const QString TypeIMSubscrRevoke { CatIM + ".Subscr.Revoked" };
	const QString TypeIMSubscrRequest { CatIM + ".Subscr.Requested" };
	const QString TypeIMSubscrSub { CatIM + ".Subscr.Subscribed" };
	const QString TypeIMSubscrUnsub { CatIM + ".Subscr.Unsubscribed" };
	const QString TypeIMEventTuneChange { CatIM + ".Event.Tune" };
	const QString TypeIMEventMoodChange { CatIM + ".Event.Mood" };
	const QString TypeIMEventActivityChange { CatIM + ".Event.Activity" };
	const QString TypeIMEventLocationChange { CatIM + ".Event.Location" };

	const QString CatOrganizer { "org.LC.AdvNotifications.Organizer" };
	const QString TypeOrganizerEventDue { CatOrganizer + ".EventDue" };

	const QString CatDownloads { "org.LC.AdvNotifications.Downloads" };
	const QString TypeDownloadFinished { CatDownloads + ".DownloadFinished" };
	const QString TypeDownloadError { CatDownloads + ".DownloadError" };

	const QString CatPackageManager { "org.LC.AdvNotifications.PackageManager" };
	const QString TypePackageUpdated { CatPackageManager + ".PackageUpdated" };

	const QString CatMediaPlayer { "org.LC.AdvNotifications.MediaPlayer" };
	const QString TypeMediaPlaybackStatus { CatMediaPlayer + ".PlaybackStatus" };

	const QString CatTerminal { "org.LC.AdvNotifications.Terminal" };
	const QString TypeTerminalBell { CatTerminal + ".Bell" };
	const QString TypeTerminalActivity { CatTerminal + ".Activity" };
	const QString TypeTerminalInactivity { CatTerminal + ".Inactivity" };

	const QString CatGeneric { "org.LC.AdvNotifications.Generic" };
	const QString TypeGeneric { CatGeneric + ".Generic" };

	namespace Field
	{
		const QString MediaPlayerURL { CatMediaPlayer + ".Fields.URL" };
		const QString MediaPlaybackStatus { CatMediaPlayer + ".Fields.PlaybackStatus" };
		const QString MediaTitle { CatMediaPlayer + ".Fields.Title" };
		const QString MediaArtist { CatMediaPlayer + ".Fields.Artist" };
		const QString MediaAlbum { CatMediaPlayer + ".Fields.Album" };
		const QString MediaLength { CatMediaPlayer + ".Fields.Length" };
		const QString TerminalActive { CatTerminal + ".Fields.Active" };
		const QString IMActivityGeneral { CatIM + ".Fields.Activity.General" };
		const QString IMActivitySpecific { CatIM + ".Fields.Activity.Specific" };
		const QString IMActivityText { CatIM + ".Fields.Activity.Text" };
		const QString IMMoodGeneral { CatIM + ".Fields.Mood.General" };
		const QString IMMoodText { CatIM + ".Fields.Mood.Text" };
		const QString IMLocationLongitude { CatIM + ".Fields.Location.Longitude" };
		const QString IMLocationLatitude { CatIM + ".Fields.Location.Latitude" };
		const QString IMLocationCountry { CatIM + ".Fields.Location.Country" };
		const QString IMLocationLocality { CatIM + ".Fields.Location.Locality" };
	}

	namespace EF
	{
		const QString SenderID { "org.LC.AdvNotifications.SenderID" };
		const QString EventCategory { "org.LC.AdvNotifications.EventCategory" };
		const QString EventID { "org.LC.AdvNotifications.EventID" };
		const QString VisualPath { "org.LC.AdvNotifications.VisualPath" };
		const QString EventType { "org.LC.AdvNotifications.EventType" };
		const QString FullText { "org.LC.AdvNotifications.FullText" };
		const QString ExtendedText { "org.LC.AdvNotifications.ExtendedText" };
		const QString DeltaCount { "org.LC.AdvNotifications.DeltaCount" };
		const QString Count { "org.LC.AdvNotifications.Count" };
		const QString OpenConfiguration { "org.LC.AdvNotifications.OpenConfiguration" };
		const QString IsSingleShot { "org.LC.AdvNotifications.SingleShot" };
		const QString NotifyTransient { "org.LC.AdvNotifications.NotifyTransient" };
		const QString NotifyPersistent { "org.LC.AdvNotifications.NotifyPersistent" };
		const QString NotifyAudio { "org.LC.AdvNotifications.NotifyAudio" };
	}
}
