summaryrefslogtreecommitdiffstats
path: root/kopete/libkopete/ui/kopeteview.h
diff options
context:
space:
mode:
Diffstat (limited to 'kopete/libkopete/ui/kopeteview.h')
-rw-r--r--kopete/libkopete/ui/kopeteview.h176
1 files changed, 176 insertions, 0 deletions
diff --git a/kopete/libkopete/ui/kopeteview.h b/kopete/libkopete/ui/kopeteview.h
new file mode 100644
index 00000000..47320546
--- /dev/null
+++ b/kopete/libkopete/ui/kopeteview.h
@@ -0,0 +1,176 @@
+/*
+ kopeteview.h - View Manager
+
+ Copyright (c) 2003 by Jason Keirstead <jason@keirstead.org>
+ Copyright (c) 2004 by Matt Rogers <matt.rogers@kdemail.net>
+ 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 KOPETEVIEW_H
+#define KOPETEVIEW_H
+
+#include "kopetemessage.h"
+#include <qvaluelist.h>
+#include "kopete_export.h"
+
+namespace Kopete
+{
+ class ViewPlugin;
+}
+
+/**
+ * @author Jason Keirstead
+ *
+ * Abstract parent class for all types of views used for messaging.These view objects
+ * are provided by a @ref Kopete::ViewPlugin
+ *
+ * @see Kopete::ViewPlugin
+ */
+class KOPETE_EXPORT KopeteView
+{
+ public:
+ /**
+ * constructor
+ */
+ KopeteView( Kopete::ChatSession *manager, Kopete::ViewPlugin *parent );
+ virtual ~KopeteView();
+
+ /**
+ * @brief Returns the message currently in the edit area
+ * @return The Kopete::Message object containing the message
+ */
+ virtual Kopete::Message currentMessage() = 0;
+ /**
+ * Set the message that the view is currently editing.
+ * @param newMessage The Kopete::Message object containing the message to be edited.
+ */
+ virtual void setCurrentMessage( const Kopete::Message &newMessage ) = 0;
+
+ /**
+ * @brief Get the message manager
+ * @return The Kopete::ChatSession that the view is in communication with.
+ */
+ Kopete::ChatSession *msgManager() const;
+
+ /**
+ * @brief add a message to the view
+ *
+ * The message gets added at the end of the view and is automatically
+ * displayed. Classes that inherit from KopeteView should make this a slot.
+ */
+ virtual void appendMessage( Kopete::Message & ) = 0;
+
+ /**
+ * @brief append multiple messages to the view
+ *
+ * This function does the same thing as the above function but
+ * can be reimplemented if it is faster to apend several messages
+ * in the same time.
+ *
+ * The default implementation just call @ref appendMessage() X times
+ */
+ virtual void appendMessages( QValueList<Kopete::Message> );
+
+ /**
+ * @brief Raises the view above other windows
+ * @param activate change the focus to the window
+ */
+ virtual void raise(bool activate = false) = 0;
+
+ /**
+ * @brief Clear the buffer
+ */
+ virtual void clear();
+
+ /**
+ * @brief Make the view visible
+ *
+ * Makes the view visible if it is currently hidden.
+ */
+ virtual void makeVisible() = 0;
+
+ /**
+ * @brief Close this view
+ */
+ virtual bool closeView( bool force = false ) = 0;
+
+ /**
+ * @brief Get the current visibility of the view
+ * @return Whether the view is visible or not.
+ */
+ virtual bool isVisible() = 0;
+
+ /**
+ * @brief Get the view widget
+ *
+ * Can be reimplemented to return this if derived object is a widget
+ */
+ virtual QWidget *mainWidget() = 0;
+
+ /**
+ * @brief Inform the view the message was sent successfully
+ *
+ * This should be reimplemented as a SLOT in any derived objects
+ */
+ virtual void messageSentSuccessfully() = 0;
+
+ /**
+ * @brief Register a handler for the context menu
+ *
+ * Plugins should call this slot at view creation to register
+ * themselves as handlers for the context menu of this view. Plugins
+ * can attach to the viewCreated signal of KopeteMessageManagerFactory
+ * to know when views are created.
+ *
+ * A view does not need to implement this method unless they have context
+ * menus that can be extended
+ *
+ * @param target A target QObject for the contextMenuEvent signal of the view
+ * @param slot A slot that matches the signature ( QString&, KPopupMenu *)
+ */
+ virtual void registerContextMenuHandler( QObject *target, const char*slot ){ Q_UNUSED(target); Q_UNUSED(slot); };
+
+ /**
+ * @brief Register a handler for the tooltip
+ *
+ * Plugins should call this slot at view creation to register
+ * themselves as handlers for the tooltip of this view. Plugins
+ * can attach to the viewCreated signal of KopeteMessageManagerFactory
+ * to know when views are created.
+ *
+ * A view does not need to impliment this method unless it has the ability
+ * to show tooltips
+ *
+ * @param target A target QObject for the contextMenuEvent signal of the view
+ * @param slot A slot that matches the signature ( QString&, KPopupMenu *)
+ */
+ virtual void registerTooltipHandler( QObject *target, const char*slot ){ Q_UNUSED(target); Q_UNUSED(slot); };
+
+ /**
+ * @brief Returns the Kopete::ViewPlugin responsible for this view
+ *
+ * KopeteView objects are created by plugins. This returns a pointer to the plugin
+ * that created this view. You can use this to infer other information on this view
+ * and it's capabilities.
+ */
+ Kopete::ViewPlugin *plugin();
+
+ protected:
+ /**
+ * a pointer to the Kopete::ChatSession given in the constructor
+ */
+ Kopete::ChatSession *m_manager;
+ Kopete::ViewPlugin *m_plugin;
+};
+
+#endif