2 * This file is part of CameraPlus.
4 * Copyright (C) 2012-2013 Mohammed Sameer <msameer@foolab.org>
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
25 MetaData::MetaData(QObject *parent) :
32 m_orientation(MetaData::Unknown),
33 m_captureDirection(0),
35 m_longitudeValid(false),
36 m_latitudeValid(false),
37 m_elevationValid(false),
38 m_captureDirectionValid(false),
39 m_horizontalErrorValid(false),
40 m_dateTimeEnabled(true) {
44 MetaData::~MetaData() {
48 Camera *MetaData::camera() const {
52 void MetaData::setCamera(Camera *camera) {
54 QObject::disconnect(m_cam, SIGNAL(deviceChanged()), this, SLOT(deviceChanged()));
60 QObject::connect(m_cam, SIGNAL(deviceChanged()), this, SLOT(deviceChanged()));
68 QString MetaData::manufacturer() const {
69 return m_manufacturer;
72 void MetaData::setManufacturer(const QString& manufacturer) {
73 if (m_manufacturer != manufacturer) {
74 m_manufacturer = manufacturer;
75 emit manufacturerChanged();
79 QString MetaData::model() const {
83 void MetaData::setModel(const QString& model) {
84 if (m_model != model) {
90 QString MetaData::country() const {
94 void MetaData::setCountry(const QString& country) {
95 if (m_country != country) {
97 emit countryChanged();
101 QString MetaData::city() const {
105 void MetaData::setCity(const QString& city) {
106 if (m_city != city) {
112 QString MetaData::suburb() const {
116 void MetaData::setSuburb(const QString& suburb) {
117 if (m_suburb != suburb) {
119 emit suburbChanged();
123 double MetaData::longitude() const {
127 void MetaData::setLongitude(double longitude) {
128 if (!qFuzzyCompare(m_longitude, longitude)) {
129 m_longitude = longitude;
130 emit longitudeChanged();
134 double MetaData::latitude() const {
138 void MetaData::setLatitude(double latitude) {
139 if (!qFuzzyCompare(m_latitude, latitude)) {
140 m_latitude = latitude;
141 emit latitudeChanged();
145 double MetaData::elevation() const {
149 void MetaData::setElevation(double elevation) {
150 if (!qFuzzyCompare(m_elevation, elevation)) {
151 m_elevation = elevation;
152 emit elevationChanged();
156 MetaData::Orientation MetaData::orientation() const {
157 return m_orientation;
160 void MetaData::setOrientation(const MetaData::Orientation& orientation) {
161 if (m_orientation != orientation) {
162 m_orientation = orientation;
163 emit orientationChanged();
167 QString MetaData::artist() const {
171 void MetaData::setArtist(const QString& artist) {
172 if (m_artist != artist) {
174 emit artistChanged();
178 int MetaData::captureDirection() const {
179 return m_captureDirection;
182 void MetaData::setCaptureDirection(int captureDirection) {
183 if (m_captureDirection != captureDirection) {
184 m_captureDirection = captureDirection;
185 emit captureDirectionChanged();
189 double MetaData::horizontalError() const {
190 return m_horizontalError;
193 void MetaData::setHorizontalError(double horizontalError) {
194 if (!qFuzzyCompare(m_horizontalError, horizontalError)) {
195 m_horizontalError = horizontalError;
196 emit horizontalErrorChanged();
200 void MetaData::setMetaData() {
207 if (!m_manufacturer.isEmpty()) {
208 m_data->setManufacturer(m_manufacturer);
211 if (!m_model.isEmpty()) {
212 m_data->setModel(m_model);
215 if (!m_country.isEmpty()) {
216 m_data->setCountry(m_country);
219 if (!m_city.isEmpty()) {
220 m_data->setCity(m_city);
223 if (!m_suburb.isEmpty()) {
224 m_data->setSuburb(m_suburb);
227 if (m_longitudeValid) {
228 m_data->setLongitude(m_longitude);
231 if (m_latitudeValid) {
232 m_data->setLatitude(m_latitude);
235 if (m_elevationValid) {
236 m_data->setElevation(m_elevation);
239 if (m_orientation != MetaData::Unknown) {
240 m_data->setOrientation((QtCamMetaData::Orientation)m_orientation);
243 // qDebug() << m_orientation << m_captureDirection << m_captureDirectionValid;
245 if (m_captureDirectionValid) {
246 // m_data->setCaptureDirection(m_captureDirection);
250 if (!m_artist.isEmpty()) {
251 m_data->setArtist(m_artist);
254 if (m_dateTimeEnabled) {
255 m_data->setDateTime(QDateTime::currentDateTime());
258 if (m_horizontalErrorValid) {
259 m_data->setHorizontalError(m_horizontalError);
263 void MetaData::deviceChanged() {
265 delete m_data; m_data = 0;
268 m_data = new QtCamMetaData(this);
269 m_data->setDevice(m_cam->device());
272 bool MetaData::isLongitudeValid() const {
273 return m_longitudeValid;
276 void MetaData::setLongitudeValid(bool valid) {
277 if (valid != m_longitudeValid) {
278 m_longitudeValid = valid;
279 emit longitudeValidChanged();
283 bool MetaData::isLatitudeValid() const {
284 return m_latitudeValid;
287 void MetaData::setLatitudeValid(bool valid) {
288 if (valid != m_latitudeValid) {
289 m_latitudeValid = valid;
290 emit latitudeValidChanged();
294 bool MetaData::isElevationValid() const {
295 return m_elevationValid;
298 void MetaData::setElevationValid(bool valid) {
299 if (valid != m_elevationValid) {
300 m_elevationValid = valid;
301 emit elevationValidChanged();
305 bool MetaData::isCaptureDirectionValid() const {
306 return m_captureDirectionValid;
309 void MetaData::setCaptureDirectionValid(bool valid) {
310 if (valid != m_captureDirectionValid) {
311 m_captureDirectionValid = valid;
312 emit captureDirectionValidChanged();
316 bool MetaData::isHorizontalErrorValid() const {
317 return m_horizontalErrorValid;
320 void MetaData::setHorizontalErrorValid(bool valid) {
321 if (valid != m_horizontalErrorValid) {
322 m_horizontalErrorValid = valid;
323 emit horizontalErrorValidChanged();
327 bool MetaData::isDateTimeEnabled() const {
328 return m_dateTimeEnabled;
331 void MetaData::setDateTimeEnabled(bool enabled) {
332 if (m_dateTimeEnabled != enabled) {
333 m_dateTimeEnabled = enabled;
334 emit dateTimeEnabledChanged();