From a92af44eb68dcd6ab70aa78fa4fd7a86816463e1 Mon Sep 17 00:00:00 2001 From: Henrique Santiago Date: Wed, 4 Jan 2012 16:11:11 -0200 Subject: [PATCH] viplist improvements --- modules/game_viplist/addvip.otui | 47 +++++++++++++++++++++++++++++++ modules/game_viplist/viplist.lua | 34 +++++++++++++++++++++- modules/game_viplist/viplist.otui | 1 + 3 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 modules/game_viplist/addvip.otui diff --git a/modules/game_viplist/addvip.otui b/modules/game_viplist/addvip.otui new file mode 100644 index 00000000..7d7a3a57 --- /dev/null +++ b/modules/game_viplist/addvip.otui @@ -0,0 +1,47 @@ +MainWindow + size: 256 128 + title: Add to VIP list + + Label + text: Please enter a character name: + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + margin-left: 16 + margin-right: 16 + margin-top: 32 + + LineEdit + id: name + anchors.top: prev.bottom + anchors.left: parent.left + anchors.right: parent.right + margin-left: 16 + margin-right: 16 + margin-top: 4 + + HorizontalSeparator + anchors.left: parent.left + anchors.right: parent.right + anchors.bottom: next.top + margin-left: 16 + margin-right: 16 + margin-bottom: 10 + + Button + text: Ok + width: 64 + anchors.right: next.left + anchors.bottom: parent.bottom + margin-bottom: 16 + margin-right: 16 + @onClick: VipList.addVip() + + Button + text: Cancel + width: 64 + anchors.right: parent.right + anchors.bottom: parent.bottom + margin-bottom: 16 + margin-right: 16 + @onClick: VipList.destroyAddWindow() diff --git a/modules/game_viplist/viplist.lua b/modules/game_viplist/viplist.lua index 7c6873dc..9df3013c 100644 --- a/modules/game_viplist/viplist.lua +++ b/modules/game_viplist/viplist.lua @@ -2,6 +2,7 @@ VipList = {} -- private variables local vipWindow = nil +local addVipWindow = nil -- public functions function VipList.create() @@ -13,6 +14,20 @@ function VipList.destroy() vipWindow = nil end +function VipList.createAddWindow() + addVipWindow = displayUI('addvip.otui') +end + +function VipList.destroyAddWindow() + addVipWindow:destroy() + addVipWindow = nil +end + +function VipList.addVip() + Game.addVip(addVipWindow:getChildById('name'):getText()) + VipList.destroyAddWindow() +end + -- hooked events function Game.onAddVip(id, name, online) local vipList = vipWindow:getChildById('vipList') @@ -43,14 +58,31 @@ function Game.onVipStateChange(id, online) label.vipOnline = online end +function VipList.onVipListMousePress(widget, mousePos, mouseButton) + if mouseButton ~= MouseRightButton then return end + + local vipList = vipWindow:getChildById('vipList') + + local menu = createWidget('PopupMenu') + menu:addOption('Add new VIP', function() VipList.createAddWindow() end) + menu:display(mousePos) + + return true +end + function VipList.onVipListLabelMousePress(widget, mousePos, mouseButton) if mouseButton ~= MouseRightButton then return end local vipList = vipWindow:getChildById('vipList') local menu = createWidget('PopupMenu') - menu:addOption('Remove from VIP list', function() if widget then Game.removeVip(widget:getId():sub(4)) vipList:removeChild(widget) end end) + menu:addOption('Add new VIP', function() VipList.createAddWindow() end) + menu:addOption('Remove ' .. widget:getText(), function() if widget then Game.removeVip(widget:getId():sub(4)) vipList:removeChild(widget) end end) + menu:addSeparator() + menu:addOption('Copy Name', function() end) menu:display(mousePos) + + return true end diff --git a/modules/game_viplist/viplist.otui b/modules/game_viplist/viplist.otui index f4e2b8a2..b765d474 100644 --- a/modules/game_viplist/viplist.otui +++ b/modules/game_viplist/viplist.otui @@ -15,3 +15,4 @@ MiniWindow margin-bottom: 6 margin-left: 6 margin-right: 6 + &onMousePress: VipList.onVipListMousePress