summaryrefslogblamecommitdiff
path: root/src/gui/guildwindow.h
blob: 7e7a313aa8acc1bba6b5ed1cb212ec459ab859fd (plain) (tree)
1
2
3
4
5
6




                                         
  



























                                                                                 
              












                                      

                  
                 






                                                             
                  
 


















                                                 
 



                                                   
 



                                                
 



                                            
 



                                      
 



                                                                                        
 



                                          



                               
                                
 





                                                                           





                                     
 
        
                                 


                                
                           
                            

                             

                                                              




                                
/*
 *  guildwindow.h
 *  A file part of The Mana World
 *
 *  Created by David Athay on 06/03/2007.
 *
 * Copyright (c) 2007, The Mana World Development Team
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * My name may not be used to endorse or promote products
 *       derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
 *
 * $Id$
 */

#ifndef _TMW_GUI_GUILDWINDOW_H
#define _TMW_GUI_GUILDWINDOW_H

#include <iosfwd>
#include <map>
#include <vector>

#include <guichan/actionlistener.hpp>
#include <guichan/widgets/listbox.hpp>

#include "window.h"

#include "../guichanfwd.h"

class LocalPlayer;
class TextDialog;
class ConfirmDialog;
class GuildListBox;
class ScrollArea;
class GCContainer;
class TabbedArea;

class GuildWindow : public Window, public gcn::ActionListener
{
public:
    /**
     * Constructor.
     */
    GuildWindow();

    /**
     * Destructor.
     */
    ~GuildWindow();

    /**
     * Called when receiving actions from widget.
     */
    void action(const gcn::ActionEvent &event);

    /**
     * Draw this window.
     */
    void draw(gcn::Graphics *graphics);

    /**
     * Updates this dialog.
     */
    void update();

    /**
     * Create a new tab for a guild list.
     */
    void newGuildTab(const std::string &guildName);

    /**
     * Display guild's member list to active tab
     */
    void setTab(const std::string &guildName);

    /**
     * Update the contents of the active tab
     */
    void updateTab();

    /**
     * Check if the window is in focus
     */
    bool isFocused();

    /**
     * Create a dialog for accepting an invite
     */
    void openAcceptDialog(const std::string &inviterName, const std::string &guildName);

    /**
     * Request member list
     */
    void requestMemberList(short guildId);

    /**
     * Removes the selected tab
     */
    void removeTab(int guildId);

    /**
     * Set guild member status in userlist
     */
    void setOnline(const std::string &guildName, const std::string &member,
                   bool online);

protected:
    /**
     * Get selected guild tab
     * @return Returns selected guild
     */
    short getSelectedGuild();

private:
    gcn::Button *mGuildButton[3];
    TextDialog *guildDialog;
    TextDialog *inviteDialog;
    ConfirmDialog *acceptDialog;
    TabbedArea *mGuildTabs;
    ScrollArea *mScrollArea;
    bool mFocus;
    std::string invitedGuild;
    typedef std::map<std::string, GuildListBox*> GuildListMap;
    GuildListMap mGuildLists;
};

extern GuildWindow *guildWindow;

#endif