summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2015-04-06 20:28:53 +0000
committerGeorge Hazan <george.hazan@gmail.com>2015-04-06 20:28:53 +0000
commit6e5224b87eb2ce2a95da956611e89826f01078bd (patch)
tree98b2e0b41c0f9924439d96a9ff79543f5b9b5c49 /plugins
parent4560967c575a88dfc7574f3f60bf890e71a7dc1c (diff)
nasty crutch for the stupid dbx_mmap
git-svn-id: http://svn.miranda-ng.org/main/trunk@12642 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins')
-rw-r--r--plugins/Db3x_mmap/src/dbintf.h3
-rw-r--r--plugins/Dbx_kv/src/dbintf.h1
-rw-r--r--plugins/Dbx_kyoto/src/dbintf.h1
-rw-r--r--plugins/Dbx_mdb/src/dbintf.h1
-rw-r--r--plugins/Import/src/import.cpp29
5 files changed, 29 insertions, 6 deletions
diff --git a/plugins/Db3x_mmap/src/dbintf.h b/plugins/Db3x_mmap/src/dbintf.h
index 761c28ede9..509f8209e4 100644
--- a/plugins/Db3x_mmap/src/dbintf.h
+++ b/plugins/Db3x_mmap/src/dbintf.h
@@ -208,7 +208,8 @@ struct CDb3Mmap : public MIDatabase, public MIDatabaseChecker, public MZeroedObj
__forceinline bool usesPassword() const { return m_bUsesPassword; }
public:
- STDMETHODIMP_(void) SetCacheSafetyMode(BOOL);
+ STDMETHODIMP_(BOOL) IsRelational(void) { return FALSE; }
+ STDMETHODIMP_(void) SetCacheSafetyMode(BOOL);
STDMETHODIMP_(LONG) GetContactCount(void);
STDMETHODIMP_(MCONTACT) FindFirstContact(const char *szProto = NULL);
diff --git a/plugins/Dbx_kv/src/dbintf.h b/plugins/Dbx_kv/src/dbintf.h
index b9decbc0c3..97c8c507d9 100644
--- a/plugins/Dbx_kv/src/dbintf.h
+++ b/plugins/Dbx_kv/src/dbintf.h
@@ -148,6 +148,7 @@ struct CDbxKV : public MIDatabase, public MIDatabaseChecker, public MZeroedObjec
__forceinline bool usesPassword() const { return m_bUsesPassword; }
public:
+ STDMETHODIMP_(BOOL) IsRelational(void) { return TRUE; }
STDMETHODIMP_(void) SetCacheSafetyMode(BOOL);
STDMETHODIMP_(LONG) GetContactCount(void);
diff --git a/plugins/Dbx_kyoto/src/dbintf.h b/plugins/Dbx_kyoto/src/dbintf.h
index e78aaff6cb..8e8dd0f7c6 100644
--- a/plugins/Dbx_kyoto/src/dbintf.h
+++ b/plugins/Dbx_kyoto/src/dbintf.h
@@ -149,6 +149,7 @@ struct CDbxKyoto : public MIDatabase, public MIDatabaseChecker, public MZeroedOb
__forceinline bool usesPassword() const { return m_bUsesPassword; }
public:
+ STDMETHODIMP_(BOOL) IsRelational(void) { return TRUE; }
STDMETHODIMP_(void) SetCacheSafetyMode(BOOL);
STDMETHODIMP_(LONG) GetContactCount(void);
diff --git a/plugins/Dbx_mdb/src/dbintf.h b/plugins/Dbx_mdb/src/dbintf.h
index 4183e6cd18..c3736f6bda 100644
--- a/plugins/Dbx_mdb/src/dbintf.h
+++ b/plugins/Dbx_mdb/src/dbintf.h
@@ -151,6 +151,7 @@ struct CDbxMdb : public MIDatabase, public MIDatabaseChecker, public MZeroedObje
__forceinline bool usesPassword() const { return m_bUsesPassword; }
public:
+ STDMETHODIMP_(BOOL) IsRelational(void) { return TRUE; }
STDMETHODIMP_(void) SetCacheSafetyMode(BOOL);
STDMETHODIMP_(LONG) GetContactCount(void);
diff --git a/plugins/Import/src/import.cpp b/plugins/Import/src/import.cpp
index d3b70833e7..c9ca158b54 100644
--- a/plugins/Import/src/import.cpp
+++ b/plugins/Import/src/import.cpp
@@ -876,15 +876,30 @@ static int CopySystemSettings(const char *szModuleName, DWORD, LPARAM param)
static void ImportHistory(MCONTACT hContact, PROTOACCOUNT **protocol, int protoCount)
{
MCONTACT hDst;
+ bool bIsMeta = false;
+ bool bIsRelational = srcDb->IsRelational() != 0;
// Is it contact's history import?
if (hContact) {
// we ignore history import for metacontacts
// the metahistory will be generated automatically by gathering subs' histories
DBCachedContact *cc = srcDb->m_cache->GetCachedContact(hContact);
- if (cc == NULL || cc->IsMeta())
+ if (cc == NULL)
return;
+ // for k/v databases we read history for subs only
+ if (bIsRelational) {
+ if (cc->IsMeta())
+ return;
+ }
+ // for mmap we read history for metas only
+ else {
+ if (cc->IsSub())
+ return;
+
+ bIsMeta = cc->IsMeta();
+ }
+
if ((hDst = MapContact(hContact)) == INVALID_CONTACT_ID) {
nSkippedContacts++;
return;
@@ -967,10 +982,14 @@ static void ImportHistory(MCONTACT hContact, PROTOACCOUNT **protocol, int protoC
dbei.flags |= DBEF_READ;
// add dbevent
- if (dstDb->AddEvent(hDst, &dbei) != NULL)
- nMessagesCount++;
- else
- AddMessage(LPGENT("Failed to add message"));
+ MCONTACT hOwner = (bIsMeta) ? MapContact(srcDb->GetEventContact(hEvent)) : hDst;
+ if (hOwner != INVALID_CONTACT_ID) {
+ // add dbevent
+ if (dstDb->AddEvent(hOwner, &dbei) != NULL)
+ nMessagesCount++;
+ else
+ AddMessage(LPGENT("Failed to add message"));
+ }
}
else nDupes++;
}