You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
263 lines
10 KiB
263 lines
10 KiB
/*
|
|
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 2 of the License, or
|
|
(at your option) any later version.
|
|
*/
|
|
|
|
/*
|
|
shows a user tree of friends per server
|
|
begin: Sam Aug 31 2002
|
|
copyright: (C) 2002 by Dario Abatianni
|
|
email: eisfuchs@tigress.com
|
|
*/
|
|
|
|
#ifndef NICKSONLINE_H
|
|
#define NICKSONLINE_H
|
|
|
|
#include "nickinfo.h"
|
|
#include "nicksonlineitem.h"
|
|
#include "chatwindow.h"
|
|
#include "linkaddressbook/nicksonlinetooltip.h"
|
|
|
|
#include <tqvbox.h>
|
|
#include <tqiconset.h>
|
|
#include <tqpair.h>
|
|
|
|
|
|
class TDEListView;
|
|
class TQPushButton;
|
|
class TQPopupMenu;
|
|
|
|
class ChatWindow;
|
|
|
|
class NicksOnline : public ChatWindow
|
|
{
|
|
Q_OBJECT
|
|
|
|
|
|
public:
|
|
// Columns of the NickListView.
|
|
enum NickListViewColumn
|
|
{
|
|
nlvcNetworkNickChannel = 0,
|
|
nlvcNetwork = 0,
|
|
nlvcNick = 0,
|
|
nlvcChannel = 0,
|
|
nlvcKabc = 1,
|
|
nlvcAdditionalInfo = 1,
|
|
nlvcServerName = 2 // hidden
|
|
};
|
|
// Ids associated with menu/button commands.
|
|
enum CommandIDs
|
|
{
|
|
ciAddressbookChange, ciAddressbookNew, ciAddressbookDelete, ciAddressbookEdit,
|
|
ciSendEmail, ciWhois, ciJoinChannel, ciOpenQuery
|
|
};
|
|
enum NickState
|
|
{
|
|
nsNotANick = 0, // User didn't click on a nickname.
|
|
nsNoAddress = 1, // Nick does not have an addressbook association.
|
|
nsHasAddress = 2 // Nick has an associated addressbook entry.
|
|
};
|
|
|
|
explicit NicksOnline(TQWidget* parent);
|
|
~NicksOnline();
|
|
|
|
// These are here for the benefit of NicksOnlineTooltip.
|
|
TDEListView* getNickListView();
|
|
NickInfoPtr getNickInfo(const TQListViewItem* item);
|
|
|
|
virtual bool canBeFrontView() { return true; }
|
|
|
|
signals:
|
|
/**
|
|
* Emitted when user clicks Edit Watch List button.
|
|
*/
|
|
void editClicked();
|
|
/**
|
|
* Emitted whenever user double-clicks a nick in the Nicks Online tab.
|
|
*/
|
|
void doubleClicked(const TQString& server,const TQString& nick);
|
|
|
|
void showView(ChatWindow* view);
|
|
|
|
public slots:
|
|
|
|
/**
|
|
* Refresh the nicklistview for a single server.
|
|
* @param server The server to be refreshed.
|
|
*/
|
|
void updateServerOnlineList(Server* server);
|
|
|
|
protected slots:
|
|
/**
|
|
* When a user double-clicks a nickname in the nicklistview, let server know so that
|
|
* it can perform the user's chosen default action for that.
|
|
*/
|
|
void processDoubleClick(TQListViewItem* item);
|
|
/**
|
|
* Timer used to refresh display.
|
|
*/
|
|
void timerFired();
|
|
/**
|
|
* Received when user clicks the Edit Contact (or New Contact) button.
|
|
*/
|
|
void slotEditContactButton_Clicked();
|
|
/**
|
|
* Received when user clicks the Change Association button.
|
|
*/
|
|
void slotChangeAssociationButton_Clicked();
|
|
/**
|
|
* Received when user clicks the Delete Association button.
|
|
*/
|
|
void slotDeleteAssociationButton_Clicked();
|
|
/**
|
|
* Received when user selects a different item in the nicklistview.
|
|
*/
|
|
void slotNickListView_SelectionChanged();
|
|
/**
|
|
* Received when right-clicking an item in the NickListView.
|
|
*/
|
|
void slotNickListView_RightButtonClicked(TQListViewItem* item, const TQPoint& pt);
|
|
/**
|
|
* Received from server when a NickInfo changes its information.
|
|
*/
|
|
void slotNickInfoChanged(Server* server, const NickInfoPtr nickInfo);
|
|
/**
|
|
* Received from popup menu when user chooses something.
|
|
*/
|
|
void slotPopupMenu_Activated(int id);
|
|
|
|
protected:
|
|
/** Called from ChatWindow adjustFocus */
|
|
virtual void childAdjustFocus();
|
|
|
|
private:
|
|
/**
|
|
* Returns the named child of parent item in a NicksOnlineItem
|
|
* @param parent Pointer to a NicksOnlineItem.
|
|
* @param name The name in the desired child TQListViewItem, must be in column 0.
|
|
* @param type The type of entry to be found
|
|
* @return Pointer to the child TQListViewItem or 0 if not found.
|
|
*/
|
|
TQListViewItem* findItemChild(const TQListViewItem* parent, const TQString& name, NicksOnlineItem::NickListViewColumn type);
|
|
/**
|
|
* Returns the first occurrence of a child item of a given type in a NicksOnlineItem
|
|
* @param parent Pointer to a NicksOnlineItem.
|
|
* @param type The type of entry to be found
|
|
* @return Pointer to the child TQListViewItem or 0 if not found.
|
|
*/
|
|
TQListViewItem* findItemType(const TQListViewItem* parent, NicksOnlineItem::NickListViewColumn type);
|
|
/**
|
|
* Returns a pointer to the network TQListViewItem with the given name.
|
|
* @param name The name of the network, assumed to be in column 0 of the item.
|
|
* @return Pointer to the TQListViewItem or 0 if not found.
|
|
*/
|
|
TQListViewItem* findNetworkRoot(const TQString& name);
|
|
/**
|
|
* Refresh the nicklistview for all servers.
|
|
*/
|
|
void refreshAllServerOnlineLists();
|
|
/**
|
|
* Refreshes the information for the given item in the list.
|
|
* @param item Pointer to listview item.
|
|
*/
|
|
void refreshItem(TQListViewItem* item);
|
|
/**
|
|
* Return a string containing formatted additional information about a nick.
|
|
* @param nickInfo A pointer to NickInfo structure for the nick.
|
|
* @return A string formatted for display containing the information
|
|
* about the nick.
|
|
* @return needWhois True if a WHOIS needs to be performed on the nick
|
|
* to get additional information.
|
|
*/
|
|
TQString getNickAdditionalInfo(NickInfoPtr nickInfo, TDEABC::Addressee addressee,
|
|
bool& needWhois);
|
|
/**
|
|
* Invokes the KAddressBook contact editor for the specified contact id.
|
|
* @param uid Id of the contact.
|
|
* @return False if unable to invoke the Contact editor.
|
|
*/
|
|
bool editAddressee(const TQString &uid);
|
|
/**
|
|
* Returns the server name and nickname of the specified nicklistview item.
|
|
* @param item The nicklistview item.
|
|
* @return serverName Name of the server for the nick at the item, or Null if not a nick.
|
|
* @return nickname The nickname at the item.
|
|
*/
|
|
bool getItemServerAndNick(const TQListViewItem* item, TQString& serverName, TQString& nickname);
|
|
/**
|
|
* Given a server name and nickname, returns the item in the Nick List View displaying
|
|
* the nick.
|
|
* @param serverName Name of server.Server
|
|
* @param nickname Nick name.
|
|
* @return Pointer to TQListViewItem displaying the nick, or 0 if not found.
|
|
*
|
|
* @see getItemServerAndNick
|
|
*/
|
|
TQListViewItem* getServerAndNickItem(const TQString& serverName, const TQString& nickname);
|
|
/**
|
|
* Perform an addressbook command (edit contact, create new contact,
|
|
* change/delete association.)
|
|
* @param id The command id. @ref CommandIDs.
|
|
*
|
|
* The operation is performed on the nickname at the currently-selected item in
|
|
* the nicklistview.
|
|
*
|
|
* Also refreshes the nicklistview display to reflect the new addressbook state
|
|
* for the nick.
|
|
*/
|
|
void doCommand(int id);
|
|
/**
|
|
* Get the addressbook state of the nickname at the specified nicklistview item.
|
|
* @param item Item of the nicklistview.
|
|
* @return Addressbook state.
|
|
* 0 = not a nick, 1 = nick has no addressbook association, 2 = nick has association
|
|
*/
|
|
int getNickAddressbookState(TQListViewItem* item);
|
|
/**
|
|
* Sets the enabled/disabled state and labels of the addressbook buttons
|
|
* based on the given nick addressbook state.
|
|
* @param nickState The state of the nick. 1 = not associated with addressbook,
|
|
* 2 = associated with addressbook. @ref getNickAddressbookState.
|
|
*/
|
|
void setupAddressbookButtons(int nickState);
|
|
/**
|
|
* Determines if a nick is online in any of the servers in a network and returns
|
|
* a NickInfo if found, otherwise 0.
|
|
* @param networkName Server network name.
|
|
* @param nickname Nick name.
|
|
* @return NickInfo if nick is online in any server, otherwise 0.
|
|
*/
|
|
NickInfoPtr getOnlineNickInfo(TQString& networkName, TQString& nickname);
|
|
/**
|
|
* Requests a WHOIS for a specified server network and nickname.
|
|
* The request is sent to the first server found in the network.
|
|
* @param groupName Server group name.
|
|
* @param nickname Nick name.
|
|
*/
|
|
void requestWhois(TQString& networkName, TQString& nickname);
|
|
|
|
// The main display of networks, nicks, and channels.
|
|
TDEListView* m_nickListView;
|
|
// Buttons on screen.
|
|
TQPushButton* m_editContactButton;
|
|
TQPushButton* m_changeAssociationButton;
|
|
TQPushButton* m_deleteAssociationButton;
|
|
// Context menu when right-clicking a nick.
|
|
TQPopupMenu* m_popupMenu;
|
|
// Helper to display tooltip information for nicks.
|
|
Konversation::KonversationNicksOnlineToolTip *m_tooltip;
|
|
// A string containing the identifier for the "Offline" listview item
|
|
TQString c_offline;
|
|
// Timer for refreshing display and generating WHOISes.
|
|
TQTimer* m_timer;
|
|
// Addressbook icon.
|
|
TQIconSet m_tdeabcIconSet;
|
|
/* Set to False every 8 seconds so that we generate a WHOIS on watch nicks that
|
|
lack information.*/
|
|
bool m_whoisRequested;
|
|
};
|
|
#endif
|