Skip to content

Commit

Permalink
[qtcontacts-sqlite] Add missing detail fields. Contributes to MER#1345
Browse files Browse the repository at this point in the history
  • Loading branch information
matthewvogt committed Sep 28, 2015
1 parent 262f3b5 commit 77b18f1
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 20 deletions.
20 changes: 16 additions & 4 deletions src/engine/contactreader.cpp
Expand Up @@ -222,7 +222,8 @@ static const FieldInfo anniversaryFields[] =
{
{ QContactAnniversary::FieldOriginalDate, "originalDateTime", DateField },
{ QContactAnniversary::FieldCalendarId, "calendarId", StringField },
{ QContactAnniversary::FieldSubType, "subType", StringField }
{ QContactAnniversary::FieldSubType, "subType", StringField },
{ QContactAnniversary::FieldEvent, "event", StringField }
};

static void setValues(QContactAnniversary *detail, QSqlQuery *query, const int offset)
Expand All @@ -232,6 +233,7 @@ static void setValues(QContactAnniversary *detail, QSqlQuery *query, const int o
setValue(detail, T::FieldOriginalDate, dateValue(query->value(offset + 0)));
setValue(detail, T::FieldCalendarId , query->value(offset + 1));
setValue(detail, T::FieldSubType , QVariant::fromValue<int>(Anniversary::subType(query->value(offset + 2).toString())));
setValue(detail, T::FieldEvent , query->value(offset + 3));
}

static const FieldInfo avatarFields[] =
Expand Down Expand Up @@ -413,7 +415,8 @@ static const FieldInfo organizationFields[] =
{ QContactOrganization::FieldTitle, "title", LocalizedField },
{ QContactOrganization::FieldLocation, "location", LocalizedField },
{ QContactOrganization::FieldDepartment, "department", LocalizedField },
{ QContactOrganization::FieldLogoUrl, "logoUrl", StringField }
{ QContactOrganization::FieldLogoUrl, "logoUrl", StringField },
{ QContactOrganization::FieldAssistantName, "assistantName", StringField }
};

static void setValues(QContactOrganization *detail, QSqlQuery *query, const int offset)
Expand All @@ -426,6 +429,7 @@ static void setValues(QContactOrganization *detail, QSqlQuery *query, const int
setValue(detail, T::FieldLocation , query->value(offset + 3));
setValue(detail, T::FieldDepartment, stringListValue(query->value(offset + 4)));
setValue(detail, T::FieldLogoUrl , urlValue(query->value(offset + 5)));
setValue(detail, T::FieldAssistantName, query->value(offset + 6));
}

static const FieldInfo phoneNumberFields[] =
Expand All @@ -452,7 +456,9 @@ static const FieldInfo presenceFields[] =
{ QContactPresence::FieldPresenceState, "presenceState", IntegerField },
{ QContactPresence::FieldTimestamp, "timestamp", DateField },
{ QContactPresence::FieldNickname, "nickname", LocalizedField },
{ QContactPresence::FieldCustomMessage, "customMessage", LocalizedField }
{ QContactPresence::FieldCustomMessage, "customMessage", LocalizedField },
{ QContactPresence::FieldPresenceStateText, "presenceStateText", StringField },
{ QContactPresence::FieldPresenceStateImageUrl, "presenceStateImageUrl", StringField }
};

static void setValues(QContactPresence *detail, QSqlQuery *query, const int offset)
Expand All @@ -463,6 +469,8 @@ static void setValues(QContactPresence *detail, QSqlQuery *query, const int offs
setValue(detail, T::FieldTimestamp , ContactsDatabase::fromDateTimeString(query->value(offset + 1).toString()));
setValue(detail, T::FieldNickname , query->value(offset + 2));
setValue(detail, T::FieldCustomMessage, query->value(offset + 3));
setValue(detail, T::FieldPresenceStateText, query->value(offset + 4));
setValue(detail, T::FieldPresenceStateImageUrl, urlValue(query->value(offset + 5)));
}

static void setValues(QContactGlobalPresence *detail, QSqlQuery *query, const int offset)
Expand All @@ -473,12 +481,15 @@ static void setValues(QContactGlobalPresence *detail, QSqlQuery *query, const in
setValue(detail, T::FieldTimestamp , ContactsDatabase::fromDateTimeString(query->value(offset + 1).toString()));
setValue(detail, T::FieldNickname , query->value(offset + 2));
setValue(detail, T::FieldCustomMessage, query->value(offset + 3));
setValue(detail, T::FieldPresenceStateText, query->value(offset + 4));
setValue(detail, T::FieldPresenceStateImageUrl, urlValue(query->value(offset + 5)));
}

static const FieldInfo ringtoneFields[] =
{
{ QContactRingtone::FieldAudioRingtoneUrl, "audioRingtone", StringField },
{ QContactRingtone::FieldVideoRingtoneUrl, "videoRingtone", StringField }
{ QContactRingtone::FieldVideoRingtoneUrl, "videoRingtone", StringField },
{ QContactRingtone::FieldVibrationRingtoneUrl, "vibrationRingtone", StringField }
};

static void setValues(QContactRingtone *detail, QSqlQuery *query, const int offset)
Expand All @@ -487,6 +498,7 @@ static void setValues(QContactRingtone *detail, QSqlQuery *query, const int offs

setValue(detail, T::FieldAudioRingtoneUrl, urlValue(query->value(offset + 0)));
setValue(detail, T::FieldVideoRingtoneUrl, urlValue(query->value(offset + 1)));
setValue(detail, T::FieldVibrationRingtoneUrl, urlValue(query->value(offset + 2)));
}

static const FieldInfo tagFields[] =
Expand Down
31 changes: 25 additions & 6 deletions src/engine/contactsdatabase.cpp
Expand Up @@ -98,7 +98,8 @@ static const char *createAnniversariesTable =
"\n contactId INTEGER KEY,"
"\n originalDateTime DATETIME,"
"\n calendarId TEXT,"
"\n subType TEXT);";
"\n subType TEXT,"
"\n event TEXT);";

static const char *createAvatarsTable =
"\n CREATE TABLE Avatars ("
Expand Down Expand Up @@ -150,7 +151,9 @@ static const char *createGlobalPresencesTable =
"\n presenceState INTEGER,"
"\n timestamp DATETIME,"
"\n nickname TEXT,"
"\n customMessage TEXT);";
"\n customMessage TEXT,"
"\n presenceStateText TEXT,"
"\n presenceStateImageUrl TEXT);";

static const char *createGuidsTable =
"\n CREATE TABLE Guids ("
Expand Down Expand Up @@ -202,7 +205,8 @@ static const char *createOrganizationsTable =
"\n title TEXT,"
"\n location TEXT,"
"\n department TEXT,"
"\n logoUrl TEXT);";
"\n logoUrl TEXT,"
"\n assistantName TEXT);";

static const char *createPhoneNumbersTable =
"\n CREATE TABLE PhoneNumbers ("
Expand All @@ -219,14 +223,17 @@ static const char *createPresencesTable =
"\n presenceState INTEGER,"
"\n timestamp DATETIME,"
"\n nickname TEXT,"
"\n customMessage TEXT);";
"\n customMessage TEXT,"
"\n presenceStateText TEXT,"
"\n presenceStateImageUrl TEXT);";

static const char *createRingtonesTable =
"\n CREATE TABLE Ringtones ("
"\n detailId INTEGER PRIMARY KEY ASC REFERENCES Details (detailId),"
"\n contactId INTEGER KEY,"
"\n audioRingtone TEXT,"
"\n videoRingtone TEXT);";
"\n videoRingtone TEXT,"
"\n vibrationRingtone TEXT);";

static const char *createTagsTable =
"\n CREATE TABLE Tags ("
Expand Down Expand Up @@ -1260,6 +1267,17 @@ static const char *upgradeVersion14[] = {
"PRAGMA user_version=15",
0 // NULL-terminated
};
static const char *upgradeVersion15[] = {
"ALTER TABLE Anniversaries ADD COLUMN event TEXT",
"ALTER TABLE GlobalPresences ADD COLUMN presenceStateText TEXT",
"ALTER TABLE GlobalPresences ADD COLUMN presenceStateImageUrl TEXT",
"ALTER TABLE Organizations ADD COLUMN assistantName TEXT",
"ALTER TABLE Presences ADD COLUMN presenceStateText TEXT",
"ALTER TABLE Presences ADD COLUMN presenceStateImageUrl TEXT",
"ALTER TABLE Ringtones ADD COLUMN vibrationRingtone TEXT",
"PRAGMA user_version=16",
0 // NULL-terminated
};

typedef bool (*UpgradeFunction)(QSqlDatabase &database);

Expand Down Expand Up @@ -1340,9 +1358,10 @@ static UpgradeOperation upgradeVersions[] = {
{ 0, upgradeVersion12 },
{ 0, upgradeVersion13 },
{ 0, upgradeVersion14 },
{ 0, upgradeVersion15 },
};

static const int currentSchemaVersion = 15;
static const int currentSchemaVersion = 16;

static bool execute(QSqlDatabase &database, const QString &statement)
{
Expand Down
41 changes: 31 additions & 10 deletions src/engine/contactwriter.cpp
Expand Up @@ -1666,13 +1666,15 @@ ContactsDatabase::Query bindDetail(ContactsDatabase &db, quint32 contactId, quin
" contactId,"
" originalDateTime,"
" calendarId,"
" subType)"
" subType,"
" event)"
" VALUES ("
" :detailId,"
" :contactId,"
" :originalDateTime,"
" :calendarId,"
" :subType)"
" :subType,"
" :event)"
));

ContactsDatabase::Query query(db.prepare(statement));
Expand All @@ -1683,6 +1685,7 @@ ContactsDatabase::Query bindDetail(ContactsDatabase &db, quint32 contactId, quin
query.addBindValue(detailValue(detail, T::FieldOriginalDate));
query.addBindValue(detailValue(detail, T::FieldCalendarId));
query.addBindValue(Anniversary::subType(detail.subType()));
query.addBindValue(detail.value<QString>(T::FieldEvent).trimmed());
return query;
}

Expand Down Expand Up @@ -1845,14 +1848,18 @@ ContactsDatabase::Query bindDetail(ContactsDatabase &db, quint32 contactId, quin
" presenceState,"
" timestamp,"
" nickname,"
" customMessage)"
" customMessage,"
" presenceStateText,"
" presenceStateImageUrl)"
" VALUES ("
" :detailId,"
" :contactId,"
" :presenceState,"
" :timestamp,"
" :nickname,"
" :customMessage)"
" :customMessage,"
" :presenceStateText,"
" :presenceStateImageUrl)"
));

ContactsDatabase::Query query(db.prepare(statement));
Expand All @@ -1864,6 +1871,8 @@ ContactsDatabase::Query bindDetail(ContactsDatabase &db, quint32 contactId, quin
query.addBindValue(ContactsDatabase::dateTimeString(detail.value<QDateTime>(T::FieldTimestamp).toUTC()));
query.addBindValue(detail.value<QString>(T::FieldNickname).trimmed());
query.addBindValue(detail.value<QString>(T::FieldCustomMessage).trimmed());
query.addBindValue(detail.value<QString>(T::FieldPresenceStateText).trimmed());
query.addBindValue(detail.value<QString>(T::FieldPresenceStateImageUrl).trimmed());
return query;
}

Expand Down Expand Up @@ -2023,7 +2032,8 @@ ContactsDatabase::Query bindDetail(ContactsDatabase &db, quint32 contactId, quin
" title,"
" location,"
" department,"
" logoUrl)"
" logoUrl,"
" assistantName)"
" VALUES ("
" :detailId,"
" :contactId,"
Expand All @@ -2032,7 +2042,8 @@ ContactsDatabase::Query bindDetail(ContactsDatabase &db, quint32 contactId, quin
" :title,"
" :location,"
" :department,"
" :logoUrl)"
" :logoUrl,"
" :assistantName)"
));

ContactsDatabase::Query query(db.prepare(statement));
Expand All @@ -2046,6 +2057,7 @@ ContactsDatabase::Query bindDetail(ContactsDatabase &db, quint32 contactId, quin
query.addBindValue(detail.value<QString>(T::FieldLocation).trimmed());
query.addBindValue(detail.department().join(QLatin1String(";")));
query.addBindValue(detail.value<QString>(T::FieldLogoUrl).trimmed());
query.addBindValue(detail.value<QString>(T::FieldAssistantName).trimmed());
return query;
}

Expand Down Expand Up @@ -2086,14 +2098,18 @@ ContactsDatabase::Query bindDetail(ContactsDatabase &db, quint32 contactId, quin
" presenceState,"
" timestamp,"
" nickname,"
" customMessage)"
" customMessage,"
" presenceStateText,"
" presenceStateImageUrl)"
" VALUES ("
" :detailId,"
" :contactId,"
" :presenceState,"
" :timestamp,"
" :nickname,"
" :customMessage)"
" :customMessage,"
" :presenceStateText,"
" :presenceStateImageUrl)"
));

ContactsDatabase::Query query(db.prepare(statement));
Expand All @@ -2105,6 +2121,8 @@ ContactsDatabase::Query bindDetail(ContactsDatabase &db, quint32 contactId, quin
query.addBindValue(ContactsDatabase::dateTimeString(detail.value<QDateTime>(T::FieldTimestamp).toUTC()));
query.addBindValue(detail.value<QString>(T::FieldNickname).trimmed());
query.addBindValue(detail.value<QString>(T::FieldCustomMessage).trimmed());
query.addBindValue(detail.value<QString>(T::FieldPresenceStateText).trimmed());
query.addBindValue(detail.value<QString>(T::FieldPresenceStateImageUrl).trimmed());
return query;
}

Expand All @@ -2115,12 +2133,14 @@ ContactsDatabase::Query bindDetail(ContactsDatabase &db, quint32 contactId, quin
" detailId,"
" contactId,"
" audioRingtone,"
" videoRingtone)"
" videoRingtone,"
" vibrationRingtone)"
" VALUES ("
" :detailId,"
" :contactId,"
" :audioRingtone,"
" :videoRingtone)"
" :videoRingtone,"
" :vibrationRingtone)"
));

ContactsDatabase::Query query(db.prepare(statement));
Expand All @@ -2130,6 +2150,7 @@ ContactsDatabase::Query bindDetail(ContactsDatabase &db, quint32 contactId, quin
query.addBindValue(contactId);
query.addBindValue(detail.value<QString>(T::FieldAudioRingtoneUrl).trimmed());
query.addBindValue(detail.value<QString>(T::FieldVideoRingtoneUrl).trimmed());
query.addBindValue(detail.value<QString>(T::FieldVibrationRingtoneUrl).trimmed());
return query;
}

Expand Down

0 comments on commit 77b18f1

Please sign in to comment.