mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 04:00:04 +00:00 
			
		
		
		
	Update L3 product category selection to work better for tdwr
This commit is contained in:
		
							parent
							
								
									504cde0e8b
								
							
						
					
					
						commit
						6509fc7043
					
				
					 3 changed files with 38 additions and 6 deletions
				
			
		|  | @ -60,7 +60,9 @@ public: | ||||||
|        categoryButtons_ {}, |        categoryButtons_ {}, | ||||||
|        productTiltMap_ {}, |        productTiltMap_ {}, | ||||||
|        awipsProductMap_ {}, |        awipsProductMap_ {}, | ||||||
|        awipsProductMutex_ {} |        awipsProductMutex_ {}, | ||||||
|  |        categoryMap_ {}, | ||||||
|  |        categoryMapMutex_ {} | ||||||
|    { |    { | ||||||
|       layout_->setContentsMargins(0, 0, 0, 0); |       layout_->setContentsMargins(0, 0, 0, 0); | ||||||
|       layout_->addWidget(productsWidget_); |       layout_->addWidget(productsWidget_); | ||||||
|  | @ -183,6 +185,9 @@ public: | ||||||
|    std::unordered_map<QAction*, std::string> awipsProductMap_; |    std::unordered_map<QAction*, std::string> awipsProductMap_; | ||||||
|    std::shared_mutex                         awipsProductMutex_; |    std::shared_mutex                         awipsProductMutex_; | ||||||
| 
 | 
 | ||||||
|  |    common::Level3ProductCategoryMap categoryMap_; | ||||||
|  |    std::shared_mutex categoryMapMutex_; | ||||||
|  | 
 | ||||||
|    std::string currentAwipsId_ {}; |    std::string currentAwipsId_ {}; | ||||||
|    QAction*    currentProductTiltAction_ {nullptr}; |    QAction*    currentProductTiltAction_ {nullptr}; | ||||||
| 
 | 
 | ||||||
|  | @ -322,9 +327,11 @@ void Level3ProductsWidgetImpl::SelectProductCategory( | ||||||
| { | { | ||||||
|    UpdateCategorySelection(category); |    UpdateCategorySelection(category); | ||||||
| 
 | 
 | ||||||
|  |    std::shared_lock lock {categoryMapMutex_}; | ||||||
|  | 
 | ||||||
|    Q_EMIT self_->RadarProductSelected( |    Q_EMIT self_->RadarProductSelected( | ||||||
|       common::RadarProductGroup::Level3, |       common::RadarProductGroup::Level3, | ||||||
|       common::GetLevel3CategoryDefaultProduct(category), |       common::GetLevel3CategoryDefaultProduct(category, categoryMap_), | ||||||
|       0); |       0); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -333,6 +340,12 @@ void Level3ProductsWidget::UpdateAvailableProducts( | ||||||
| { | { | ||||||
|    logger_->trace("UpdateAvailableProducts()"); |    logger_->trace("UpdateAvailableProducts()"); | ||||||
| 
 | 
 | ||||||
|  |    // Save the category map
 | ||||||
|  |    { | ||||||
|  |       std::unique_lock lock {p->categoryMapMutex_}; | ||||||
|  |       p->categoryMap_ = updatedCategoryMap; | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|    // Iterate through each category tool button
 |    // Iterate through each category tool button
 | ||||||
|    std::for_each( |    std::for_each( | ||||||
|       p->categoryButtons_.cbegin(), |       p->categoryButtons_.cbegin(), | ||||||
|  |  | ||||||
|  | @ -73,8 +73,9 @@ Level2Product      GetLevel2Product(const std::string& name); | ||||||
| 
 | 
 | ||||||
| const std::string& GetLevel3CategoryName(Level3ProductCategory category); | const std::string& GetLevel3CategoryName(Level3ProductCategory category); | ||||||
| const std::string& GetLevel3CategoryDescription(Level3ProductCategory category); | const std::string& GetLevel3CategoryDescription(Level3ProductCategory category); | ||||||
| const std::string& | std::string | ||||||
| GetLevel3CategoryDefaultProduct(Level3ProductCategory category); | GetLevel3CategoryDefaultProduct(Level3ProductCategory    category, | ||||||
|  |                                 const Level3ProductCategoryMap& categoryMap); | ||||||
| Level3ProductCategory GetLevel3Category(const std::string& categoryName); | Level3ProductCategory GetLevel3Category(const std::string& categoryName); | ||||||
| Level3ProductCategory | Level3ProductCategory | ||||||
| GetLevel3CategoryByProduct(const std::string& productName); | GetLevel3CategoryByProduct(const std::string& productName); | ||||||
|  |  | ||||||
|  | @ -298,9 +298,27 @@ const std::string& GetLevel3CategoryDescription(Level3ProductCategory category) | ||||||
|    return level3CategoryDescription_.at(category); |    return level3CategoryDescription_.at(category); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| const std::string& | std::string | ||||||
| GetLevel3CategoryDefaultProduct(Level3ProductCategory category) | GetLevel3CategoryDefaultProduct(Level3ProductCategory           category, | ||||||
|  |                                 const Level3ProductCategoryMap& categoryMap) | ||||||
| { | { | ||||||
|  |    const auto& productsIt = categoryMap.find(category); | ||||||
|  |    if (productsIt == categoryMap.cend()) | ||||||
|  |    { | ||||||
|  |       return level3CategoryDefaultAwipsId_.at(category); | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  |    const auto& productsSiteHas = productsIt->second; | ||||||
|  |    const auto& productList = level3CategoryProductList_.at(category); | ||||||
|  |    for (auto& product : productList) | ||||||
|  |    { | ||||||
|  |       const auto& tiltsIt = productsSiteHas.find(product); | ||||||
|  |       if (tiltsIt != productsSiteHas.cend() && tiltsIt->second.size() > 0) | ||||||
|  |       { | ||||||
|  |          return tiltsIt->second[0]; | ||||||
|  |       } | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|    return level3CategoryDefaultAwipsId_.at(category); |    return level3CategoryDefaultAwipsId_.at(category); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 AdenKoperczak
						AdenKoperczak