mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 08:00:05 +00:00 
			
		
		
		
	Modify usage of get_marker for updated interface, and update checks for lat/lon input
This commit is contained in:
		
							parent
							
								
									0ec81e5832
								
							
						
					
					
						commit
						0cfad82933
					
				
					 2 changed files with 30 additions and 34 deletions
				
			
		|  | @ -57,10 +57,14 @@ void MarkerLayer::Impl::ReloadMarkers() | ||||||
| 
 | 
 | ||||||
|    for (size_t i = 0; i < markerManager->marker_count(); i++) |    for (size_t i = 0; i < markerManager->marker_count(); i++) | ||||||
|    { |    { | ||||||
|       const types::MarkerInfo& marker = markerManager->get_marker(i); |       std::optional<types::MarkerInfo> marker = markerManager->get_marker(i); | ||||||
|  |       if (!marker) | ||||||
|  |       { | ||||||
|  |          break; | ||||||
|  |       } | ||||||
|       std::shared_ptr<gl::draw::GeoIconDrawItem> icon = geoIcons_->AddIcon(); |       std::shared_ptr<gl::draw::GeoIconDrawItem> icon = geoIcons_->AddIcon(); | ||||||
|       geoIcons_->SetIconTexture(icon, markerIconName_, 0); |       geoIcons_->SetIconTexture(icon, markerIconName_, 0); | ||||||
|       geoIcons_->SetIconLocation(icon, marker.latitude, marker.longitude); |       geoIcons_->SetIconLocation(icon, marker->latitude, marker->longitude); | ||||||
|    } |    } | ||||||
| 
 | 
 | ||||||
|    geoIcons_->FinishIcons(); |    geoIcons_->FinishIcons(); | ||||||
|  |  | ||||||
|  | @ -87,15 +87,17 @@ QVariant MarkerModel::data(const QModelIndex& index, int role) const | ||||||
|    static const char COORDINATE_FORMAT    = 'g'; |    static const char COORDINATE_FORMAT    = 'g'; | ||||||
|    static const int  COORDINATE_PRECISION = 6; |    static const int  COORDINATE_PRECISION = 6; | ||||||
| 
 | 
 | ||||||
|    if (!index.isValid() || index.row() < 0 || |    if (!index.isValid() || index.row() < 0) | ||||||
|        static_cast<std::size_t>(index.row()) >= |  | ||||||
|           p->markerManager_->marker_count()) |  | ||||||
|    { |    { | ||||||
|       return QVariant(); |       return QVariant(); | ||||||
|    } |    } | ||||||
| 
 | 
 | ||||||
|    const types::MarkerInfo markerInfo = |    std::optional<types::MarkerInfo> markerInfo = | ||||||
|       p->markerManager_->get_marker(index.row()); |       p->markerManager_->get_marker(index.row()); | ||||||
|  |    if (!markerInfo) | ||||||
|  |    { | ||||||
|  |       return QVariant(); | ||||||
|  |    } | ||||||
| 
 | 
 | ||||||
|    switch(index.column()) |    switch(index.column()) | ||||||
|    { |    { | ||||||
|  | @ -104,7 +106,7 @@ QVariant MarkerModel::data(const QModelIndex& index, int role) const | ||||||
|           role == Qt::ItemDataRole::ToolTipRole || |           role == Qt::ItemDataRole::ToolTipRole || | ||||||
|           role == Qt::ItemDataRole::EditRole) |           role == Qt::ItemDataRole::EditRole) | ||||||
|       { |       { | ||||||
|          return QString::fromStdString(markerInfo.name); |          return QString::fromStdString(markerInfo->name); | ||||||
|       } |       } | ||||||
|       break; |       break; | ||||||
| 
 | 
 | ||||||
|  | @ -114,7 +116,7 @@ QVariant MarkerModel::data(const QModelIndex& index, int role) const | ||||||
|           role == Qt::ItemDataRole::EditRole) |           role == Qt::ItemDataRole::EditRole) | ||||||
|       { |       { | ||||||
|          return QString::number( |          return QString::number( | ||||||
|             markerInfo.latitude, COORDINATE_FORMAT, COORDINATE_PRECISION); |             markerInfo->latitude, COORDINATE_FORMAT, COORDINATE_PRECISION); | ||||||
|       } |       } | ||||||
|       break; |       break; | ||||||
| 
 | 
 | ||||||
|  | @ -124,7 +126,7 @@ QVariant MarkerModel::data(const QModelIndex& index, int role) const | ||||||
|           role == Qt::ItemDataRole::EditRole) |           role == Qt::ItemDataRole::EditRole) | ||||||
|       { |       { | ||||||
|          return QString::number( |          return QString::number( | ||||||
|             markerInfo.longitude, COORDINATE_FORMAT, COORDINATE_PRECISION); |             markerInfo->longitude, COORDINATE_FORMAT, COORDINATE_PRECISION); | ||||||
|       } |       } | ||||||
|       break; |       break; | ||||||
| 
 | 
 | ||||||
|  | @ -167,14 +169,16 @@ bool MarkerModel::setData(const QModelIndex& index, | ||||||
|                           const QVariant&    value, |                           const QVariant&    value, | ||||||
|                           int                role) |                           int                role) | ||||||
| { | { | ||||||
|    if (!index.isValid() || index.row() < 0 || |    if (!index.isValid() || index.row() < 0) | ||||||
|        static_cast<std::size_t>(index.row()) >= |    { | ||||||
|           p->markerManager_->marker_count()) |       return false; | ||||||
|  |    } | ||||||
|  |    std::optional<types::MarkerInfo> markerInfo = | ||||||
|  |       p->markerManager_->get_marker(index.row()); | ||||||
|  |    if (!markerInfo) | ||||||
|    { |    { | ||||||
|       return false; |       return false; | ||||||
|    } |    } | ||||||
| 
 |  | ||||||
|    types::MarkerInfo markerInfo = p->markerManager_->get_marker(index.row()); |  | ||||||
|    bool result = false; |    bool result = false; | ||||||
| 
 | 
 | ||||||
|    switch(index.column()) |    switch(index.column()) | ||||||
|  | @ -183,8 +187,8 @@ bool MarkerModel::setData(const QModelIndex& index, | ||||||
|       if (role == Qt::ItemDataRole::EditRole) |       if (role == Qt::ItemDataRole::EditRole) | ||||||
|       { |       { | ||||||
|          QString str = value.toString(); |          QString str = value.toString(); | ||||||
|          markerInfo.name = str.toStdString(); |          markerInfo->name = str.toStdString(); | ||||||
|          p->markerManager_->set_marker(index.row(), markerInfo); |          p->markerManager_->set_marker(index.row(), *markerInfo); | ||||||
|          result = true; |          result = true; | ||||||
|       } |       } | ||||||
|       break; |       break; | ||||||
|  | @ -195,16 +199,10 @@ bool MarkerModel::setData(const QModelIndex& index, | ||||||
|          QString str = value.toString(); |          QString str = value.toString(); | ||||||
|          bool ok; |          bool ok; | ||||||
|          double latitude = str.toDouble(&ok); |          double latitude = str.toDouble(&ok); | ||||||
|          if (str.isEmpty()) |          if (ok && str.isEmpty() && -90 <= latitude && latitude <= 90) | ||||||
|          { |          { | ||||||
|             markerInfo.latitude = 0; |             markerInfo->latitude = latitude; | ||||||
|             p->markerManager_->set_marker(index.row(), markerInfo); |             p->markerManager_->set_marker(index.row(), *markerInfo); | ||||||
|             result = true; |  | ||||||
|          } |  | ||||||
|          else if (ok) |  | ||||||
|          { |  | ||||||
|             markerInfo.latitude = latitude; |  | ||||||
|             p->markerManager_->set_marker(index.row(), markerInfo); |  | ||||||
|             result = true; |             result = true; | ||||||
|          } |          } | ||||||
|       } |       } | ||||||
|  | @ -216,16 +214,10 @@ bool MarkerModel::setData(const QModelIndex& index, | ||||||
|          QString str = value.toString(); |          QString str = value.toString(); | ||||||
|          bool ok; |          bool ok; | ||||||
|          double longitude = str.toDouble(&ok); |          double longitude = str.toDouble(&ok); | ||||||
|          if (str.isEmpty()) |          if (str.isEmpty() && ok && -180 <= longitude && longitude <= 180) | ||||||
|          { |          { | ||||||
|             markerInfo.longitude = 0; |             markerInfo->longitude = longitude; | ||||||
|             p->markerManager_->set_marker(index.row(), markerInfo); |             p->markerManager_->set_marker(index.row(), *markerInfo); | ||||||
|             result = true; |  | ||||||
|          } |  | ||||||
|          else if (ok) |  | ||||||
|          { |  | ||||||
|             markerInfo.longitude = longitude; |  | ||||||
|             p->markerManager_->set_marker(index.row(), markerInfo); |  | ||||||
|             result = true; |             result = true; | ||||||
|          } |          } | ||||||
|       } |       } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 AdenKoperczak
						AdenKoperczak