Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
PIM
Akonadi Contacts
Commits
468bddda
Commit
468bddda
authored
Feb 02, 2016
by
Laurent Montel
😁
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
We need it for caching icons
parent
82fa598f
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
107 additions
and
0 deletions
+107
-0
akonadi-contact/src/CMakeLists.txt
akonadi-contact/src/CMakeLists.txt
+1
-0
akonadi-contact/src/editor/addresseditor/iconnamecache.cpp
akonadi-contact/src/editor/addresseditor/iconnamecache.cpp
+54
-0
akonadi-contact/src/editor/addresseditor/iconnamecache_p.h
akonadi-contact/src/editor/addresseditor/iconnamecache_p.h
+52
-0
No files found.
akonadi-contact/src/CMakeLists.txt
View file @
468bddda
...
...
@@ -37,6 +37,7 @@ set(akonadicontact_addresslocation_editor_SRCS
editor/addresseditor/addresseslocationviewer.cpp
editor/addresseditor/addresseslocationgrantleeformater.cpp
editor/addresseditor/addressgrantleeobject.cpp
editor/addresseditor/iconnamecache.cpp
)
set
(
akonadicontact_editor_SRCS
...
...
akonadi-contact/src/editor/addresseditor/iconnamecache.cpp
0 → 100644
View file @
468bddda
/* Copyright 2009 Thomas McGuire <mcguire@kde.org>
This library is free software; you can redistribute it and/or modify
it under the terms of the GNU Library General Public License as published
by the Free Software Foundation; either version 2 of the License or
( at your option ) version 3 or, at the discretion of KDE e.V.
( which shall act as a proxy as in section 14 of the GPLv3 ), any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include "iconnamecache_p.h"
#include <KIconLoader>
Q_GLOBAL_STATIC
(
IconNameCache
,
s_iconNameCache
)
IconNameCache
*
IconNameCache
::
instance
()
{
return
s_iconNameCache
;
}
bool
IconNameCache
::
Entry
::
operator
<
(
const
Entry
&
other
)
const
{
const
int
fileNameCompare
=
fileName
.
compare
(
other
.
fileName
);
if
(
fileNameCompare
!=
0
)
{
return
fileNameCompare
<
0
;
}
else
{
return
size
<
other
.
size
;
}
}
QString
IconNameCache
::
iconPath
(
const
QString
&
name
,
int
size
)
const
{
Entry
entry
;
entry
.
fileName
=
name
;
entry
.
size
=
size
;
if
(
mCachedEntries
.
contains
(
entry
))
{
return
mCachedEntries
.
value
(
entry
);
}
const
QString
fileName
=
KIconLoader
::
global
()
->
iconPath
(
name
,
size
);
mCachedEntries
.
insert
(
entry
,
fileName
);
return
fileName
;
}
akonadi-contact/src/editor/addresseditor/iconnamecache_p.h
0 → 100644
View file @
468bddda
/* Copyright 2009 Thomas McGuire <mcguire@kde.org>
This library is free software; you can redistribute it and/or modify
it under the terms of the GNU Library General Public License as published
by the Free Software Foundation; either version 2 of the License or
( at your option ) version 3 or, at the discretion of KDE e.V.
( which shall act as a proxy as in section 14 of the GPLv3 ), any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef ICONNAMECACHE_H
#define ICONNAMECACHE_H
#include <QMap>
#include <QString>
/**
* This class is a replacement for KIconLoader::iconPath(), because the iconPath()
* function can be slow for non-existing icons or icons that fall back to a generic icon.
* Reason is that KIconLoader does slow system calls for finding the icons.
*
* The IconNameCache caches the result of iconPath() in a map and solves the slowness.
*/
class
IconNameCache
{
public:
static
IconNameCache
*
instance
();
QString
iconPath
(
const
QString
&
name
,
int
size
)
const
;
private:
class
Entry
{
public:
QString
fileName
;
int
size
;
bool
operator
<
(
const
Entry
&
other
)
const
;
};
mutable
QMap
<
Entry
,
QString
>
mCachedEntries
;
};
#endif
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