00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
#include <kapplication.h>
00025
#include <kconfig.h>
00026
#include <kdeversion.h>
00027
#include <kglobal.h>
00028
#include <klocale.h>
00029
#include <kmessagebox.h>
00030
#include <kstaticdeleter.h>
00031
#include <kurl.h>
00032
00033
#include "kabprefs.h"
00034
#include "locationmap.h"
00035
00036 LocationMap *LocationMap::mSelf = 0;
00037
static KStaticDeleter<LocationMap> locationMapDeleter;
00038
00039 LocationMap::LocationMap()
00040 {
00041 }
00042
00043 LocationMap::~LocationMap()
00044 {
00045 }
00046
00047 LocationMap *LocationMap::instance()
00048 {
00049
if ( !mSelf )
00050 locationMapDeleter.setObject( mSelf,
new LocationMap );
00051
00052
return mSelf;
00053 }
00054
00055
void LocationMap::showAddress(
const KABC::Address &addr )
00056 {
00057 KURL url( createUrl( addr ) );
00058
if ( url.isEmpty() )
00059
return;
00060
00061 kapp->invokeBrowser( url.url() );
00062 }
00063
00064
QString LocationMap::createUrl(
const KABC::Address &addr )
00065 {
00075
QString urlTemplate = KABPrefs::instance()->mLocationMapURL.arg( KGlobal::locale()->country() );
00076
if ( urlTemplate.isEmpty() ) {
00077 KMessageBox::error( 0, i18n(
"No service provider available for map lookup!\nPlease add one in the configuration dialog." ) );
00078
return QString::null;
00079 }
00080
00081
#if KDE_VERSION >= 319
00082
return urlTemplate.replace(
"%s", addr.street() ).
00083 replace(
"%r", addr.region() ).
00084 replace(
"%l", addr.locality() ).
00085 replace(
"%z", addr.postalCode() ).
00086 replace(
"%c", addr.countryToISO( addr.country() ) );
00087
#else
00088
return urlTemplate.replace(
"%s", addr.street() ).
00089 replace(
"%r", addr.region() ).
00090 replace(
"%l", addr.locality() ).
00091 replace(
"%z", addr.postalCode() ).
00092 replace(
"%c",
"" );
00093
#endif
00094
}
00095
00096
#include "locationmap.moc"