From 73048cfbcb174518cc954855741d95defe643cd1 Mon Sep 17 00:00:00 2001 From: Brandon Talbot Date: Tue, 19 Jul 2016 21:27:57 +0200 Subject: [PATCH] Further work on refactor of settings: Still outstadning: * Settings finished * Bank * linking to normal keybindings --- src/lua/constants/contstants.lua | 8 ++ src/lua/controller/bag.lua | 6 +- src/lua/element/container.lua | 2 +- src/lua/element/item.lua | 2 +- src/lua/settings/settingsController.lua | 36 +++++---- src/lua/settings/settingsElements.lua | 18 ++++- src/lua/tools/masonryFormatter.lua | 2 +- src/manifest.xml | 4 + src/xml/element/itemContainer.xml | 4 +- src/xml/settings/checkBox.xml | 10 +++ src/xml/settings/containerSettings.xml | 86 +++++++++++++++++++++ src/xml/settings/itemContainerSettings.xml | 9 +-- src/xml/settings/settingsContainer.xml | 105 ++++++++++++++++++++++++++ src/xml/settings/subClassSettings.xml | 113 ++++++++++++++++++++++++++++ 14 files changed, 371 insertions(+), 34 deletions(-) create mode 100644 src/xml/settings/checkBox.xml create mode 100644 src/xml/settings/containerSettings.xml create mode 100644 src/xml/settings/mainBarSettings.xml create mode 100644 src/xml/settings/settingsContainer.xml create mode 100644 src/xml/settings/subClassSettings.xml diff --git a/src/lua/constants/contstants.lua b/src/lua/constants/contstants.lua index d64348c..a2fafb2 100644 --- a/src/lua/constants/contstants.lua +++ b/src/lua/constants/contstants.lua @@ -4,6 +4,10 @@ local NAME, ADDON = ... DJBags_TYPE_CONTAINER = 'container' DJBags_TYPE_ITEM_CONTAINER = 'itemContainer' +DJBags_TYPE_SUB_CLASS = 'djbags_sub_classes' + +DJBags_FORMATTER_MASONRY = 'djbags_masonry' +DJBags_FORMATTER_BLOCK = 'djbags_block' --endregion @@ -29,12 +33,16 @@ DJBags_SETTING_TEXT_SIZE = 'djbags_truncate_text_size' local localeText= {} localeText['enUS'] = function() DJBags_LOCALE_ITEM_CONTAINER_SETTINGS = 'Item Container Settings:' + DJBags_LOCALE_CONTAINER_SETTINGS = 'Category Container Settings:' + DJBags_LOCALE_SUB_CLASS_SETTINGS = 'Sub Class Settings:' + DJBags_LOCALE_SETTINGS = 'DJBags Settings:' DJBags_LOCALE_CLEAR_NEW_ITEMS = 'Clear new items' DJBags_LOCALE_BACKGROUND_COLOR = 'Background color' DJBags_LOCALE_BORDER_COLOR = 'Border color' DJBags_LOCALE_TEXT_COLOR = 'Text color' DJBags_LOCALE_PADDING = 'Padding' DJBags_LOCALE_SPACING = 'Spacing' + DJBags_LOCALE_SCALE = 'Scale' DJBags_LOCALE_TEXT_SIZE = 'Text size' end diff --git a/src/lua/controller/bag.lua b/src/lua/controller/bag.lua index b19dbb4..677fe22 100644 --- a/src/lua/controller/bag.lua +++ b/src/lua/controller/bag.lua @@ -35,9 +35,13 @@ function DJDBagsBagsButton_OnClick(self) end end -function controller:Open() +function controller:Update() ADDON:UpdateBags({0, 1, 2, 3, 4}) DJBagsBagContainer:Arrange() +end + +function controller:Open() + self:Update() DJBagsBagContainer:Show() end diff --git a/src/lua/element/container.lua b/src/lua/element/container.lua index 23c0e30..43f3b95 100644 --- a/src/lua/element/container.lua +++ b/src/lua/element/container.lua @@ -65,7 +65,7 @@ function container:AddItem(item) end function container:Arrange(override) - ADDON.format['massonry']( + ADDON.format[ADDON.settings:GetSettings(self.__type)[DJBags_SETTING_FORMATTER]]( self, ADDON.settings:GetSettings(self.__type)[DJBags_SETTING_FORMATTER_MAX_ITEMS], ADDON.settings:GetSettings(self.__type)[DJBags_SETTING_FORMATTER_MAX_HEIGHT], diff --git a/src/lua/element/item.lua b/src/lua/element/item.lua index e12280e..4d2b0f5 100644 --- a/src/lua/element/item.lua +++ b/src/lua/element/item.lua @@ -66,7 +66,7 @@ function item:GetContainerName() return globalDefinedList[self.id] .. '**' end - local subClassSplitList = ADDON.settings:GetSubClassList() + local subClassSplitList = ADDON.settings:GetSettings(DJBags_TYPE_SUB_CLASS) if subClassSplitList[self.classId] then return self.class .. (self.subClass == BAG_FILTER_JUNK and '' or '_' .. self.subClass) end diff --git a/src/lua/settings/settingsController.lua b/src/lua/settings/settingsController.lua index 93ffd71..752439e 100644 --- a/src/lua/settings/settingsController.lua +++ b/src/lua/settings/settingsController.lua @@ -36,7 +36,7 @@ function settings:Init() [DJBags_SETTING_PADDING] = 5, [DJBags_SETTING_SPACING] = 5, [DJBags_SETTING_SCALE] = 1, - [DJBags_SETTING_FORMATTER] = 'massonry', + [DJBags_SETTING_FORMATTER] = DJBags_FORMATTER_MASONRY, [DJBags_SETTING_FORMATTER_VERT] = false, [DJBags_SETTING_FORMATTER_MAX_ITEMS] = 12, [DJBags_SETTING_FORMATTER_MAX_HEIGHT] = 0.5, @@ -50,34 +50,36 @@ function settings:Init() [DJBags_SETTING_PADDING] = 3, [DJBags_SETTING_SPACING] = 3, }, - } - self.defaultSubclass = { - [LE_ITEM_CLASS_ARMOR] = false, - [LE_ITEM_CLASS_CONSUMABLE] = true, - [LE_ITEM_CLASS_GEM] = false, - [LE_ITEM_CLASS_GLYPH] = false, - [LE_ITEM_CLASS_ITEM_ENHANCEMENT] = false, - [LE_ITEM_CLASS_MISCELLANEOUS] = true, - [LE_ITEM_CLASS_RECIPE] = false, - [LE_ITEM_CLASS_TRADEGOODS] = true, - [LE_ITEM_CLASS_WEAPON] = false, + [DJBags_TYPE_SUB_CLASS] = { + [LE_ITEM_CLASS_ARMOR] = false, + [LE_ITEM_CLASS_CONSUMABLE] = true, + [LE_ITEM_CLASS_GEM] = false, + [LE_ITEM_CLASS_GLYPH] = false, + [LE_ITEM_CLASS_ITEM_ENHANCEMENT] = false, + [LE_ITEM_CLASS_MISCELLANEOUS] = true, + [LE_ITEM_CLASS_RECIPE] = false, + [LE_ITEM_CLASS_TRADEGOODS] = true, + [LE_ITEM_CLASS_WEAPON] = false, + }, } self:Update() end function settings:Update(force) - self:UpdateBag(DJBagsBagContainer, ADDON.cache.bagContainers, force) + self:UpdateBag(DJBagsBagContainer, ADDON.bagController, ADDON.cache.bagContainers, force) end -function settings:UpdateBag(bag, list, force) +function settings:UpdateBag(bag, controller, list, force) bag:UpdateFromSettings() for _, container in pairs(list) do container:UpdateFromSettings() end - if bag:IsVisible() and force then + if bag:IsVisible() and force == 1 then bag:Arrange(true) + elseif bag:IsVisible() and force == 2 then + controller:Update() end end @@ -104,10 +106,6 @@ function settings:GetGlobalUserDefinedList() return DJBags_DB.global.userDefined end -function settings:GetSubClassList() - return DJBags_DB[self.realm][self.player].subClass or self.defaultSubclass -end - function settings:MigrateSettings(table, default) for k, v in pairs(default) do if table[k] ~= nil then diff --git a/src/lua/settings/settingsElements.lua b/src/lua/settings/settingsElements.lua index 3b3c1b5..250b074 100644 --- a/src/lua/settings/settingsElements.lua +++ b/src/lua/settings/settingsElements.lua @@ -16,13 +16,16 @@ function DJBagsInitSettingsSlider(slider, name, min, max, step, type, setting) slider.setting = setting slider.name = name + local onChange = slider:GetScript('OnValueChanged') + slider:SetScript('OnValueChanged', nil) slider:SetValue(value) slider:SetValueStep(step) + slider:SetScript('OnValueChanged', onChange) end function DJBagsSettingsSlider_OnChange(self, value) _G[self:GetName() .. 'Text']:SetText(tostring(self.name) .. ' - ' .. round(value, 1)) - ADDON.settings:SetSettings(self.type, self.setting, value, true) + ADDON.settings:SetSettings(self.type, self.setting, value, 1) end function DJBagsInitSettingsColorPicker(picker, type, setting) @@ -52,4 +55,17 @@ function DJBagsSettingsColorPicker_OnClick(self) ColorPickerFrame.hasOpacity, ColorPickerFrame.opacity = (a ~= nil), a; ColorPickerFrame.previousValues = { r, g, b, a }; ShowUIPanel(ColorPickerFrame) +end + +function DJBagsInitSettingsCheckBox(checkbox, name, type, setting) + checkbox.type = type + checkbox.setting = setting + + _G[checkbox:GetName() .. "Text"]:SetText(name) + + checkbox:SetChecked(ADDON.settings:GetSettings(type)[setting]) +end + +function DJBagsSettingsCheckBox_OnChange(checkbox, checked) + ADDON.settings:SetSettings(checkbox.type, checkbox.setting, checked, 2) end \ No newline at end of file diff --git a/src/lua/tools/masonryFormatter.lua b/src/lua/tools/masonryFormatter.lua index a439620..f3d5b69 100644 --- a/src/lua/tools/masonryFormatter.lua +++ b/src/lua/tools/masonryFormatter.lua @@ -20,7 +20,7 @@ local sorter = function(A, B) end end -ADDON.format['massonry'] = function(frame, maxItems, _, vert, override) +ADDON.format[DJBags_FORMATTER_MASONRY] = function(frame, maxItems, _, vert, override) local h = 0 local x = 0 local mH = 0 diff --git a/src/manifest.xml b/src/manifest.xml index 53747ef..460dfc3 100644 --- a/src/manifest.xml +++ b/src/manifest.xml @@ -36,7 +36,11 @@