1 /************************************************************************
2  **
3  **  @file
4  **  @author Roman Telezhynskyi <dismine(at)gmail.com>
5  **  @date   1 6, 2017
6  **
7  **  @brief
8  **  @copyright
9  **  This source code is part of the Valentina project, a pattern making
10  **  program, whose allow create and modeling patterns of clothing.
11  **  Copyright (C) 2017 Valentina project
12  **  <https://gitlab.com/smart-pattern/valentina> All Rights Reserved.
13  **
14  **  Valentina is free software: you can redistribute it and/or modify
15  **  it under the terms of the GNU General Public License as published by
16  **  the Free Software Foundation, either version 3 of the License, or
17  **  (at your option) any later version.
18  **
19  **  Valentina is distributed in the hope that it will be useful,
20  **  but WITHOUT ANY WARRANTY; without even the implied warranty of
21  **  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22  **  GNU General Public License for more details.
23  **
24  **  You should have received a copy of the GNU General Public License
25  **  along with Valentina.  If not, see <http://www.gnu.org/licenses/>.
26  **
27  *************************************************************************/
28 
29 #include "measurements.h"
30 #include "vtranslatemeasurements.h"
31 #include "../vmisc/def.h"
32 
33 // Keep synchronize all names with initialization in VTranslateVars class!!!!!
34 //measurements
35 // A
36 const QString height_M                    = QStringLiteral("height");                         // A01
37 const QString heightNeckBack_M            = QStringLiteral("height_neck_back");               // A02
38 const QString heightScapula_M             = QStringLiteral("height_scapula");                 // A03
39 const QString heightArmpit_M              = QStringLiteral("height_armpit");                  // A04
40 const QString heightWaistSide_M           = QStringLiteral("height_waist_side");              // A05
41 const QString heightHip_M                 = QStringLiteral("height_hip");                     // A06
42 const QString heightGlutealFold_M         = QStringLiteral("height_gluteal_fold");            // A07
43 const QString heightKnee_M                = QStringLiteral("height_knee");                    // A08
44 const QString heightCalf_M                = QStringLiteral("height_calf");                    // A09
45 const QString heightAnkleHigh_M           = QStringLiteral("height_ankle_high");              // A10
46 const QString heightAnkle_M               = QStringLiteral("height_ankle");                   // A11
47 const QString heightHighhip_M             = QStringLiteral("height_highhip");                 // A12
48 const QString heightWaistFront_M          = QStringLiteral("height_waist_front");             // A13
49 const QString heightBustpoint_M           = QStringLiteral("height_bustpoint");               // A14
50 const QString heightShoulderTip_M         = QStringLiteral("height_shoulder_tip");            // A15
51 const QString heightNeckFront_M           = QStringLiteral("height_neck_front");              // A16
52 const QString heightNeckSide_M            = QStringLiteral("height_neck_side");               // A17
53 const QString heightNeckBackToKnee_M      = QStringLiteral("height_neck_back_to_knee");       // A18
54 const QString heightWaistSideToKnee_M     = QStringLiteral("height_waist_side_to_knee");      // A19
55 const QString heightWaistSideToHip_M      = QStringLiteral("height_waist_side_to_hip");       // A20
56 const QString heightKneeToAnkle_M         = QStringLiteral("height_knee_to_ankle");           // A21
57 const QString heightNeckBackToWaistSide_M = QStringLiteral("height_neck_back_to_waist_side"); // A22
58 const QString heightWaistBack_M           = QStringLiteral("height_waist_back");              // A23
59 // B
60 const QString widthShoulder_M     = QStringLiteral("width_shoulder");       // B01
61 const QString widthBust_M         = QStringLiteral("width_bust");           // B02
62 const QString widthWaist_M        = QStringLiteral("width_waist");          // B03
63 const QString widthHip_M          = QStringLiteral("width_hip");            // B04
64 const QString widthAbdomenToHip_M = QStringLiteral("width_abdomen_to_hip"); // B05
65 // C
66 const QString indentNeckBack_M  = QStringLiteral("indent_neck_back");  // C01
67 const QString indentWaistBack_M = QStringLiteral("indent_waist_back"); // C02
68 const QString indentAnkleHigh_M = QStringLiteral("indent_ankle_high"); // C03
69 // D
70 const QString handPalmLength_M = QStringLiteral("hand_palm_length"); // D01
71 const QString handLength_M     = QStringLiteral("hand_length");      // D02
72 const QString handPalmWidth_M  = QStringLiteral("hand_palm_width");  // D03
73 const QString handPalmCirc_M   = QStringLiteral("hand_palm_circ");   // D04
74 const QString handCirc_M       = QStringLiteral("hand_circ");        // D05
75 // E
76 const QString footWidth_M      = QStringLiteral("foot_width");       // E01
77 const QString footLength_M     = QStringLiteral("foot_length");      // E02
78 const QString footCirc_M       = QStringLiteral("foot_circ");        // E03
79 const QString footInstepCirc_M = QStringLiteral("foot_instep_circ"); // E04
80 // F
81 const QString headCirc_M            = QStringLiteral("head_circ");	             // F01
82 const QString headLength_M          = QStringLiteral("head_length");             // F02
83 const QString headDepth_M           = QStringLiteral("head_depth");	             // F03
84 const QString headWidth_M           = QStringLiteral("head_width");	             // F04
85 const QString headCrownToNeckBack_M = QStringLiteral("head_crown_to_neck_back"); // F05
86 const QString headChinToNeckBack_M  = QStringLiteral("head_chin_to_neck_back");  // F06
87 // G
88 const QString neckMidCirc_M        = QStringLiteral("neck_mid_circ");          // G01
89 const QString neckCirc_M           = QStringLiteral("neck_circ");              // G02
90 const QString highbustCirc_M       = QStringLiteral("highbust_circ");          // G03
91 const QString bustCirc_M           = QStringLiteral("bust_circ");              // G04
92 const QString lowbustCirc_M        = QStringLiteral("lowbust_circ");           // G05
93 const QString ribCirc_M            = QStringLiteral("rib_circ");               // G06
94 const QString waistCirc_M          = QStringLiteral("waist_circ");             // G07
95 const QString highhipCirc_M        = QStringLiteral("highhip_circ");           // G08
96 const QString hipCirc_M            = QStringLiteral("hip_circ");               // G09
97 const QString neckArcF_M           = QStringLiteral("neck_arc_f");             // G10
98 const QString highbustArcF_M       = QStringLiteral("highbust_arc_f");         // G11
99 
100 // size and bust_arc_f are synonyms
101 const QString size_M               = QStringLiteral("size");                   // G12
102 const QString bustArcF_M           = QStringLiteral("bust_arc_f");             // G12
103 
104 const QString lowbustArcF_M        = QStringLiteral("lowbust_arc_f");          // G13
105 const QString ribArcF_M            = QStringLiteral("rib_arc_f");              // G14
106 const QString waistArcF_M          = QStringLiteral("waist_arc_f");            // G15
107 const QString highhipArcF_M        = QStringLiteral("highhip_arc_f");          // G16
108 const QString hipArcF_M            = QStringLiteral("hip_arc_f");              // G17
109 const QString neckArcHalfF_M       = QStringLiteral("neck_arc_half_f");        // G18
110 const QString highbustArcHalfF_M   = QStringLiteral("highbust_arc_half_f");    // G19
111 const QString bustArcHalfF_M       = QStringLiteral("bust_arc_half_f");        // G20
112 const QString lowbustArcHalfF_M    = QStringLiteral("lowbust_arc_half_f");     // G21
113 const QString ribArcHalfF_M        = QStringLiteral("rib_arc_half_f");         // G22
114 const QString waistArcHalfF_M      = QStringLiteral("waist_arc_half_f");       // G23
115 const QString highhipArcHalfF_M    = QStringLiteral("highhip_arc_half_f");     // G24
116 const QString hipArcHalfF_M        = QStringLiteral("hip_arc_half_f");         // G25
117 const QString neckArcB_M           = QStringLiteral("neck_arc_b");             // G26
118 const QString highbustArcB_M       = QStringLiteral("highbust_arc_b");         // G27
119 const QString bustArcB_M           = QStringLiteral("bust_arc_b");             // G28
120 const QString lowbustArcB_M        = QStringLiteral("lowbust_arc_b");          // G29
121 const QString ribArcB_M            = QStringLiteral("rib_arc_b");              // G30
122 const QString waistArcB_M          = QStringLiteral("waist_arc_b");            // G31
123 const QString highhipArcB_M        = QStringLiteral("highhip_arc_b");          // G32
124 const QString hipArcB_M            = QStringLiteral("hip_arc_b");              // G33
125 const QString neckArcHalfB_M       = QStringLiteral("neck_arc_half_b");        // G34
126 const QString highbustArcHalfB_M   = QStringLiteral("highbust_arc_half_b");    // G35
127 const QString bustArcHalfB_M       = QStringLiteral("bust_arc_half_b");        // G36
128 const QString lowbustArcHalfB_M    = QStringLiteral("lowbust_arc_half_b");     // G37
129 const QString ribArcHalfB_M        = QStringLiteral("rib_arc_half_b");         // G38
130 const QString waistArcHalfB_M      = QStringLiteral("waist_arc_half_b");       // G39
131 const QString highhipArcHalfB_M    = QStringLiteral("highhip_arc_half_b");     // G40
132 const QString hipArcHalfB_M        = QStringLiteral("hip_arc_half_b");         // G41
133 const QString hipWithAbdomenArcF_M = QStringLiteral("hip_with_abdomen_arc_f"); // G42
134 const QString bodyArmfoldCirc_M    = QStringLiteral("body_armfold_circ");      // G43
135 const QString bodyBustCirc_M       = QStringLiteral("body_bust_circ");         // G44
136 const QString bodyTorsoCirc_M      = QStringLiteral("body_torso_circ");        // G45
137 const QString hipCircWithAbdomen_M = QStringLiteral("hip_circ_with_abdomen");  // G46
138 // H
139 const QString neckFrontToWaistF_M             = QStringLiteral("neck_front_to_waist_f");             // H01
140 const QString neckFrontToWaistFlatF_M         = QStringLiteral("neck_front_to_waist_flat_f");        // H02
141 const QString armpitToWaistSide_M             = QStringLiteral("armpit_to_waist_side");              // H03
142 const QString shoulderTipToWaistSideF_M       = QStringLiteral("shoulder_tip_to_waist_side_f");      // H04
143 const QString neckSideToWaistF_M              = QStringLiteral("neck_side_to_waist_f");              // H05
144 const QString neckSideToWaistBustpointF_M     = QStringLiteral("neck_side_to_waist_bustpoint_f");    // H06
145 const QString neckFrontToHighbustF_M          = QStringLiteral("neck_front_to_highbust_f");          // H07
146 const QString highbustToWaistF_M              = QStringLiteral("highbust_to_waist_f");               // H08
147 const QString neckFrontToBustF_M              = QStringLiteral("neck_front_to_bust_f");              // H09
148 const QString bustToWaistF_M                  = QStringLiteral("bust_to_waist_f");                   // H10
149 const QString lowbustToWaistF_M               = QStringLiteral("lowbust_to_waist_f");                // H11
150 const QString ribToWaistSide_M                = QStringLiteral("rib_to_waist_side");                 // H12
151 const QString shoulderTipToArmfoldF_M         = QStringLiteral("shoulder_tip_to_armfold_f");         // H13
152 const QString neckSideToBustF_M               = QStringLiteral("neck_side_to_bust_f");               // H14
153 const QString neckSideToHighbustF_M           = QStringLiteral("neck_side_to_highbust_f");           // H15
154 const QString shoulderCenterToHighbustF_M     = QStringLiteral("shoulder_center_to_highbust_f");     // H16
155 const QString shoulderTipToWaistSideB_M       = QStringLiteral("shoulder_tip_to_waist_side_b");      // H17
156 const QString neckSideToWaistB_M              = QStringLiteral("neck_side_to_waist_b");              // H18
157 const QString neckBackToWaistB_M              = QStringLiteral("neck_back_to_waist_b");              // H19
158 const QString neckSideToWaistScapulaB_M       = QStringLiteral("neck_side_to_waist_scapula_b");      // H20
159 const QString neckBackToHighbustB_M           = QStringLiteral("neck_back_to_highbust_b");           // H21
160 const QString highbustToWaistB_M              = QStringLiteral("highbust_to_waist_b");               // H22
161 const QString neckBackToBustB_M               = QStringLiteral("neck_back_to_bust_b");               // H23
162 const QString bustToWaistB_M                  = QStringLiteral("bust_to_waist_b");                   // H24
163 const QString lowbustToWaistB_M               = QStringLiteral("lowbust_to_waist_b");                // H25
164 const QString shoulderTipToArmfoldB_M         = QStringLiteral("shoulder_tip_to_armfold_b");         // H26
165 const QString neckSideToBustB_M               = QStringLiteral("neck_side_to_bust_b");               // H27
166 const QString neckSideToHighbustB_M           = QStringLiteral("neck_side_to_highbust_b");           // H28
167 const QString shoulderCenterToHighbustB_M     = QStringLiteral("shoulder_center_to_highbust_b");     // H29
168 const QString waistToHighhipF_M               = QStringLiteral("waist_to_highhip_f");                // H30
169 const QString waistToHipF_M                   = QStringLiteral("waist_to_hip_f");                    // H31
170 const QString waistToHighhipSide_M            = QStringLiteral("waist_to_highhip_side");             // H32
171 const QString waistToHighhipB_M               = QStringLiteral("waist_to_highhip_b");                // H33
172 const QString waistToHipB_M                   = QStringLiteral("waist_to_hip_b");                    // H34
173 const QString waistToHipSide_M                = QStringLiteral("waist_to_hip_side");                 // H35
174 const QString shoulderSlopeNeckSideAngle_M    = QStringLiteral("shoulder_slope_neck_side_angle");    // H36
175 const QString shoulderSlopeNeckSideLength_M   = QStringLiteral("shoulder_slope_neck_side_length");   // H37
176 const QString shoulderSlopeNeckBackAngle_M    = QStringLiteral("shoulder_slope_neck_back_angle");    // H38
177 const QString shoulderSlopeNeckBackHeight_M   = QStringLiteral("shoulder_slope_neck_back_height");   // H39
178 const QString shoulderSlopeShoulderTipAngle_M = QStringLiteral("shoulder_slope_shoulder_tip_angle"); // H40
179 const QString neckBackToAcrossBack_M          = QStringLiteral("neck_back_to_across_back");          // H41
180 const QString acrossBackToWaistB_M            = QStringLiteral("across_back_to_waist_b");            // H42
181 // I
182 const QString shoulderLength_M                = QStringLiteral("shoulder_length");                     // I01
183 const QString shoulderTipToShoulderTipF_M     = QStringLiteral("shoulder_tip_to_shoulder_tip_f");      // I02
184 const QString acrossChestF_M                  = QStringLiteral("across_chest_f");                      // I03
185 const QString armfoldToArmfoldF_M             = QStringLiteral("armfold_to_armfold_f");                // I04
186 const QString shoulderTipToShoulderTipHalfF_M = QStringLiteral("shoulder_tip_to_shoulder_tip_half_f"); // I05
187 const QString acrossChestHalfF_M              = QStringLiteral("across_chest_half_f");                 // I06
188 const QString shoulderTipToShoulderTipB_M     = QStringLiteral("shoulder_tip_to_shoulder_tip_b");      // I07
189 const QString acrossBackB_M                   = QStringLiteral("across_back_b");                       // I08
190 const QString armfoldToArmfoldB_M             = QStringLiteral("armfold_to_armfold_b");                // I09
191 const QString shoulderTipToShoulderTipHalfB_M = QStringLiteral("shoulder_tip_to_shoulder_tip_half_b"); // I10
192 const QString acrossBackHalfB_M               = QStringLiteral("across_back_half_b");                  // I11
193 const QString neckFrontToShoulderTipF_M       = QStringLiteral("neck_front_to_shoulder_tip_f");        // I12
194 const QString neckBackToShoulderTipB_M        = QStringLiteral("neck_back_to_shoulder_tip_b");         // I13
195 const QString neckWidth_M                     = QStringLiteral("neck_width");                          // I14
196 // J
197 const QString bustpointToBustpoint_M       = QStringLiteral("bustpoint_to_bustpoint");        // J01
198 const QString bustpointToNeckSide_M        = QStringLiteral("bustpoint_to_neck_side");        // J02
199 const QString bustpointToLowbust_M         = QStringLiteral("bustpoint_to_lowbust");          // J03
200 const QString bustpointToWaist_M           = QStringLiteral("bustpoint_to_waist");            // J04
201 const QString bustpointToBustpointHalf_M   = QStringLiteral("bustpoint_to_bustpoint_half");   // J05
202 const QString bustpointNeckSideToWaist_M   = QStringLiteral("bustpoint_neck_side_to_waist");  // J06
203 const QString bustpointToShoulderTip_M     = QStringLiteral("bustpoint_to_shoulder_tip");     // J07
204 const QString bustpointToWaistFront_M      = QStringLiteral("bustpoint_to_waist_front");      // J08
205 const QString bustpointToBustpointHalter_M = QStringLiteral("bustpoint_to_bustpoint_halter"); // J09
206 const QString bustpointToShoulderCenter_M  = QStringLiteral("bustpoint_to_shoulder_center");  // J10
207 // K
208 const QString shoulderTipToWaistFront_M       = QStringLiteral("shoulder_tip_to_waist_front");        // K01
209 const QString neckFrontToWaistSide_M          = QStringLiteral("neck_front_to_waist_side");           // K02
210 const QString neckSideToWaistSideF_M          = QStringLiteral("neck_side_to_waist_side_f");          // K03
211 const QString shoulderTipToWaistBack_M        = QStringLiteral("shoulder_tip_to_waist_back");         // K04
212 const QString shoulderTipToWaistB_1inOffset_M = QStringLiteral("shoulder_tip_to_waist_b_1in_offset"); // K05
213 const QString neckBackToWaistSide_M           = QStringLiteral("neck_back_to_waist_side");            // K06
214 const QString neckSideToWaistSideB_M          = QStringLiteral("neck_side_to_waist_side_b");          // K07
215 const QString neckSideToArmfoldF_M            = QStringLiteral("neck_side_to_armfold_f");             // K08
216 const QString neckSideToArmpitF_M             = QStringLiteral("neck_side_to_armpit_f");              // K09
217 const QString neckSideToBustSideF_M           = QStringLiteral("neck_side_to_bust_side_f");           // K10
218 const QString neckSideToArmfoldB_M            = QStringLiteral("neck_side_to_armfold_b");             // K11
219 const QString neckSideToArmpitB_M             = QStringLiteral("neck_side_to_armpit_b");              // K12
220 const QString neckSideToBustSideB_M           = QStringLiteral("neck_side_to_bust_side_b");           // K13
221 // L
222 const QString armShoulderTipToWristBent_M   = QStringLiteral("arm_shoulder_tip_to_wrist_bent");   // L01
223 const QString armShoulderTipToElbowBent_M   = QStringLiteral("arm_shoulder_tip_to_elbow_bent");   // L02
224 const QString armElbowToWristBent_M         = QStringLiteral("arm_elbow_to_wrist_bent");          // L03
225 const QString armElbowCircBent_M            = QStringLiteral("arm_elbow_circ_bent");              // L04
226 const QString armShoulderTipToWrist_M       = QStringLiteral("arm_shoulder_tip_to_wrist");        // L05
227 const QString armShoulderTipToElbow_M       = QStringLiteral("arm_shoulder_tip_to_elbow");        // L06
228 const QString armElbowToWrist_M             = QStringLiteral("arm_elbow_to_wrist");               // L07
229 const QString armArmpitToWrist_M            = QStringLiteral("arm_armpit_to_wrist");              // L08
230 const QString armArmpitToElbow_M            = QStringLiteral("arm_armpit_to_elbow");              // L09
231 const QString armElbowToWristInside_M       = QStringLiteral("arm_elbow_to_wrist_inside");        // L10
232 const QString armUpperCirc_M                = QStringLiteral("arm_upper_circ");                   // L11
233 const QString armAboveElbowCirc_M           = QStringLiteral("arm_above_elbow_circ");             // L12
234 const QString armElbowCirc_M                = QStringLiteral("arm_elbow_circ");                   // L13
235 const QString armLowerCirc_M                = QStringLiteral("arm_lower_circ");                   // L14
236 const QString armWristCirc_M                = QStringLiteral("arm_wrist_circ");                   // L15
237 const QString armShoulderTipToArmfoldLine_M = QStringLiteral("arm_shoulder_tip_to_armfold_line"); // L16
238 const QString armNeckSideToWrist_M          = QStringLiteral("arm_neck_side_to_wrist");           // L17
239 const QString armNeckSideToFingerTip_M      = QStringLiteral("arm_neck_side_to_finger_tip");      // L18
240 const QString armscyeCirc_M                 = QStringLiteral("armscye_circ");                     // L19
241 const QString armscyeLength_M               = QStringLiteral("armscye_length");                   // L20
242 const QString armscyeWidth_M                = QStringLiteral("armscye_width");	                  // L21
243 const QString armNeckSideToOuterElbow_M     = QStringLiteral("arm_neck_side_to_outer_elbow");     // L22
244 // M
245 const QString legCrotchToFloor_M    = QStringLiteral("leg_crotch_to_floor");     // M01
246 const QString legWaistSideToFloor_M = QStringLiteral("leg_waist_side_to_floor"); // M02
247 const QString legThighUpperCirc_M   = QStringLiteral("leg_thigh_upper_circ");	 // M03
248 const QString legThighMidCirc_M     = QStringLiteral("leg_thigh_mid_circ");      // M04
249 const QString legKneeCirc_M         = QStringLiteral("leg_knee_circ");	         // M05
250 const QString legKneeSmallCirc_M    = QStringLiteral("leg_knee_small_circ");     // M06
251 const QString legCalfCirc_M         = QStringLiteral("leg_calf_circ");	         // M07
252 const QString legAnkleHighCirc_M    = QStringLiteral("leg_ankle_high_circ");     // M08
253 const QString legAnkleCirc_M        = QStringLiteral("leg_ankle_circ");          // M09
254 const QString legKneeCircBent_M     = QStringLiteral("leg_knee_circ_bent");	     // M10
255 const QString legAnkleDiagCirc_M    = QStringLiteral("leg_ankle_diag_circ");     // M11
256 const QString legCrotchToAnkle_M    = QStringLiteral("leg_crotch_to_ankle");     // M12
257 const QString legWaistSideToAnkle_M = QStringLiteral("leg_waist_side_to_ankle"); // M13
258 const QString legWaistSideToKnee_M  = QStringLiteral("leg_waist_side_to_knee");  // M14
259 // N
260 const QString crotchLength_M          = QStringLiteral("crotch_length");            // N01
261 const QString crotchLengthB_M         = QStringLiteral("crotch_length_b");          // N02
262 const QString crotchLengthF_M         = QStringLiteral("crotch_length_f");          // N03
263 const QString riseLengthSideSitting_M = QStringLiteral("rise_length_side_sitting"); // N04
264 const QString riseLengthDiag_M        = QStringLiteral("rise_length_diag");         // N05
265 const QString riseLengthB_M           = QStringLiteral("rise_length_b");            // N06
266 const QString riseLengthF_M           = QStringLiteral("rise_length_f");            // N07
267 const QString riseLengthSide_M        = QStringLiteral("rise_length_side");         // N08
268 // O
269 const QString neckBackToWaistFront_M            = QStringLiteral("neck_back_to_waist_front");	           // O01
270 const QString waistToWaistHalter_M              = QStringLiteral("waist_to_waist_halter");	               // O02
271 const QString waistNaturalCirc_M                = QStringLiteral("waist_natural_circ");	                   // O03
272 const QString waistNaturalArcF_M                = QStringLiteral("waist_natural_arc_f");                   // O04
273 const QString waistNaturalArcB_M                = QStringLiteral("waist_natural_arc_b");                   // O05
274 const QString waistToNaturalWaistF_M            = QStringLiteral("waist_to_natural_waist_f");              // O06
275 const QString waistToNaturalWaistB_M            = QStringLiteral("waist_to_natural_waist_b");              // O07
276 const QString armNeckBackToElbowBent_M          = QStringLiteral("arm_neck_back_to_elbow_bent");           // O08
277 const QString armNeckBackToWristBent_M          = QStringLiteral("arm_neck_back_to_wrist_bent");           // O09
278 const QString armNeckSideToElbowBent_M          = QStringLiteral("arm_neck_side_to_elbow_bent");	       // O10
279 const QString armNeckSideToWristBent_M          = QStringLiteral("arm_neck_side_to_wrist_bent");	       // O11
280 const QString armAcrossBackCenterToElbowBent_M  = QStringLiteral("arm_across_back_center_to_elbow_bent");  // O12
281 const QString armAcrossBackCenterToWristBent_M  = QStringLiteral("arm_across_back_center_to_wrist_bent");  // O13
282 const QString armArmscyeBackCenterToWristBent_M = QStringLiteral("arm_armscye_back_center_to_wrist_bent"); // O14
283 // P
284 const QString neckBackToBustFront_M               = QStringLiteral("neck_back_to_bust_front");	                  // P01
285 const QString neckBackToArmfoldFront_M            = QStringLiteral("neck_back_to_armfold_front");                 // P02
286 const QString neckBackToArmfoldFrontToWaistSide_M = QStringLiteral("neck_back_to_armfold_front_to_waist_side");   // P03
287 const QString highbustBackOverShoulderToArmfoldFront_M
288                                                 = QStringLiteral("highbust_back_over_shoulder_to_armfold_front"); // P04
289 const QString highbustBackOverShoulderToWaistFront_M
290                                                   = QStringLiteral("highbust_back_over_shoulder_to_waist_front"); // P05
291 const QString neckBackToArmfoldFrontToNeckBack_M  = QStringLiteral("neck_back_to_armfold_front_to_neck_back");    // P06
292 const QString acrossBackCenterToArmfoldFrontToAcrossBackCenter_M
293                                    = QStringLiteral("across_back_center_to_armfold_front_to_across_back_center"); // P07
294 const QString neckBackToArmfoldFrontToHighbustBack_M
295                                                  = QStringLiteral("neck_back_to_armfold_front_to_highbust_back"); // P08
296 const QString armfoldToArmfoldBust_M              = QStringLiteral("armfold_to_armfold_bust");                    // P09
297 const QString armfoldToBustFront_M                = QStringLiteral("armfold_to_bust_front");	                  // P10
298 const QString highbustBOverShoulderToHighbustF_M = QStringLiteral("highbust_b_over_shoulder_to_highbust_f");      // P11
299 const QString armscyeArc_M                       = QStringLiteral("armscye_arc");	                              // P12
300 // Q
301 const QString dartWidthShoulder_M = QStringLiteral("dart_width_shoulder"); // Q01
302 const QString dartWidthBust_M     = QStringLiteral("dart_width_bust");     // Q02
303 const QString dartWidthWaist_M    = QStringLiteral("dart_width_waist");    // Q03
304 
305 //---------------------------------------------------------------------------------------------------------------------
ListGroupA()306 QStringList ListGroupA()
307 {
308     const QStringList list = QStringList() << height_M                     // A01
309                                            << heightNeckBack_M             // A02
310                                            << heightScapula_M              // A03
311                                            << heightArmpit_M               // A04
312                                            << heightWaistSide_M            // A05
313                                            << heightHip_M                  // A06
314                                            << heightGlutealFold_M          // A07
315                                            << heightKnee_M                 // A08
316                                            << heightCalf_M                 // A09
317                                            << heightAnkleHigh_M            // A10
318                                            << heightAnkle_M                // A11
319                                            << heightHighhip_M              // A12
320                                            << heightWaistFront_M           // A13
321                                            << heightBustpoint_M            // A14
322                                            << heightShoulderTip_M          // A15
323                                            << heightNeckFront_M            // A16
324                                            << heightNeckSide_M             // A17
325                                            << heightNeckBackToKnee_M       // A18
326                                            << heightWaistSideToKnee_M      // A19
327                                            << heightWaistSideToHip_M       // A20
328                                            << heightKneeToAnkle_M          // A21
329                                            << heightNeckBackToWaistSide_M  // A22
330                                            << heightWaistBack_M;           // A23
331     return list;
332 }
333 
334 //---------------------------------------------------------------------------------------------------------------------
ListGroupB()335 QStringList ListGroupB()
336 {
337     const QStringList list = QStringList() << widthShoulder_M      // B01
338                                            << widthBust_M          // B02
339                                            << widthWaist_M         // B03
340                                            << widthHip_M           // B04
341                                            << widthAbdomenToHip_M; // B05
342 
343     return list;
344 }
345 
346 //---------------------------------------------------------------------------------------------------------------------
ListGroupC()347 QStringList ListGroupC()
348 {
349     const QStringList list = QStringList() << indentNeckBack_M   // C01
350                                            << indentWaistBack_M  // C02
351                                            << indentAnkleHigh_M; // C03
352 
353     return list;
354 }
355 
356 //---------------------------------------------------------------------------------------------------------------------
ListGroupD()357 QStringList ListGroupD()
358 {
359     const QStringList list = QStringList() << handPalmLength_M // D01
360                                            << handLength_M     // D02
361                                            << handPalmWidth_M  // D03
362                                            << handPalmCirc_M   // D04
363                                            << handCirc_M;      // D05
364 
365     return list;
366 }
367 
368 //---------------------------------------------------------------------------------------------------------------------
ListGroupE()369 QStringList ListGroupE()
370 {
371     const QStringList list = QStringList() << footWidth_M       // E01
372                                            << footLength_M      // E02
373                                            << footCirc_M        // E03
374                                            << footInstepCirc_M; // E04
375 
376     return list;
377 }
378 
379 //---------------------------------------------------------------------------------------------------------------------
ListGroupF()380 QStringList ListGroupF()
381 {
382     const QStringList list = QStringList() << headCirc_M	        // F01
383                                            << headLength_M          // F02
384                                            << headDepth_M	        // F03
385                                            << headWidth_M	        // F04
386                                            << headCrownToNeckBack_M // F05
387                                            << headChinToNeckBack_M; // F06
388 
389     return list;
390 }
391 
392 //---------------------------------------------------------------------------------------------------------------------
ListGroupG()393 QStringList ListGroupG()
394 {
395     const QStringList list = QStringList() << neckMidCirc_M         // G01
396                                            << neckCirc_M            // G02
397                                            << highbustCirc_M        // G03
398                                            << bustCirc_M            // G04
399                                            << lowbustCirc_M         // G05
400                                            << ribCirc_M             // G06
401                                            << waistCirc_M           // G07
402                                            << highhipCirc_M         // G08
403                                            << hipCirc_M             // G09
404                                            << neckArcF_M            // G10
405                                            << highbustArcF_M        // G11
406                                            << bustArcF_M            // G12
407                                            << size_M                // G12
408                                            << lowbustArcF_M         // G13
409                                            << ribArcF_M             // G14
410                                            << waistArcF_M           // G15
411                                            << highhipArcF_M         // G16
412                                            << hipArcF_M             // G17
413                                            << neckArcHalfF_M        // G18
414                                            << highbustArcHalfF_M    // G19
415                                            << bustArcHalfF_M        // G20
416                                            << lowbustArcHalfF_M     // G21
417                                            << ribArcHalfF_M         // G22
418                                            << waistArcHalfF_M       // G23
419                                            << highhipArcHalfF_M     // G24
420                                            << hipArcHalfF_M         // G25
421                                            << neckArcB_M            // G26
422                                            << highbustArcB_M        // G27
423                                            << bustArcB_M            // G28
424                                            << lowbustArcB_M         // G29
425                                            << ribArcB_M             // G30
426                                            << waistArcB_M           // G31
427                                            << highhipArcB_M         // G32
428                                            << hipArcB_M             // G33
429                                            << neckArcHalfB_M        // G34
430                                            << highbustArcHalfB_M    // G35
431                                            << bustArcHalfB_M        // G36
432                                            << lowbustArcHalfB_M     // G37
433                                            << ribArcHalfB_M         // G38
434                                            << waistArcHalfB_M       // G39
435                                            << highhipArcHalfB_M     // G40
436                                            << hipArcHalfB_M         // G41
437                                            << hipWithAbdomenArcF_M  // G42
438                                            << bodyArmfoldCirc_M     // G43
439                                            << bodyBustCirc_M        // G44
440                                            << bodyTorsoCirc_M       // G45
441                                            << hipCircWithAbdomen_M; // G46
442 
443     return list;
444 }
445 
446 //---------------------------------------------------------------------------------------------------------------------
ListGroupH()447 QStringList ListGroupH()
448 {
449     const QStringList list = QStringList() << neckFrontToWaistF_M              // H01
450                                            << neckFrontToWaistFlatF_M          // H02
451                                            << armpitToWaistSide_M              // H03
452                                            << shoulderTipToWaistSideF_M        // H04
453                                            << neckSideToWaistF_M               // H05
454                                            << neckSideToWaistBustpointF_M      // H06
455                                            << neckFrontToHighbustF_M           // H07
456                                            << highbustToWaistF_M               // H08
457                                            << neckFrontToBustF_M               // H09
458                                            << bustToWaistF_M                   // H10
459                                            << lowbustToWaistF_M                // H11
460                                            << ribToWaistSide_M                 // H12
461                                            << shoulderTipToArmfoldF_M          // H13
462                                            << neckSideToBustF_M                // H14
463                                            << neckSideToHighbustF_M            // H15
464                                            << shoulderCenterToHighbustF_M      // H16
465                                            << shoulderTipToWaistSideB_M        // H17
466                                            << neckSideToWaistB_M               // H18
467                                            << neckBackToWaistB_M               // H19
468                                            << neckSideToWaistScapulaB_M        // H20
469                                            << neckBackToHighbustB_M            // H21
470                                            << highbustToWaistB_M               // H22
471                                            << neckBackToBustB_M                // H23
472                                            << bustToWaistB_M                   // H24
473                                            << lowbustToWaistB_M                // H25
474                                            << shoulderTipToArmfoldB_M          // H26
475                                            << neckSideToBustB_M                // H27
476                                            << neckSideToHighbustB_M            // H28
477                                            << shoulderCenterToHighbustB_M      // H29
478                                            << waistToHighhipF_M                // H30
479                                            << waistToHipF_M                    // H31
480                                            << waistToHighhipSide_M             // H32
481                                            << waistToHighhipB_M                // H33
482                                            << waistToHipB_M                    // H34
483                                            << waistToHipSide_M                 // H35
484                                            << shoulderSlopeNeckSideAngle_M     // H36
485                                            << shoulderSlopeNeckSideLength_M    // H37
486                                            << shoulderSlopeNeckBackAngle_M     // H38
487                                            << shoulderSlopeNeckBackHeight_M    // H39
488                                            << shoulderSlopeShoulderTipAngle_M  // H40
489                                            << neckBackToAcrossBack_M           // H41
490                                            << acrossBackToWaistB_M;            // H42
491 
492     return list;
493 }
494 
495 //---------------------------------------------------------------------------------------------------------------------
ListGroupI()496 QStringList ListGroupI()
497 {
498     const QStringList list = QStringList() << shoulderLength_M                // I01
499                                            << shoulderTipToShoulderTipF_M     // I02
500                                            << acrossChestF_M                  // I03
501                                            << armfoldToArmfoldF_M             // I04
502                                            << shoulderTipToShoulderTipHalfF_M // I05
503                                            << acrossChestHalfF_M              // I06
504                                            << shoulderTipToShoulderTipB_M     // I07
505                                            << acrossBackB_M                   // I08
506                                            << armfoldToArmfoldB_M             // I09
507                                            << shoulderTipToShoulderTipHalfB_M // I10
508                                            << acrossBackHalfB_M               // I11
509                                            << neckFrontToShoulderTipF_M       // I12
510                                            << neckBackToShoulderTipB_M        // I13
511                                            << neckWidth_M;                    // I14
512 
513     return list;
514 }
515 
516 //---------------------------------------------------------------------------------------------------------------------
ListGroupJ()517 QStringList ListGroupJ()
518 {
519     const QStringList list = QStringList() << bustpointToBustpoint_M        // J01
520                                            << bustpointToNeckSide_M         // J02
521                                            << bustpointToLowbust_M          // J03
522                                            << bustpointToWaist_M            // J04
523                                            << bustpointToBustpointHalf_M    // J05
524                                            << bustpointNeckSideToWaist_M    // J06
525                                            << bustpointToShoulderTip_M      // J07
526                                            << bustpointToWaistFront_M       // J08
527                                            << bustpointToBustpointHalter_M  // J09
528                                            << bustpointToShoulderCenter_M;  // J10
529 
530     return list;
531 }
532 
533 //---------------------------------------------------------------------------------------------------------------------
ListGroupK()534 QStringList ListGroupK()
535 {
536     const QStringList list = QStringList() << shoulderTipToWaistFront_M       // K01
537                                            << neckFrontToWaistSide_M          // K02
538                                            << neckSideToWaistSideF_M          // K03
539                                            << shoulderTipToWaistBack_M        // K04
540                                            << shoulderTipToWaistB_1inOffset_M // K05
541                                            << neckBackToWaistSide_M           // K06
542                                            << neckSideToWaistSideB_M          // K07
543                                            << neckSideToArmfoldF_M            // K08
544                                            << neckSideToArmpitF_M             // K09
545                                            << neckSideToBustSideF_M           // K10
546                                            << neckSideToArmfoldB_M            // K11
547                                            << neckSideToArmpitB_M             // K12
548                                            << neckSideToBustSideB_M;          // K13
549 
550     return list;
551 }
552 
553 //---------------------------------------------------------------------------------------------------------------------
ListGroupL()554 QStringList ListGroupL()
555 {
556     const QStringList list = QStringList() << armShoulderTipToWristBent_M   // L01
557                                            << armShoulderTipToElbowBent_M   // L02
558                                            << armElbowToWristBent_M         // L03
559                                            << armElbowCircBent_M            // L04
560                                            << armShoulderTipToWrist_M       // L05
561                                            << armShoulderTipToElbow_M       // L06
562                                            << armElbowToWrist_M             // L07
563                                            << armArmpitToWrist_M            // L08
564                                            << armArmpitToElbow_M            // L09
565                                            << armElbowToWristInside_M       // L10
566                                            << armUpperCirc_M                // L11
567                                            << armAboveElbowCirc_M           // L12
568                                            << armElbowCirc_M                // L13
569                                            << armLowerCirc_M                // L14
570                                            << armWristCirc_M                // L15
571                                            << armShoulderTipToArmfoldLine_M // L16
572                                            << armNeckSideToWrist_M          // L17
573                                            << armNeckSideToFingerTip_M      // L18
574                                            << armscyeCirc_M                 // L19
575                                            << armscyeLength_M               // L20
576                                            << armscyeWidth_M 	            // L21
577                                            << armNeckSideToOuterElbow_M;    // L22
578 
579     return list;
580 }
581 
582 //---------------------------------------------------------------------------------------------------------------------
ListGroupM()583 QStringList ListGroupM()
584 {
585     const QStringList list = QStringList() << legCrotchToFloor_M    // M01
586                                            << legWaistSideToFloor_M // M02
587                                            << legThighUpperCirc_M	// M03
588                                            << legThighMidCirc_M     // M04
589                                            << legKneeCirc_M	        // M05
590                                            << legKneeSmallCirc_M    // M06
591                                            << legCalfCirc_M	        // M07
592                                            << legAnkleHighCirc_M    // M08
593                                            << legAnkleCirc_M        // M09
594                                            << legKneeCircBent_M	    // M10
595                                            << legAnkleDiagCirc_M    // M11
596                                            << legCrotchToAnkle_M    // M12
597                                            << legWaistSideToAnkle_M // M13
598                                            << legWaistSideToKnee_M; // M14
599 
600     return list;
601 }
602 
603 //---------------------------------------------------------------------------------------------------------------------
ListGroupN()604 QStringList ListGroupN()
605 {
606     const QStringList list = QStringList() << crotchLength_M          // N01
607                                            << crotchLengthB_M         // N02
608                                            << crotchLengthF_M         // N03
609                                            << riseLengthSideSitting_M // N04
610                                            << riseLengthDiag_M        // N05
611                                            << riseLengthB_M           // N06
612                                            << riseLengthF_M           // N07
613                                            << riseLengthSide_M;       // N08
614 
615     return list;
616 }
617 
618 //---------------------------------------------------------------------------------------------------------------------
ListGroupO()619 QStringList ListGroupO()
620 {
621     const QStringList list = QStringList() << neckBackToWaistFront_M 	         // O01
622                                            << waistToWaistHalter_M 	             // O02
623                                            << waistNaturalCirc_M 	             // O03
624                                            << waistNaturalArcF_M                 // O04
625                                            << waistNaturalArcB_M                 // O05
626                                            << waistToNaturalWaistF_M             // O06
627                                            << waistToNaturalWaistB_M             // O07
628                                            << armNeckBackToElbowBent_M           // O08
629                                            << armNeckBackToWristBent_M           // O09
630                                            << armNeckSideToElbowBent_M 	         // O10
631                                            << armNeckSideToWristBent_M 	         // O11
632                                            << armAcrossBackCenterToElbowBent_M   // O12
633                                            << armAcrossBackCenterToWristBent_M   // O13
634                                            << armArmscyeBackCenterToWristBent_M; // O14
635 
636     return list;
637 }
638 
639 //---------------------------------------------------------------------------------------------------------------------
ListGroupP()640 QStringList ListGroupP()
641 {
642     const QStringList list = QStringList() << neckBackToBustFront_M	                             // P01
643                                            << neckBackToArmfoldFront_M                           // P02
644                                            << neckBackToArmfoldFrontToWaistSide_M                // P03
645                                            << highbustBackOverShoulderToArmfoldFront_M           // P04
646                                            << highbustBackOverShoulderToWaistFront_M             // P05
647                                            << neckBackToArmfoldFrontToNeckBack_M                 // P06
648                                            << acrossBackCenterToArmfoldFrontToAcrossBackCenter_M // P07
649                                            << neckBackToArmfoldFrontToHighbustBack_M             // P08
650                                            << armfoldToArmfoldBust_M                             // P09
651                                            << armfoldToBustFront_M	                             // P10
652                                            << highbustBOverShoulderToHighbustF_M                 // P11
653                                            << armscyeArc_M;	                                     // P12
654 
655     return list;
656 }
657 
658 //---------------------------------------------------------------------------------------------------------------------
ListGroupQ()659 QStringList ListGroupQ()
660 {
661     const QStringList list = QStringList() << dartWidthShoulder_M // Q01
662                                            << dartWidthBust_M 	  // Q02
663                                            << dartWidthWaist_M;   // Q03
664 
665     return list;
666 }
667 
668 //---------------------------------------------------------------------------------------------------------------------
ListNumbers(const VTranslateMeasurements * trM,const QStringList & listMeasurements)669 QStringList ListNumbers(const VTranslateMeasurements *trM, const QStringList &listMeasurements)
670 {
671     SCASSERT(trM != nullptr)
672 
673     QStringList numbers;
674     for (auto &m : listMeasurements)
675     {
676         numbers.append(trM->MNumber(m));
677     }
678     return numbers;
679 }
680 
681 //---------------------------------------------------------------------------------------------------------------------
MapDiagrams(const VTranslateMeasurements * trM,const QString & number)682 QString MapDiagrams(const VTranslateMeasurements *trM, const QString &number)
683 {
684     switch (ListNumbers(trM, ListGroupA()).indexOf(number))
685     {
686         // A
687         case 0: // A01
688         case 1: // A02
689         case 2: // A03
690         case 3: // A04
691         case 4: // A05
692         case 5: // A06
693         case 6: // A07
694         case 7: // A08
695         case 8: // A09
696         case 9: // A10
697         case 10: // A11
698         case 11: // A12
699         case 12: // A13
700         case 13: // A14
701         case 14: // A15
702         case 15: // A16
703         case 16: // A17
704             return QStringLiteral("Ap1");
705         case 17: // A18
706         case 18: // A19
707         case 19: // A20
708         case 20: // A21
709         case 21: // A22
710         case 22: // A23
711             return QStringLiteral("Ap2");
712         default:
713             break;
714     }
715 
716     switch (ListNumbers(trM, ListGroupB()).indexOf(number))
717     {
718         // B
719         case 0: // B01
720         case 1: // B02
721         case 2: // B03
722         case 3: // B04
723             return QStringLiteral("Bp1");
724         case 4: // B05
725             return QStringLiteral("Bp2");
726         default:
727             break;
728     }
729 
730     switch (ListNumbers(trM, ListGroupC()).indexOf(number))
731     {
732         // C
733         case 0: // C01
734             return QStringLiteral("Cp1");
735         case 1: // C02
736         case 2: // C03
737             return QStringLiteral("Cp2");
738         default:
739             break;
740     }
741 
742     switch (ListNumbers(trM, ListGroupD()).indexOf(number))
743     {
744         // D
745         case 0: // D01
746         case 1: // D02
747         case 2: // D03
748             return QStringLiteral("Dp1");
749         case 3: // D04
750             return QStringLiteral("Dp2");
751         case 4: // D05
752             return QStringLiteral("Dp3");
753         default:
754             break;
755     }
756 
757     switch (ListNumbers(trM, ListGroupE()).indexOf(number))
758     {
759         // E
760         case 0: // E01
761             return QStringLiteral("Ep1");
762         case 1: // E02
763         case 2: // E03
764         case 3: // E04
765             return QStringLiteral("Ep2");
766         default:
767             break;
768     }
769 
770     switch (ListNumbers(trM, ListGroupF()).indexOf(number))
771     {
772         // F
773         case 0: // F01
774         case 1: // F02
775         case 2: // F03
776             return QStringLiteral("Fp1");
777         case 3: // F04
778             return QStringLiteral("Fp2");
779         case 4: // F05
780         case 5: // F06
781             return QStringLiteral("Fp3");
782         default:
783             break;
784     }
785 
786     switch (ListNumbers(trM, ListGroupG()).indexOf(number))
787     {
788         // G
789         case 0: // G01
790         case 1: // G02
791         case 2: // G03
792         case 3: // G04
793         case 4: // G05
794         case 5: // G06
795         case 6: // G07
796         case 7: // G08
797         case 8: // G09
798             return QStringLiteral("Gp1");
799         case 9: // G10
800         case 10: // G11
801         case 11: // G12
802         case 12: // G12
803         case 13: // G13
804         case 14: // G14
805         case 15: // G15
806         case 16: // G16
807         case 17: // G17
808             return QStringLiteral("Gp2");
809         case 18: // G18
810         case 19: // G19
811         case 20: // G20
812         case 21: // G21
813         case 22: // G22
814         case 23: // G23
815         case 24: // G24
816         case 25: // G25
817             return QStringLiteral("Gp3");
818         case 26: // G26
819         case 27: // G27
820         case 28: // G28
821         case 29: // G29
822         case 30: // G30
823         case 31: // G31
824         case 32: // G32
825         case 33: // G33
826             return QStringLiteral("Gp4");
827         case 34: // G34
828         case 35: // G35
829         case 36: // G36
830         case 37: // G37
831         case 38: // G38
832         case 39: // G39
833         case 40: // G40
834         case 41: // G41
835             return QStringLiteral("Gp5");
836         case 42: // G42
837             return QStringLiteral("Gp6");
838         case 43: // G43
839         case 44: // G44
840             return QStringLiteral("Gp7");
841         case 45: // G45
842             return QStringLiteral("Gp8");
843         case 46: // G46
844             return QStringLiteral("Gp9");
845         default:
846             break;
847     }
848 
849     switch (ListNumbers(trM, ListGroupH()).indexOf(number))
850     {
851         // H
852         case 0: // H01
853             return QStringLiteral("Hp1");
854         case 1: // H02
855             return QStringLiteral("Hp2");
856         case 2: // H03
857         case 3: // H04
858         case 4: // H05
859         case 5: // H06
860             return QStringLiteral("Hp3");
861         case 6: // H07
862         case 7: // H08
863         case 8: // H09
864         case 9: // H10
865         case 10: // H11
866         case 11: // H12
867             return QStringLiteral("Hp4");
868         case 12: // H13
869         case 13: // H14
870         case 14: // H15
871         case 15: // H16
872             return QStringLiteral("Hp5");
873         case 16: // H17
874         case 17: // H18
875         case 18: // H19
876         case 19: // H20
877             return QStringLiteral("Hp6");
878         case 20: // H21
879         case 21: // H22
880         case 22: // H23
881         case 23: // H24
882         case 24: // H25
883             return QStringLiteral("Hp7");
884         case 25: // H26
885         case 26: // H27
886         case 27: // H28
887         case 28: // H29
888             return QStringLiteral("Hp8");
889         case 29: // H30
890         case 30: // H31
891         case 31: // H32
892             return QStringLiteral("Hp9");
893         case 32: // H33
894         case 33: // H34
895         case 34: // H35
896             return QStringLiteral("Hp10");
897         case 35: // H36
898         case 36: // H37
899         case 37: // H38
900         case 38: // H39
901             return QStringLiteral("Hp11");
902         case 39: // H40
903             return QStringLiteral("Hp12");
904         case 40: // H41
905         case 41: // H42
906             return QStringLiteral("Hp13");
907         default:
908             break;
909     }
910 
911     switch (ListNumbers(trM, ListGroupI()).indexOf(number))
912     {
913         // I
914         case 0: // I01
915         case 1: // I02
916         case 2: // I03
917         case 3: // I04
918             return QStringLiteral("Ip1");
919         case 4: // I05
920         case 5: // I06
921             return QStringLiteral("Ip2");
922         case 6: // I07
923         case 7: // I08
924         case 8: // I09
925             return QStringLiteral("Ip3");
926         case 9: // I10
927         case 10: // I11
928             return QStringLiteral("Ip4");
929         case 11: // I12
930             return QStringLiteral("Ip5");
931         case 12: // I13
932             return QStringLiteral("Ip6");
933         case 13: // I14
934             return QStringLiteral("Ip7");
935         default:
936             break;
937     }
938 
939     switch (ListNumbers(trM, ListGroupJ()).indexOf(number))
940     {
941         // J
942         case 0: // J01
943         case 1: // J02
944         case 2: // J03
945         case 3: // J04
946             return QStringLiteral("Jp1");
947         case 4: // J05
948             return QStringLiteral("Jp2");
949         case 5: // J06
950             return QStringLiteral("Jp3");
951         case 6: // J07
952         case 7: // J08
953             return QStringLiteral("Jp4");
954         case 8: // J09
955             return QStringLiteral("Jp5");
956         case 9: // J10
957             return QStringLiteral("Jp6");
958         default:
959             break;
960     }
961 
962     switch (ListNumbers(trM, ListGroupK()).indexOf(number))
963     {
964         // K
965         case 0: // K01
966             return QStringLiteral("Kp1");
967         case 1: // K02
968         case 2: // K03
969             return QStringLiteral("Kp2");
970         case 3: // K04
971             return QStringLiteral("Kp3");
972         case 4: // K05
973             return QStringLiteral("Kp4");
974         case 5: // K06
975         case 6: // K07
976             return QStringLiteral("Kp5");
977         case 7: // K08
978             return QStringLiteral("Kp6");
979         case 8: // K09
980             return QStringLiteral("Kp7");
981         case 9: // K10
982             return QStringLiteral("Kp8");
983         case 10: // K11
984             return QStringLiteral("Kp9");
985         case 11: // K12
986             return QStringLiteral("Kp10");
987         case 12: // K13
988             return QStringLiteral("Kp11");
989         default:
990             break;
991     }
992 
993     switch (ListNumbers(trM, ListGroupL()).indexOf(number))
994     {
995         // L
996         case 0: // L01
997         case 1: // L02
998         case 2: // L03
999         case 3: // L04
1000             return QStringLiteral("Lp1");
1001         case 4: // L05
1002         case 5: // L06
1003         case 6: // L07
1004             return QStringLiteral("Lp2");
1005         case 7: // L08
1006         case 8: // L09
1007         case 9: // L10
1008             return QStringLiteral("Lp3");
1009         case 10: // L11
1010         case 11: // L12
1011         case 12: // L13
1012         case 13: // L14
1013         case 14: // L15
1014             return QStringLiteral("Lp4");
1015         case 15: // L16
1016             return QStringLiteral("Lp5");
1017         case 16: // L17
1018             return QStringLiteral("Lp6");
1019         case 17: // L18
1020             return QStringLiteral("Lp7");
1021         case 18: // L19
1022         case 19: // L20
1023             return QStringLiteral("Lp8");
1024         case 20: // L21
1025             return QStringLiteral("Lp9");
1026         case 21: // L22
1027             return QStringLiteral("Lp10");
1028         default:
1029             break;
1030     }
1031 
1032     switch (ListNumbers(trM, ListGroupM()).indexOf(number))
1033     {
1034         // M
1035         case 0: // M01
1036         case 1: // M02
1037             return QStringLiteral("Mp1");
1038         case 2: // M03
1039         case 3: // M04
1040         case 4: // M05
1041         case 5: // M06
1042         case 6: // M07
1043         case 7: // M08
1044         case 8: // M09
1045         case 9: // M10
1046         case 10: // M11
1047             return QStringLiteral("Mp2");
1048         case 11: // M12
1049         case 12: // M13
1050         case 13: // M14
1051             return QStringLiteral("Mp3");
1052         default:
1053             break;
1054     }
1055 
1056     switch (ListNumbers(trM, ListGroupN()).indexOf(number))
1057     {
1058         // N
1059         case 0: // N01
1060             return QStringLiteral("Np1");
1061         case 1: // N02
1062         case 2: // N03
1063             return QStringLiteral("Np2");
1064         case 3: // N04
1065         case 4: // N05
1066             return QStringLiteral("Np3");
1067         case 5: // N06
1068         case 6: // N07
1069             return QStringLiteral("Np4");
1070         case 7: // N08
1071             return QStringLiteral("Np5");
1072         default:
1073             break;
1074     }
1075 
1076     switch (ListNumbers(trM, ListGroupO()).indexOf(number))
1077     {
1078         // O
1079         case 0: // O01
1080             return QStringLiteral("Op1");
1081         case 1: // O02
1082             return QStringLiteral("Op2");
1083         case 2: // O03
1084             return QStringLiteral("Op3");
1085         case 3: // O04
1086             return QStringLiteral("Op4");
1087         case 4: // O05
1088             return QStringLiteral("Op5");
1089         case 5: // O06
1090             return QStringLiteral("Op6");
1091         case 6: // O07
1092             return QStringLiteral("Op7");
1093         case 7: // O08
1094         case 8: // O09
1095             return QStringLiteral("Op8");
1096         case 9: // O10
1097         case 10: // O11
1098             return QStringLiteral("Op9");
1099         case 11: // O12
1100         case 12: // O13
1101             return QStringLiteral("Op10");
1102         case 13: // O14
1103             return QStringLiteral("Op11");
1104         default:
1105             break;
1106     }
1107 
1108     switch (ListNumbers(trM, ListGroupP()).indexOf(number))
1109     {
1110         // P
1111         case 0: // P01
1112             return QStringLiteral("Pp1");
1113         case 1: // P02
1114             return QStringLiteral("Pp2");
1115         case 2: // P03
1116             return QStringLiteral("Pp3");
1117         case 3: // P04
1118             return QStringLiteral("Pp4");
1119         case 4: // P05
1120             return QStringLiteral("Pp5");
1121         case 5: // P06
1122             return QStringLiteral("Pp6");
1123         case 6: // P07
1124             return QStringLiteral("Pp7");
1125         case 7: // P08
1126             return QStringLiteral("Pp8");
1127         case 8: // P09
1128             return QStringLiteral("Pp9");
1129         case 9: // P10
1130             return QStringLiteral("Pp10");
1131         case 10: // P11
1132             return QStringLiteral("Pp11");
1133         case 11: // P12
1134             return QStringLiteral("Pp12");
1135         default:
1136             break;
1137     }
1138 
1139     switch (ListNumbers(trM, ListGroupQ()).indexOf(number))
1140     {
1141         // Q
1142         case 0: // Q01
1143             return QStringLiteral("Qp1");
1144         case 1: // Q02
1145             return QStringLiteral("Qp2");
1146         case 2: // Q03
1147             return QStringLiteral("Qp3");
1148         default:
1149             break;
1150     }
1151 
1152     return QString();
1153 }
1154 
1155 //---------------------------------------------------------------------------------------------------------------------
AllGroupNames()1156 QStringList AllGroupNames()
1157 {
1158     const QStringList originalNames = QStringList() << ListGroupA()
1159                                                     << ListGroupB()
1160                                                     << ListGroupC()
1161                                                     << ListGroupD()
1162                                                     << ListGroupE()
1163                                                     << ListGroupF()
1164                                                     << ListGroupG()
1165                                                     << ListGroupH()
1166                                                     << ListGroupI()
1167                                                     << ListGroupJ()
1168                                                     << ListGroupK()
1169                                                     << ListGroupL()
1170                                                     << ListGroupM()
1171                                                     << ListGroupN()
1172                                                     << ListGroupO()
1173                                                     << ListGroupP()
1174                                                     << ListGroupQ();
1175 
1176     return originalNames;
1177 }
1178