summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swift/Controllers')
-rw-r--r--Swift/Controllers/ShowProfileController.cpp9
-rw-r--r--Swift/Controllers/Storages/VCardFileStorage.cpp12
-rw-r--r--Swift/Controllers/Storages/VCardFileStorage.h4
3 files changed, 22 insertions, 3 deletions
diff --git a/Swift/Controllers/ShowProfileController.cpp b/Swift/Controllers/ShowProfileController.cpp
index 15b7b26..d13e5a1 100644
--- a/Swift/Controllers/ShowProfileController.cpp
+++ b/Swift/Controllers/ShowProfileController.cpp
@@ -4,9 +4,16 @@
* See Documentation/Licenses/BSD-simplified.txt for more information.
*/
+/*
+ * Copyright (c) 2014 Kevin Smith and Remko Tronçon
+ * Licensed under the GNU General Public License v3.
+ * See Documentation/Licenses/GPLv3.txt for more information.
+ */
+
#include "ShowProfileController.h"
#include <boost/bind.hpp>
+#include <boost/date_time/posix_time/posix_time.hpp>
#include <Swiften/Base/foreach.h>
#include <Swiften/VCards/VCardManager.h>
@@ -44,7 +51,7 @@ void ShowProfileController::handleUIEvent(UIEvent::ref event) {
newProfileWindow->setJID(showProfileEvent->getJID());
newProfileWindow->onWindowAboutToBeClosed.connect(boost::bind(&ShowProfileController::handleProfileWindowAboutToBeClosed, this, _1));
openedProfileWindows[showProfileEvent->getJID()] = newProfileWindow;
- VCard::ref vcard = vcardManager->getVCardAndRequestWhenNeeded(showProfileEvent->getJID());
+ VCard::ref vcard = vcardManager->getVCardAndRequestWhenNeeded(showProfileEvent->getJID(), boost::posix_time::minutes(5));
if (vcard) {
newProfileWindow->setVCard(vcard);
} else {
diff --git a/Swift/Controllers/Storages/VCardFileStorage.cpp b/Swift/Controllers/Storages/VCardFileStorage.cpp
index b22e235..876d642 100644
--- a/Swift/Controllers/Storages/VCardFileStorage.cpp
+++ b/Swift/Controllers/Storages/VCardFileStorage.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010 Remko Tronçon
+ * Copyright (c) 2010-2014 Remko Tronçon
* Licensed under the GNU General Public License v3.
* See Documentation/Licenses/GPLv3.txt for more information.
*/
@@ -58,7 +58,17 @@ boost::shared_ptr<VCard> VCardFileStorage::getVCard(const JID& jid) const {
return result;
}
+boost::posix_time::ptime VCardFileStorage::getVCardWriteTime(const JID& jid) const {
+ if (vcardWriteTimes.find(jid) == vcardWriteTimes.end()) {
+ return boost::posix_time::ptime();
+ }
+ else {
+ return vcardWriteTimes.at(jid);
+ }
+}
+
void VCardFileStorage::setVCard(const JID& jid, VCard::ref v) {
+ vcardWriteTimes[jid] = boost::posix_time::second_clock::universal_time();
VCardPersister().savePayload(v, getVCardPath(jid));
getAndUpdatePhotoHash(jid, v);
}
diff --git a/Swift/Controllers/Storages/VCardFileStorage.h b/Swift/Controllers/Storages/VCardFileStorage.h
index 2c3af3d..8ba001e 100644
--- a/Swift/Controllers/Storages/VCardFileStorage.h
+++ b/Swift/Controllers/Storages/VCardFileStorage.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010-2013 Remko Tronçon
+ * Copyright (c) 2010-2014 Remko Tronçon
* Licensed under the GNU General Public License v3.
* See Documentation/Licenses/GPLv3.txt for more information.
*/
@@ -21,6 +21,7 @@ namespace Swift {
VCardFileStorage(boost::filesystem::path dir, CryptoProvider* crypto);
virtual VCard::ref getVCard(const JID& jid) const;
+ virtual boost::posix_time::ptime getVCardWriteTime(const JID& jid) const;
virtual void setVCard(const JID& jid, VCard::ref v);
virtual std::string getPhotoHash(const JID&) const;
@@ -37,5 +38,6 @@ namespace Swift {
boost::filesystem::path cacheFile;
typedef std::map<JID, std::string> PhotoHashMap;
mutable PhotoHashMap photoHashes;
+ std::map<JID, boost::posix_time::ptime> vcardWriteTimes;
};
}