Quantcast
--[[
	Gatherer Addon for World of Warcraft(tm).
	Version: 3.2.2 (<%codename%>)
	Revision: $Id: GatherNotifications.lua 907 2010-12-05 23:54:28Z Esamynn $

	License:
	This program is free software; you can redistribute it and/or
	modify it under the terms of the GNU General Public License
	as published by the Free Software Foundation; either version 2
	of the License, or (at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program(see GPL.txt); if not, write to the Free Software
	Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

	Note:
		This AddOn's source code is specifically designed to work with
		World of Warcraft's interpreted AddOn system.
		You have an implicit licence to use this AddOn with these facilities
		since that is it's designated purpose as per:
		http://www.fsf.org/licensing/licenses/gpl-faq.html#InterpreterIncompat

	User Notification System
		This is a system for delivering information to the user in a non-threatening manner
		such as warnings about Gatherer not recognizing all of the client's maps

]]
Gatherer_RegisterRevision("$URL: http://svn.norganna.org/gatherer/trunk/Gatherer/GatherNotifications.lua $", "$Rev: 907 $")

local _tr = Gatherer.Locale.Tr
local _trC = Gatherer.Locale.TrClient
local _trL = Gatherer.Locale.TrLocale

local metatable = { __index = getfenv(0) }
setmetatable( Gatherer.Notifications, metatable )
setfenv(1, Gatherer.Notifications)

Tooltip = nil -- will be set by the OnLoad function
Messages = {}

local function DisplayNotification()
	if ( IsLoggedIn() and Messages[1] ) then
		Tooltip:ClearLines()
		if not ( Tooltip:IsShown() ) then
			Tooltip:SetOwner(UIParent, "ANCHOR_PRESERVE")
		end
		local C = HIGHLIGHT_FONT_COLOR
		Tooltip:SetText(_trL("Gatherer: Warnings"), C.r, C.g, C.b)
		for _, text in ipairs(Messages) do
			Tooltip:AddLine("———————————————————————————————————————————————————") -- I'd perfer if this produced a solid line :/
			Tooltip:AddLine(text, nil, nil, nil, true)
		end
		Tooltip:Show()
	end
end

function AddInfo( text )
	table.insert(Messages, text)
	DisplayNotification()
end


function OnLoad( tooltip )
	Tooltip = tooltip
	tooltip:RegisterEvent("PLAYER_LOGIN")
end

function OnShow( tooltip )
	tooltip.timeVisible = 0
end

function OnHide( tooltip )
	Messages = {}
end

function OnUpdate( tooltip, elapsed )
	timeVisible = tooltip.timeVisible
	timeVisible = timeVisible + elapsed
	if ( MouseIsOver(tooltip) ) then
		tooltip.timeVisible = 0
		tooltip:Show()
	else
		if ( timeVisible > 30 ) then
			tooltip:FadeOut(10)
			tooltip.timeVisible = -1000
		else
			tooltip.timeVisible = timeVisible
		end
	end
end

function OnEvent(self, event, ...)
	if ( event == "PLAYER_LOGIN" ) then
		DisplayNotification()
		Tooltip.timeVisible = -15
	end
end