Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F16569060
settings.cpp
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
5 KB
Referenced Files
None
Subscribers
None
settings.cpp
View Options
/*
Copyright (c) 2009 Grégory Oestreicher <greg@kamago.net>
Based on an original work for the IMAP resource which is :
Copyright (c) 2008 Volker Krause <vkrause@kde.org>
Copyright (c) 2008 Omat Holding B.V. <info@omat.nl>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include
"settings.h"
#include
"settingsadaptor.h"
#include
<kglobal.h>
#include
<klocale.h>
#include
<QtDBus/QDBusConnection>
class
SettingsHelper
{
public
:
SettingsHelper
()
:
q
(
0
)
{
}
~
SettingsHelper
()
{
delete
q
;
}
Settings
*
q
;
};
K_GLOBAL_STATIC
(
SettingsHelper
,
s_globalSettings
)
Settings
::
UrlConfiguration
::
UrlConfiguration
()
{
}
Settings
::
UrlConfiguration
::
UrlConfiguration
(
const
QString
&
serialized
)
{
const
QStringList
splitString
=
serialized
.
split
(
'|'
);
if
(
splitString
.
size
()
==
3
)
{
mUrl
=
splitString
.
at
(
2
);
mProtocol
=
DavUtils
::
protocolByName
(
splitString
.
at
(
1
)
);
mUser
=
splitString
.
at
(
0
);
}
}
QString
Settings
::
UrlConfiguration
::
serialize
()
{
QString
serialized
=
mUser
;
serialized
.
append
(
'|'
).
append
(
DavUtils
::
protocolName
(
DavUtils
::
Protocol
(
mProtocol
)
)
);
serialized
.
append
(
'|'
).
append
(
mUrl
);
return
serialized
;
}
Settings
*
Settings
::
self
()
{
if
(
!
s_globalSettings
->
q
)
{
new
Settings
;
s_globalSettings
->
q
->
readConfig
();
}
return
s_globalSettings
->
q
;
}
Settings
::
Settings
()
:
SettingsBase
(),
mWinId
(
0
)
{
Q_ASSERT
(
!
s_globalSettings
->
q
);
s_globalSettings
->
q
=
this
;
new
SettingsAdaptor
(
this
);
QDBusConnection
::
sessionBus
().
registerObject
(
QLatin1String
(
"/Settings"
),
this
,
QDBusConnection
::
ExportAdaptors
|
QDBusConnection
::
ExportScriptableContents
);
foreach
(
const
QString
&
serializedUrl
,
remoteUrls
()
)
{
UrlConfiguration
*
urlConfig
=
new
UrlConfiguration
(
serializedUrl
);
mUrls
[
urlConfig
->
mUrl
]
=
urlConfig
;
}
}
Settings
::~
Settings
()
{
QMapIterator
<
QString
,
UrlConfiguration
*>
it
(
mUrls
);
while
(
it
.
hasNext
()
)
{
it
.
next
();
delete
it
.
value
();
}
}
void
Settings
::
setWinId
(
WId
winId
)
{
mWinId
=
winId
;
}
DavUtils
::
DavUrl
::
List
Settings
::
configuredDavUrls
()
{
DavUtils
::
DavUrl
::
List
davUrls
;
QMapIterator
<
QString
,
UrlConfiguration
*>
it
(
mUrls
);
while
(
it
.
hasNext
()
)
{
it
.
next
();
davUrls
<<
configuredDavUrl
(
it
.
key
()
);
}
return
davUrls
;
}
DavUtils
::
DavUrl
Settings
::
configuredDavUrl
(
const
QString
&
searchUrl
,
const
QString
&
finalUrl
)
{
KUrl
fullUrl
;
if
(
!
finalUrl
.
isEmpty
()
)
fullUrl
=
finalUrl
;
else
fullUrl
=
searchUrl
;
const
QString
user
=
username
(
searchUrl
);
fullUrl
.
setUser
(
user
);
return
DavUtils
::
DavUrl
(
fullUrl
,
protocol
(
searchUrl
)
);
}
DavUtils
::
DavUrl
Settings
::
davUrlFromUrl
(
const
QString
&
url
)
{
DavUtils
::
DavUrl
davUrl
;
QString
configuredUrl
;
QMapIterator
<
QString
,
QString
>
iter
(
mCollectionsUrlsMapping
);
while
(
iter
.
hasNext
()
)
{
if
(
url
.
startsWith
(
iter
.
next
().
key
()
)
)
{
configuredUrl
=
iter
.
value
();
break
;
}
}
if
(
!
configuredUrl
.
isEmpty
()
)
davUrl
=
configuredDavUrl
(
configuredUrl
,
url
);
return
davUrl
;
}
void
Settings
::
addCollectionUrlMapping
(
const
QString
&
collectionUrl
,
const
QString
&
configuredUrl
)
{
mCollectionsUrlsMapping
.
insert
(
collectionUrl
,
configuredUrl
);
}
void
Settings
::
newUrlConfiguration
(
Settings
::
UrlConfiguration
*
urlConfig
)
{
if
(
mUrls
.
contains
(
urlConfig
->
mUrl
)
)
{
removeUrlConfiguration
(
urlConfig
->
mUrl
);
updateRemoteUrls
();
}
mUrls
[
urlConfig
->
mUrl
]
=
urlConfig
;
updateRemoteUrls
();
}
void
Settings
::
removeUrlConfiguration
(
const
QString
&
url
)
{
if
(
!
mUrls
.
contains
(
url
)
)
return
;
delete
mUrls
[
url
];
mUrls
.
remove
(
url
);
updateRemoteUrls
();
}
Settings
::
UrlConfiguration
*
Settings
::
urlConfiguration
(
const
QString
&
url
)
{
UrlConfiguration
*
ret
=
0
;
if
(
mUrls
.
contains
(
url
)
)
ret
=
mUrls
[
url
];
return
ret
;
}
DavUtils
::
Protocol
Settings
::
protocol
(
const
QString
&
url
)
const
{
if
(
mUrls
.
contains
(
url
)
)
return
DavUtils
::
Protocol
(
mUrls
[
url
]
->
mProtocol
);
else
return
DavUtils
::
CalDav
;
}
QString
Settings
::
username
(
const
QString
&
url
)
const
{
if
(
mUrls
.
contains
(
url
)
)
return
mUrls
[
url
]
->
mUser
;
else
return
QString
();
}
void
Settings
::
updateRemoteUrls
()
{
QStringList
newUrls
;
QMapIterator
<
QString
,
UrlConfiguration
*>
it
(
mUrls
);
while
(
it
.
hasNext
()
)
{
it
.
next
();
newUrls
<<
it
.
value
()
->
serialize
();
}
setRemoteUrls
(
newUrls
);
}
#include
"settings.moc"
File Metadata
Details
Attached
Mime Type
text/x-c++
Expires
Fri, Nov 1, 8:10 AM (1 d, 5 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
10074786
Default Alt Text
settings.cpp (5 KB)
Attached To
Mode
rKPR kdepim-runtime
Attached
Detach File
Event Timeline
Log In to Comment