--   This file is part of Reno desktop.
--
--  Reno desktop 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 3 of the License, or (at your option) any later version.
--
--  Reno desktop 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 Reno desktop. If not, see <https://www.gnu.org/licenses/>. 
-- Basic client control menu
local awmtk2 = require("awmtk2")
local wibox = require("wibox")
local gears = require("gears")
local awful = require("awful")
local beautiful = require("beautiful")
local menugen = require("context_menu")

return function(args)
    local style = awmtk2.create_style("client_controls",
        awmtk2.generic.menu,args.style)
    local templates = awmtk2.create_template_lib("client_controls",awmtk2.templates,args.templates)
    local t = awmtk2.build_templates(templates,style)
    local move_to_tag = {}
    local add_to_tag = {}
    awful.screen.connect_for_each_screen(function(s)
        table.insert(move_to_tag,{
            "Screen "..s.index,
            (function() 
                local t = {}
                for k,v in pairs(s.tags) do
                    table.insert(t,{v.name,function()
                        if client.focus then
                            client.focus:tags({v})
                        end
                    end})
                end
                return t
            end)()
        })
        table.insert(add_to_tag,{
            "Screen "..s.index,
            (function() 
                local t = {}
                for k,v in pairs(s.tags) do
                    table.insert(t,{v.name,function()
                        if client.focus then
                            local tags = client.focus:tags()
                            for k,tag in pairs(tags) do
                                if v == tag then
                                    table.remove(tags,k)
                                    client.focus:tags(tags)
                                    return
                                end
                            end
                            table.insert(tags,v)
                            client.focus:tags(tags)
                        end
                    end})
                end
                return t
            end)()
        })
    end)
    local widget = menugen({
        items = {
            { "Kill client", function() client.focus:kill() end },
            { "Raise client", function() client.focus:raise() end},
            { "Lower client", function() client.focus:lower() end},
            { "Move to tag", move_to_tag },
            { "Switch on tag", add_to_tag }
        },
    })
    return widget
end
