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.
218 lines
5.6 KiB
218 lines
5.6 KiB
/*
|
|
kopeteaway.h - Kopete Away
|
|
|
|
Copyright (c) 2002 by Hendrik vom Lehn <hvl@linux-4-ever.de>
|
|
Copyright (c) 2003 Olivier Goffart <ogoffart @ kde.org>
|
|
|
|
Kopete (c) 2002-2003 by the Kopete developers <kopete-devel@kde.org>
|
|
|
|
*************************************************************************
|
|
* *
|
|
* This library is free software; you can redistribute it and/or *
|
|
* modify it under the terms of the GNU Lesser General Public *
|
|
* License as published by the Free Software Foundation; either *
|
|
* version 2 of the License, or (at your option) any later version. *
|
|
* *
|
|
*************************************************************************
|
|
*/
|
|
|
|
#ifndef KOPETEAWAY_HI
|
|
#define KOPETEAWAY_HI
|
|
|
|
#include <qstring.h>
|
|
#include <qobject.h>
|
|
#include <qvaluelist.h>
|
|
|
|
#include "kopeteawaydialog.h"
|
|
#include "kopete_export.h"
|
|
|
|
class QStringList;
|
|
|
|
struct KopeteAwayPrivate;
|
|
|
|
class KopeteGlobalAwayDialog;
|
|
class KopeteAwayDialog;
|
|
|
|
namespace Kopete
|
|
{
|
|
|
|
/**
|
|
* @class Kopete::Away kopeteaway.h
|
|
*
|
|
* Kopete::Away is a singleton class that manages away messages
|
|
* for Kopete. It stores a global away message, as well as
|
|
* a list of user defined away messages.
|
|
* This class is used by KopeteAwayDialog, which gets it's
|
|
* list of user-defined away messages from this. Protocol
|
|
* plugins' individual away dialogs should also get away
|
|
* messages from this object.
|
|
*
|
|
* It also handle global Idle Time, and all auto away stuff
|
|
*
|
|
* @author Hendrik vom Lehn <hvl@linux-4-ever.de>
|
|
* @author Chris TenHarmsel <tenharmsel@users.sourceforge.net>
|
|
* @author Olivier Goffart <ogoffart @ kde.org>
|
|
|
|
*/
|
|
class KOPETE_EXPORT Away : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
friend class ::KopeteAwayDialog;
|
|
|
|
public:
|
|
|
|
/**
|
|
* @brief Method to get the single instance of Kopete::Away
|
|
* @return Kopete::Away instance pointer
|
|
*/
|
|
static Away *getInstance();
|
|
|
|
/**
|
|
* @brief Gets the current global away message
|
|
* @return The global away message
|
|
*/
|
|
static QString message();
|
|
|
|
/**
|
|
* @brief Gets the current global auto away message
|
|
* @return The global auto away message
|
|
*/
|
|
static QString autoAwayMessage();
|
|
|
|
/**
|
|
* This method sets the global away message,
|
|
* it does not set you away, just sets the message.
|
|
* @brief Sets the global away message
|
|
* @param message The message you want to set
|
|
*/
|
|
void setGlobalAwayMessage(const QString &message);
|
|
|
|
/**
|
|
* This method sets the global auto away message,
|
|
* it does not set you away, just sets the message.
|
|
* @brief Sets the global auto away message
|
|
* @param message The message you want to set
|
|
*/
|
|
void setAutoAwayMessage(const QString &message);
|
|
|
|
/**
|
|
* @brief Sets global away for all protocols
|
|
*/
|
|
static void setGlobalAway(bool status);
|
|
|
|
/**
|
|
* @brief Indicates global away status
|
|
* @return Bool indicating global away status
|
|
*/
|
|
static bool globalAway();
|
|
|
|
/**
|
|
* @brief Function to get the titles of user defined away messages
|
|
* @return List of away message titles
|
|
*
|
|
* This function can be used to retrieve a QStringList of the away message titles,
|
|
* these titles can be passed to getMessage(QString title) to retrieve the
|
|
* corresponding message.
|
|
*/
|
|
QStringList getMessages();
|
|
|
|
/**
|
|
* @brief Function to get an away message
|
|
* @return The away message corresponding to the title
|
|
* @param messageNumber Number of the away message to retrieve
|
|
*
|
|
* This function retrieves the away message that corresponds to the ringbuffer index
|
|
* passed in.
|
|
*/
|
|
QString getMessage( uint messageNumber );
|
|
|
|
/**
|
|
* @brief Adds an away message to the ringbuffer
|
|
* @param message The away message
|
|
*
|
|
* This function will add an away message to the ringbuffer of user defined
|
|
* away messages.
|
|
*/
|
|
void addMessage(const QString &message);
|
|
|
|
/**
|
|
* time in seconds the user has been idle
|
|
*/
|
|
long int idleTime();
|
|
|
|
private:
|
|
Away();
|
|
~Away();
|
|
|
|
/**
|
|
* @brief Saves the away messages to disk
|
|
*
|
|
* This function will save the current list of away messages to the disk
|
|
* using KConfig. It is called automatically.
|
|
*/
|
|
void save();
|
|
|
|
/**
|
|
* @brief Check for activity using X11 methods
|
|
* @return true if activity was detected, otherwise false
|
|
*
|
|
* Attempt to detect activity using a variety of X11 methods.
|
|
*/
|
|
bool isActivity();
|
|
|
|
//Away( const Away &rhs );
|
|
//Away &operator=( const Away &rhs );
|
|
static Away *instance;
|
|
KopeteAwayPrivate *d;
|
|
|
|
private slots:
|
|
void slotTimerTimeout();
|
|
void load();
|
|
|
|
public slots:
|
|
/**
|
|
* @brief Mark the user active
|
|
*
|
|
* Plugins can mark the user active if they discover activity by another way than the mouse or the keyboard
|
|
* (example, the motion auto away plugin)
|
|
* this will reset the @ref idleTime to 0, and set all protocols to available (online) if the state was
|
|
* set automatically to away because of idleness, and if they was previously online
|
|
*/
|
|
void setActive();
|
|
|
|
/**
|
|
* Use this method if you want to go in the autoaway mode.
|
|
* This will go autoaway even if the idle time is not yet reached. (and even if the user
|
|
* did not selected to go autoaway automaticaly)
|
|
* But that will go unaway again when activity will be detected
|
|
*/
|
|
void setAutoAway();
|
|
|
|
signals:
|
|
/**
|
|
* @brief Activity was detected
|
|
*
|
|
* this signal is emit when activity has been discover after being autoAway.
|
|
*/
|
|
void activity();
|
|
|
|
/**
|
|
* @brief Default messages were changed
|
|
*/
|
|
void messagesChanged();
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|
|
/*
|
|
* Local variables:
|
|
* c-indentation-style: k&r
|
|
* c-basic-offset: 8
|
|
* indent-tabs-mode: t
|
|
* End:
|
|
*/
|
|
// vim: set noet ts=4 sts=4 sw=4:
|
|
|