Don't keep compiling/run if something failed.
[kdevelopdvcssupport.git] / plugins / teamwork / kdevteamwork_messages.h
blobbc805a8359be478685254ebb58a6cabde2679592
1 /***************************************************************************
2 Copyright 2006 David Nolden <david.nolden.kdevelop@art-master.de>
3 ***************************************************************************/
5 /***************************************************************************
6 * *
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. *
11 * *
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"
25 #include <QString>
26 #include <QDateTime>
27 #include "utils.h"
28 #include <QIcon>
29 #include <QVariant>
30 #include "lib/network/easymessage.h"
31 #include <string>
32 #include <boost/serialization/level.hpp>
33 #include "loglevel.h"
35 /*#define BOOST_SERIALIZATION_DEFAULT_TYPE_INFO(T) \
36 extended_type_info_typeid<const T>*/
37 /**/
39 using namespace Teamwork;
41 class KDevTeamwork;
42 class QMenu;
43 class QModelIndex;
44 class QWidget;
46 class SafeTeamworkEmitter;
47 typedef SharedPtr<SafeTeamworkEmitter> SafeTeamworkEmitterPointer;
49 class IconCache;
51 class KDevSystemMessage : public SystemMessage {
52 DECLARE_MESSAGE( KDevSystemMessage, SystemMessage, 5 );
53 public:
54 enum Message {
55 CollaborationAccepted,
56 CollaborationRefused,
57 CollaborationClosed,
58 ActionFailed, ///An Action failed
59 ActionSuccessful,
60 ActionDenied
62 KDevSystemMessage( InArchive& arch, const Teamwork::MessageInfo& info );
64 KDevSystemMessage( const Teamwork::MessageConstructionInfo& info, Message msg , const string& str = "" );
66 Message message();
68 QString messageAsString();
70 QString text();
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() {}
83 virtual bool show() {
84 return true;
86 virtual QString shortName() const {
87 return "Message";
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() {
93 return false;
96 virtual void showInWidget( QWidget* /*widget*/, KDevTeamwork* /*tw*/ ) {}
99 class KDevTeamworkTextMessage : public TextMessage, public AbstractGUIMessage {
100 DECLARE_MESSAGE( KDevTeamworkTextMessage, TextMessage, 6 );
101 public:
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 );
126 private:
127 QDateTime creationTime_;
128 bool m_answered;
131 ///Just a dummy for compatible insertion of error-messages to the message-list
132 class FailureMessage : public KDevTeamworkTextMessage {
133 public:
134 FailureMessage( const QString& text, const MessagePointer& msg );
136 virtual QIcon messageIcon() const;
139 class ConnectionRequest : public KDevTeamworkTextMessage {
140 public:
141 enum State {
142 Waiting,
143 Denied,
144 Accepted,
145 Unknown
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 );
164 State state();
166 virtual void fillContextMenu( QMenu* menu, KDevTeamwork* teamwork );
167 private:
168 DECLARE_MESSAGE( ConnectionRequest, KDevTeamworkTextMessage, 1 );
169 Teamwork::User user_;
170 State m_state;
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;
186 #endif
188 // kate: space-indent on; indent-width 2; tab-width 2; replace-tabs on