summaryrefslogtreecommitdiff
path: root/indra/newview/llconversationlog.h
diff options
context:
space:
mode:
authorAndrey Lihatskiy <alihatskiy@productengine.com>2024-05-22 20:51:58 +0300
committerGitHub <noreply@github.com>2024-05-22 20:51:58 +0300
commit6cc7dd09d5e69cf57e6de7fb568a0ad2693f9c9a (patch)
treefab23811a5cedc1ebf01479c852ee92ff62b636c /indra/newview/llconversationlog.h
parentef8f4819822288e044ea719feb6af7a1f4df4c4e (diff)
parent7bb5afc11ee5a6af78302a8d76a9a619e2baaab2 (diff)
Merge pull request #1545 from Ansariel/DRTVWR-600-maint-A
Merge main into DRTVWR-600-maint-a
Diffstat (limited to 'indra/newview/llconversationlog.h')
-rw-r--r--indra/newview/llconversationlog.h452
1 files changed, 226 insertions, 226 deletions
diff --git a/indra/newview/llconversationlog.h b/indra/newview/llconversationlog.h
index 033ad2b6e9..ec1f72ffcd 100644
--- a/indra/newview/llconversationlog.h
+++ b/indra/newview/llconversationlog.h
@@ -1,226 +1,226 @@
-/**
- * @file llconversationlog.h
- *
- * $LicenseInfo:firstyear=2002&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2012, Linden Research, Inc.
- *
- * 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;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#ifndef LLCONVERSATIONLOG_H_
-#define LLCONVERSATIONLOG_H_
-
-#include "llcallingcard.h"
-#include "llfloaterimsession.h"
-#include "llimview.h"
-
-class LLConversationLogObserver;
-struct ConversationParams;
-
-typedef LLIMModel::LLIMSession::SType SessionType;
-
-/*
- * This class represents a particular session(conversation) of any type(im/voice/p2p/group/...) by storing some of session's data.
- * Each LLConversation object has a corresponding visual representation in a form of LLConversationLogListItem.
- */
-class LLConversation
-{
-public:
-
- LLConversation(const ConversationParams& params);
- LLConversation(const LLIMModel::LLIMSession& session);
- LLConversation(const LLConversation& conversation);
-
- ~LLConversation();
-
- const SessionType& getConversationType() const { return mConversationType; }
- const std::string& getConversationName() const { return mConversationName; }
- const std::string& getHistoryFileName() const { return mHistoryFileName; }
- const LLUUID& getSessionID() const { return mSessionID; }
- const LLUUID& getParticipantID() const { return mParticipantID; }
- const std::string& getTimestamp() const { return mTimestamp; }
- const U64Seconds&
- getTime() const { return mTime; }
- bool hasOfflineMessages() const { return mHasOfflineIMs; }
-
- void setConversationName(const std::string &conv_name) { mConversationName = conv_name; }
- void setOfflineMessages(bool new_messages) { mHasOfflineIMs = new_messages; }
- bool isOlderThan(U32Days days) const;
-
- /*
- * updates last interaction time
- */
- void updateTimestamp();
-
- void updateHistoryFileName(const std::string &new_name) { mHistoryFileName = new_name; }
-
- /*
- * Resets flag of unread offline message to false when im floater with this conversation is opened.
- */
- void onIMFloaterShown(const LLUUID& session_id);
-
- /*
- * returns string representation(in form of: mm/dd/yyyy hh:mm) of time when conversation was started
- */
- static const std::string createTimestamp(const U64Seconds& utc_time);
-
-private:
-
- /*
- * If conversation has unread offline messages sets callback for opening LLFloaterIMSession
- * with this conversation.
- */
- void setListenIMFloaterOpened();
-
- boost::signals2::connection mIMFloaterShowedConnection;
-
- U64Seconds mTime; // last interaction time
- SessionType mConversationType;
- std::string mConversationName;
- std::string mHistoryFileName;
- LLUUID mSessionID;
- LLUUID mParticipantID;
- bool mHasOfflineIMs;
- std::string mTimestamp; // last interaction time in form of: mm/dd/yyyy hh:mm
-};
-
-/**
- * LLConversationLog stores all agent's conversations.
- * This class is responsible for creating and storing LLConversation objects when im or voice session starts.
- * Also this class saves/retrieves conversations to/from file.
- *
- * Also please note that it may be several conversations with the same sessionID stored in the conversation log.
- * To distinguish two conversations with the same sessionID it's also needed to compare their creation date.
- */
-
-class LLConversationLog : public LLSingleton<LLConversationLog>, LLIMSessionObserver
-{
- LLSINGLETON(LLConversationLog);
-public:
- void removeConversation(const LLConversation& conversation);
-
- /**
- * Returns first conversation with matched session_id
- */
- const LLConversation* getConversation(const LLUUID& session_id);
- const std::vector<LLConversation>& getConversations() { return mConversations; }
-
- void addObserver(LLConversationLogObserver* observer);
- void removeObserver(LLConversationLogObserver* observer);
-
- // LLIMSessionObserver triggers
- virtual void sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id, bool has_offline_msg) override;
- virtual void sessionActivated(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id) override {}; // Stub
- virtual void sessionRemoved(const LLUUID& session_id) override{} // Stub
- virtual void sessionVoiceOrIMStarted(const LLUUID& session_id) override{}; // Stub
- virtual void sessionIDUpdated(const LLUUID& old_session_id, const LLUUID& new_session_id) override{}; // Stub
-
- void notifyObservers();
-
- void onNewMessageReceived(const LLSD& data);
-
- /**
- * public method which is called on viewer exit to save conversation log
- */
- void cache();
- // will check if current name is edentical with the one on disk and will rename the one on disk if it isn't
- void verifyFilename(const LLUUID& session_id, const std::string &expected_filename, const std::string &new_session_name);
- bool moveLog(const std::string &originDirectory, const std::string &targetDirectory);
- void getListOfBackupLogs(std::vector<std::string>& list_of_backup_logs);
- void deleteBackupLogs();
-
- void onClearLog();
- void onClearLogResponse(const LLSD& notification, const LLSD& response);
-
- bool getIsLoggingEnabled() { return mLoggingEnabled; }
- bool isLogEmpty() { return mConversations.empty(); }
-
- /**
- * inits connection to per account settings,
- * loads saved file and inits enabled state
- */
- void initLoggingState();
-
- /**
- * constructs file name in which conversations log will be saved
- * file name is conversation.log
- */
- std::string getFileName();
- LLConversation* findConversation(const LLIMModel::LLIMSession* session);
-
-private:
-
- virtual ~LLConversationLog()
- {
- if (mAvatarNameCacheConnection.connected())
- {
- mAvatarNameCacheConnection.disconnect();
- }
- }
-
- void enableLogging(S32 log_mode);
-
- /**
- * adds conversation to the conversation list and notifies observers
- */
- void logConversation(const LLUUID& session_id, bool has_offline_msg);
-
- void notifyParticularConversationObservers(const LLUUID& session_id, U32 mask);
-
- bool saveToFile(const std::string& filename);
- bool loadFromFile(const std::string& filename);
-
- void onAvatarNameCache(const LLUUID& participant_id, const LLAvatarName& av_name, const LLIMModel::LLIMSession* session);
-
- void createConversation(const LLIMModel::LLIMSession* session);
- void updateConversationTimestamp(LLConversation* conversation);
- void updateConversationName(const LLIMModel::LLIMSession* session, const std::string& name);
- void updateOfflineIMs(const LLIMModel::LLIMSession* session, bool new_messages);
-
-
-
- typedef std::vector<LLConversation> conversations_vec_t;
- std::vector<LLConversation> mConversations;
- std::set<LLConversationLogObserver*> mObservers;
-
- LLFriendObserver* mFriendObserver; // Observer of the LLAvatarTracker instance
-
- boost::signals2::connection mNewMessageSignalConnection;
- boost::signals2::connection mAvatarNameCacheConnection;
-
- bool mLoggingEnabled;
-};
-
-class LLConversationLogObserver
-{
-public:
-
- enum EConversationChange
- {
- CHANGED_TIME = 1, // last interaction time changed
- CHANGED_NAME = 2, // conversation name changed
- CHANGED_OfflineIMs = 3
- };
-
- virtual ~LLConversationLogObserver(){}
- virtual void changed() = 0;
- virtual void changed(const LLUUID& session_id, U32 mask){};
-};
-
-#endif /* LLCONVERSATIONLOG_H_ */
+/**
+ * @file llconversationlog.h
+ *
+ * $LicenseInfo:firstyear=2002&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2012, Linden Research, Inc.
+ *
+ * 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;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LLCONVERSATIONLOG_H_
+#define LLCONVERSATIONLOG_H_
+
+#include "llcallingcard.h"
+#include "llfloaterimsession.h"
+#include "llimview.h"
+
+class LLConversationLogObserver;
+struct ConversationParams;
+
+typedef LLIMModel::LLIMSession::SType SessionType;
+
+/*
+ * This class represents a particular session(conversation) of any type(im/voice/p2p/group/...) by storing some of session's data.
+ * Each LLConversation object has a corresponding visual representation in a form of LLConversationLogListItem.
+ */
+class LLConversation
+{
+public:
+
+ LLConversation(const ConversationParams& params);
+ LLConversation(const LLIMModel::LLIMSession& session);
+ LLConversation(const LLConversation& conversation);
+
+ ~LLConversation();
+
+ const SessionType& getConversationType() const { return mConversationType; }
+ const std::string& getConversationName() const { return mConversationName; }
+ const std::string& getHistoryFileName() const { return mHistoryFileName; }
+ const LLUUID& getSessionID() const { return mSessionID; }
+ const LLUUID& getParticipantID() const { return mParticipantID; }
+ const std::string& getTimestamp() const { return mTimestamp; }
+ const U64Seconds&
+ getTime() const { return mTime; }
+ bool hasOfflineMessages() const { return mHasOfflineIMs; }
+
+ void setConversationName(const std::string &conv_name) { mConversationName = conv_name; }
+ void setOfflineMessages(bool new_messages) { mHasOfflineIMs = new_messages; }
+ bool isOlderThan(U32Days days) const;
+
+ /*
+ * updates last interaction time
+ */
+ void updateTimestamp();
+
+ void updateHistoryFileName(const std::string &new_name) { mHistoryFileName = new_name; }
+
+ /*
+ * Resets flag of unread offline message to false when im floater with this conversation is opened.
+ */
+ void onIMFloaterShown(const LLUUID& session_id);
+
+ /*
+ * returns string representation(in form of: mm/dd/yyyy hh:mm) of time when conversation was started
+ */
+ static const std::string createTimestamp(const U64Seconds& utc_time);
+
+private:
+
+ /*
+ * If conversation has unread offline messages sets callback for opening LLFloaterIMSession
+ * with this conversation.
+ */
+ void setListenIMFloaterOpened();
+
+ boost::signals2::connection mIMFloaterShowedConnection;
+
+ U64Seconds mTime; // last interaction time
+ SessionType mConversationType;
+ std::string mConversationName;
+ std::string mHistoryFileName;
+ LLUUID mSessionID;
+ LLUUID mParticipantID;
+ bool mHasOfflineIMs;
+ std::string mTimestamp; // last interaction time in form of: mm/dd/yyyy hh:mm
+};
+
+/**
+ * LLConversationLog stores all agent's conversations.
+ * This class is responsible for creating and storing LLConversation objects when im or voice session starts.
+ * Also this class saves/retrieves conversations to/from file.
+ *
+ * Also please note that it may be several conversations with the same sessionID stored in the conversation log.
+ * To distinguish two conversations with the same sessionID it's also needed to compare their creation date.
+ */
+
+class LLConversationLog : public LLSingleton<LLConversationLog>, LLIMSessionObserver
+{
+ LLSINGLETON(LLConversationLog);
+public:
+ void removeConversation(const LLConversation& conversation);
+
+ /**
+ * Returns first conversation with matched session_id
+ */
+ const LLConversation* getConversation(const LLUUID& session_id);
+ const std::vector<LLConversation>& getConversations() { return mConversations; }
+
+ void addObserver(LLConversationLogObserver* observer);
+ void removeObserver(LLConversationLogObserver* observer);
+
+ // LLIMSessionObserver triggers
+ virtual void sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id, bool has_offline_msg) override;
+ virtual void sessionActivated(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id) override {}; // Stub
+ virtual void sessionRemoved(const LLUUID& session_id) override{} // Stub
+ virtual void sessionVoiceOrIMStarted(const LLUUID& session_id) override{}; // Stub
+ virtual void sessionIDUpdated(const LLUUID& old_session_id, const LLUUID& new_session_id) override{}; // Stub
+
+ void notifyObservers();
+
+ void onNewMessageReceived(const LLSD& data);
+
+ /**
+ * public method which is called on viewer exit to save conversation log
+ */
+ void cache();
+ // will check if current name is edentical with the one on disk and will rename the one on disk if it isn't
+ void verifyFilename(const LLUUID& session_id, const std::string &expected_filename, const std::string &new_session_name);
+ bool moveLog(const std::string &originDirectory, const std::string &targetDirectory);
+ void getListOfBackupLogs(std::vector<std::string>& list_of_backup_logs);
+ void deleteBackupLogs();
+
+ void onClearLog();
+ void onClearLogResponse(const LLSD& notification, const LLSD& response);
+
+ bool getIsLoggingEnabled() { return mLoggingEnabled; }
+ bool isLogEmpty() { return mConversations.empty(); }
+
+ /**
+ * inits connection to per account settings,
+ * loads saved file and inits enabled state
+ */
+ void initLoggingState();
+
+ /**
+ * constructs file name in which conversations log will be saved
+ * file name is conversation.log
+ */
+ std::string getFileName();
+ LLConversation* findConversation(const LLIMModel::LLIMSession* session);
+
+private:
+
+ virtual ~LLConversationLog()
+ {
+ if (mAvatarNameCacheConnection.connected())
+ {
+ mAvatarNameCacheConnection.disconnect();
+ }
+ }
+
+ void enableLogging(S32 log_mode);
+
+ /**
+ * adds conversation to the conversation list and notifies observers
+ */
+ void logConversation(const LLUUID& session_id, bool has_offline_msg);
+
+ void notifyParticularConversationObservers(const LLUUID& session_id, U32 mask);
+
+ bool saveToFile(const std::string& filename);
+ bool loadFromFile(const std::string& filename);
+
+ void onAvatarNameCache(const LLUUID& participant_id, const LLAvatarName& av_name, const LLIMModel::LLIMSession* session);
+
+ void createConversation(const LLIMModel::LLIMSession* session);
+ void updateConversationTimestamp(LLConversation* conversation);
+ void updateConversationName(const LLIMModel::LLIMSession* session, const std::string& name);
+ void updateOfflineIMs(const LLIMModel::LLIMSession* session, bool new_messages);
+
+
+
+ typedef std::vector<LLConversation> conversations_vec_t;
+ std::vector<LLConversation> mConversations;
+ std::set<LLConversationLogObserver*> mObservers;
+
+ LLFriendObserver* mFriendObserver; // Observer of the LLAvatarTracker instance
+
+ boost::signals2::connection mNewMessageSignalConnection;
+ boost::signals2::connection mAvatarNameCacheConnection;
+
+ bool mLoggingEnabled;
+};
+
+class LLConversationLogObserver
+{
+public:
+
+ enum EConversationChange
+ {
+ CHANGED_TIME = 1, // last interaction time changed
+ CHANGED_NAME = 2, // conversation name changed
+ CHANGED_OfflineIMs = 3
+ };
+
+ virtual ~LLConversationLogObserver(){}
+ virtual void changed() = 0;
+ virtual void changed(const LLUUID& session_id, U32 mask){};
+};
+
+#endif /* LLCONVERSATIONLOG_H_ */