1 /***************************************************************************
2 Copyright 2006 David Nolden <david.nolden.kdevelop@art-master.de>
3 ***************************************************************************/
5 /***************************************************************************
7 * This program is free software; you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation; either version 2 of the License, or *
10 * (at your option) any later version. *
12 ***************************************************************************/
15 #ifndef KDEVTEAMWORK_MESSAGES_H
16 #define KDEVTEAMWORK_MESSAGES_H
18 //#include <boost/serialization/extended_type_info_typeid.hpp>
20 #include "lib/network/serialization.h"
21 #include "lib/network/messagetypeset.h"
22 #include "lib/network/teamworkmessages.h"
23 #include "lib/network/forwardsession.h"
30 #include "lib/network/easymessage.h"
32 #include <boost/serialization/level.hpp>
35 /*#define BOOST_SERIALIZATION_DEFAULT_TYPE_INFO(T) \
36 extended_type_info_typeid<const T>*/
39 using namespace Teamwork
;
46 class SafeTeamworkEmitter
;
47 typedef SharedPtr
<SafeTeamworkEmitter
> SafeTeamworkEmitterPointer
;
51 class KDevSystemMessage
: public SystemMessage
{
52 DECLARE_MESSAGE( KDevSystemMessage
, SystemMessage
, 5 );
55 CollaborationAccepted
,
58 ActionFailed
, ///An Action failed
62 KDevSystemMessage( InArchive
& arch
, const Teamwork::MessageInfo
& info
);
64 KDevSystemMessage( const Teamwork::MessageConstructionInfo
& info
, Message msg
, const string
& str
= "" );
68 QString
messageAsString();
73 typedef SafeSharedPtr
<KDevSystemMessage
> KDevSystemMessagePointer
;
75 struct AbstractGUIMessage
{
76 QVariant data
; ///@todo remove
77 virtual QString
messageText() const = 0;
78 virtual QIcon
messageIcon() const;
79 virtual void fillContextMenu( QMenu
* /*menu*/, KDevTeamwork
* /*teamwork*/ ) {}
81 virtual ~AbstractGUIMessage() {}
86 virtual QString
shortName() const {
89 ///This should return an icon that represents the message-type and has nothing to do with the message-instance
90 virtual QIcon
messageTypeIcon() const;
92 virtual bool canShowInWidget() {
96 virtual void showInWidget( QWidget
* /*widget*/, KDevTeamwork
* /*tw*/ ) {}
99 class KDevTeamworkTextMessage
: public TextMessage
, public AbstractGUIMessage
{
100 DECLARE_MESSAGE( KDevTeamworkTextMessage
, TextMessage
, 6 );
103 KDevTeamworkTextMessage( const Teamwork::MessageConstructionInfo
& info
, const QString
& text
);
105 KDevTeamworkTextMessage( InArchive
& from
, const Teamwork::MessageInfo
& info
);
107 virtual QString
messageText() const;
109 virtual QIcon
messageIcon() const;
111 void setAnswered( bool );
113 bool answered() const;
115 virtual void serialize( OutArchive
& arch
);
117 virtual bool needReply() const;
119 QDateTime
creationTime();
121 virtual bool canShowInWidget();
123 ///If this returns false, the widget is not shown.
124 virtual void showInWidget( QWidget
* widget
, KDevTeamwork
* tw
);
127 QDateTime creationTime_
;
131 ///Just a dummy for compatible insertion of error-messages to the message-list
132 class FailureMessage
: public KDevTeamworkTextMessage
{
134 FailureMessage( const QString
& text
, const MessagePointer
& msg
);
136 virtual QIcon
messageIcon() const;
139 class ConnectionRequest
: public KDevTeamworkTextMessage
{
148 ConnectionRequest( const Teamwork::MessageConstructionInfo
& info
, const Teamwork::UserPointer
& self
, const Teamwork::UserPointer
& target
, const QString
& text
, KDevTeamwork
* teamwork
);
150 ConnectionRequest( InArchive
& arch
, const Teamwork::MessageInfo
& info
);
152 virtual void serialize( OutArchive
& arch
);
154 const Teamwork::User
& user();
156 virtual bool needReply() const;
158 virtual QIcon
messageIcon() const;
160 virtual ReplyResult
gotReply( const MessagePointer
& /*p*/ );
162 void setState( State s
);
166 virtual void fillContextMenu( QMenu
* menu
, KDevTeamwork
* teamwork
);
168 DECLARE_MESSAGE( ConnectionRequest
, KDevTeamworkTextMessage
, 1 );
169 Teamwork::User user_
;
171 SafeTeamworkEmitterPointer m_emitter
;
174 BOOST_CLASS_IMPLEMENTATION( NoData
, boost::serialization::object_serializable
)
176 EASY_DECLARE_MESSAGE( CollaborationMessage
, TextMessage
, 9, NoData
, 0 );
178 typedef SafeSharedPtr
<CollaborationMessage
> CollaborationMessagePointer
;
180 UserPointer
userFromSession( const SessionPointer
& session
);
182 typedef KDevTeamworkTextMessage KDevTeamworkMessages
;
184 //typedef Teamwork::Binder<Teamwork::AllTeamworkClientMessages, KDevTeamworkMessages >::Append<ConnectionRequest>::Result::Append<KDevSystemMessage>::Result::Append<KDevSystemMessage>::Result AllKDevTeamworkMessages;
188 // kate: space-indent on; indent-width 2; tab-width 2; replace-tabs on