mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
9c5965b035
The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi
102 lines
2.9 KiB
C++
102 lines
2.9 KiB
C++
/* -*- Mode: c++; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include "QTMLocationProvider.h"
|
|
#include "nsGeoPosition.h"
|
|
|
|
using namespace mozilla;
|
|
|
|
NS_IMPL_ISUPPORTS(QTMLocationProvider, nsIGeolocationProvider)
|
|
|
|
QTMLocationProvider::QTMLocationProvider()
|
|
{
|
|
if (QMetaType::type("QGeoPositionInfo") == QMetaType::UnknownType) {
|
|
qRegisterMetaType<QGeoPositionInfo>("QGeoPositionInfo");
|
|
}
|
|
mLocation = QGeoPositionInfoSource::createDefaultSource(this);
|
|
if (mLocation)
|
|
connect(mLocation, SIGNAL(positionUpdated(QGeoPositionInfo)), this, SLOT(positionUpdated(QGeoPositionInfo)));
|
|
}
|
|
|
|
QTMLocationProvider::~QTMLocationProvider()
|
|
{
|
|
delete mLocation;
|
|
}
|
|
|
|
void
|
|
QTMLocationProvider::positionUpdated(const QGeoPositionInfo &geoPosition)
|
|
{
|
|
if (!geoPosition.isValid()) {
|
|
NS_WARNING("Invalida geoposition received");
|
|
return;
|
|
}
|
|
|
|
QGeoCoordinate coord = geoPosition.coordinate();
|
|
double latitude = coord.latitude();
|
|
double longitude = coord.longitude();
|
|
double altitude = coord.altitude();
|
|
double accuracy = geoPosition.attribute(QGeoPositionInfo::HorizontalAccuracy);
|
|
double altitudeAccuracy = geoPosition.attribute(QGeoPositionInfo::VerticalAccuracy);
|
|
double heading = geoPosition.attribute(QGeoPositionInfo::Direction);
|
|
|
|
bool providesSpeed = geoPosition.hasAttribute(QGeoPositionInfo::GroundSpeed);
|
|
double speed = geoPosition.attribute(QGeoPositionInfo::GroundSpeed);
|
|
|
|
RefPtr<nsGeoPosition> p =
|
|
new nsGeoPosition(latitude, longitude,
|
|
altitude, accuracy,
|
|
altitudeAccuracy, heading,
|
|
speed, geoPosition.timestamp().toTime_t());
|
|
if (mCallback) {
|
|
mCallback->Update(p);
|
|
}
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
QTMLocationProvider::Startup()
|
|
{
|
|
if (!mLocation)
|
|
return NS_ERROR_NOT_IMPLEMENTED;
|
|
|
|
// Not all versions of qt5positioning set default prefered method
|
|
// thus this workaround initializing QGeoPositionSource explicitly
|
|
SetHighAccuracy(false);
|
|
mLocation->startUpdates();
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
QTMLocationProvider::Watch(nsIGeolocationUpdate* aCallback)
|
|
{
|
|
mCallback = aCallback;
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
QTMLocationProvider::Shutdown()
|
|
{
|
|
if (!mLocation)
|
|
return NS_ERROR_NOT_IMPLEMENTED;
|
|
|
|
mLocation->stopUpdates();
|
|
mCallback = nullptr;
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
QTMLocationProvider::SetHighAccuracy(bool aHigh)
|
|
{
|
|
if (!mLocation)
|
|
return NS_ERROR_NOT_IMPLEMENTED;
|
|
|
|
mLocation->setPreferredPositioningMethods(aHigh ?
|
|
QGeoPositionInfoSource::SatellitePositioningMethods :
|
|
QGeoPositionInfoSource::AllPositioningMethods);
|
|
return NS_OK;
|
|
}
|