Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qtcontacts-sqlite
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
neochapay
qtcontacts-sqlite
Commits
d1af84a5
Commit
d1af84a5
authored
Feb 18, 2019
by
chriadam
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[qtcontacts-sqlite] Load installed display label generator plugins. Contributes to JB#44742
parent
1db5b4a1
Changes
22
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
1054 additions
and
80 deletions
+1054
-80
rpm/qtcontacts-sqlite-qt5.spec
rpm/qtcontacts-sqlite-qt5.spec
+2
-1
src/engine/contactsdatabase.cpp
src/engine/contactsdatabase.cpp
+271
-70
src/engine/contactsdatabase.h
src/engine/contactsdatabase.h
+9
-2
src/engine/contactsengine.cpp
src/engine/contactsengine.cpp
+14
-3
src/engine/contactsengine.h
src/engine/contactsengine.h
+3
-0
src/engine/contactwriter.cpp
src/engine/contactwriter.cpp
+1
-1
src/engine/defaultdlggenerator.cpp
src/engine/defaultdlggenerator.cpp
+138
-0
src/engine/defaultdlggenerator.h
src/engine/defaultdlggenerator.h
+52
-0
src/engine/engine.pro
src/engine/engine.pro
+5
-0
src/extensions/contactmanagerengine.h
src/extensions/contactmanagerengine.h
+3
-0
src/extensions/displaylabelgroupgenerator.h
src/extensions/displaylabelgroupgenerator.h
+69
-0
src/qtcontacts-sqlite-qt5-extensions.pc
src/qtcontacts-sqlite-qt5-extensions.pc
+1
-1
src/src.pro
src/src.pro
+2
-1
tests/auto/auto.pro
tests/auto/auto.pro
+8
-1
tests/auto/database/database.pro
tests/auto/database/database.pro
+3
-0
tests/auto/displaylabelgroups/displaylabelgroups.pro
tests/auto/displaylabelgroups/displaylabelgroups.pro
+2
-0
tests/auto/displaylabelgroups/test/test.pro
tests/auto/displaylabelgroups/test/test.pro
+3
-0
tests/auto/displaylabelgroups/test/tst_displaylabelgroups.cpp
...s/auto/displaylabelgroups/test/tst_displaylabelgroups.cpp
+303
-0
tests/auto/displaylabelgroups/testplugin/testdlggplugin.cpp
tests/auto/displaylabelgroups/testplugin/testdlggplugin.cpp
+100
-0
tests/auto/displaylabelgroups/testplugin/testdlggplugin.h
tests/auto/displaylabelgroups/testplugin/testdlggplugin.h
+53
-0
tests/auto/displaylabelgroups/testplugin/testplugin.pro
tests/auto/displaylabelgroups/testplugin/testplugin.pro
+11
-0
tests/common.pri
tests/common.pri
+1
-0
No files found.
rpm/qtcontacts-sqlite-qt5.spec
View file @
d1af84a5
...
...
@@ -31,6 +31,7 @@ This package contains unit tests for the qtcontacts-sqlite-qt5 library.
%files tests
%defattr(-,root,root,-)
/opt/tests/qtcontacts-sqlite-qt5/*
%{_libdir}/qtcontacts-sqlite-qt5/libtestdlgg.so
%package extensions
Summary: QtContacts extension headers for qtcontacts-sqlite-qt5
...
...
@@ -50,7 +51,7 @@ This package contains extension headers for the qtcontacts-sqlite-qt5 library.
%setup -q -n %{name}-%{version}
%build
%qmake5
%qmake5
"VERSION=%{version}"
make %{?_smp_mflags}
%install
...
...
src/engine/contactsdatabase.cpp
View file @
d1af84a5
This diff is collapsed.
Click to expand it.
src/engine/contactsdatabase.h
View file @
d1af84a5
...
...
@@ -34,6 +34,7 @@
#include "semaphore_p.h"
#include "contactstransientstore.h"
#include "../extensions/displaylabelgroupgenerator.h"
#include <QHash>
#include <QMutex>
...
...
@@ -42,6 +43,9 @@
#include <QSqlError>
#include <QSqlQuery>
#include <QVariantList>
#include <QVector>
#include <QContact>
class
ContactsDatabase
{
...
...
@@ -148,6 +152,9 @@ public:
bool
removeTransientDetails
(
quint32
contactId
);
bool
removeTransientDetails
(
const
QList
<
quint32
>
&
contactIds
);
QString
determineDisplayLabelGroup
(
const
QContact
&
c
)
const
;
QStringList
displayLabelGroups
()
const
;
static
bool
execute
(
QSqlQuery
&
query
);
static
bool
executeBatch
(
QSqlQuery
&
query
,
QSqlQuery
::
BatchExecutionMode
mode
=
QSqlQuery
::
ValuesAsRows
);
...
...
@@ -162,8 +169,6 @@ public:
// Output is UTC
static
QDateTime
fromDateTimeString
(
const
QString
&
s
);
static
QString
determineDisplayLabelGroup
(
const
QString
&
firstName
,
const
QString
&
lastName
,
const
QString
&
displayLabel
);
private:
QSqlDatabase
m_database
;
ContactsTransientStore
m_transientStore
;
...
...
@@ -172,6 +177,8 @@ private:
bool
m_nonprivileged
;
QString
m_localeName
;
QHash
<
QString
,
QSqlQuery
>
m_preparedQueries
;
QVector
<
QtContactsSqliteExtensions
::
DisplayLabelGroupGenerator
*>
m_dlgGenerators
;
QScopedPointer
<
QtContactsSqliteExtensions
::
DisplayLabelGroupGenerator
>
m_defaultGenerator
;
};
#endif
src/engine/contactsengine.cpp
View file @
d1af84a5
...
...
@@ -39,6 +39,7 @@
#include "qtcontacts-extensions.h"
#include "qtcontacts-extensions_impl.h"
#include "displaylabelgroupgenerator.h"
#include <QCoreApplication>
#include <QMutex>
...
...
@@ -1182,9 +1183,9 @@ void ContactsEngine::regenerateDisplayLabel(QContact &contact) const
return
;
}
const
QString
group
=
ContactsDatabase
::
determineDisplayLabelGroup
(
contact
.
detail
<
QContactName
>
().
firstName
(),
contact
.
detail
<
QContactName
>
().
lastName
(),
label
);
QContact
tempContact
(
contact
);
setContactDisplayLabel
(
&
tempContact
,
label
,
QString
());
const
QString
group
=
m_database
?
m_database
->
determineDisplayLabelGroup
(
tempContact
)
:
QString
(
);
setContactDisplayLabel
(
&
contact
,
label
,
group
);
}
...
...
@@ -1285,6 +1286,11 @@ bool ContactsEngine::removeOOB(const QString &scope)
return
writer
()
->
removeOOB
(
scope
,
QStringList
());
}
QStringList
ContactsEngine
::
displayLabelGroups
()
{
return
database
().
displayLabelGroups
();
}
bool
ContactsEngine
::
setContactDisplayLabel
(
QContact
*
contact
,
const
QString
&
label
,
const
QString
&
group
)
{
QContactDisplayLabel
detail
(
contact
->
detail
<
QContactDisplayLabel
>
());
...
...
@@ -1406,6 +1412,11 @@ void ContactsEngine::_q_syncContactsChanged(const QStringList &syncTargets)
emit
syncContactsChanged
(
syncTargets
);
}
void
ContactsEngine
::
_q_displayLabelGroupsChanged
(
const
QStringList
&
groups
)
{
emit
displayLabelGroupsChanged
(
groups
);
}
void
ContactsEngine
::
_q_contactsRemoved
(
const
QVector
<
quint32
>
&
contactIds
)
{
emit
contactsRemoved
(
idList
(
contactIds
));
...
...
src/engine/contactsengine.h
View file @
d1af84a5
...
...
@@ -165,6 +165,8 @@ public:
QString
synthesizedDisplayLabel
(
const
QContact
&
contact
,
QContactManager
::
Error
*
error
)
const
;
QStringList
displayLabelGroups
()
override
;
private
slots
:
void
_q_contactsChanged
(
const
QVector
<
quint32
>
&
contactIds
);
void
_q_contactsPresenceChanged
(
const
QVector
<
quint32
>
&
contactIds
);
...
...
@@ -174,6 +176,7 @@ private slots:
void
_q_selfContactIdChanged
(
quint32
,
quint32
);
void
_q_relationshipsAdded
(
const
QVector
<
quint32
>
&
contactIds
);
void
_q_relationshipsRemoved
(
const
QVector
<
quint32
>
&
contactIds
);
void
_q_displayLabelGroupsChanged
(
const
QStringList
&
groups
);
private:
QString
databaseUuid
();
...
...
src/engine/contactwriter.cpp
View file @
d1af84a5
...
...
@@ -5620,7 +5620,7 @@ ContactsDatabase::Query ContactWriter::bindContactDetails(const QContact &contac
QContactDisplayLabel
label
=
contact
.
detail
<
QContactDisplayLabel
>
();
const
QString
displayLabel
=
label
.
label
().
trimmed
();
query
.
bindValue
(
0
,
displayLabel
);
query
.
bindValue
(
1
,
ContactsDatabase
::
determineDisplayLabelGroup
(
firstName
,
lastName
,
displayLabel
));
query
.
bindValue
(
1
,
m_database
.
determineDisplayLabelGroup
(
contact
));
query
.
bindValue
(
2
,
firstName
);
query
.
bindValue
(
3
,
firstName
.
toLower
());
...
...
src/engine/defaultdlggenerator.cpp
0 → 100644
View file @
d1af84a5
/*
* Copyright (C) 2019 Jolla Ltd. <chris.adams@jollamobile.com>
*
* You may use this file under the terms of the BSD license as follows:
*
* "Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Nemo Mobile nor the names of its contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
*/
#include "defaultdlggenerator.h"
/*
This display label group generator provides the
default (fallback) group generation semantics, and should
be the last generator used (i.e. if no other generator
is valid in the current locale).
The semantics it implements are as follows:
1) if the preferred name field data is empty,
it falls back to display label data to generate the
group.
2) if the first character of the preferred data
is a digit (0..9) then the group is '#'.
3) if the first character of the preferred data
is within 'A'..'Z' it returns that character.
(TODO: perform a unidecode transliteration first.)
4) otherwise, the group is '!'
For example, if the preferred detail is
QContactName::Type and the preferred field is
QContactName::FieldLastName, and the client passes
in a contact with name "John Smith", then the first
letter of the last name (in this case, 'S') will be
returned as the group.
*/
DefaultDlgGenerator
::
DefaultDlgGenerator
(
QObject
*
parent
)
:
QObject
(
parent
)
{
}
QString
DefaultDlgGenerator
::
name
()
const
{
return
QStringLiteral
(
"default"
);
}
int
DefaultDlgGenerator
::
priority
()
const
{
return
0
;
}
bool
DefaultDlgGenerator
::
validForLocale
(
const
QLocale
&
)
const
{
return
true
;
// this default plugin is the fallback, and always valid.
}
QStringList
DefaultDlgGenerator
::
displayLabelGroups
()
const
{
static
QStringList
groups
{
QStringLiteral
(
"A"
),
QStringLiteral
(
"B"
),
QStringLiteral
(
"C"
),
QStringLiteral
(
"D"
),
QStringLiteral
(
"E"
),
QStringLiteral
(
"F"
),
QStringLiteral
(
"G"
),
QStringLiteral
(
"H"
),
QStringLiteral
(
"I"
),
QStringLiteral
(
"J"
),
QStringLiteral
(
"K"
),
QStringLiteral
(
"L"
),
QStringLiteral
(
"M"
),
QStringLiteral
(
"N"
),
QStringLiteral
(
"O"
),
QStringLiteral
(
"P"
),
QStringLiteral
(
"Q"
),
QStringLiteral
(
"R"
),
QStringLiteral
(
"S"
),
QStringLiteral
(
"T"
),
QStringLiteral
(
"U"
),
QStringLiteral
(
"V"
),
QStringLiteral
(
"W"
),
QStringLiteral
(
"X"
),
QStringLiteral
(
"Y"
),
QStringLiteral
(
"Z"
),
QStringLiteral
(
"#"
),
QStringLiteral
(
"!"
)
};
return
groups
;
}
QString
DefaultDlgGenerator
::
displayLabelGroup
(
const
QString
&
data
)
const
{
QString
group
;
if
(
!
data
.
isEmpty
())
{
QChar
upperChar
=
data
.
at
(
0
).
toUpper
();
ushort
val
=
upperChar
.
unicode
();
if
(
val
>=
'A'
&&
val
<=
'Z'
)
{
group
=
QString
(
upperChar
);
}
else
if
(
data
.
at
(
0
).
isDigit
())
{
group
=
QStringLiteral
(
"#"
);
}
}
if
(
group
.
isEmpty
())
{
// unknown group. put in "other" group '!'
group
=
QStringLiteral
(
"!"
);
}
return
group
;
}
src/engine/defaultdlggenerator.h
0 → 100644
View file @
d1af84a5
/*
* Copyright (C) 2019 Jolla Ltd. <chris.adams@jollamobile.com>
*
* You may use this file under the terms of the BSD license as follows:
*
* "Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Nemo Mobile nor the names of its contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
*/
#ifndef DEFAULTDLGGENERATOR_H
#define DEFAULTDLGGENERATOR_H
#include <QObject>
#include <displaylabelgroupgenerator.h>
class
DefaultDlgGenerator
:
public
QObject
,
public
QtContactsSqliteExtensions
::
DisplayLabelGroupGenerator
{
Q_OBJECT
Q_INTERFACES
(
QtContactsSqliteExtensions
::
DisplayLabelGroupGenerator
)
public:
DefaultDlgGenerator
(
QObject
*
parent
=
Q_NULLPTR
);
QString
name
()
const
Q_DECL_OVERRIDE
;
int
priority
()
const
Q_DECL_OVERRIDE
;
bool
validForLocale
(
const
QLocale
&
locale
)
const
Q_DECL_OVERRIDE
;
QString
displayLabelGroup
(
const
QString
&
data
)
const
Q_DECL_OVERRIDE
;
QStringList
displayLabelGroups
()
const
Q_DECL_OVERRIDE
;
};
#endif // DEFAULTDLGGENERATOR_H
src/engine/engine.pro
View file @
d1af84a5
...
...
@@ -9,6 +9,9 @@ CONFIG += plugin hide_symbols
PLUGIN_TYPE
=
contacts
DESTDIR
=
$$
{
PLUGIN_TYPE
}
CONFIG
+=
link_pkgconfig
PKGCONFIG
+=
mlocale5
#
we
hardcode
this
for
Qt4
as
there's no GenericDataLocation offered by QDesktopServices
DEFINES += '
QTCONTACTS_SQLITE_PRIVILEGED_DIR
=
\
'\"privileged\"\''
DEFINES += '
QTCONTACTS_SQLITE_DATABASE_DIR
=
\
'\"Contacts/qtcontacts-sqlite\"\''
...
...
@@ -22,6 +25,7 @@ INCLUDEPATH += \
..
/
extensions
HEADERS
+=
\
defaultdlggenerator
.
h
\
memorytable_p
.
h
\
semaphore_p
.
h
\
trace_p
.
h
\
...
...
@@ -36,6 +40,7 @@ HEADERS += \
..
/
extensions
/
contactmanagerengine
.
h
SOURCES
+=
\
defaultdlggenerator
.
cpp
\
memorytable
.
cpp
\
semaphore_p
.
cpp
\
conversion
.
cpp
\
...
...
src/extensions/contactmanagerengine.h
View file @
d1af84a5
...
...
@@ -93,9 +93,12 @@ public:
virtual
bool
removeOOB
(
const
QString
&
scope
,
const
QStringList
&
keys
)
=
0
;
virtual
bool
removeOOB
(
const
QString
&
scope
)
=
0
;
virtual
QStringList
displayLabelGroups
()
=
0
;
Q_SIGNALS:
void
contactsPresenceChanged
(
const
QList
<
QContactId
>
&
contactsIds
);
void
syncContactsChanged
(
const
QStringList
&
syncTargets
);
void
displayLabelGroupsChanged
(
const
QStringList
&
groups
);
protected:
bool
m_nonprivileged
;
...
...
src/extensions/displaylabelgroupgenerator.h
0 → 100644
View file @
d1af84a5
/*
* Copyright (C) 2019 Jolla Ltd. <chris.adams@jollamobile.com>
*
* You may use this file under the terms of the BSD license as follows:
*
* "Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Nemo Mobile nor the names of its contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
*/
#ifndef DISPLAYLABELGROUPGENERATOR_H
#define DISPLAYLABELGROUPGENERATOR_H
#include <QString>
#include <QStringList>
#include <QLocale>
namespace
QtContactsSqliteExtensions
{
/*
A display label group generator is able to determine which
"ribbon group" (bucket) a contact should be placed in.
The most common bucket to place a contact in is usually
the first letter of that contact's last name
(so 'John Smith' would be placed into group 'S').
However, for languages other than English, other forms
of grouping are required.
*/
class
DisplayLabelGroupGenerator
{
public:
virtual
~
DisplayLabelGroupGenerator
()
{}
virtual
QString
name
()
const
=
0
;
virtual
int
priority
()
const
=
0
;
// higher priority will be used before lower priority when generating label groups.
virtual
bool
validForLocale
(
const
QLocale
&
locale
)
const
=
0
;
virtual
QString
displayLabelGroup
(
const
QString
&
data
)
const
=
0
;
virtual
QStringList
displayLabelGroups
()
const
=
0
;
};
}
// namespace QtContactsSqliteExtensions
#define QtContactsSqliteExtensions_DisplayLabelGroupGeneratorInterface_iid "org.nemomobile.qtcontacts-sqlite.extensions.DisplayLabelGroupGeneratorInterface"
Q_DECLARE_INTERFACE
(
QtContactsSqliteExtensions
::
DisplayLabelGroupGenerator
,
QtContactsSqliteExtensions_DisplayLabelGroupGeneratorInterface_iid
)
#endif // DISPLAYLABELGROUPGENERATOR_H
src/qtcontacts-sqlite-qt5-extensions.pc
View file @
d1af84a5
...
...
@@ -3,5 +3,5 @@ includedir=${prefix}/include/qtcontacts-sqlite-qt5-extensions
Name: qtcontacts-sqlite-qt5-extensions
Description: QtContacts extensions implemented by qtcontacts-sqlite-qt5
Version: 0.2.
18
Version: 0.2.
30
Cflags: -I${includedir}
src/src.pro
View file @
d1af84a5
...
...
@@ -20,5 +20,6 @@ OTHER_FILES = \
extensions
/
qtcontacts
-
extensions
.
h
\
extensions
/
qtcontacts
-
extensions_impl
.
h
\
extensions
/
twowaycontactsyncadapter
.
h
\
extensions
/
twowaycontactsyncadapter_impl
.
h
extensions
/
twowaycontactsyncadapter_impl
.
h
\
extensions
/
displaylabelgroupgenerator
.
h
tests/auto/auto.pro
View file @
d1af84a5
TEMPLATE
=
subdirs
SUBDIRS
=
qcontactmanager
aggregation
qcontactmanagerfiltering
phonenumber
memorytable
database
SUBDIRS
=
\
qcontactmanager
\
aggregation
\
qcontactmanagerfiltering
\
phonenumber
\
memorytable
\
database
\
displaylabelgroups
tests/auto/database/database.pro
View file @
d1af84a5
...
...
@@ -28,6 +28,9 @@ SOURCES += ../../../src/engine/memorytable.cpp
HEADERS
+=
..
/../../
src
/
engine
/
conversion_p
.
h
SOURCES
+=
..
/../../
src
/
engine
/
conversion
.
cpp
HEADERS
+=
..
/../../
src
/
engine
/
defaultdlggenerator
.
h
SOURCES
+=
..
/../../
src
/
engine
/
defaultdlggenerator
.
cpp
SOURCES
+=
stub_contactsengine
.
cpp
SOURCES
+=
tst_database
.
cpp
tests/auto/displaylabelgroups/displaylabelgroups.pro
0 → 100644
View file @
d1af84a5
TEMPLATE
=
subdirs
SUBDIRS
=
testplugin
test
tests/auto/displaylabelgroups/test/test.pro
0 → 100644
View file @
d1af84a5
TARGET
=
tst_displaylabelgroups
include
(..
/../../
common
.
pri
)
SOURCES
+=
tst_displaylabelgroups
.
cpp
tests/auto/displaylabelgroups/test/tst_displaylabelgroups.cpp
0 → 100644
View file @
d1af84a5
This diff is collapsed.
Click to expand it.
tests/auto/displaylabelgroups/testplugin/testdlggplugin.cpp
0 → 100644
View file @
d1af84a5
/*
* Copyright (C) 2019 Jolla Ltd. <chris.adams@jollamobile.com>
*
* You may use this file under the terms of the BSD license as follows:
*
* "Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Nemo Mobile nor the names of its contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
*/
#include "testdlggplugin.h"
/*
This test plugin provides a display label group generator
with the following semantics:
1) if the name or display label data is empty,
it returns 'Z' (for "zero-length") as the group.
2) if the name or display label data is greater than
zero but less than six characters in length, it
returns that length as a group
(i.e. '1', '2', '3', '4', or '5').
3) otherwise, if the name or display label data has
an even number of characters it returns 'E' as the
group, else (odd) it returns 'O' as the group.
*/
TestDlgg
::
TestDlgg
(
QObject
*
parent
)
:
QObject
(
parent
)
{
}
QString
TestDlgg
::
name
()
const
{
return
QStringLiteral
(
"testdlgg"
);
}
int
TestDlgg
::
priority
()
const
{
return
1
;
// test plugin has slightly higher than the default/fallback.
}
bool
TestDlgg
::
validForLocale
(
const
QLocale
&
locale
)
const
{
return
true
;
// this test plugin is always "valid".
}
QStringList
TestDlgg
::
displayLabelGroups
()
const
{
static
QStringList
allGroups
{
QStringLiteral
(
"Z"
),
QStringLiteral
(
"1"
),
QStringLiteral
(
"2"
),
QStringLiteral
(
"3"
),
QStringLiteral
(
"4"
),
QStringLiteral
(
"5"
),
QStringLiteral
(
"E"
),
QStringLiteral
(
"O"
),
};
return
allGroups
;
}
QString
TestDlgg
::
displayLabelGroup
(
const
QString
&
data
)
const
{
if
(
data
.
size
()
>
5
)
{
return
(
data
.
size
()
%
2
==
0
)
?
QStringLiteral
(
"E"
)
:
QStringLiteral
(
"O"
);
}
switch
(
data
.
size
())
{
case
1
:
return
QStringLiteral
(
"1"
);
case
2
:
return
QStringLiteral
(
"2"
);
case
3
:
return
QStringLiteral
(
"3"
);
case
4
:
return
QStringLiteral
(
"4"
);
case
5
:
return
QStringLiteral
(
"5"
);
default:
return
QStringLiteral
(
"Z"
);
}
}
tests/auto/displaylabelgroups/testplugin/testdlggplugin.h
0 → 100644
View file @
d1af84a5
/*
* Copyright (C) 2019 Jolla Ltd. <chris.adams@jollamobile.com>
*
* You may use this file under the terms of the BSD license as follows:
*
* "Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Nemo Mobile nor the names of its contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
*/
#ifndef TESTDLGGPLUGIN_H
#define TESTDLGGPLUGIN_H
#include <QObject>
#include <displaylabelgroupgenerator.h>
class
TestDlgg
:
public
QObject
,
QtContactsSqliteExtensions
::
DisplayLabelGroupGenerator
{
Q_OBJECT
Q_PLUGIN_METADATA
(
IID
QtContactsSqliteExtensions_DisplayLabelGroupGeneratorInterface_iid
)
Q_INTERFACES
(
QtContactsSqliteExtensions
::
DisplayLabelGroupGenerator
)
public:
TestDlgg
(
QObject
*
parent
=
Q_NULLPTR
);
QString
name
()
const
Q_DECL_OVERRIDE
;
int
priority
()
const
Q_DECL_OVERRIDE
;
bool
validForLocale
(
const
QLocale
&
locale
)
const
Q_DECL_OVERRIDE
;
QString
displayLabelGroup
(
const
QString
&
data
)
const
Q_DECL_OVERRIDE
;
QStringList
displayLabelGroups
()
const
Q_DECL_OVERRIDE
;
};
#endif // TESTDLGGPLUGIN_H
tests/auto/displaylabelgroups/testplugin/testplugin.pro
0 → 100644
View file @
d1af84a5
TEMPLATE
=
lib
CONFIG
+=
plugin
c
++
11
link_pkgconfig
INCLUDEPATH
+=
..
/../../../
src
/
extensions
/
HEADERS
=
testdlggplugin
.
h
SOURCES
=
testdlggplugin
.
cpp
TARGET
=
$$
qtLibraryTarget
(
testdlgg
)
PLUGIN_TYPE
=
contacts_dlgg
DESTDIR
=
$$
{
PLUGIN_TYPE
}
PKGCONFIG
+=
Qt5Contacts
target
.
path
=
/
usr
/
lib
/
qtcontacts
-
sqlite
-
qt5
/
INSTALLS
+=
target
tests/common.pri
View file @
d1af84a5
...
...
@@ -3,6 +3,7 @@ include(../config.pri)
QT = \
core \
testlib
TEMPLATE = app
CONFIG -= app_bundle
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment