# COPYRIGHT (C) 2020-2023 Nicotine+ Contributors
# COPYRIGHT (C) 2009 quinox <quinox@users.sf.net>
#
# GNU GENERAL PUBLIC LICENSE
#    Version 3, 29 June 2007
#
# This program 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.
#
# This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.

from pynicotine.pluginsystem import BasePlugin


class Plugin(BasePlugin):

    def __init__(self, *args, **kwargs):

        super().__init__(*args, **kwargs)

        self.log("__init__()")

    def init(self):
        self.log("init()")

    def disable(self):
        self.log("disable()")

    def loaded_notification(self):
        self.log("loaded_notification()")

    def unloaded_notification(self):
        self.log("unloaded_notification()")

    def shutdown_notification(self):
        self.log("shutdown_notification()")

    def public_room_message_notification(self, room, user, line):
        self.log("public_room_message_notification(room=%s, user=%s, line=%s)", (room, user, line))

    def search_request_notification(self, searchterm, user, token):
        self.log("search_request_notification(searchterm=%s, user=%s, token=%s)", (searchterm, user, token))

    def distrib_search_notification(self, searchterm, user, token):
        # Verbose:
        # self.log('distrib_search_notification(searchterm=%s, user=%s, token=%s)', (searchterm, user, token))
        pass

    def incoming_private_chat_event(self, user, line):
        self.log("incoming_private_chat_event(user=%s, line=%s)", (user, line))

    def incoming_private_chat_notification(self, user, line):
        self.log("incoming_private_chat_notification(user=%s, line=%s)", (user, line))

    def incoming_public_chat_event(self, room, user, line):
        self.log("incoming_public_chat_event(room=%s, user=%s, line=%s)", (room, user, line))

    def incoming_public_chat_notification(self, room, user, line):
        self.log("incoming_public_chat_notification(room=%s, user=%s, line=%s)", (room, user, line))

    def outgoing_private_chat_event(self, user, line):
        self.log("outgoing_private_chat_event(user=%s, line=%s)", (user, line))

    def outgoing_private_chat_notification(self, user, line):
        self.log("outgoing_private_chat_notification(user=%s, line=%s)", (user, line))

    def outgoing_public_chat_event(self, room, line):
        self.log("outgoing_public_chat_event(room=%s, line=%s)", (room, line))

    def outgoing_public_chat_notification(self, room, line):
        self.log("outgoing_public_chat_notification(room=%s, line=%s)", (room, line))

    def outgoing_global_search_event(self, text):
        self.log("outgoing_global_search_event(text=%s)", (text,))

    def outgoing_room_search_event(self, rooms, text):
        self.log("outgoing_room_search_event(rooms=%s, text=%s)", (rooms, text))

    def outgoing_buddy_search_event(self, text):
        self.log("outgoing_buddy_search_event(text=%s)", (text,))

    def outgoing_user_search_event(self, users, text):
        self.log("outgoing_user_search_event(users=%s, text=%s)", (users, text))

    def user_resolve_notification(self, user, ip_address, port, country):
        self.log("user_resolve_notification(user=%s, ip_address=%s, port=%s, country=%s)",
                 (user, ip_address, port, country))

    def server_connect_notification(self):
        self.log("server_connect_notification()")

    def server_disconnect_notification(self, userchoice):
        self.log("server_disconnect_notification(userchoice=%s)", (userchoice,))

    def join_chatroom_notification(self, room):
        self.log("join_chatroom_notification(room=%s)", (room,))

    def leave_chatroom_notification(self, room):
        self.log("leave_chatroom_notification(room=%s)", (room,))

    def user_join_chatroom_notification(self, room, user):
        self.log("user_join_chatroom_notification(room=%s, user=%s)", (room, user,))

    def user_leave_chatroom_notification(self, room, user):
        self.log("user_leave_chatroom_notification(room=%s, user=%s)", (room, user,))

    def user_stats_notification(self, user, stats):
        self.log("user_stats_notification(user=%s, stats=%s)", (user, stats))

    def user_status_notification(self, user, status, privileged):
        self.log("user_status_notification(user=%s, status=%s, privileged=%s)", (user, status, privileged))

    def upload_queued_notification(self, user, virtual_path, real_path):
        self.log("upload_queued_notification(user=%s, virtual_path=%s, real_path=%s)",
                 (user, virtual_path, real_path))

    def upload_started_notification(self, user, virtual_path, real_path):
        self.log("upload_started_notification(user=%s, virtual_path=%s, real_path=%s)",
                 (user, virtual_path, real_path))

    def upload_finished_notification(self, user, virtual_path, real_path):
        self.log("upload_finished_notification(user=%s, virtual_path=%s, real_path=%s)",
                 (user, virtual_path, real_path))

    def download_started_notification(self, user, virtual_path, real_path):
        self.log("download_started_notification(user=%s, virtual_path=%s, real_path=%s)",
                 (user, virtual_path, real_path))

    def download_finished_notification(self, user, virtual_path, real_path):
        self.log("download_finished_notification(user=%s, virtual_path=%s, real_path=%s)",
                 (user, virtual_path, real_path))
