diff --git a/ui/drafts.lua b/ui/drafts.lua index 8eed47f..03940df 100644 --- a/ui/drafts.lua +++ b/ui/drafts.lua @@ -40,9 +40,9 @@ function mail.show_drafts(name) formspec[#formspec + 1] = S("(No subject)") end end - if mail.selected_idxs.sent[name] then + if mail.selected_idxs.drafts[name] then formspec[#formspec + 1] = ";" - formspec[#formspec + 1] = tostring(mail.selected_idxs.sent[name] + 1) + formspec[#formspec + 1] = tostring(mail.selected_idxs.drafts[name] + 1) end formspec[#formspec + 1] = "]" else diff --git a/ui/events.lua b/ui/events.lua index b7c9573..50dcd48 100644 --- a/ui/events.lua +++ b/ui/events.lua @@ -23,6 +23,10 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) local inboxsortfield = ({"from","subject","time"})[sortfieldindex] local outboxsortfield = ({"to","subject","time"})[sortfieldindex] + -- Be sure that inbox/outbox selected idxs aren't nil + mail.selected_idxs.inbox[name] = mail.selected_idxs.inbox[name] or {} + mail.selected_idxs.sent[name] = mail.selected_idxs.sent[name] or {} + -- Store common player configuration for reuse mail.selected_idxs.sortfield[name] = sortfieldindex mail.selected_idxs.sortdirection[name] = sortdirection @@ -31,6 +35,12 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) mail.selected_idxs.multipleselection[name] = fields.multipleselection == "true" end + -- Avoid several selected after disabling the multiple selection + if not mail.selected_idxs.multipleselection[name] then + mail.selected_idxs.inbox[name] = { mail.selected_idxs.inbox[name][#mail.selected_idxs.inbox[name]] } + mail.selected_idxs.sent[name] = { mail.selected_idxs.sent[name][#mail.selected_idxs.sent[name]] } + end + -- split inbox and sent msgs for different tests local entry = mail.get_storage_entry(name) local messagesDrafts = entry.drafts diff --git a/ui/inbox.lua b/ui/inbox.lua index 5bfd4e1..b7e6758 100644 --- a/ui/inbox.lua +++ b/ui/inbox.lua @@ -6,10 +6,7 @@ function mail.show_inbox(name, sortfieldindex, sortdirection, filter) sortfieldindex = tonumber(sortfieldindex or mail.selected_idxs.sortfield[name]) or 3 sortdirection = sortdirection or mail.selected_idxs.sortdirection[name] or "1" filter = mail.selected_idxs.filter[name] or filter or "" - local nb_selected = 0 - if mail.selected_idxs.inbox[name] then - nb_selected = #mail.selected_idxs.inbox[name] - end + mail.selected_idxs.inbox[name] = mail.selected_idxs.inbox[name] or {} local inbox_formspec = "size[8.5,10;]" .. mail.theme .. [[ tabheader[0.3,1;boxtab;]] .. S("Inbox") .. "," .. S("Sent messages").. "," .. S("Drafts") .. [[;1;false;false] @@ -36,7 +33,7 @@ function mail.show_inbox(name, sortfieldindex, sortdirection, filter) checkbox[0,9.1;multipleselection;]] .. S("Allow multiple selection") .. [[;]] .. tostring(mail.selected_idxs.multipleselection[name]) .. [[] - label[0,9.65;]] .. tostring(nb_selected) .. " " .. S("selected") .. [[] + label[0,9.65;]] .. tostring(#mail.selected_idxs.inbox[name]) .. " " .. S("selected") .. [[] button[3.5,9.5;2.5,0.5;selectall;]] .. S("(Un)select all") .. [[] tablecolumns[color;text;text] diff --git a/ui/outbox.lua b/ui/outbox.lua index f2c243a..c558056 100644 --- a/ui/outbox.lua +++ b/ui/outbox.lua @@ -6,10 +6,7 @@ function mail.show_sent(name, sortfieldindex, sortdirection, filter) sortfieldindex = tonumber(sortfieldindex or mail.selected_idxs.sortfield[name]) or 3 sortdirection = sortdirection or mail.selected_idxs.sortdirection[name] or "1" filter = mail.selected_idxs.filter[name] or filter or "" - local nb_selected = 0 - if mail.selected_idxs.sent[name] then - nb_selected = #mail.selected_idxs.sent[name] - end + mail.selected_idxs.sent[name] = mail.selected_idxs.sent[name] or {} local sent_formspec = "size[8.5,10;]" .. mail.theme .. [[ tabheader[0.3,1;boxtab;]] .. S("Inbox") .. "," .. S("Sent messages").. "," .. S("Drafts") .. [[;2;false;false] @@ -34,7 +31,7 @@ function mail.show_sent(name, sortfieldindex, sortdirection, filter) checkbox[0,9.1;multipleselection;]] .. S("Allow multiple selection") .. [[;]] .. tostring(mail.selected_idxs.multipleselection[name]) .. [[] - label[0,9.65;]] .. tostring(nb_selected) .. " " .. S("selected") .. [[] + label[0,9.65;]] .. tostring(#mail.selected_idxs.sent[name]) .. " " .. S("selected") .. [[] button[3.5,9.5;2.5,0.5;selectall;]] .. S("(Un)select all") .. [[] tablecolumns[color;text;text]