--- Used to update everything that is affected by the configuration
-function OmaRF:RefreshConfig()
- self:OnDisable(); -- clear everything
- if self.db.profile.enabled then
- CompactRaidFrameContainer_ApplyToFrames(CompactRaidFrameContainer, "normal", configureIndicators);
- watchedAuras = {};
- for _, pos in ipairs(positions) do
- for _, aura in ipairs(self.db.profile.indicators[pos]["auras"]) do
- watchedAuras[aura] = pos; -- TODO single aura only in one position
+function M.CheckIndicators(frame, unit)
+ for _, pos in pairs(positions) do
+ frame.inds[pos].expires = nil;
+ frame.inds[pos]:Hide();
+ frame.inds[pos].text:Hide();
+ end
+ for i = 1,3 do
+ frame.major[i].expires = nil;
+ frame.major[i]:Hide();
+ frame.major[i].text:Hide();
+ frame.major[i].stack:Hide();
+ end
+ local name, icon, count, expires, caster, id;
+ local showInds, showMajors, needUpdate = false, false, false;
+ local majorPos = 1;
+ local alert = false; -- color the whole bar
+ local current = GetTime();
+ for _, filter in ipairs(auraFilters) do
+ local i = 1;
+ while true do
+ name, _, icon, count, _, _, expires, caster, _, _, id = UnitAura(unit, i, filter);
+ if not id then break end
+ local pos = watchedAuras[id] or watchedAuras[name];
+ if pos and caster == "player" then
+ needUpdate = remaining(frame.inds[pos].text, expires, current);
+ frame.inds[pos].expires = expires;
+ frame.inds[pos]:Show();
+ frame.inds[pos].text:Show();
+ showInds = true;