Skip to content

Commit

Permalink
Merge branch 'master' of github.com:psi-im/psi
Browse files Browse the repository at this point in the history
  • Loading branch information
Ri0n committed May 25, 2017
2 parents b99ba79 + e8d487a commit 8170d22
Show file tree
Hide file tree
Showing 12 changed files with 1,117 additions and 307 deletions.
40 changes: 38 additions & 2 deletions src/edbflatfile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@
#include <QDateTime>

#include "edbflatfile.h"
#include "psicon.h"
#include "psiaccount.h"
#include "psicontactlist.h"
#include "xmpp_jid.h"
#include "jidutil.h"
#include "common.h"
Expand Down Expand Up @@ -70,8 +73,8 @@ class EDBFlatFile::Private
QList<item_file_req*> rlist;
};

EDBFlatFile::EDBFlatFile()
:EDB()
EDBFlatFile::EDBFlatFile(PsiCon *psi)
: EDB(psi)
{
d = new Private;
}
Expand All @@ -85,6 +88,11 @@ EDBFlatFile::~EDBFlatFile()
delete d;
}

int EDBFlatFile::features() const
{
return 0;
}

int EDBFlatFile::getLatest(const Jid &j, int len)
{
item_file_req *r = new item_file_req;
Expand Down Expand Up @@ -188,6 +196,13 @@ int EDBFlatFile::erase(const Jid &j)
return r->id;
}

QList<EDB::ContactItem> EDBFlatFile::contacts(const QString &accId, int type)
{
if (!accId.isEmpty())
return File::contacts(accId, type);
return File::contacts(psi()->contactList()->defaultAccount()->id(), type);
}

EDBFlatFile::File *EDBFlatFile::findFile(const Jid &j) const
{
foreach(File* i, d->flist) {
Expand Down Expand Up @@ -416,6 +431,27 @@ QString EDBFlatFile::File::jidToFileName(const XMPP::Jid &j)
return ApplicationInfo::historyDir() + "/" + JIDUtil::encode(j.bare()).toLower() + ".history";
}

QString EDBFlatFile::File::strToFileName(const QString &s)
{
QFileInfo fi(s);
return fi.fileName() + ".history";
}

QList<EDB::ContactItem> EDBFlatFile::File::contacts(const QString &accId, int type)
{
QList<ContactItem> res;
if (type == EDB::Contact) {
QDir dir(ApplicationInfo::historyDir() + "/");
QFileInfoList flist = dir.entryInfoList(QStringList(strToFileName("*")), QDir::Files);
foreach (const QFileInfo &fi, flist) {
XMPP::Jid jid(JIDUtil::decode(fi.completeBaseName()));
if (jid.isValid())
res.append(ContactItem(accId, jid));
}
}
return res;
}

void EDBFlatFile::File::ensureIndex()
{
if ( valid && !d->indexed ) {
Expand Down
6 changes: 5 additions & 1 deletion src/edbflatfile.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,16 +34,18 @@ class EDBFlatFile : public EDB
{
Q_OBJECT
public:
EDBFlatFile();
EDBFlatFile(PsiCon *psi);
~EDBFlatFile();

int features() const;
int getLatest(const XMPP::Jid &, int len);
int getOldest(const XMPP::Jid &, int len);
int get(const XMPP::Jid &jid, const QString &id, int direction, int len);
int getByDate(const XMPP::Jid &jid, QDateTime first, QDateTime last);
int find(const QString &, const XMPP::Jid &, const QString &id, int direction);
int append(const XMPP::Jid &, const PsiEvent::Ptr&);
int erase(const XMPP::Jid &);
QList<EDB::ContactItem> contacts(const QString &accId, int type);

class File;

Expand Down Expand Up @@ -74,6 +76,8 @@ class EDBFlatFile::File : public QObject
int findNearestDate(const QDateTime &date);

static QString jidToFileName(const XMPP::Jid &);
static QString strToFileName(const QString &s);
static QList<EDB::ContactItem> contacts(const QString &accId, int type);

signals:
void timeout();
Expand Down
9 changes: 8 additions & 1 deletion src/eventdb.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -205,12 +205,14 @@ class EDB::Private

QList<EDBHandle*> list;
int reqid_base;
PsiCon *psi;
};

EDB::EDB()
EDB::EDB(PsiCon *psi)
{
d = new Private;
d->reqid_base = 0;
d->psi = psi;
}

EDB::~EDB()
Expand Down Expand Up @@ -291,3 +293,8 @@ void EDB::writeFinished(int req, bool b)
}
}
}

PsiCon *EDB::psi()
{
return d->psi;
}
15 changes: 14 additions & 1 deletion src/eventdb.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@

#include "xmpp_jid.h"
#include "psievent.h"
#include "psicon.h"

class EDBItem
{
Expand Down Expand Up @@ -90,8 +91,19 @@ class EDB : public QObject
Q_OBJECT
public:
enum { Forward, Backward };
EDB();
enum { Contact = 1, GroupChatContact = 2 };
enum { SeparateAccounts = 1, PrivateContacts = 2, AllContacts = 4, AllAccounts = 8 };
struct ContactItem
{
QString accId;
XMPP::Jid jid;
ContactItem(const QString &aId, XMPP::Jid j) { accId = aId; jid = j; }
};

EDB(PsiCon *psi);
virtual ~EDB()=0;
virtual int features() const = 0;
virtual QList<ContactItem> contacts(const QString &accId, int type) = 0;

protected:
int genUniqueId() const;
Expand All @@ -104,6 +116,7 @@ class EDB : public QObject
virtual int erase(const XMPP::Jid &)=0;
void resultReady(int, EDBResult);
void writeFinished(int, bool);
PsiCon *psi();

private:
class Private;
Expand Down
Loading

0 comments on commit 8170d22

Please sign in to comment.